文章目录
- Control-flow testing
- Data-flow testing
- Mutation analysis
-
- Control-flow testing
-
- CFG 注意事项
- Definitions for control-flow analysis
-
- execution path
- branch / decision
- condition
- feasible path
- coverage-based 标准
-
- Statement coverage (or node coverage)
- Branch coverage (or decision coverage)
- Condition coverage
- Decision/Condition coverage
- Multiple-condition coverage
- Path coverage
- 实例 1
- 实例 2
- Coverage 计算
- Data-Flow Testing
-
- Static Data-Flow Analysis
-
- anomalies (anomaly)
-
- u-r anomaly
- d-u anomaly
- d-d anomaly
- 实例
- data-flow analysis 适合分析的错误
- Dynamic Data-Flow Analysis with Testing
-
- 基础表示 C-use,P-use,d, u, c, p, k
- definition clear path(清晰路径定义)
- loop-free path (无环路径)
- Coverage-based 标准(criteria)
-
- All-Defs: 每个定义至少调用一次的 definition-clear 路径
- All-Uses: 所有的 define 的所有 uses
- All-Du-Paths:每个 use 的所有路径都要包含
- Mutation Analysis
-
- Coupling Effect
- Coupling Effect, Mutants, and Testing
- Equivalent Mutants
-
- Problems
- 好处方面
- Comparing Coverage Criteria
- Effectiveness of Coverage Criterion
Control-flow testing
- 控制流策略根据 控制流图 中的控制信息选择测试输入来执行路径。它们基于图中的控制信息进行路径选择,通常由if语句和while循环中的谓词给出。
- 覆盖标准有四个:
Data-flow testing
- 数据流策略根据 变量之间的数据流选择输入,以便在程序中执行路径;例如,在定义变量时(如给变量赋值)和在程序中使用该变量之间。
- 与控制流策略一样,test inputs 被选择以覆盖图形(因此也是代码)的测试用例。覆盖准则包括:
Mutation analysis
- 突变分析是一种 衡量测试套件有效性的技术,其副作用是创建并添加测试用例到该测试套件中。该技术基于在程序中引入故障,并评估测试套件是否能够检测到这些故障。如果不能,则说明该测试套件不足以发现故障,需要添加新的测试用例来找出这个故障。
- 上述三种技术都是为了选更好的 test input, 而不是 test case (test case 应该还包括预期的 output 以及执行环境);而 expected output 是通过 oracle 技术来实现的
测试输入(Test Input):
- 测试输入是指在进行软件测试时提供给系统或应用程序的数据。这些数据可以是用户输入的命令、文件、网络请求或任何其他可以被软件处理的信息。测试输入的目的是触发软件的处理流程,以便检测软件是否能正确地处理这些输入,或者是否存在处理输入时的缺陷。
例如,如果你正在测试一个计算器程序,那么一个测试输入可能是数字“42”和操作符“+”。
测试用例(Test Case):
- 测试用例是一个更为全面的概念,它不仅包含了测试输入,还包括预期结果和执行条件。测试用例描述了一个测试场景,包括执行步骤、测试输入、预期行为和预期输出的详细信息。测试用例是为了验证特定功能或软件需求而设计的,并且是测试计划的一部分。
Control-flow testing
- 白盒测试最常见的形式是控制流程测试,其目的是理解程序内部的控制流程。有多种方法可以捕获程序中的控制流程,但迄今为止最常用的方法是使用控制流图(CFG)。
CFG 注意事项
- 首先,请注意我们已将CFG分成了许多基本块。每个基本块都是一系列没有分支的语句,只有一个入口点和一个出口点,并且只有一条通过该块的路径。使用基本块可以更容易地可视化和分析大型CFG。其次,我们已用字母标记了图中的所有节点。通常情况下,由于路径是控制流图中节点的序列&#x