第四章:Coverage-based testing

文章目录

  • 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循环中的谓词给出。
  • 覆盖标准有四个:
    第四章:Coverage-based testing_第1张图片

Data-flow testing

  • 数据流策略根据 变量之间的数据流选择输入,以便在程序中执行路径;例如,在定义变量时(如给变量赋值)和在程序中使用该变量之间。
    在这里插入图片描述
  • 与控制流策略一样,test inputs 被选择以覆盖图形(因此也是代码)的测试用例。覆盖准则包括:
    在这里插入图片描述

Mutation analysis

  • 突变分析是一种 衡量测试套件有效性的技术,其副作用是创建并添加测试用例到该测试套件中。该技术基于在程序中引入故障,并评估测试套件是否能够检测到这些故障。如果不能,则说明该测试套件不足以发现故障,需要添加新的测试用例来找出这个故障。
    第四章:Coverage-based testing_第2张图片
    第四章:Coverage-based testing_第3张图片
  • 上述三种技术都是为了选更好的 test input, 而不是 test case (test case 应该还包括预期的 output 以及执行环境);而 expected output 是通过 oracle 技术来实现的

测试输入(Test Input):

  • 测试输入是指在进行软件测试时提供给系统或应用程序的数据。这些数据可以是用户输入的命令、文件、网络请求或任何其他可以被软件处理的信息。测试输入的目的是触发软件的处理流程,以便检测软件是否能正确地处理这些输入,或者是否存在处理输入时的缺陷。
    例如,如果你正在测试一个计算器程序,那么一个测试输入可能是数字“42”和操作符“+”。

测试用例(Test Case):

  • 测试用例是一个更为全面的概念,它不仅包含了测试输入,还包括预期结果和执行条件。测试用例描述了一个测试场景,包括执行步骤、测试输入、预期行为和预期输出的详细信息。测试用例是为了验证特定功能或软件需求而设计的,并且是测试计划的一部分。

Control-flow testing

  • 白盒测试最常见的形式是控制流程测试,其目的是理解程序内部的控制流程。有多种方法可以捕获程序中的控制流程,但迄今为止最常用的方法是使用控制流图(CFG)。
    第四章:Coverage-based testing_第4张图片
    第四章:Coverage-based testing_第5张图片
    第四章:Coverage-based testing_第6张图片

CFG 注意事项

第四章:Coverage-based testing_第7张图片

  • 首先,请注意我们已将CFG分成了许多基本块。每个基本块都是一系列没有分支的语句,只有一个入口点和一个出口点,并且只有一条通过该块的路径。使用基本块可以更容易地可视化和分析大型CFG。其次,我们已用字母标记了图中的所有节点。通常情况下,由于路径是控制流图中节点的序列&#x

你可能感兴趣的:(testing)