论文部分内容阅读
Web应用系统规模和复杂性的增加使得软件中错误或缺陷也随之增加,而软件测试作为提高软件可靠性和保证软件质量的重要手段自然成为研究人员关注的焦点。同时,为了保证测试工作的高效执行,并尽可能降低测试成本,加强对测试用例的生成优化及其优先级的优化亦成当务之急。基于模型检验的测试用例生成方法是一种有效的、自动化的软件测试方法,能够根据模型和给定的陷阱性质(测试目标取反)生成满足一定覆盖准则的反例(测试用例)。但是,这种方法往往会产生大量冗余的测试用例,增加后续测试执行的代价。为此,本文提出了一种在测试用例生成过程中约简陷阱性质集的方法。当模型检验器生成一条测试用例后,利用SAT求解器的可满足性理论验证该测试用例是否覆盖剩余的陷阱性质,并删除被已生成的测试用例覆盖的陷阱性质,从而避免生成冗余的测试用例,并且减少调用模型检验器的次数。测试用例生成后,为验证Web系统在迭代开发过程中的稳定性需要执行回归测试。但是,在回归测试中执行全部的测试用例是不切实际的,而测试用例优先级技术就是将测试用例按照需求、覆盖率等准则进行排序,使得检错能力强的测试用例优先被执行,以提高回归测试的效率。本文提出一种基于历史信息的测试用例优先级排序方法,该方法根据状态图的层次精化理论将所有的测试用例划分为不同的功能域,并将测试用例根据历次回归测试中检错的数量和执行不稳定的次数进行初始化排序,然后在回归测试的执行过程中根据执行结果动态调整优先级,从而达到执行尽可能少测试用例探测出尽可能多缺陷的效果。为Web应用系统进行建模是测试工作进行的基础,本文采用UML状态图为系统建模。同时,本文结合课题组开发的Web项目CPMISS系统进行建模、生成测试用例并执行回归测试,通过实验证明本文所提的优化方法的有效性和可执行性。在此基础上,本文开发了测试用例优化生成和优先级动态调整的工具原型,实现了从用例生成到回归测试的测试自动化。