软件测试词典

首页

A

验收测试 可访问性测试 主动测试 实际结果 临时测试 老化测试 敏捷测试 全对测试 Alpha 测试 API 测试 Arc 弧测试 异常测试 断言测试 审计测试 自动化软件测试

B

向后兼容性测试 基线工件 基础路径测试 基础测试集 调试 行为测试 基准测试 Beta 测试 大爆炸测试 二进制可移植性测试 黑盒测试 自下而上测试 边界测试 分支测试 广度测试 Bug测试 构建验证 业务流程 业务需求

C

能力成熟度模型 捕获/重放工具 因果图 代码覆盖率 代码冻结 代码检查 代码审查 代码演练 基于代码的测试 代码驱动测试 无代码测试 比较测试 兼容性测试 合规性测试 并发性测试 条件覆盖测试 配置测试 一致性测试 上下文驱动测试 控制流路径 转换测试 正确性 覆盖项目 循环复杂度

D

数据完整性测试 数据驱动测试 数据流测试 数据库测试 调试 决策覆盖测试 缺陷 缺陷记录和跟踪 缺陷生命周期 Delta 发布 依赖性测试 深度测试 破坏性测试 开发环境 文档测试 域测试 耐久性测试 动态测试

E

模拟器 端到端测试 耐久性测试 准入标准 等价分区测试 错误 错误猜测 错误植入 详尽测试 退出标准 预期结果 探索性测试

F

故障转移测试 失败 故障 故障注入测试 可行路径 功能测试 功能分解 功能要求 功能测试 模糊测试 前端测试

G

玻璃盒测试 全球化测试 Gorilla 测试 灰盒测试 GUI 测试

H

测试工具 启发式测试 混合集成测试

I

实施测试 增量测试 独立测试 不可行路径 检查 安装/卸载测试 集成测试 接口测试 国际化测试 系统间测试 互操作性测试 隔离测试 问题

K

关键字驱动测试 关键绩效指标 已知问题

L

LCSAJ 测试 负载生成器 负载测试 本地化测试 逻辑覆盖率测试 循环测试

M

可维护性 手动测试 大型机测试 基于模型的测试 修改条件测试 模块化驱动测试 猴子测试 突变测试

N

负面测试 非功能性测试 非破坏性测试

O

操作测试 正交阵列测试

P

配对测试 成对测试 并行测试 部分测试自动化 被动测试 路径测试 同行评审 渗透测试 性能测试 试点测试 可移植性测试 积极测试 后置条件 前提条件 预测结果 优先级 流程周期测试 渐进式测试 原型测试

Q

质量保证 质量控制 质量管理

R

随机测试 恢复测试 回归测试 候选版本 发布说明 可靠性测试 需求测试 基于需求的测试 需求可追溯性矩阵 结果 重新测试 Review 审查 风险测试 风险管理 根本原因

S

安全性测试 健全性测试 可扩展性测试 场景测试 时间表 Scrum 测试 脚本 安全测试 模拟 冒烟测试 浸泡测试 峰值测试 软件需求规范 稳定性测试 状态转换 静态测试 统计测试 存储测试 压力测试 结构测试 结构化演练 存根 符号执行 语法测试 系统集成测试 系统测试 被测系统

T

技术评审 测试方法 测试自动化 测试基础 测试平台 测试用例 测试用例设计技术 测试套件 测试完成标准 测试完成报告 测试完成矩阵 测试数据 测试数据管理 测试驱动开发 测试驱动程序 测试环境 测试执行 测试管理 测试成熟度模型 测试计划 测试步骤 测试策略 测试工具 线程测试 自上而下的集成测试 全面质量管理 可追溯性

U

单元测试 无法访问的代码 可用性测试 用例测试 用户验收测试 用户界面测试

V

V 模型 验证测试 验证测试 虚拟用户 容量测试 漏洞测试

W

Web 应用程序测试 白盒测试 工作流测试

有用的资源

有用的资源 讨论


软件测试 - 变异测试

软件要经过各种测试阶段才能达到预期的性能。变异测试是一种测试,用于构建新的测试用例,并分析为验证软件而开发的现有测试用例的质量。

什么是软件变异测试?

