什么是探索性测试?

什么是探索性测试?

探索性测试是一种软件测试类型,其中测试用例不会提前创建,而是测试人员即时检查系统。他们在测试执行前可能会记下要测试的想法。探索性测试的重点更多地放在将测试作为一种“思考”活动。

探索性测试在敏捷模型中被广泛使用,它关乎发现、调查和学习。它强调个人测试人员的个人自由和责任。

为什么进行探索性测试?

在脚本测试下,您首先设计测试用例,然后进行测试执行。相反,探索性测试是测试设计和测试执行同时进行的并行过程。

脚本测试执行通常是一种无需思考的活动,测试人员执行测试步骤并将实际结果与预期结果进行比较。这种测试执行活动可以自动化,不需要很多认知技能。

Exploratory Testing

尽管当前软件测试的趋势是推动自动化,但探索性测试是一种新的思维方式。自动化有其局限性

Exploratory Testing

脚本测试与探索性测试之间的区别

脚本测试 探索性测试
根据需求指导 根据需求指导并在测试期间进行探索
提前确定测试用例 在测试期间确定测试用例
确认测试符合要求 调查系统或应用程序
强调预测和决策 强调适应性和学习
涉及确认测试 涉及调查
关于控制测试 关于改进测试设计
就像做演讲——你照着草稿念 就像对话——是即兴的
脚本在控制 测试人员的思维在控制

探索性测试技术

  • 不是随机测试,而是有目的性地发现错误的即席测试
  • 结构化且严谨
  • 与脚本测试的程序结构相比,它在认知上(思考上)是结构化的。这种结构来自章程、时间盒等。
  • 高度可教且易于管理
  • 它不是一种技术,而是一种方法。您下一步执行什么操作取决于您当前正在做什么

如何执行探索性测试

以下是如何执行探索性测试(也称为基于会话的测试管理 (SBTM 循环))的分步过程

步骤 1) 创建缺陷分类法

  • 对过去项目中发现的常见缺陷类型进行分类
  • 分析问题或缺陷的根本原因
  • 找出风险并提出测试应用程序的想法。

步骤 2) 测试章程

  • 测试章程应建议
    1. 测试什么
    2. 如何测试
    3. 需要查看什么
  • 测试思想是探索性测试的起点
  • 测试章程有助于确定最终用户如何使用系统

步骤 3) 时间盒

  • 此方法包括一对测试人员共同工作不少于 90 分钟
  • 在这 90 分钟的会话中不应有任何中断
  • 时间盒可以延长或缩短 45 分钟
  • 此会话鼓励测试人员对系统响应做出反应并准备正确的结果

步骤 4) 审查结果

  • 评估缺陷
  • 从测试中学习
  • 分析覆盖区域

步骤 5) 汇报

  • 结果输出的汇编
  • 将结果与章程进行比较
  • 检查是否需要进行额外的测试

探索性测试最佳实践

在探索性执行期间,需要完成以下工作

  • 测试任务应该非常明确
  • 记录需要测试什么、为什么需要测试以及产品质量评估
  • 跟踪探索性测试期间提出的问题和议题
  • 最好将测试人员配对以进行有效测试
  • 我们测试得越多,就越有可能为所需的场景执行正确的测试用例

记录和监控以下内容非常重要

  • 测试覆盖率 – 我们是否记录了测试用例的覆盖率并改进了软件质量
  • 风险 – 需要涵盖哪些风险,哪些是重要的风险?
  • 测试执行日志 – 测试执行记录
  • 问题/疑问 – 记录系统中的问题和疑问

更智能的探索性测试在更短的时间内发现更多错误。

探索性测试的优缺点

优点

  • 当需求文档不可用或部分可用时,此测试非常有用
  • 它涉及调查过程,这有助于发现比正常测试更多的错误 -
  • 发现其他测试技术通常会忽略的错误
  • 通过执行越来越多的测试用例,有助于扩展测试人员的想象力,最终也提高了生产力
  • 此测试深入到应用程序的最小部分并涵盖所有需求
  • 此测试涵盖所有类型的测试,并涵盖各种场景和用例
  • 鼓励创造力和直觉
  • 在测试执行期间产生新想法
  • 缺点

    • 此测试纯粹取决于测试人员的技能
    • 受测试人员领域知识的限制
    • 不适用于长时间执行

    探索性测试的挑战

    探索性测试存在许多挑战,具体如下所示

    • 学习使用应用程序或软件系统是一个挑战
    • 重现故障很困难
    • 确定是否需要使用工具可能具有挑战性
    • 确定要执行的最佳测试用例可能很困难
    • 测试结果的报告是一个挑战,因为报告没有计划的脚本或用例来与实际结果或产出进行比较
    • 记录执行期间的所有事件很难
    • 探索性测试没有明确的测试用例可供执行,因此很难决定何时停止。

    何时使用探索性测试?

    探索性测试可在以下情况下广泛使用

    • 测试团队拥有经验丰富的测试人员
    • 需要早期迭代
    • 存在关键应用程序
    • 新测试人员加入团队

    结论

    在软件工程中,探索性测试用于克服脚本测试的局限性。它有助于改进测试用例套件。它强调学习和适应性。