作者 Hannah Son | 2023 年 9 月 19 日
探索性测试是一种动态且无脚本的软件测试方法,您可以根据特定的目标或任务而不是正式的脚本或一组测试步骤来测试应用程序或产品。
探索性测试对于发现应用程序中的未知风险或缺陷特别有用——尤其是从用户接受度的角度来看——并且它在很大程度上依赖于测试人员的领域知识、创造力和直觉。
执行探索性测试的最常见方法遵循基于会话的测试管理的五个阶段(也称为“SBTM 周期”):
1. 定义测试的任务或目标
2. 创建测试章程
3. 测试的时间范围
4. 查看您的结果
5. 听取汇报
虽然探索性测试比传统的脚本测试更自发、适应性更强,但它是采用分步、基于时间的 SBTM 循环方法构建的。
测试章程是一份简洁的高级指南,可作为使命宣言,帮助您集中探索性测试工作并适应不断变化的条件,同时留出创造力的空间。
例如,如果您正在测试电子商务平台的 Web 应用程序登录,则测试章程可能类似于“分析主页登录菜单功能并报告潜在风险区域”或“分析 Web 应用程序的登录功能, ”或“了解拥有虚假数据的人是否仍然可以登录我们的网络应用程序。”
章程旨在帮助您保持正轨并通过监督将特定风险降至最低。 创建测试章程时,应包括以下内容:
探索性测试章程示例
例如,社交媒体应用程序的章程可能是“围绕配置文件创建进行快速攻击”或“测试组成员内部和外部的多用户评论、权限和竞争条件”。
例如,社交媒体应用程序的章程可能是“围绕配置文件创建进行快速攻击”或“测试组成员内部和外部的多用户评论、权限和竞争条件”。
通常,章程侧重于应用程序的特定部分,例如购物车、结账、登录/丢失密码流程或报告面板。 然而,他们也可以探索特定的用户旅程或新功能。 当公司发布新的浏览器或检查并了解支持浏览器或平板电脑需要什么时,通常会进行快速概述会议。
使用章程可以采用模糊的黑匣子流程,并将其转变为在此运行中管理的风险集合。
时间盒是测试人员集中精力且不受干扰的测试会话。
时间盒涉及在预定时间内执行以下步骤:
基于会话的测试管理的一个重要部分是从进行的测试会话中学习并使测试负责。 为了从测试中学习,与其他团队成员或利益相关者一起对测试会话进行汇报是改进未来会话的好方法,确保覆盖了被测系统的所有重要方面并审查测试的有效性。
图片:TestRail 提供实时报告,帮助您满足合规性要求并跟踪您的探索性测试。 TestRail 还保留所有注释、屏幕截图和报告的缺陷的透明时间历史记录,因此您可以在中心位置轻松查看所有测试会话。
汇报是会议中经常被忽视的信息辅助手段,因为无论谁担任测试经理,都会对应用程序的质量和覆盖范围有一个整体的了解。 汇报反馈的示例包括对测试目标进度的评估或检测到的最重要缺陷的摘要。
以下是现实场景中探索性测试的示例:
场景:您是一名测试人员,为一家零售公司开发基于 Web 的电子商务应用程序。
测试章程:测试结帐流程的可用性和功能。
在此示例中,此探索性测试会话使您能够发现仅通过脚本测试无法识别的购物车问题。 它还促进了与开发团队的快速反馈循环,有助于提高软件的整体质量。
使用章程执行探索性测试在敏捷环境中很有帮助,因为交付时间更快。 然而,在共享电子表格中跟踪探索性测试结果可能会变得难以承受,并且可能会丢失详细信息。 在网络驱动器上的单个文档中跟踪它们可能会更糟。
在 TestRail 中,您可以将章程存储为测试用例。 然后,您可以创建一个测试运行,其中包含您决定为特定版本运行的所有不同类型的探索性测试。
图片:在TestRail中,您可以添加测试用例,选择“探索性会话”模板,添加时间估计,添加任务(探索性会话的目的),并添加目标(探索性会话的特定领域) 验证)。
测试人员可以在会话中留下对测试用例的评论,软件将收集数据并提供有关该数据的摘要报告。
对于结合脚本测试和探索性测试的简单应用程序,测试运行可能是两打脚本测试用例和四个旨在探索特定风险的章程。 下面的示例将会话记录为测试用例。
图像:通过将会话记录为测试用例,使用 TestRail 执行探索性测试。
只有当您为利益相关者提供准确且可操作的结果,为利益相关者提供有关如何推进其流程和产品的见解时,探索性测试才有效。 这包括强调关键发现、问题和风险,以及展示覆盖范围、质量和置信水平。
测试用例管理工具可以提供探索性测试的绝佳视图。 通过将版本之间的会话构建为“测试运行”(即版本)中的“测试用例”,任何具有访问权限的测试人员或利益相关者都可以看到已涵盖的内容和仍需要涵盖的内容。
图片:使用 TestRail 等专用测试用例管理平台作为探索性测试工具来管理、组织、跟踪和简化为探索性测试用例生成报告的过程。
查看这篇文章,了解如何使用测试用例管理工具改进探索性测试!
脚本化测试遵循具有特定步骤的预定义测试用例,而探索性测试涉及无脚本的临时测试,测试人员直观地探索软件以发现缺陷并评估其行为。
下面的表格详细说明了脚本化测试和探索性测试之间的主要区别:
方面 | 脚本化测试 | 探索性测试 strong> |
测试用例创建 | 预定义测试用例 | 无预定义测试用例 |
测试执行 | 遵循脚本化步骤 | 临时、无脚本 |
测试计划 | 需要详细的测试计划 | 不太正式的测试计划 |
灵活性 | 不太灵活 | 高度灵活< /td> |
测试文档 | 广泛的文档 | 最少的文档 |
测试覆盖率 | 具体且有限 | 更广泛的测试覆盖范围 |
自动化测试 | 非常适合自动化测试 | 不适合自动化(需要人类的本能和好奇心) |
Bug 发现 | 发现新问题的效率较低 | 有效发现隐藏问题 |
用例 | 适合重复性任务 | 适合新功能测试 |
探索性测试是灵活的、无脚本的,并且可以根据特定的测试目标采取各种形式。 探索性测试技术的常见类型包括:
您选择的探索性测试类型取决于您的测试目标、软件的性质和测试团队的专业知识。 通常,结合使用测试来确保彻底覆盖和缺陷发现。
探索性测试在以下场景和情况下是有益的:
当灵活性、适应性和发现意外问题的能力对于有效测试至关重要时,探索性测试就很有价值。 它通过提供更全面的软件质量视图来补充脚本测试。
探索性测试在敏捷开发环境中具有多种优势:
探索性测试通过提供跟上敏捷开发生命周期所需的灵活性、适应性和快速反馈来补充敏捷开发中的脚本测试。 它帮助敏捷团队交付满足不断变化的需求和用户期望的高质量软件。
虽然探索性测试在敏捷开发中提供了多种优势,但它也带来了敏捷团队应该意识到并解决的一些挑战:
探索性测试在很大程度上依赖于判断和直觉。 不同的探索性测试人员对于关键缺陷或可用性问题的构成可能有不同的观点,从而导致主观评估。
虽然这些最佳实践提供了指导,但探索性测试是一种动态且灵活的方法,您应该对其进行调整以满足项目和组织的特定需求。 以下是进行探索性测试的一些一般最佳实践:
本文档中没有标题。