并行程序中缩减测试用例方法技术

技术编号:21913830 阅读:63 留言:0更新日期:2019-08-21 12:23
本发明专利技术公开了一种并行程序中缩减测试用例方法,用于解决现有缩减测试用例方法复杂的技术问题。技术方案是首先对并行程序进行研究,选取与并行错误密切相关的变异算子,并以此为基础为待测程序生成多种变异体。采用线程调度工具JavaPathFinder(JPF)作为线程调度工具来执行测试用例,根据每一个测试用例变异评分与平均时间成本进行对测试用例进行排序。在排序后的测试用例集中,从上到下依次选取检测能力不重复的测试用例,从而得到面向并行错误检测的最小测试用例集。本发明专利技术保证在同等并行错误检测能力的情况下,缩减了测试用例集,降低了测试的时间成本,方法简单。

Test Case Reduction Method in Parallel Programs

【技术实现步骤摘要】
并行程序中缩减测试用例方法
本专利技术涉及一种缩减测试用例方法,特别涉及一种并行程序中缩减测试用例方法。
技术介绍
测试用例缩减方法并不是一个新的问题,贪心算法、启发式算法、线性规划、遗传算法等都曾应用在这个课题上。在之前的工作中,许多研究者探索了关于测试用例自动生成或是优先级的一些技术。文献“刘晓强,解筱梦,杜明,etal.面向云测试的并行测试用例自动生成方法[J].计算机应用,2015,35(4):1159-1163.”提出了一种针对并行测试的用例自动生成方法。该方法首先根据场景流图采用深度优先遍历算法生成并行测试路径,录制组合产生并行测试脚本,并进行参数化处理;然后,使用基于搜索的软件测试(SBST)方法自动生成可经过目标路径的有效测试数据集,脚本与数据耦合形成大量可并行部署的自动化测试用例。但是文献所述方法只是对并行测试用例的生成进行考虑,并没有针对并行错误测试用例最小化给出一个优化。并行系统线程调度的特性使得它的空间复杂度和时间复杂度都要更高,使其检测相对比较困难。在给定的输入条件下,先前的工作已经对并行错误的检测有了显著的成效,但软件测试总是会面对大量的输入情况,以现存技术来说不可能对所有输入进行测试。因为一个多线程的程序可以采取多种不同输入,并以更多不同交互来执行每个输入,由此造成的巨大输入空间和交互空间大幅降低了测试运行速度,其后的错误校验使输入执行时间减慢了10倍甚至100倍,导致执行所有测试输入的代价过高而无法接受。同时即使是同样的输入,由于线程调度的原因,也不一定每次都会得到相同的结果。
技术实现思路
为了克服现有缩减测试用例方法复杂的不足,本专利技术提供一种并行程序中缩减测试用例方法。该方法首先对并行程序进行研究,选取与并行错误密切相关的变异算子,并以此为基础为待测程序生成多种变异体。采用线程调度工具JavaPathFinder(JPF)作为线程调度工具来执行测试用例,根据每一个测试用例变异评分与平均时间成本进行对测试用例进行排序。在排序后的测试用例集中,从上到下依次选取检测能力不重复的测试用例,从而得到面向并行错误检测的最小测试用例集。本专利技术保证在同等并行错误检测能力的情况下,缩减了测试用例集,降低了测试的时间成本,方法简单。本专利技术解决其技术问题所采用的技术方案:一种并行程序中缩减测试用例方法,其特点是包括以下步骤:步骤一、选择变异算子。根据源代码特性,在程序中选取变异算子:MXT,RTXC,RJS,RSK,RSB,MSP和ESP。步骤二、生成变异体。根据变异算子生成变异体:Airline_MXT,Airline_RTXC,Airline_RJS,Airline_RSK,Airline_RSB,Airline_MSP和Airline_ESP。步骤三、执行测试用例并获取其结果。采用线程调度工具JPF作为线程调度工具来执行测试用例,使每个测试用例都在原程序中执行一次。将在原始程序执行的结果视为期望结果。执行变异体程序并将结果与原始程序对比,如果与期望结果相同,这个变异体对应的测试用例项被标记为S,否则被标记为F。步骤四、计算MS值和AC值。在测试用例优先级评定方面,从变异评分MS和平均成本AC两个方面来评价。给定一个程序P和一个测试集T,MS和AC的定义如下:变异评分MS是测试中所检测出的变异算子占整个程序中变异算子总数的比例,在给定程序P和测试用例集T的情况下,变异评分MS采用公式(1)计算:其中,Km是指被程序发现并杀除的变异算子的数目,Tm是程序中变异算子的总数,Em是发现的等价变异体的数目。平均成本AC是指一个测试用例分别以不同变异体运行时的平均执行时间。采用公式(2)计算:其中,n表示所有变异体的数量;Ci表示对一个变异体Mi执行测试集T中的一个测试用例t的实际运行时间。步骤五、根据MS值和AC值排序。根据MS值对各个测试用例进行降序排序,得出该测试集T中各个测试用例的优先级为T2-T6-T1-T4-T5-T3。由于T2与T6的MS值相同,T1与T4的MS值相同。各测试用例的优先级进一步优化为:T6-T2-T4-T1-T5-T3。新生成的序列中,T6优先级最高,因此将其第一个选入最小测试用例集T’中。T6所发现变异体为Airline_MXT,Airline_RTXC,Airline_RJS,Airline_RSK,Airline_MSP和Airline_ESP。以T6为基准,将其所发现的变异体加入至已发现变异体集M’中。在此基础上判断下一个测试用例T2是否发现新的变异体,即是否检测出不在M’中的变异体。若有,则将T2加入到最小测试用例集T’中,否则舍弃T2。继续进行判断下一个测试用例T4,T1…T3,直至判定完所有的测试用例。得到最小测试用例集T’。最终产生的测试用例集T’中包含两个测试用例T6和T4,其余测试用例未检测到新的变异体,因此将其舍弃,得到并行程序中缩减的测试用例。本专利技术的有益效果是:该方法首先对并行程序进行研究,选取与并行错误密切相关的变异算子,并以此为基础为待测程序生成多种变异体。采用线程调度工具JavaPathFinder(JPF)作为线程调度工具来执行测试用例,根据每一个测试用例变异评分与平均时间成本进行对测试用例进行排序。在排序后的测试用例集中,从上到下依次选取检测能力不重复的测试用例,从而得到面向并行错误检测的最小测试用例集。本专利技术保证在同等并行错误检测能力的情况下,缩减了测试用例集,降低了测试的时间成本,方法简单。表1试验中采用的程序数据程序代码行数变异体数目测试用例数Aireline3876LinkedList179620UnSortedTree1223820LinkShareService13803293573实验选择了4个程序作为实验数据集,其中Aireline、LinkedList以及UnsortedTree是三个来自于JPF所附带的测试程序集,另外一个较大规模程序LinkShareService为一个大型智能社区平台系统中的一个后台服务。表1中给出了实验采用的4个程序的代码行数、测试用例数、以及采用本文表1中给出的9个变异算子所产生的变异体数量。实验中,通过分别计算和对比原始测试集与最小测试集所发现全部变异体消耗的时间成本POC(percentageofcost)和测试用例执行比率POT(percentageofexecutedtestcases)这两项标准对最小测试集生成算法的效果进行评价。具体计算结果展现在表2中。其中POC-O与POT-T分别表示原始测试集发现全部变异体所消耗的“时间成本比率”及“测试用例执行比率”;而POC-M与POT-M表示应用本文算法所产生的最小测试集发现所有变异体消耗的“时间成本比率”与“测试用例执行比率”。表2四个被测项目耗费成本项目POC-OPOC-MPOT-OPOT-MAireline0.88430.26360.83330.3333LinkedList0.81380.19010.80150.1536UnSortedTree0.65120.13490.71340.1398LinkShareService0.93420.07820.99010.0418得知,生成的最小测试集在发现所有变异体所需要执行的本文档来自技高网...

