软件测试用例集简化及其构建方法研究
【摘要】:软件测试是软件生命周期的一个必要环节,其目的是尽早的发现软件中的错误,以确保软件质量。测试用例是进行软件测试的基础,一个覆盖度高且精简的测试用例集有助于降低测试成本和提高测试效率。本文主要围绕测试用例集简化及其构建方法展开研究,主要研究内容包括以下几个方面:
(1)提出一种针对修改条件/判定覆盖标准的双目标优化测试用例集简化算法。修改条件/判定覆盖标准是一种较为复杂且有效的测试覆盖标准,它能够检测隐蔽性很强的程序错误。现有的测试用例集简化算法主要考虑的是测试用例的覆盖度,而忽略了测试用例的错误检测能力。双目标优化的测试用例集简化算法首先从覆盖度和错误检测能力两个方面综合考虑测试用例的价值,构造一个评价测试用例的双目标优化模型;然后,根据修改条件/判定覆盖标准的特点,应用双目标最优化模型逐步消除冗余测试用例,实现对测试用例集的简化。
(2)考虑到评判测试用例质量可以有多个不同的指标,基于双目标优化模型,提出一种多目标优化的测试用例集简化算法。首先将测试用例集分为两个子集:必要测试用例子集和冗余测试用例子集。必要测试用例集子集是简化测试用例集的一部分。然后,根据测试要求,选择测试用例的评价指标,作为测试用例的决策目标,构造一个测试用例的多目标优化模型;对冗余测试用例子集应用该模型,可以获得一个满意解的测试用例子集;使用测试用例集最小化方法对该子集进行最小化,获得局部最小的测试用例子集。重复这个过程,直到识别的所有局部最小测试用例子集和必要测试用例子集完全覆盖测试需求集为止。该算法与传统算法相比,不仅可以约简测试用例集,同时更好的保证了简化测试用例集的测试能力。
(3)提出一种基于关键不可行分支的不可行路径确定方法。程序中的不可行路径增加了程序复杂度和冗余度,产生无效定值-引用链和无用测试用例。深入分析不可行路径产生的原因,就不同原因导致的不可行路径采用不同的策略查找不可行路径中的关键不可行分支。值依赖导致的不可行路径,采用静态单一信息形式确定关键不可行分支;谓词包含导致的不可行路径,应用编译阶段生成的信息来确定关键不可行分支。然后,通过二分查找算法搜索包含关键不可行分支的路径,以确定不可行路径。仿真实验结果表明:与其它方法相比,关键不可行分支方法能够快速、有效地确定不可行路径。
(4)基于不可行路径的分析,提出一种基于定值-引用链测试需求集优化的测试用例集简化方法。首先,考虑程序中不可行路径导致的无效定值-引用链,优化定值-引用链数据流方程。然后,基于这个改进后的数据流方程对有效定值-引用链进行确定,获得一个更为精简的定值-引用链测试需求集。最后,基于优化的定值-引用链测试需求集,对定值-引用链测试用例集进行简化。仿真实验结果表明:该方法优化了定值-引用链测试需求集,在没有增加任何测试开销的前提下,提高了定值-引用链测试覆盖率,更加有效地简化了测试用例集。
(5)针对交互式软件具有人机交互频繁、界面状态复杂的特点,提出一种功能组件的测试用例生成方法。该方法采用黑盒测试技术。首先将用户使用被测试软件的流程划分为具有独立意义的功能,采用形式化方法定义了功能组件;然后,提取相应的操作流程,剔除冗余流程,封装功能组件;接着,应用等价类划分法、边界分析法、植错法和因果图法产生测试数据,生成测试用例;最后,给出测试覆盖准则,构建测试用例集。实验结果表明,基于可复用功能组件的测试用例生成方法,提高了测试用例的生成效率,构建的测试用例集能够有效的发现程序中的错误。
(6)在上述的研究基础上,设计并实现了一个针对交互式软件的测试用例生成及回放测试工具CADTesing。CADTesing是一个平台独立的测试工具,采用黑盒测试技术。CADTesing基于功能组件的测试用例生成方法,学习被测试软件的操作流程,更改流程参数,生成测试用例,通过回放用例驱动被测试软件运行,实时监控其运行状态,自动生成测试报告。CADTesing已应用到清软英泰TiGems软件、北航海尔CAXA软件和浙大大天GS-CAD软件的测试工作中,提高了测试效率。