📜  软件测试 |突变测试

📅  最后修改于: 2022-05-13 01:56:59.723000             🧑  作者: Mango

软件测试 |突变测试

变异测试是一种软件测试,用于设计新的软件测试并评估现有软件测试的质量。突变测试与以小方式修改程序有关。它侧重于帮助测试人员开发有效的测试或定位程序使用的测试数据中的弱点。

突变测试的历史:
Richard Lipton于 1971 年首次提出突变测试。虽然高成本减少了变异测试的使用,但现在它被广泛用于Java和 XML 等语言。



突变测试是一种白盒测试。

变异测试可应用于设计模型、规范、数据库、测试和 XML。它是一种结构化测试技术,它使用代码的结构来指导测试过程。它可以被描述为以小的方式重写源代码以消除源代码中的冗余的过程。

突变测试的目的:
突变测试的目的是:

  • 识别未正确测试的代码片段。
  • 识别使用其他测试方法无法检测到的隐藏缺陷。
  • 发现新类型的错误或错误。
  • 计算突变分数。
  • 研究程序中的错误传播和状态感染。
  • 评估测试用例的质量。

突变测试的类型:
突变测试基本上有3种类型:

  1. 价值突变:
    在这种类型的测试中,更改值以检测程序中的错误。基本上是一个小的值变成一个较大的值,或者一个较大的值变成一个较小的值。在这个测试中,基本常量是改变的。

    例子:

    Initial Code:
    
    int mod = 1000000007;
    int a = 12345678;
    int b = 98765432;
    int c = (a + b) % mod;
    
    Changed Code:
    
    int mod = 1007;
    int a = 12345678;
    int b = 98765432;
    int c = (a + b) % mod; 
  2. 决策突变:
    在决策中,更改是逻辑或算术运算运算符以检测程序中的错误。

    例子:

    Initial Code:
    
    if(a < b)
     c = 10;
    else
     c = 20;
    
    Changed Code:
    
    if(a > b)
     c = 10;
    else
     c = 20; 
  3. 语句突变:
    在语句突变中,一条语句被删除或被其他语句替换。

    例子:

    Initial Code:
    
    if(a < b)
     c = 10;
    else
     c = 20;
    
    Changed Code:
    
    if(a < b)
     d = 10;
    else
     d = 20; 

突变测试的优点:

  • 它在程序中带来了良好的错误检测水平。
  • 它发现源代码中的歧义。

突变测试的缺点:

  • 这是非常昂贵和耗时的。
  • 它不能用于黑盒测试。