程序变异测试与软件白盒测试策略

需积分: 31 0 下载量 188 浏览量 更新于2024-08-23 收藏 810KB PPT 举报
"程序变异测试-软件测试教程-宫云战_第3章" 在软件测试领域,程序变异测试是一种强化测试方法,旨在提高测试覆盖率和验证程序的正确性。本章详细介绍了程序变异测试的概念和技术,同时涵盖了白盒测试中的控制流测试、数据流测试以及程序插装。 在3.1节控制流测试中,讨论了有向图、路径、完整路径、简单路径、基本路径、子路径、回路、无回路路径、连接和覆盖等基础概念。其中,路径覆盖关系举例帮助理解如何通过覆盖不同的执行路径来确保程序的全面测试。控制流覆盖准则包括语句覆盖、分支覆盖、谓词测试、原子谓词覆盖、分支-谓词覆盖和复合谓词覆盖以及路径覆盖,这些准则帮助测试人员确定测试用例的充分性。 3.2节数据流测试关注的是变量的定义性出现和引用性出现。定义覆盖测试准则确保每个变量的定义至少被测试一次,引用覆盖测试准则确保每个变量的引用至少被测试一次,而定义-引用覆盖测试准则要求定义和引用都应被覆盖。 3.3节程序插装技术主要探讨如何在程序中插入探测点以收集信息,用于测试覆盖率评估和断言检查。它涉及选择插入点、确定探测点数量,以及不同类型的插装,如测试覆盖率度量和断言检测。 核心主题3.4程序变异测试则引入了一种创新的测试策略。这一技术基于假设程序中存在错误,通过修改(或变异)源代码创建多个程序版本(变异因子)。每个变异因子代表一个可能的错误。测试数据集C被用来比较原始程序P和变异后的程序Pi的输出。如果所有变异版本在特定测试数据下都出错,而原程序正确,那么我们可以认为程序P的正确性较高。反之,如果某个变异版本在某测试数据下正确,而原程序错误,这表明原程序存在相应错误(ei)。 程序变异测试分为强变异和弱变异。强变异测试对程序的每个可能错误进行严格测试,但可能导致巨大的计算资源消耗。弱变异测试则更侧重于改变程序的部分组件,只要能找到使原始程序和变异程序输出不同的测试数据,就认为满足变异条件。 综合以上内容,本教程深入探讨了软件测试的关键技术,为测试工程师提供了实用的方法和理论支持,以提高测试效率和程序质量。