本发明涉及软件测试,具体涉及一种基于momutuml的测试用例自动生成方法及系统。
背景技术:
1、momutuml采用基于模型故障的测试用例自动生成方法,依赖于被测系统的模型来创建测试用例,是一种黑盒测试方法。在将故障插入被测系统模型后,它会生成揭示该故障的测试用例,这使得基于模型的测试用例生成方法成为可用的最强大和通用的测试用例生成方法之一,因为它创建了保证揭示某些故障的测试用例,使用其生成的测试用例进行测试既能够证明不存在某些故障,也能够揭示产生故障情况下的行为信息。但momutuml目前仍存在如下几点局限性:
2、(1)momutuml现有变异算子的功能可能重叠,容易产生语法等效的变异模型,增加了测试用例生成的开销,导致测试用例生成效率低。
3、(2)momutuml当前变异方法较为低效,无法选择最适合被测模型的变异算子集合,导致测试用例生成效率低。
4、(3)momutuml整体流程设计不灵活,为顺序执行,无法接收测试用例生成结果的反馈且无法根据反馈对变异过程进行调整,导致测试用例生成效率低。
技术实现思路
1、有鉴于此,本发明提供了一种基于momutuml的测试用例自动生成方法及系统,能够高效地生成测试用例,并将测试用例生成结果反馈到变异过程,对变异过程进行调整,提高测试用例生成效率。
2、本发明采用的具体技术方案如下:
3、一种基于momutuml的测试用例自动生成方法,包括:
4、步骤一、建立被测模型,并根据所述被测模型获得初始全局状态覆盖统计表和初始全局转换覆盖统计表;
5、步骤二、根据变异算子集合中每个变异算子对所述被测模型进行变异操作,构建对应的变异模型集合;
6、步骤三、根据所述变异模型集合和所述被测模型生成测试用例,并根据所述测试用例删除所述变异模型集合中的等效变异模型,获取有效变异模型,根据所述有效变异模型更新所述初始全局状态覆盖统计表和初始全局转换覆盖统计表,获得全局状态覆盖统计表和全局转换覆盖统计表;
7、步骤四、根据所述全局状态覆盖统计表和全局转换覆盖统计表及所述有效变异模型对每个变异算子评分,构建所述被测模型最优变异算子集合;
8、步骤五、统计连续未产生新的测试用例的轮数n,若n<n,以步骤四中的所述最优变异算子集合替换步骤二中的所述变异算子集合,重复步骤二至步骤四;若n≥n,停止测试用例的生成过程,获取已生成的测试用例集合。
9、进一步地,步骤一中,根据所述被测模型获得初始全局状态覆盖统计表和初始全局转换覆盖统计表,包括:
10、按照谓词逻辑对所述被测模型进行统计分析,根据统计分析结果建立初始全局状态覆盖统计表和初始全局转换覆盖统计表。
11、进一步地,步骤二中,根据变异算子集合中每个变异算子对所述被测模型进行变异操作,包括:
12、增加三个变异算子分别是:更改转换的源头状态的变异算子、更改转换的目标状态的变异算子、移除某状态的随机转换的变异算子;
13、删除四个变异算子分别是:设置警戒条件为假、设置警戒条件为真、设置布尔类型ocl子表达式为假、设置布尔类型ocl子表达式为真;
14、根据修改后的变异算子对所述被测模型进行变异操作。
15、进一步地,步骤二中,根据变异算子集合中每个变异算子对所述被测模型进行变异操作,还包括:
16、对所述修改后的变异算子进行分组,将更改转换的源头状态的变异算子和更改转换的目标状态的变异算子作为状态覆盖增益组,将其它变异算子作为转换覆盖增益组。
17、进一步地,步骤三中,所述根据所述变异模型集合和所述被测模型生成测试用例,并根据所述测试用例删除所述变异模型集合中的等效变异模型,获取有效变异模型,根据所述有效变异模型更新初始全局状态覆盖统计表和初始全局转换覆盖统计表,获得全局状态覆盖统计表和全局转换覆盖统计表,包括:
18、选取一个所述变异模型集合中的一个变异模型,与所述被测模型进行一致性检查,搜索所述变异模型与所述被测模型的行为差异,如存在差异则根据所述行为差异生成测试用例,将所述变异模型作为有效变异模型,并标记与所述有效变异模型对应的变异算子;如不存在差异则继续从所述变异模型集合中选取变异模型,直至选择到一个与所述被测模型存在行为差异的变异模型或所述变异模型集合遍历完成;
19、将所述有效变异模型覆盖到的被测模型的状态及转换在初始全局状态覆盖统计表及初始全局转换覆盖统计表中标记更新,获得全局状态覆盖统计表及全局转换覆盖统计表。
20、进一步地,步骤四中,根据所述全局状态覆盖统计表和全局转换覆盖统计表及所述有效变异模型对每个变异算子评分,构建所述被测模型最优变异算子集合,包括:
21、根据所述全局状态覆盖统计表与所述全局转换覆盖统计表计算所述已生成的测试用例对所述被测模型的状态覆盖率与转换覆盖率:
22、状态覆盖率:
23、
24、其中,|s′|为已被覆盖的状态数量,|s|为被测模型全部状态数量;
25、转换覆盖率:
26、
27、其中,|t′|为已被覆盖的转换数量,|t|为被测模型全部转换数量;
28、根据所述状态覆盖率和所述转换覆盖率以及有效变异模型的比例对所述变异算子进行评分,选取评分前b名(b<count(i),i指变异算子)的变异算子,构建所述被测模型的最优变异算子集合。
29、进一步地,所述根据状态覆盖率和所述转换覆盖率以及有效变异模型的比例对所述变异算子进行评分,包括:
30、对于状态覆盖增益组中的变异算子,先根据所述状态覆盖率计算状态覆盖率增益:
31、
32、再根据所述状态覆盖率增益以及有效变异模型的比例对所述变异算子进行评分:
33、
34、其中,fi为编号为i的变异算子的评分,|mi|为编号为i的变异算子派生的有效变异模型个数,|mi|为编号为i的变异算子派生的所有变异模型个数,表示编号为i的变异算子生成的有效变异模型的比例,α、β为权重因子,α>β,statecovgain为状态覆盖增益;
35、对于转换覆盖增益组中的变异算子,先根据所述转换覆盖率计算转换覆盖率增益:
36、
37、再根据所述转换覆盖率增益以及有效变异模型的比例对所述变异算子进行评分:
38、
39、其中,fj为编号为j的变异算子的评分,|mj|为编号为j的变异算子派生的有效变异模型个数,|mj|为编号为j的变异算子派生的所有变异模型个数,表示编号为j的变异算子生成的有效变异模型的比例,y、δ为权重因子,y>δ,transcovgain为转换覆盖增益。
40、一种基于momutuml的测试用例自动生成系统,包括:
41、建模模块,用于建立被测模型,并根据所述被测模型获得初始全局状态覆盖统计表和初始全局转换覆盖统计表;
42、变异模块,用于根据变异算子集合中每个变异算子对所述被测模型进行变异操作,构建对应的变异模型集合;
43、用例生成模块,用于根据所述变异模型集合和所述被测模型生成测试用例,并根据所述测试用例删除所述变异模型集合中的等效变异模型,获取有效变异模型,根据所述有效变异模型更新所述初始全局状态覆盖统计表和初始全局转换覆盖统计表,获得全局状态覆盖统计表和全局转换覆盖统计表;
44、反馈及覆盖统计模块,用于根据所述有效变异模型及所述全局状态覆盖统计表和全局转换覆盖统计表对每个变异算子评分,构建所述被测模型最优变异算子集合;并用于统计连续未产生新的测试用例的轮数n,若n<n,将所述最优变异算子集合返回所述变异模块,替换所述变异算子集合,重新进行变异操作;若n≥n,停止测试用例的生成过程,获取已生成的测试用例集合。
45、进一步地,在所述变异模块中,根据每个变异算子对所述被测模型进行变异操作,包括:
46、增加三个变异算子分别是:更改转换的源头状态的变异算子、更改转换的目标状态的变异算子、移除某状态的随机转换的变异算子;删除四个变异算子分别是:设置警戒条件为假、设置警戒条件为真、设置布尔类型ocl子表达式为假、设置布尔类型ocl子表达式为真;
47、根据修改后的变异算子对所述被测模型进行变异操作。
48、进一步地,在所述变异模块中,对所述修改后的变异算子进行分组,将更改转换的源头状态的变异算子和更改转换的目标状态的变异算子作为状态覆盖增益组,将其它变异算子作为转换覆盖增益组。
49、有益效果:
50、(1)一种基于momutuml的测试用例自动生成方法,通过根据变异模型集合和被测模型生成测试用例,并根据测试用例删除等效变异模型,获取有效变异模型,避免了momutuml中等效变异模型数量过多的问题,提高了测试用例的生成效率;通过基于反馈的变异方法,根据有效变异模型及状态及转换覆盖情况对变异算子进行评分,构建最优变异算子集合,选择最优变异算子集合中变异算子对被测模型进行变异操作,解决了momutuml变异方法低效的问题,提高了测试用例的生成效率。
51、(2)对原有的功能重叠变异算子进行了删减,并增加了3种与原有变异算子功能不重叠的新变异算子,减少了语法等效变异模型的生成,更高效模拟建模过程中可能出现的错误,降低了时间成本。
52、(3)对修改后的变异算子进行分组评分,同时采用状态覆盖率、转换覆盖率以及有效变异模型作为评分标准,能够动态依据测试用例生成的结果和覆盖情况对每种变异算子评分并反馈。同时,考虑变异算子生成的有效变异模型的比例与覆盖情况的优先级,对应调整评分公式中权重大小,可以更加准确的对每种变异算子进行评分,选择针对被测模型的最优变异算子集合,进而优化变异过程,提高测试用例生成效率。
53、(4)通过对原有测试用例生成流程进行修改,新添加了反馈及覆盖统计模块,将评分结果反馈到变异模块,变异模块根据反馈调整变异过程,提高测试用例生成效率。