软件测试
SDLC模型
测试类型
测试方法
白盒技术
黑盒技术
黑匣子类型
功能类型
非功能性类型
测试用例开发
测试技术
测试管理
缺陷跟踪
测试分类
测试工具

突变测试

突变测试

什么是突变测试?

突变测试是软件测试中的一种白盒方法,我们故意在其中插入错误一个程序(在测试中)来验证现有的测试用例是否可以检测到错误。在这个测试中,程序的突变体是通过对原始程序进行一些修改来创建的。
突变体测试的主要目的是检查每个突变体是否创建了一个输出,这意味着它不同于原始程序的输出。我们将对变异程序稍作修改,因为如果我们大规模更改它,会影响整体计划。
当我们检测到错误数量时,这意味着程序是正确的或测试用例识别错误的效率低下。
变异测试的目的是评估应该能够使变异代码失败的用例的质量,因此这种方法也被称为基于故障的测试用于在程序中产生错误,这就是为什么我们可以说执行变异测试是为了检查测试用例的效率。

什么是变异?

变异是程序中的一个小修改;这些小的修改是针对在编码过程中发生的典型低级错误进行的。
通常,我们以规则的形式考虑变异算子,以匹配数据并生成一些有效的环境

突变测试的类型

突变测试可以分为三个部分,如下所示:
决策突变 值突变 语句变化
让我们一一了解:
Mutation Testing

决策突变

在这种类型的突变测试中,我们将检查设计错误。在这里,我们将对算术和逻辑运算符进行修改以检测程序中的错误。
就像我们对算术运算符进行以下更改:
加(+)→减(-) 星号(*)→双星号(**) plus(+)→增量运算符(i++)
就像我们在逻辑运算符上做如下改动
交换 P > → P,或 P >=
现在,让我们看一个例子以便我们更好地理解:
Mutation Testing

值突变

在这里,将修改值以识别程序中的错误,通常我们会更改以下内容:
小价值 à 大价值 较高的价值 à 较小的价值。
例如:
Mutation Testing

Statement Mutations

Statement mutations 意味着我们可以通过删除或替换以下示例中的行来对语句进行修改:
Mutation Testing
在上面的例子中,我们将语句 r=15 替换为 s=15,将 r=25 替换为 s=25、

如何进行变异测试

为了进行变异测试,我们将按照以下流程进行:
突变测试 在这里,首先,我们将通过生成各种版本(已知的突变体)将错误添加到程序的源代码中。这里每个突变体都有一个错误,导致突变体类型不成功,也验证了测试用例的效率。 之后,我们将借助变异程序中的测试用例,实际应用程序会发现代码中的错误。 一旦我们确定了错误,我们就会匹配实际代码和变异代码的输出。 在比较实际程序和变异程序的输出后,如果结果不匹配,则测试用例执行变异程序。因此,测试用例必须足以识别实际程序和变异程序之间的修改。 如果实际程序和突变程序产生了准确的结果,那么突变体就被保存了。这些案例是更活跃的测试案例,因为它可以帮助我们执行所有突变体。

突变测试的优缺点

优势

突变测试的好处如下:
对于应用程序员来说,这是一种正确的错误检测方法 变异测试是实现源程序广泛覆盖的绝佳方法。 突变测试帮助我们为客户提供最成熟、最可靠的结构。 这种技术可以识别程序中的所有错误,也可以帮助我们发现代码中的疑点。

缺点

突变测试的缺点如下:
此测试需要一些时间和成本,因为我们需要创建许多突变程序。 突变测试不适用于黑盒测试,因为它包括对源代码的修改。 与实际程序相比,每个突变都将具有相同数量的测试用例。因此,除了真正的测试套件外,可能还需要测试大量的变异程序。 因为这是一个乏味的过程,所以我们可以说这个测试需要自动化工具来测试应用程序。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4