028-86261949

当前位置:首页 > 技术交流 > 探索式测试的问与答(第一期)

探索式测试的问与答(第一期)

2020/01/09 16:36 分类: 技术交流 浏览:1

本文用对话的形式讨论探索式测试的概念与实践.

 

问:探索式测试中的"探索"该如何理解?

答:所谓探索是指有目的的漫游,即带着使命在某个空间中漫游,但没有预先确定的路线.探索包括对产品与技术的深入研究和基于研究成果的实践应用.

 

问:如何实施探索式测试?

答:这里先介绍一种可行的探索式测试实施方法,其灵感来源是基于测程的测试管理.

探索式测试鼓励测试人员依据当前语境选择合适的测试流程与技术。在测试过程中, SMART 原则为测试者提供了很好的指导。

  • Specific(具体的):测试需要一个具体的目标。
  • Measurable(可度量的):有明确的指标可以评估目标是否达成。
  • Attainable(可实现的):目标应该是可实现的。这潜在地要求将一个大目标分解为多个小目标,且每个小目标也是具体的、可度量的、可实现的。而且,追踪小目标的完成情况提供了整体进度的可度量性。
  • Relevant (相关的):目标要切合当前语境,符合团队利益,且不忘企业愿景。Time-boxed 有时间限制的):为每个目标设定一个合理的最后期限。这可以帮助测试人员在固守的时间窗口中排除不相关干扰,专注地工作.

 

依据SMART原则,测试人员可按如下描述展开探索式测试.

  1. 测试人员制订测试计划.分折被测试应用,确立若干个具体的测试使命,每个使命针对一个可能的产品风险。
  2. 测试人员将测试使命分解为一系列测试任务,每个任务都有明确的退出条件和时间限制.
  3. 在短暂的测试计划之后,测试人员根据优先级选择一个任务,在一个固定的时间窗口中执行探索式测试(窗口的长度是60-120分钟,以90分钟为宜)。这样一个时间窗口被称为一个测程(Session)。在该测程中,测试人员设计测试、执行测试、评估测试结果,他会根据获得的知识和发现的疑问再设计测试用例,以拓展测试的广度和深度。
  4. 在测程结束后,测试人员适当休息,放松思维。
  5. 随后,他会反思当前的测试进展,并优化测试计划.也许他会为当前任务追加一个测程:也许他会再增加一个新的任务以弥补先前测试计划的不足:也许他会删除一些任务以反映他对测试对象的最新认知。
  6. 这时,他会更有自信地开始新一轮探索式测试。

以上只是一种可能的探索式测试实施方法。负责任的测试人员一定会选择他自己的方式展开测试,因为只有作为领域专家的他,才能做出最符合语境的决策。此外,集合整个团队的力量,进行同行评审、头脑风暴、结对测试等活动,有助于产生更好的测试结果。

 

问:探索式测试与即兴测试有何区别?

答:探索式测试与即兴测试都强调“即兴发挥”,即利用直觉和经验,快速地测试软件,并不停地调整测试策略.软件专家Andrew Hunt指出 ,直觉是非显性知识的代名词,是大脑富(Rich)模式的杰出能力.如果人类只使用大脑的线性模式(包括语言可表达的显性知识 ,抽象能力,逻辑能力等),而漠视富模式的能量,我们将浪费自身的巨大潜力.

然而人是不完美的,某些直觉可能是认知偏见或错误。这就引出探索式测试与即兴测试的关键不同:探索式测试是带着“反思”的测试。在探索式测试中,测试人员不断地提出假设,用测试去检验假设,并分析测试结果来证实或推翻假设。在此过程中,测试人员持续完善头脑中的产品模型和测试模型,然后利用模型、技能、经验去驱动进一步的测试。通过将测试学习、设计、执行和结果分析作为相互支持的活动并行展开,探索式测试总是在不停地优化测试模型、测试设计和测试价值。因为测试设计和测试执行的切换速度很快,许多人误以为探索式测试没有计划和设计。实际上,这些活动被划分到细微的时间片中,被反复执行。

