一种生成最小自动化测试用例集的方法和装置与流程

文档序号:15216141发布日期:2018-08-21 16:52阅读:966来源:国知局
本发明涉及软件自动化测试领域,尤其涉及一种生成最小自动化测试用例集的方法和装置。
背景技术
:在软件测试过程中,生成并选择有效的软件测试用例,并且可以筛选出一系列复现错误几率高的用例,对于测试人员的成本节约以及软件质量的保证有着至关重要的作用。测试优化主要包含两个方面,一是在满足测试要求的前提下,找出最小测试用例集;二是在一定的测试用例数下可以自动扩充满足测试要求并不重复的测试用例。本技术专利主要介绍了一种最小测试用例生成的算法。目前针对最小测试用例集的web端算法,大多数是基于机器学习中的贪心算法来生成测试用例。其中有针对日志的挖掘进行测试用例的筛选,从而将测试用例进行分门别类,最终选取出符合测试要求的测试用例,但是由于机器学习算法复杂,易用性低。技术实现要素:为了解决上述问题,本发明的目的在于提供一种生成最小自动化测试用例集的方法和装置。基于机器学习和遗传算法结合来生成基于代码结构的测试用例,其中被搜索的解空间就是测试数据空间,最优化解就是满足特定测试目标测试数据,能有效降低算法复杂度,同时获取有效的测试用例。为解决上述技术问题,申请实施例是这样实现的:本申请实施例提供的一种生成最小化测试用例集的方法,所述方法包括:生成多组入参数据,包括生成数据源并将数据源组合;构建接口脚本,包括编写接口测试用例和构建测试用例库,将入参数据关联到测试用例库中;运行测试用例的脚本,借助插件记录代码覆盖率,并记录测试结果;保留同一个测试结果中覆盖率最高的测试用例。作为优选,所述生成数据源,包括:构造入参生成器,对数据源按多种维度分类,个性化每种数据类型的取数规则,建立规则函数;将数据源进行分类后存储如数据库。作为优选,运行测试用例的脚本之前,还包括:选取同一测试用例下的公用入参数据。作为优选,所述选取同一测试用例下的公用入参数据,包括:入参数据存储在测试用例库中,该数据库的数据表包含用于表示测试用例对外接口名称的字段interface_name,令同一个接口测试用例的所有入参数据的interface_name都相同;利用testng的dataprovider通过数据库的连接,将所有相同interface_name的入参数据筛选出来作为测试用例的数据源。作为优选,所述保留同一个测试结果中覆盖率最高的测试用例,包括:对于测试结果相同的测试用例,放入同一个筛选池中;选出每个筛选池中覆盖率最高的测试用例,将该测试用例标志为可用用例,将该筛选池中的其他用例标志为不可用用例;删除不可用用例。本申请实施例提供的一种生成最小化测试用例集的装置,所述装置包括:入参数据生成单元:生成多组入参数据,包括生成数据源并将数据源组合;测试用例构建单元:构建接口脚本,包括编写接口测试用例和构建测试用例库,将入参数据关联到测试用例库中;测试用例运行单元:运行测试用例的脚本,借助插件记录代码覆盖率,并记录测试结果;筛选单元:保留同一个测试结果中覆盖率最高的测试用例,形成最小用例集。由以上本申请实施例提供的技术方案可知,本申请实施例基于机器学习和遗传算法结合来生成基于代码结构的测试用例,其中被搜索的解空间就是测试数据空间,最优化解就是满足特定测试目标测试数据,能有效降低算法复杂度,同时获取有效的测试用例。附图说明图1为生成最小化测试用例集的方法的流程图。图2为生成最小化测试用例集的装置的框图,具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书中一个或多个实施例相一致的所有实施方式。相反,它们仅仅是与所附权利要求中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。需要说明的是:在其它实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,在一些其它实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明说中所描述的单个步骤,在其他实施例中也可能被合并为单个步骤而进行。如图1所示,该方法可以包括以下步骤:步骤1,生成多组入参数据,包括生成数据源并将数据源组合。步骤1可以包括以下步骤:步骤101,生成数据源;步骤102,构造入参生成器。所述构造入参生成器包括:对数据源按多种维度分类,个性化每种数据类型的取数规则,建立规则函数。以一个接口为例,首先将数据元按以下几种维度进行分类:维度一,是否必传;维度二,数据类型:int,string,list,long等;维度三,数据取值范围:包含数据类型及边界值,特殊字符及业务含义。然后个性化每种数据类型的取数规则,以int数据生成规则举例说明:定义订单号:intpayid。首先可以判断,int的范围是[-2^31-1.2^31],总共可以取值是2^32,但考虑到业务含义后,可以确定payid的取值为:1、负数;2、2^31,3、字符,4、100(介于边界值之中的任意数字)。同理可以设计出其他入参的取值规则,建立规则函数。步骤103,将经过入参生成器处理的数据进行分类后存入数据库中。数据源存入data_resource表中,数据源的存储字段如表1所示:表1:idnecessityvaluedata_namedata_typeuseful1其中id是主键,necessity记录了字段是否必填,其中0是非必填,1是必填;value为数据的值;data_name是入参的含义或名称;data_type是数据类型;useful是表示这个参数值在步骤104中是否将被使用,useful为1的说明这个值在组合入参时将被使用;为0时,说明组合入参时不考虑这个参数值。步骤104,数据源组合。对于存储在data_resource表中的数据源,将所有必传字段,按不同的入参名称进行排列组合得到多组入参数据,每组入参数据包含多个数据。步骤2,构建测试用例库,包括:编写接口测试用例脚本;构建测试用例库test_case,将入参数据关联到测试用例库。test_case表的存储字段如表2所示:id为主键,interface_name为所服务端对外提供接口名称;通过data字段关联入参数据;test_result用来记录测试结果;coverage_percent用来代码覆盖率;useful是用来标记用例是否保留,其中0代表弃用,1代表留用。步骤3,运行测试用例的脚本。在运行测试用例的脚本之前,还包括:选取同一测试用例下的公用入参数据。在测试用例库中,步骤1生成的入参数据存储于测试用例库的data字段下,数据库中的数据表包含字段:interface_name,令同一个接口测试用例的所有入参数据的interface_name都相同,这样可以利用testng的dataprovider通过数据库的连接,将所有相同接口名的入参数据筛选出来作为测试用例的数据源,接下来需要运行测试用例。运行测试用例时需要借助eclipse的cobertura插件ecobertura来统计每一个数据源作为入参后,代码的覆盖率,作为评分标准,并且将测试结果记录在test_case的test_result字段中。步骤4,保留同一个测试结果中覆盖率最高的测试用例。对于测试结果相同的测试用例,放入同一个筛选池中;选出每个筛选池中覆盖率最高的测试用例,将该测试用例标志为可用用例,将该筛选池中的其他用例标志为不可用用例;删除不可用用例。经过上述步骤处理,最终能自动得到最小用例集。如图2所示为一种生成最小化测试用例集的装置,包括:入参数据生成单元21:生成多组入参数据,包括生成数据源并将数据源组合;测试用例构建单元22:构建接口脚本,包括编写接口测试用例和构建测试用例库,将入参数据关联到测试用例库中;测试用例运行单元23:运行测试用例的脚本,借助插件记录代码覆盖率,并记录测试结果;筛选单元24:保留同一个测试结果中覆盖率最高的测试用例,形成最小用例集。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1