软件变异测试也称为代码变异测试。它是白盒测试技术下的一个概念。在此期间,对代码进行细微更改以验证现有测试用例的有效性,或识别程序源代码中使用的测试数据中的弱点。

软件变异测试可用于验证设计模型、数据库、XML 等。它是一种结构测试,其中代码的解剖结构用于帮助测试过程。它基本上以微小的方式重写代码,以便可以避免或最小化代码冗余。在源代码中进行更新后,现有的测试用例应该能够识别这些更新。代码中的更改通常会导致错误的引入。

突变测试主要用于评估软件测试工具的有效性,而不是软件本身。它主要用于单元测试。它可以捕获其他测试方法无法检测到的缺陷。在执行突变测试时,一行代码可能会被删除或多次使用,真或假语句或变量可能会被修改等。一旦代码中的突变被纳入,就会对其进行验证,并与实际代码进行比较。

如果在突变代码上运行的现有测试用例识别出与在原始代码上运行相同的缺陷,则代码仍未执行,或者现有测试用例无法识别突变。这表明需要对现有测试用例进行改进,以提高其效率。成功的突变测试结果应该在对原始代码和突变代码执行相同测试用例时具有不同的测试结果。当突变代码的测试结果和原始代码不同时,突变体将不再使用,这些突变体被称为已杀死的突变体。

计算突变分数百分比的公式

突变分数可以通过将杀死的突变体总数除以突变体总数,然后乘以百来计算。

突变分数 = (杀死的突变体总数/突变体总数) * 100

如果我们获得百分之百的突变分数,则表明现有的测试用例是有效的并且足够。

软件变异测试的目标

软件变异测试的目标如下 −

  • 软件变异测试验证尚未验证的代码部分。
  • 软件变异测试识别代码中其他测试方法无法检测到的缺陷。
  • 软件变异测试检测代码中的新问题。
  • 软件变异测试测量代码的变异分数。
  • 软件变异测试给出了现有测试套件有效性的概念。

软件变异测试的类型

软件变异测试的不同类型如下 −

1.值突变

在此类型中,修改常量的值以识别代码中的问题。对非常大的值进行小幅更新,或将大值更新为较小的值。例如 −

int i = 100000089;
int j =  5678;
int k = 91011;
int c = (j * k) % i;
Updated Code:
int i = 1089;
int j =  5678;
int k = 91011;
int c = (j * k) % i;

2. 决策突变

在此类型中,逻辑或算术运算符会更新以识别程序源代码中的问题。例如 −

if(i = j)
   k = 35;
else
   k = 50;
Updated Code:
if(i != j)
   k = 35;
else
   k = 50;

3. 语句突变

在此类型中,一个语句被删除或被另一个语句替换。例如 −

if(i = j)
   k = 35;
else
   k = 50;
Updated Code:
if(i != j)
   m = 35;
else
   m = 50;

用于软件变异测试的工具

用于软件变异测试的各种工具如下 −

  • PIT
  • Insure
  • Jester
  • Jumble
  • MuClipse

软件变异测试的优势

软件变异测试的优势如下 −

  • 软件变异测试提高了程序源代码中的错误识别级别。
  • 软件变异测试有助于摆脱代码中不清楚的部分。
  • 软件变异测试检测并解决代码中的问题。
  • 软件变异测试为设计或自动化更好、更有效的测试提供了指导案例。
  • 软件突变测试提高了代码中使用的编程水平。

软件突变测试的缺点

软件突变测试的缺点如下 −

  • 软件突变测试是一个昂贵且耗时的过程。
  • 软件突变测试仅适用于白盒,不能应用于黑盒测试技术。
  • 有时突变体很复杂,因此不容易针对现有测试套件设计和执行它们。
  • 执行软件突变测试的测试人员应该经验丰富,并且应该具备编程和技术技能。
  • 选择正确的自动化工具进行突变测试并不容易。

结论

这就是我们对本教程的全面介绍软件突变测试。我们首先描述了什么是软件突变测试、计算突变分数百分比的公式、软件突变测试的目标是什么、软件突变测试的不同类型是什么、用于软件突变测试的各种工具是什么、软件突变测试的优点是什么、软件突变测试的缺点是什么。这使您具备了软件突变测试的深入知识。明智的做法是继续实践您学到的知识并探索与软件测试相关的其他知识,以加深您的理解并拓展您的视野。