数据正确性验证方法及装置的制作方法

xiaoxiao2020-7-23  16

【知识产权代理】【专利服务】Tel:18215660330


专利名称::数据正确性验证方法及装置的制作方法
技术领域
:本发明涉及数据测试
技术领域
,特别涉及一种数据正确性验证方法及装置。
背景技术
:在网站测试或应用程序的功能测试当中,很多情况下测试步骤是不变的,变化的仅仅是测试数据。比如说,为了测试网站是否支持国际化(internationalization)需要进行一个正常登录成功的测试,测试时可能会使用英文的用户名;也可能会使用中文的用户名;甚至还会使用包含一些合法的特殊字符串的用户名。这三个测试用例的操作步骤都是一样,都是输入用户名和密码,然后点击登录按钮,唯一不同的就是测试数据(即用户名和其密码)。又比如,为了执行SQL注入或者脚本注入的安全性测试,需要设计一个针对用户提交评论的通用测试步骤,然而测试数据、即用户评论的内容(包括SQL注入语句或者脚本注入语句)是变化的。原有的自动化测试的无框架阶段的最大的缺点就是脚本与数据混合在一起,每次数据变动需要同时修改脚本程序。比如现有技术中,自动化测试中数据正确性验证的一般步骤是:使用数据遍历方法遍历表格文件(如网页表格等),把表格内容存入一个二维数组中;使用数据库连接组件GnADODB)连接后台数据库,使用数据结果集对象保存查询结果,也存入一个二维数组中;对两个二维数组进行一对一的遍历比较验证数据正确性。上述方法仅仅是针对一张表格的数据对比方案,其存在以下缺陷:当报表数量很多时需频繁地手工执行脚本,数据验证效率低;此外脚本与数据混合在一起,每次数据变动需要修改脚本文件,脚本使用率低、维护频繁、实现复杂,测试需付出大量的人力和时间成本。
发明内容(一)要解决的技术问题针对现有技术的上述缺陷,本发明为了解决现有技术中数据正确性验证效率低下的技术问题,提供了一种数据正确性验证方法及装置。(二)技术方案为实现上述目的,本发明采用如下技术方案:一方面,本发明提供一种数据正确性验证方法,所述方法包括步骤:SI,在本地建立用于保存驱动数据的文档;S2,将驱动数据导入至测试用表中;S3,根据测试用表中驱动数据的列名对脚本进行参数化;S4,设置迭代次数,根据迭代次数的设置,依次读取测试用表中每行的驱动数据替代参数来驱动测试脚本执行数据验证。优选地,步骤S2-S4中,使用QTP工具进行数据的操作。优选地,步骤SI中,所述驱动数据包括报表名称、报表查询开始日期、报表查询结束日期。优选地,步骤S3中,通过获取报表名称的坐标值加固定数字来找到打开该报表的按钮,然后访问报表数据。优选地,步骤S4之后,当测试停止则将测试表中数据也随之清除。优选地,步骤S4中,驱动测试脚本执行数据验证具体包括步骤:S41,在脚本执行时首先创建以当前访问的报表名命名的数据文档,所述数据文档中分为系统导出数据保存区和数据库导出数据保存区两部分;S42,遍历网页报表,将获取的数据按行保存在所述数据文档的系统导出数据保存区中;S43,依据待验证报表名导出待查询条件,依据导出的待查询条件查询数据库,按行导出数据库数据,保存在所述数据文档的数据库导出数据保存区中;S44,对系统导出数据保存区和数据库导出数据保存区中单元格数据一一对比,一致则测试通过;不一致,则在产生的测试结果报告中输出错误信息。优选地,步骤S43中,所述导出数据库数据的过程为:从数据库中导出数据,首先判断某个时间单一版本的统计项数据是否为空;若为空,则舍弃该时间-版本的数据导出过程,判断下一个时间-版本数据;若不为空,则按行查询数据;若查询结果仅有一个数据,则该数据赋值给“上传用户数”统计项,其余单元格赋值为0;否则将按行正常赋值。另一方面,本发明还同时提供一种数据正确性验证装置,所述装置包括:驱动数据保存模块,用于在本地建立用于保存驱动数据的文档;驱动数据导入模块,用于将驱动数据导入至测试用表中;脚本参数化模块,用于根据测试用例从对应的测试用表中取出驱动数据对脚本进行参数化;迭代验证模块,用于设置迭代次数,根据迭代次数的设置,按行依次读取表中数据来驱动测试脚本执行数据验证。优选地,所述迭代验证模块通过脚本执行模块驱动测试脚本执行数据验证,所述脚本执行模块包括:数据文档创建模块,用于在脚本执行时首先创建以当前访问的报表名命名的数据文档,所述数据文档中分为系统导出数据保存区和数据库导出数据保存区两部分;系统数据导出模块,用于遍历网页报表,将获取的数据按行保存在所述数据文档的系统导出数据保存区中;数据库数据导出模块,用于依据待验证报表名导出待查询条件,依据导出的待查询条件,按行导出数据库数据,保存在所述数据文档的数据库导出数据保存区中;数据验证模块,对系统导出数据保存区和数据库导出数据保存区中单元格数据一一对比,一致则测试通过;不一致,则在产生的测试结果报告中输出错误信息。(三)有益效果本发明的方案中,将测试数据与脚本的分离,通过参数化的方式将数据文件中读取到的数据写入到脚本中,可以执行一次脚本实现多张报表数据的测试,大大降低了脚本的维护成本,可有效提高QTP验证web报表数据正确性的脚本利用率。图1为本发明的数据正确性验证方法的流程示意图;图2为本发明的数据处理方式示意图;图3为统计项数据的导出过程示意图;图4为本发明的数据正确性验证装置的模块示意图。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的方法中,主要实现了测试数据与脚本的分离,可以执行一次脚本实现多张报表数据的测试。本发明的方法将数据整理至本地文件,从数据文件中读取数据,然后通过参数化的方式将数据文件中读取到的数据写入到脚本中。这样,仅执行一次测试即可实现同类报表的测试;并且本方案将驱动数据独立为外部数据文件,大大降低了脚本的维护成本。具体地,参见图1,本发明的方法包括步骤:1、在本地建立用于保存驱动数据的文档(优选地采用Excel文档保存);所述驱动数据包括报表名称(以innertext表示)、报表查询开始日期(以startday表示)、报表查询结束日期(以endday表示)等;2、将驱动数据导入至测试用表中;如使用ImportSheet方法导入驱动数据至QTP中的DataTable数据表中,QTP(quicktestProfessional)是一种自动测试工具;ImportSheet方法的使用格式为:ImportSheet"D:\***.xls",I,2,含义为将D盘下***xls文件中的第一个sheet表数据导入至QTP中DataTable的第二个数据表(本实施例中将该表命名为Action表)中;3、根据测试用表中驱动数据的列名对脚本进行参数化;例如,进行飞信数据平台的关闭操作统计时,使用BrowseH"飞信数据平台").WebElement("关闭操作统计").GetROProperty("x")+90语句,通过获取报表名称的坐标值加固定数字来找到打开该报表的按钮,然后访问报表数据,当前语句指定了具体的报表名称"关闭操作统计",因此对该对象属性进行参数化。参数化时,首先要用到QTP的描述性编程,便于对对象属性参数化,即上述语句可以写为:Browser("飞信数据平台")WebElement("htmltag:=P","innertext:=关闭操作统计")GetROProperty("x")+90;然后修改语句为Browser("飞信数据平台")WebElement("htmltag:=P","innertext:="&datatable.Value("innertext",2)).GetROProperty("x")+90,其中,datatable.Value("innertext",2)为参数化部分,理解为从DataTable视图的第二个表(即Action表)中取出列名为innertext下的数据。由于DataTable下的Action表中保存内容是用于参数化的驱动数据的具体内容(报表名、开始、结束日期等),此处取出的innertext数据即“关闭操作统计”,使用datatable.vlaue("innertext",2)取出数据后赋值给webelement控件的innertext属性,那么innertext属性便被参数化而有了具体值,随后可以指导QTP通过参数化的具体属性值找到待测试报表。完成一项属性的参数化后,重复上述步骤对其他属性进行参数化;4、设置迭代次数,根据迭代次数的设置,按行依次读取表中数据来驱动测试脚本执行数据验证。由于运行测试时QTP将导入驱动数据至DataTable视图中的Global表或Action表,因此需要对数据表的迭代次数进行设置。迭代次数用于控制脚本的执行次数,是与数据行数对应的;QTP关于迭代次数有三种设置:仅执行一次、执行所有数据行、指定循环执行的行数。如设置为仅执行一行时,则脚本仅读取第一行的参数化数据;如设置为执行所有数据行,则QTP将依据读取到的数据行的行数确定脚本的循环执行次数。Global为全局表,可通过File->Settings->Run设置迭代方式。Action为局部表,可通过TestFlow->右键具体Action->ActionCallProperties设置迭代次数。其中,程序执行次数是通过Global设置的次数乘以Action中设置的次数控制的,例如Global执行3行数据,Action执行4行数据,那么脚本就需要执行3*4=12次;本发明的实施例中将数据导入至Action表,因此只需设置Action的迭代次数。设置完迭代次数后,测试将根据迭代次数的设置,按行依次读取DataTable中数据来驱动测试脚本执行。当脚本运行起来,导入参数化数据后,QTP将读取DataTable中的第一行数据,根据已经设置的迭代次数,脚本执行完当前一次迭代后将自动跳转至下一行数据,开始新一轮脚本的运行,直至执行完所有迭代。测试停止则DataTable中数据也随之清除。本方案可提高QTP验证web报表数据正确性的脚本利用率,对于相同业务逻辑、操作步骤的报表而言,仅执行一次测试即可实现同类报表的测试;并且本方案将驱动数据独立为外部数据文件,大大降低了脚本的维护成本。更进一步地,在本发明的方法中,脚本执行时对于数据验证的处理方式参见图2,包括步骤:1、在脚本执行时首先创建以当前访问的报表名命名的Excel文档,文档中sheet表分两部分,一部分为系统导出数据;一部分为数据库导出数据。2、访问系统报表时,通过getcelldata(i,j)的方法遍历webtable,然后在本地excel文档-系统数据的sheet表中由第二行(数据库sheet表的第一行额外保存了统计项ID)开始保存数据(目的是与数据库导出数据行对应)。3、由数据库中导出数据保存至同一excel-数据库sheet表中,首先依据待验证报表名导出统计项ID及名称,然后查询该报表下各版本的上报项个数,由此计算得出报表样式,依据导出的统计项ID、名称、日期、版本、上报项等信息为查询条件,按行导出数据库数据,并保存至excel文档数据库sheet表中;统计项数据的导出过程如图3,由数据库中导出数据首先判断某个时间单一版本的统计项数据是否为空;如为空,则舍弃该时间-版本的数据导出过程(即从excel中删除该时间-版本),判断下一个时间-版本数据;不为空,则按行(以时间-版本-上报项为查询条件)查询数据,若查询结果仅有一个数据(即上传用户数统计项),则该数据赋值给“上传用户数”统计项,其余单元格赋值为0;否则将按行正常赋值。4、对两个sheet表中单元格数据——对比,一致则测试通过;不一致,则在QTP产生的测试结果报告中输出错误信息;在保存系统数据的sheet表中该出错数据的单元格内容显示错误数据信息,并将字体置为红色突出显示以便查看。本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:R0M/RAM、磁碟、光盘等。因此,与本发明的方法相对应的,本发明还同时包括一种数据正确性验证装置,该装置通常以与方法各步骤相对应的功能模块的形式表示;如图4所示,所述装置包括:驱动数据保存模块I,用于在本地建立用于保存驱动数据的文档;驱动数据导入模块2,用于将驱动数据导入至测试用表中;脚本参数化模块3,用于根据测试用例从对应的测试用表中取出驱动数据对脚本进行参数化;迭代验证模块4,用于设置迭代次数,根据迭代次数的设置,按行依次读取表中数据来驱动测试脚本执行数据验证。更进一步地,所述迭代验证模块通过脚本执行模块驱动测试脚本执行数据验证,所述脚本执行模块包括:数据文档创建模块,用于在脚本执行时首先创建以当前访问的报表名命名的数据文档,所述数据文档中分为系统导出数据保存区和数据库导出数据保存区两部分;系统数据导出模块,用于遍历网页报表,将获取的数据按行保存在所述数据文档的系统导出数据保存区中;数据库数据导出模块,用于依据待验证报表名导出待查询条件,依据导出的待查询条件,按行导出数据库数据,保存在所述数据文档的数据库导出数据保存区中;数据验证模块,对系统导出数据保存区和数据库导出数据保存区中单元格数据一一对比,一致则测试通过;不一致,则在产生的测试结果报告中输出错误信息。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关
技术领域
的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。权利要求1.一种数据正确性验证方法,其特征在于,所述方法包括步骤:SI,在本地建立用于保存驱动数据的文档;S2,将驱动数据导入至测试用表中;S3,根据测试用表中驱动数据的列名对脚本进行参数化;S4,设置迭代次数,根据迭代次数的设置,依次读取测试用表中每行的驱动数据替代参数来驱动测试脚本执行数据验证。2.根据权利要求1所述的方法,其特征在于,步骤S2-S4中,使用QTP工具进行数据的操作。3.根据权利要求1所述的方法,其特征在于,步骤SI中,所述驱动数据包括报表名称、报表查询开始日期、报表查询结束日期。4.根据权利要求1所述的方法,其特征在于,步骤S3中,通过获取报表名称的坐标值加固定数字来找到打开该报表的按钮,然后访问报表数据。5.根据权利要求1所述的方法,其特征在于,步骤S4之后,当测试停止则将测试表中数据也随之清除。6.根据权利要求1所述的方法,其特征在于,步骤S4中,驱动测试脚本执行数据验证具体包括步骤:S41,在脚本执行时首先创建以当前访问的报表名命名的数据文档,所述数据文档中分为系统导出数据保存区和数据库导出数据保存区两部分;S42,遍历网页报表,将获取的数据按行保存在所述数据文档的系统导出数据保存区中;S43,依据待验证报表名导出待查询条件,依据导出的待查询条件查询数据库,按行导出数据库数据,保存在所述数据文档的数据库导出数据保存区中;S44,对系统导出数据保存区和数据库导出数据保存区中单元格数据一一对比,一致则测试通过;不一致,则在产生的测试结果报告中输出错误信息。7.根据权利要求6所述的方法,其特征在于,步骤S43中,所述导出数据库数据的过程为:从数据库中导出数据,首先判断某个时间单一版本的统计项数据是否为空;若为空,则舍弃该时间-版本的数据导出过程,判断下一个时间-版本数据;若不为空,则按行查询数据;若查询结果仅有一个数据,则该数据赋值给“上传用户数”统计项,其余单元格赋值为O;否则将按行正常赋值。8.根据权利要求6所述方法,其特征在于,步骤S44中,不一致时,输出错误信息具体操作为:在系统导出数据保存区中该出错数据对应的单元格内显示错误数据信息,并将字体置为红色突出显示。9.一种数据正确性验证装置,其特征在于,所述装置包括:驱动数据保存模块,用于在本地建立用于保存驱动数据的文档;驱动数据导入模块,用于将驱动数据导入至测试用表中;脚本参数化模块,用于根据测试用例从对应的测试用表中取出驱动数据对脚本进行参数化;迭代验证模块,用于设置迭代次数,根据迭代次数的设置,按行依次读取表中数据来驱动测试脚本执行数据验证。10.根据权利要求9所述的装置,其特征在于,所述迭代验证模块通过脚本执行模块驱动测试脚本执行数据验证,所述脚本执行模块包括:数据文档创建模块,用于在脚本执行时首先创建以当前访问的报表名命名的数据文档,所述数据文档中分为系统导出数据保存区和数据库导出数据保存区两部分;系统数据导出模块,用于遍历网页报表,将获取的数据按行保存在所述数据文档的系统导出数据保存区中;数据库数据导出模块,用于依据待验证报表名导出待查询条件,依据导出的待查询条件,按行导出数据库数据,保存在所述数据文档的数据库导出数据保存区中;数据验证模块,对系统导出数据保存区和数据库导出数据保存区中单元格数据一一对t匕,一致则测试通过;不一致,则在产生的测试结果报告中输出错误信息。全文摘要本发明涉及数据测试
技术领域
,提供了一种数据正确性验证方法及装置。该方法包括在本地建立用于保存驱动数据的文档;将驱动数据导入至测试用表中;根据测试用表中驱动数据的列名对脚本进行参数化;设置迭代次数,根据迭代次数的设置,依次读取测试用表中每行的驱动数据替代参数来驱动测试脚本执行数据验证。本发明中将测试数据与脚本的分离,通过参数化的方式将数据文件中读取到的数据写入到脚本中,可以执行一次脚本实现多张报表数据的测试,大大降低了脚本的维护成本,可有效提高QTP验证web报表数据正确性的脚本利用率。文档编号G06F17/30GK103186467SQ20111046215公开日2013年7月3日申请日期2011年12月31日优先权日2011年12月31日发明者赵荣申请人:北京新媒传信科技有限公司

最新回复(0)