您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 其他相关 > 正文

解锁探索式测试:发展阶段、相关类型、优秀实践

发表于:2020-03-04 作者:陈峻编译 来源:51CTO

解锁探索式测试

 

什么是探索性测试(Exploratory Testing)?

在探索性测试中,测试人员会在没有既定计划的情况下去检查目标系统,以发现用户在浏览网站或使用应用程序时,可能遇到的各种缺陷。此方式应尽量能够模仿最终用户的各种自由选择,也就是说:在该过程中,测试人员可以自行遍历软件的各项功能,以获悉用户的体验质量。因此,探索性测试有助于验证系统是否按照预期进行运作,而且能够保障用户在使用的过程中得到轻松愉快的感受。

探索性测试的阶段

#1对于缺陷进行分类

  • 基于相似的软件,分类常见缺陷(请参见:https://dzone.com/articles/about-the-chances-to-detect-visibility-bugs-in-con)。
  • 分析并记录此类缺陷的根本原因。
  • 开发测试方案以测试这些缺陷。

#2创建测试章程

测试章程应当包括如下方面:

  • 需要测试哪些功能。
  • 如何开展测试。
  • 寻找什么缺陷。
  • 测试时需要记住哪些指标。

#3时间盒(Time Box)

时间盒的重点是测试人员如何测试和处置系统的响应。

  • 测试人员在特定的时间范围内(通常为90分钟)进行上述测试。
  • 在测试时间段内不应出现间断。
  • 如有必要,可以延长或减少时间范围(通常取决于测试的进度)。

#4评审结果

  • 对于已识别的缺陷进行分类。
  • 评估各类缺陷。
  • 记录存在的问题。

#5报告

  • 编译输出结果。
  • 根据测试章程,将实际的测试结果与预期的结果进行比较。
  • 确定是否需要引入其他方面的测试。

有关探索性测试的实用提示

  • 可以将软件分为多个模块,以简化测试的复杂度,并提高测试的覆盖率。
  • 列出所有需要测试的功能清单,以确保不会遗漏任何细节功能。
  • 优先测试基本的用户功能方案。接着扩展性地在测试过程中添加更多的检测点。
  • 根据测试章程中列举的标准,逐一检查产品的图形用户界面(Graphical User Interface,GUI)。
  • 明确地在探索性测试会话中列举出待测任务。
  • 准确记录需要测试的内容,测试原因,同时包括如何评估其运行质量。
  • 记录在测试期间所发现的各项问题。
  • 对接专职的测试人员,以进行有效的测试。
  • 创建尽可能多且详尽的测试相关文档。
  • 如有可能,请运行多种测试,以最大程度地提高测试覆盖率。

探索性测试的类型

(1)自由式(Freestyle)探索性测试

此类探索性测试被视为按需采取的临时性方法(请参见:https://dzone.com/articles/using-ad-hoc-scripts-in-your-automated-database-de),因此它既无固定的规则,也没有对应的结构和组织。通过快速浏览目标应用,测试人员可以验证在其他环节测试人员所获取的成果,调查特定的缺陷,以及进行快速的冒烟测试(smoke test)。

(2)基于场景(Scenario-Based)的探索性测试

这种形式的探索性测试基于实际的用户场景。在此类测试中,测试人员会采用所有可能的方式,来试探软件以匹配不同的场景。可见,此处的重点是:测试尽可能多的场景,以提供最大的测试覆盖率。

(3)基于策略(Strategy-based)的探索性测试

通常,此类测试会被分配给已经熟悉了被测试软件的测试人员。其中包括:边界值分析、等效(equivalence)技术和各种基于风险的技术,以识别那些更具挑战性的缺陷。

在敏捷开发中采取探索性测试的优势

  • 在开发的前期阶段提供了快速、且尽早的反馈。
  • 有助于发现各种现有缺陷。
  • 由于不需要脚本,因此软件项目中的开发人员、测试人员、设计师和任何其他利益相关者,都可以发起并执行探索性测试。
  • 在应用程序的迭代编码过程中,探索性测试非常适合于测试那些新的功能,而自动化测试则专注于回归测试、以及向后的兼容性测试。
  • 如果项目的需求并不确定,那么探索性测试则非常适合在有限的时间内,测试各种新的需求,以快速提供各种实用的结果。

探索性测试的优秀实践

  • 了解您的客户:所有软件测试都关乎于检查产品的质量,以提供最大的用户满意度。因此,为了执行有效的探索性测试,了解客户的专注点是必不可少的。也就是说,我们应当从客户的角度,来开展有意义的探索性测试。当然也请记住:不要狭隘地仅从单个客户的角度去考虑问题。您可以将最终用户根据他们的年龄、性别、经济状况、偏好、以及其他方面分类,以模拟不同的方式使用同一个被测软件。同时,测试人员也必须能够跳出技术人员的角色,以一般用户的心态去体验与试用。
  • 使用真实的浏览器和设备:众所周知,没有一种模拟器能够提供真实的用户环境(请参见:https://dzone.com/articles/real-user-monitoring-vs-synthetic-monitoring-which)。而在实际场景中,用户只会在真实的设备上,而不是在那些模拟器虚拟出的测试设备上使用目标软件。因此,也请您务必在真实的设备上运行探索性测试。当然,如果软件企业由于资金预算不够,甚至无法创建和维护内部实验环境,以供测试人员使用的话,那么请您可能地按需选择那些基于云端的测试服务。
  • 了解竞争对手:俗话说:知己知彼百战不殆。通过了解您的竞争对手及其产品的功能与缺陷,测试人员可以更有针对性的测试手头上的产品。当然,这可能更需要整个团队在开发阶段就引起足够的重视。例如:当我们获悉“友商”的某个竞品应用,经常会被用户投诉购物车功能上的设计缺陷时,那么测试人员就应当着重且谨慎地测试手头产品的购物车功能,并确保不会重蹈覆辙。

其实,探索性测试是每个软件测试过程的重要组成部分之一。我们应当将其纳入测试的整个生命周期中,以确保本团队能够推出功能齐备、且让用户满意的软件产品。

原文标题:Exploratory Testing: A Detailed Guide,作者:Shreya Bose