软件测试教程:第3章 白盒测试与数据流覆盖

需积分: 31 0 下载量 119 浏览量 更新于2024-08-23 收藏 810KB PPT 举报
"新建项目结束-软件测试教程-宫云战_第3章" 本教程主要涵盖软件测试中的白盒测试方法,详细讲解了控制流测试、数据流测试、程序插装以及程序变异测试等核心概念和技术。 首先,**控制流测试**关注的是程序的逻辑结构。它涉及到有向图、路径、完整路径、简单路径、基本路径、子路径、回路、无回路路径、连接和覆盖等相关概念。例如,路径覆盖关系是确保测试用例覆盖到所有可能的执行路径,包括语句覆盖(确保每个语句至少被执行一次)、分支覆盖(每个条件的真假分支都至少执行一次)、谓词测试(针对逻辑表达式)、原子谓词覆盖、分支-谓词覆盖、复合谓词覆盖以及路径覆盖准则等。这些覆盖准则旨在确保程序的各个逻辑路径得到充分测试。 接着,**数据流测试**侧重于程序中变量的定义和引用。定义性出现是指变量赋值的位置,而引用性出现则是变量被使用的时刻。测试准则包括定义覆盖(确保每个变量的定义至少被执行一次)、引用覆盖(每个变量的引用至少被执行一次)以及定义-引用覆盖(每个定义都有对应的引用被执行),这些准则帮助验证数据流的正确性。 **程序插装**是一种用于测试和评估的技术,主要解决三个问题:探测何种信息、何处设置探测点以及需要多少探测点。程序插装可以用于测试覆盖率和测试用例有效性的度量,也可以用于断言检测,确保程序的行为符合预期。 最后,**程序变异测试**是一种动态测试技术,通过假设程序中的错误并生成变异程序来检验测试用例的有效性。对于原始程序P和其变异因子P′,如果测试数据能区分两者之间的输出差异,那么可以提高对P正确性的信心。其中,**程序强变异测试**要求每个变异因子都能被相应的测试数据暴露出来,而**程序弱变异测试**则更注重改变程序的特定部分,以找出导致不同结果的测试数据。然而,强变异测试往往需要大量计算资源,弱变异测试则相对节省资源,但可能无法发现某些类型的错误。 这个教程深入讲解了软件测试的关键技术,对于理解和实践软件测试流程具有很高的指导价值。