即兴测试往往利用错误猜测、典型风险和常见攻击来快速地试探软件,可以在短时间内发现许多软件错误。但是即兴测试不强调测试的系统性和完整性,测试遗漏的风险很高,也难以发现一些需要深入研究才能发现缺陷。探索性测试通过测试来透彻地理解被测试产品,从而拓展测试的广度与深度,以持续优化测试的价值。

 

问:如果探索式测试是硬币的正面,那么硬币的反面是什么?

答:探索式测试的对立面是脚本测试(Scripted Testing)。脚本测试要求预先编写好测试脚本(Script),脚本规定了如何配置被测试软件、如何输入、如何判断软件输出了正确的结果.编写详细的脚本往往需要大量的测试资源。

 

如果运用得当,脚本测试可能有如下收益:

  • 测试人员可以仔细地思考被测试软件。
  • 测试脚本可以被项目关系人评审。
  • 测试脚本可以被复用。
  • 测试团队可以评估测试脚本集的完备性。
  • 测试团队可以度量测试脚本的执行情况,以评估测试进度。

 

问:探索式测试编写测试文档吗?

答:探索式测试尝创建任何有助于实现其目标的文档,他会撰写并维护符合语境的测试文档.这里提出一种可能的测试计划编写方法,供大家参考.

在不同的开发组织,测试计划有不同的名称:翔试计划、测试规格说明和测试设计文档等.但是,大多数测试计划会涵盖产品概述、测试范围、测试风险、测试策略、部分详细测试用例、资源分配和日程安排。

在项目计划阶段,测试计划可以包含产品概述、测试范围、测试风险、测试策略、资源分配和进度安排。编写文档的目的是建立对产品的整体认知,根据风险提出相应的测试策略,并安排测试任务和日程。测试计划不必面面俱到,用精简的格式记录必要的内容即可。此时项目的不确定性较大,未知因素较多,很可能不适合做出详细的测试决策。

在项目计划阶段,应该邀请项目关系人对测试计划进行评审.评审的形式可以多种多样,会议评审、桌面走查、邮件评审、在线文档批注、头脑风暴皆可。评审的目的是发现“大图景”上的缺陷,并丰富测试策略.眼界开阔的项目经理、负责任的开发人员、经验丰富的测试同事能够提供很好的建议。

在测试阶段,测试人员需要根据测试进展持续更新测试计划,内容可能包括产品模型、检查列表、测试策略、覆盖大纲和风险列表等,测试计划应该是“活”的文档,能够反映测试人员对产品和项目的最新认识。对测试范围、测试风险、测试策略和进度安排的重大变化应该写入测试计划,重要的测试用例(如发现严重缺陷的测试用例)也应该及时融入测试策略。测试计划应该尽可能地精简,这有助于文档的持续更新,而冗长的文档将不利于阅读、增删和修订。

当测试人员认为测试计划相对完整之后,他还应该邀请项目关系人对:对测试计划进行评审。评审的目的是发现测试遗漏,补充测试策略,提高测试覆盖率。

 

以上方法有三个重要的特点。

  1. 测试计划的编写与改进贯穿整个测试过程。在测试执行之前,对测试计划不必求全责备。在测试执行中,测试人员根据测试反馈,动态地调整测试范图、项目风险和测试策略,生成新的测试用例,并对测试计划做必要的更新。
  2. 测试人员持续地收集对测试计划的意见,并将改进意见纳入测试实践.正式和非正式的测试计划评审可以识别潜在风险,丰富测试策略。在一些测试流程中,测试计划评审只发生在测试开始之前。但是,建议在测试流程的中期再次评审测试计划,目的是进一步丰富测试策略的多样性,并发掘可能的测试遗漏。这时,测试团队对产品与风险拥有更深刻的理解,能够提出更具针对性和多样性的测试策略,也可以帮助测试人员发现测试盲点,从而提高测试覆盖率。
  3. 测试计划侧重测试规划(一组指导测试过程的想法)和测试策略(一组指导测试设计的想法),即测试计划用精简的格式表达测试人员的测试想法,而不必详细记录测试用例的设置、步骤和预期结果。测试人员可以用文字、列表、表格、思维导图等任何合适的方式表达想法,目的是激发测试灵感,并促进测试思想的交流。此外,他会利用发现缺陷的测试用例来完兽测试策略,而不是让过去的测试用例控制未来的测试。
#标签:探索式测试,即兴测试