论文部分内容阅读
软件测试是保证软件产品质量的一种有效手段。近年来伴随着软件技术的发展,软件规模越来越大,测试用例的数量不断增加,而时间、人力、资金等成本是有限的,在有限资源下,必然无法执行全部测试用例,唯有从庞大的测试用例库中挑选部分最值得执行的测试用例进行测试。研究学者们针对回归测试用例选取提出许多技术方案,尤其从测试用例选择、测试用例最小化和测试用例优先级排序这3个方面进行了深入研究分析,在实际应用中也取得了一定的成果。本文主要研究测试用例优先级排序技术,分析研究该技术下的2类方案Rothermel等人提出Additional策略并用于基于源代码的测试用例优先级排序中,首先利用收集到的测试用例执行结果的历史覆盖信息,依据覆盖能力设置权重值,然后对测试用例进行排序,该策略在排序过程中通过不断地动态调整剩余测试用例的覆盖信息,使得每次均选择尚未被覆盖的代码所对应的测试用例,以尽快达到较高覆盖率的目的Krishnamoorthi等人提出PORT6策略并用于基于需求的测试用例优先级排序中,首先收集软件需求相关影响因素,然后计算测试需求优先级,最后根据测试用例与测试需求之间的对应关系计算测试用例的需求覆盖权重并排序。基于对上述2种方案的深入研究,本文做了如下2项工作:1)本文通过模拟Additional策略对软件的测试用例集按对应优先级进行排序,发现该策略在遇到具有相同覆盖率的测试用例时,每次均随机选择一个测试用例,而这些具有相同覆盖率的测试用例集合中可能存在能够发现错误的测试用例,也可能存在不能发现错误的测试用例,随机选择方式并不能保证发现错误的测试用例被优先选择。为了改进Additional策略随机选择的特性,使其尽可能优先选择那些能够发现缺陷的测试用例。本文提出一种新的带使用标签的Additional策略(简称AdditionalUL策略),当遇到具有相同覆盖率的测试用例集合时,该策略从能否发现错误及错误严重程度、代码是否发生变更、是否为核心代码、是否为易错代码等角度量化测试用例优先级,然后选择一个优先级最高的测试用例。通过对比优化前后排序策略对实际程序的测试用例集排序结果的APFD值,验证了该方法能够提高Additional策略发现及检验错误的速率。2)本文研究了PORT6策略从需求的6个方面对测试用例量化并排序的方法,分析该方法使用的排序策略和对各因素量化处理的特点及其不足,提出基于Additional的PORT4策略,首先通过整合相似和舍弃不常用的需求因素,提出从需求核心程度、缺陷影响程度、需求变更程度和需求易错程度4个角度分析需求,并充分考虑各需求因素的优先级,优化测试用例的需求覆盖权重的计算方式,以提高其量化能力,然后利用Additional策略并结合需求间逻辑关系对测试用例集排序,最后借鉴屈波等人在处理发现缺陷的测试用例时,根据测试用例设计信息提高其余具有相同设计目的的测试用例优先级的思想,加入动态调整策略,在测试用例执行过程中若该测试用例发现错误,则降低其所对应需求下的其他测试用例的优先级。实验对比随机策略、PORT6策略与基于Additional的PORT4策略的错误检测情况,以及排序结果的APFD值,结果显示本文提出的策略具有最高的发现及检验软件缺陷的速率。