论文部分内容阅读
电子与信息系统在很多领域占据重要地位,质量和可靠性要求高,为此,全功能、全状态测试已经成为了行业共识。全因子测试是更为全面和充分的测试方法。然而,全因子测试数据集的规模往往非常庞大,导致测试空间爆炸,在实际中难以实现。组合测试是一种重要的黑盒测试方法,只需检测任意t个参数的相互作用就可以达到全因子测试的效果,与全因子测试相比,既能保证测试数据集的规模较小,又能保证测试的全面性。很多电子与信息系统的输入具有时序性,即输入要满足一定的时间要求和次序要求,而且参数之间、参数的取值之间往往存在组合约束、次序约束和时间约束。在保证测试的全面性的同时,生成满足约束的规模最小或较小的组合测试数据集,已成为功能测试领域的热点问题。研究最优或近似最优的组合覆盖测试数据的生成算法,可以满足电子与信息系统的输入的时序要求和约束要求,保证测试的全面性和提高测试效率,对提高电子与信息系统的测试覆盖率、提高产品的可靠性具有重要的意义。鉴于此,本文围绕着组合覆盖测试数据的生成问题展开研究,完成的主要工作如下:
针对约束覆盖数组规模过大的问题,提出了基于粒子群优化的约束覆盖数组生成算法。在寻优规则指导下,利用覆盖目标进行初始化和全局扰动提高寻优能力,并分别采用避免选择冲突测试用例策略和替换冲突测试用例策略处理约束,后者将局部寻优和全局寻优进行了有效的结合。提出了基于禁忌边分解的2维约束覆盖数组规模分析方法,可对已生成的约束覆盖数组的规模的实际可行性进行验证,该方法用于生成约束覆盖数组时可以简化生成过程。实验结果表明,对于不同的覆盖力度,基于粒子群优化的约束覆盖数组生成算法能够获得目前最优的约束覆盖数组。
针对现有次序约束描述方法不能描述涉及具体输入步骤的约束的问题,提出了基于钟控计算树逻辑的次序约束描述方法,利用时态算子的作用域描述涉及具体输入步骤的约束,增强了约束描述能力,并给出了测试数据约束一致性验证方法。针对多个参数同时连续输入时,分别覆盖取值组合和取值序列的测试数据的测试效率低,缺少同时覆盖的覆盖标准和生成算法的问题,提出了扩展覆盖数组,通过结合取值组合覆盖和取值序列覆盖两种覆盖标准,提升了覆盖标准的完备性。提出了基于粒子群优化算法和随机算法的扩展覆盖数组生成算法。实验结果表明,粒子群优化算法可以生成规模更小的扩展覆盖数组。组合力度和序列力度都为2的扩展覆盖数组与两者分别覆盖的测试数据相比减少了规模,提高了测试效率。
针对随机测试数据的相邻输入时刻组合覆盖率较低而导致的测试不全面的问题,当单参数连续输入时,提出使用相邻覆盖数组进行测试;当多参数并发输入时,提出了并发输入相邻覆盖数组,同时基于粒子群优化算法和随机算法实现了并发输入相邻覆盖数组的生成。实验结果表明,相邻覆盖数组能够覆盖全部的相邻两次输入的时刻组合;并发输入相邻覆盖数组能够覆盖同一参数相邻两次输入的时刻组合和任意两个参数同次输入的时刻组合。提高了相邻输入时刻组合的覆盖率,提高了测试的全面性。
搭建了自动测试环境,将被测系统抽象成能够准确描述功能的虚拟I/O模型,用于提供预期测试结果。测试时,将生成的测试数据从外部接口激励被测系统,同时激励虚拟模型。将从被测系统的外部接口收集的测试结果与虚拟模型输出的预期测试结果进行比对,将功能错误定义为功能需求和实现之间的差异,通过比对结果判断被测系统是否存在功能错误。利用自动测试环境对生成的测试数据进行了实际的测试,验证了算法的有效性和可行性。
综上所述,本文针对不同的输入时序要求和约束要求,分别研究了更高效的组合覆盖测试数据的生成问题,达到了保证测试的全面性和提高测试效率的目的。
针对约束覆盖数组规模过大的问题,提出了基于粒子群优化的约束覆盖数组生成算法。在寻优规则指导下,利用覆盖目标进行初始化和全局扰动提高寻优能力,并分别采用避免选择冲突测试用例策略和替换冲突测试用例策略处理约束,后者将局部寻优和全局寻优进行了有效的结合。提出了基于禁忌边分解的2维约束覆盖数组规模分析方法,可对已生成的约束覆盖数组的规模的实际可行性进行验证,该方法用于生成约束覆盖数组时可以简化生成过程。实验结果表明,对于不同的覆盖力度,基于粒子群优化的约束覆盖数组生成算法能够获得目前最优的约束覆盖数组。
针对现有次序约束描述方法不能描述涉及具体输入步骤的约束的问题,提出了基于钟控计算树逻辑的次序约束描述方法,利用时态算子的作用域描述涉及具体输入步骤的约束,增强了约束描述能力,并给出了测试数据约束一致性验证方法。针对多个参数同时连续输入时,分别覆盖取值组合和取值序列的测试数据的测试效率低,缺少同时覆盖的覆盖标准和生成算法的问题,提出了扩展覆盖数组,通过结合取值组合覆盖和取值序列覆盖两种覆盖标准,提升了覆盖标准的完备性。提出了基于粒子群优化算法和随机算法的扩展覆盖数组生成算法。实验结果表明,粒子群优化算法可以生成规模更小的扩展覆盖数组。组合力度和序列力度都为2的扩展覆盖数组与两者分别覆盖的测试数据相比减少了规模,提高了测试效率。
针对随机测试数据的相邻输入时刻组合覆盖率较低而导致的测试不全面的问题,当单参数连续输入时,提出使用相邻覆盖数组进行测试;当多参数并发输入时,提出了并发输入相邻覆盖数组,同时基于粒子群优化算法和随机算法实现了并发输入相邻覆盖数组的生成。实验结果表明,相邻覆盖数组能够覆盖全部的相邻两次输入的时刻组合;并发输入相邻覆盖数组能够覆盖同一参数相邻两次输入的时刻组合和任意两个参数同次输入的时刻组合。提高了相邻输入时刻组合的覆盖率,提高了测试的全面性。
搭建了自动测试环境,将被测系统抽象成能够准确描述功能的虚拟I/O模型,用于提供预期测试结果。测试时,将生成的测试数据从外部接口激励被测系统,同时激励虚拟模型。将从被测系统的外部接口收集的测试结果与虚拟模型输出的预期测试结果进行比对,将功能错误定义为功能需求和实现之间的差异,通过比对结果判断被测系统是否存在功能错误。利用自动测试环境对生成的测试数据进行了实际的测试,验证了算法的有效性和可行性。
综上所述,本文针对不同的输入时序要求和约束要求,分别研究了更高效的组合覆盖测试数据的生成问题,达到了保证测试的全面性和提高测试效率的目的。