【技术保护点】
1.一种并行程序中缩减测试用例方法,其特征在于包括以下步骤:步骤一、选择变异算子;根据源代码特性,在程序中选取变异算子:MXT,RTXC,RJS,RSK,RSB,MSP和ESP;步骤二、生成变异体;根据变异算子生成变异体:Airline_MXT,Airline_RTXC,Airline_RJS,Airline_RSK,Airline_RSB,Airline_MSP和Airline_ESP;步骤三、执行测试用例并获取其结果;采用线程调度工具JPF作为线程调度工具来执行测试用例,使每个测试用例都在原程序中执行一次;将在原始程序执行的结果视为期望结果;执行变异体程序并将结果与原始程序对比,如果与期望结果相同,这个变异体对应的测试用例项被标记为S,否则被标记为F;步骤四、计算MS值和AC值;在测试用例优先级评定方面,从变异评分MS和平均成本AC两个方面来评价;给定一个程序P和一个测试集T,MS和AC的定义如下:变异评分MS是测试中所检测出的变异算子占整个程序中变异算子总数的比例,在给定程序P和测试用例集T的情况下,变异评分MS采用公式(1)计算:

【技术特征摘要】
1.一种并行程序中缩减测试用例方法,其特征在于包括以下步骤:步骤一、选择变异算子;根据源代码特性,在程序中选取变异算子:MXT,RTXC,RJS,RSK,RSB,MSP和ESP;步骤二、生成变异体;根据变异算子生成变异体:Airline_MXT,Airline_RTXC,Airline_RJS,Airline_RSK,Airline_RSB,Airline_MSP和Airline_ESP;步骤三、执行测试用例并获取其结果;采用线程调度工具JPF作为线程调度工具来执行测试用例,使每个测试用例都在原程序中执行一次;将在原始程序执行的结果视为期望结果;执行变异体程序并将结果与原始程序对比,如果与期望结果相同,这个变异体对应的测试用例项被标记为S,否则被标记为F;步骤四、计算MS值和AC值;在测试用例优先级评定方面,从变异评分MS和平均成本AC两个方面来评价;给定一个程序P和一个测试集T,MS和AC的定义如下:变异评分MS是测试中所检测出的变异算子占整个程序中变异算子总数的比例,在给定程序P和测试用例集T的情况下,变异评分MS采用公式(1)计算:其中,Km是指被程序发现并杀除的变异算子的数目,Tm是程序中变异算子的总数,Em是发现的等价变异体的数目;平均成本AC是指一个测试用...

【专利技术属性】
技术研发人员:郑炜冯晨黄月明蔺军
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1