求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
要资料
 
追随技术信仰

随时听讲座
每天看新闻
 
 
目录
软件测试
1.教程
2. 软件测试原则
3. 软件开发生命周期(SDLC)
4. 软件测试命周期(STLC)
5. 软件测试的类型
6. 测试成熟度模型
7. 测试级别
SDLC 模型
1.瀑布模型
2.螺旋模型
3.混合模型
4.原型模型
5. V模型/V和V模型/验证和验证模型
测试的类型
1.手动测试
2.自动化测试
手册的类型
1.白盒测试
2.黑盒测试
3.灰盒测试
白盒技术
1.数据流测试
2.控制流测试
3.分支覆盖测试
4.语句覆盖率测试
5.决策覆盖率测试
黑盒技术
1.决策表
2.全对测试
3.黑盒测试中的因果图
4.状态转换技术
5.用例技术
黑盒的类型
1.功能测试
2.非功能性测试
功能类型
1.单元测试
2.集成测试
3.系统测试
非功能性的类型
1.性能测试
2.易用性测试
3.兼容性测试
测试用例开发
1.测试文档
2.测试场景
3.测试用例
测试技术
1.错误猜测技术
2.等效分区技术
3.边界值分析
测试管理
1.测试计划
2.测试用例审查过程
3.需求可追溯性矩阵
缺陷跟踪
1.软件测试中的错误
2.Bug生命周期
3.测试中bug的严重性和优先级
4.测试环境
5.缺陷管理过程
其他类型的测试
1.回归测试
2.冒烟测试
3.健全性测试
4.静态测试
5.动态测试
6.负载测试
7.压力测试
8.恢复测试
9.探索性测试
10.可视化测试
11.验收测试
12.Alpha 测试
13.Beta 测试
14.数据库测试
15.主机测试
16.Adhoc测试
17.全球化测试
18.变异测试
19.安全测试
20.可访问性测试
21.结构测试
22.批量测试
23.可伸缩性测试
24.稳定性测试
25.峰值测试
26.负面测试
27.正面测试
28.耐久性测试
29.可靠性测试
30.Monkey测试
31.敏捷测试
32.组件测试
33.GUI测试
34.测试策略
软件测试工具
1.软件测试工具
2.测试管理工具
3.缺陷/Bug跟踪工具
4.自动化测试工具
5.性能测试工具
6.跨浏览器测试工具
7.集成测试工具
8.单元测试工具
9.移动测试工具
10.GUI测试工具
11.安全测试工具
12.渗透测试工具
差异
1.自动化测试与手动测试
2.负载测试与压力测试
3.冒烟测试和健全性测试之间的差异
4.系统测试和验收测试之间的差异
5.质量保证与质量控制
6.静态测试与动态测试
7.验证和确认测试
8.Alpha 测试和 Beta 测试
9.黑盒测试与白盒测试与灰盒测试
10.全球化测试和本地化测试之间的区别
11.测试用例与测试场景
12.测试计划 VS.测试策略
13.边界值分析和等价划分之间的差异
14.SDLC VS.STLC
15.Bug, Defect, Error, Fault 和 Failure之间的区别
16.测试和调试之间的区别
17.前端测试 VS.后端测试
18.HLD和LLD的区别
19.BRS vs SRS
20.正面测试和负面测试之间的区别
21.自上而下和自下而上的集成测试之间的区别
22.用例和测试用例之间的区别
23.Monkey 测试 VS Gorilla 测试
24.Stubs和Drivers之间的区别
25.组件测试和单元测试之间的区别
26.软件测试和嵌入式测试之间的区别
27.GUI 测试和可用性测试之间的差异
28.SDET和Tester的区别
29.桌面应用程序测试、客户端-服务器应用程序测试和 Web 应用程序测试之间的区别
30.主动测试
31.什么是API
32.自动化测试
 
 
目录
变异测试
来源:Javatpoint     翻译:Linda (火龙果软件)
921 次浏览
8次  

1. 什么是变异测试?

变异测试是软件测试中的一种白盒方法,我们故意将错误插入程序(被测试中)中,以验证现有测试用例是否可以检测到错误。在此测试中,程序的突变体是通过对原始程序进行一些修改来创建的。

变异测试的主要目的是检查每个突变体是否创建了输出,这意味着它与原始程序的输出不同。我们将对突变程序进行轻微修改,因为如果我们大规模更改它,它会影响整体计划。

当我们检测到错误数量时,这意味着程序是正确的,或者测试用例识别故障的效率低下。

变异测试的目的是评估应该能够使突变代码失败的案例的质量,因此这种方法也称为基于故障的测试,因为它用于在程序中产生错误,这就是为什么我们可以说执行突变测试是为了检查测试用例的效率。

2. 什么是变异?

变异是程序中的一个小修改;这些小的修改计划针对编码过程中发生的典型低级错误。

通常,我们以规则的形式考虑突变算子,这些规则与数据匹配,并生成一些有效的环境来产生突变体。

3. 变异测试的类型

变异测试可分为三个部分,具体如下:

  • 决策变异
  • 价值变异
  • 语句变异

让我们一一了解:

决策变异

在这种类型的变异测试中,我们将检查设计错误。在这里,我们将对算术和逻辑运算符进行修改以检测程序中的错误。

就像我们在算术运算符中进行以下更改一样:

  • 加(+)→减(-)
  • 星号(*)→ 双星号(**)
  • 加号(+)→增量运算符(i++)

就像我们在逻辑运算符中进行以下更改一样

  • 交换 P > → P<,或 P>=

现在,让我们看一个例子,以便我们更好地理解:

价值变异

在这种情况下,这些值将修改以识别程序中的错误,通常,我们将更改以下内容:

  • 小值 à 高值
  • 更高的价值 à小价值。

例如:

语句变异

语句变异意味着我们可以通过删除或替换行来对语句进行修改,如以下示例所示:

在上面的例子中,我们将语句 r=15 替换为 s=15,将 r=25 替换为 s=25。

4. 如何进行变异测试

要进行变异测试,我们将遵循以程序:

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

5. 变异测试的优缺点

优点

变异测试的优点如下:

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

缺点

变异测试的缺点如下:

  • 这个测试有点耗时,而且过程更昂贵,因为我们有许多突变程序需要创建。
  • 变异测试不适用于黑盒测试,因为它包括源代码中的修改。
  • 与实际程序相比,每个变异将具有相同数量的测试用例。因此,大量的变异程序可能需要在真正的测试套件旁边进行测试。
  • 由于这是一个繁琐的过程,因此我们可以说此测试需要自动化工具来测试应用程序。

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



921 次浏览
8次