学习探索式测试的问与答(4)

发表于:2012-11-12来源:博客园作者:探索式测试点击数: 标签:探索式测试
语境驱动测试认为:产品是一种解决方案,它必须解决现实世界中的问题。因此,探索式测试者必须从项目关系人(包括软件用户、项目投资人和开发团队

  语境驱动测试认为:产品是一种解决方案,它必须解决现实世界中的问题。因此,探索式测试者必须从项目关系人(包括软件用户、项目投资人和开发团队等)的视角考察整个产品,研究显式规格说明和隐式规格说明,从而发现软件在概念、需求、设计、实现等层面上的缺陷。值得强调的是,测试人员应该主动探究隐式规格说明,从而拓宽探索的范围。以下是一些常见的隐式规格说明。

  竞争产品。竞争产品不一定是软件,例如笔记软件的竞争者就包括纸质笔记本和铅笔。

  相关产品。软件套装(如Microsoft Office)中的软件往往相互补充、相互约束。

  同一软件的已发布版本。向前兼容可能是非常重要的约束。

  口头讨论、采访、闲聊。

  电子邮件、会议记录、采访记录。

  用户反馈:电话支持记录、论坛讨论、Beta测试反馈。

  技术反馈:软件提交的崩溃信息、错误消息。

  第三方评论:杂志文章、博客文章、社交网络反馈。

  技术标准。所有软件都建立在一系列技术标准之上,某些标准会对测试产生重要影响。

  法律法规。法律可能对软件有强制性约束。

  领域专著。测试财会软件需要学习相关著作,以掌握财会知识。

  测试人员经验。

  Cem Kaner拥有法律学位,对语言文字非常敏感。他认为积极阅读(Active Reading)是探索式测试者需要具备的技能 [Kaner08]。积极阅读是一个内涵丰富的主题,广受好评的经典书籍包括《如何阅读一本书》、《探索需求》和《你的灯亮着吗?》。

  此外,在功能实现之前,可以通过小组讨论、头脑风暴等方式发掘测试策略和测试思路。针对一个开发中的功能,测试人员可以邀请几个同事,组织一个测试研讨会。在会议上,大家自由发言,提出自己的测试策略,通过脑力震荡相互启发,从而获得一批观点各异、视角不同的测试策略。会后,测试负责人对这些相对粗糙的测试思路进行整理,将完善后的结果写入测试计划。

  问:如何评估探索式测试的测试效果?

  答:评估探索式测试结果的前提是测试记录。

  探索式测试者常常在一个固定的时间窗口内(60~120分钟),根据预设的测试目标,对软件进行Z探索式测试。这样的测试活动被称为测程(Session)[Bach00]。

  测程类似于科学实验。一次科学实验大致可以分为以下三个阶段。

  实验设计:确定实验目标。科学实验的常见目的是假设检验,那么此次的假设是什么?

  实验记录:执行实验步骤,并记录实验所发现的点点滴滴。

  实验分析:分析实验数据,总结实验结果,为下一次实验提供目标和假设。

  相应地,一次测程包含如下三个阶段。

  测试计划:明确测试目标。测试是获得信息的过程,那么此次测试要获得什么信息?

  测试执行:设计并执行测试用例,记录测试所发现的点点滴滴。

  测试分析:分析并总结测试所发现的信息,为下一次测试提供目标。

  详细的实验记录是科学实验的基本要求之一。同理,详略适当的测试记录也是测试执行的自然结果,是测试评估的基本要求。通常,测试记录可以包含如下内容[Wikipedia11a]。

  测试目标:本次测试要提供什么信息?

  测试范围:本次测试覆盖了哪些功能、模块、用户情景?

  测试策略:本次测试使用了何种测试方法?

  缺陷列表。

  在测试过程中发现的疑问,它们值得进一步探索。

  可以复用的测试资源:被测试软件配置、测试数据和测试脚本等。

  测程的耗时。

  测程的时间分配:在测试设计与执行、缺陷调查与报告、测程的启动与结束和非测试活动上各花费了多少时间。

  测试记录可以转化为测试备忘录,供今后的测程参考。测试记录也可以提炼为测试报告,反映当前项目的进展。更重要的是,测试记录是测试评审的素材。基于测试记录,测试团队可以开发出符合项目语境的评估方法,对测程进行专家评审和定量度量。这有助于度量探索式测试结果,并提出改进方案。

  问:探索式测试只适合测试专家,不适合测试新手?

  答:“探索式测试不适合测试新手”是一种似是而非的说法。第一,所有高效的测试都依赖于测试人员的测试技能和行业知识。测试专家能够准确地选择测试策略、有效地运用测试方法,因此测试效果更佳。第二,测试新手采用任何测试方法,都需要指导和帮助。这有助于他们充分利用方法的优点,并避免方法的潜在陷阱。可见,更有意义的问题是:如何帮助测试新手尽快地掌握测试方法,尽快地成长为测试专家?

  从个人发展的角度看,探索式测试有助于测试新手快速学习。探索式测试将学习与应用作为相互支持的活动逐步展开,为测试人员的技能提升提供了平滑的学习曲线。此外,并行地进行测试学习、测试设计、测试执行和测试评估为测试人员的成长提供了持续、及时、有效的反馈,这有助于他主动学习和快速调整。

  从企业发展的角度看,测试团队应该积极帮助测试新手成长。可以采用的方法包括:为他安排工作导师、评审其测试文档、评审其测试记录、在测程中安排测试专家与他结对测试、定期进行一对一的会谈等。这些活动会消耗测试团队的人力资源,但是它们是帮助新员工成长最快速、最有效、最廉价的方法。

  Peter Drucker指出:知识工人的创造性(Productivity)要求他们被视为企业的资产(Asset)而不是开销(Cost)[Drucker99]。培养高水平测试人员是测试团队和测试领导不可回避的职责。

  问:有什么工具可以支持探索式测试?

  答:本书第5章将讨论探索式测试的工具。这里强调两个基本观点。

  第一,作为一种测试风格,探索式测试可以使用任何开发和测试工具。探索式测试者应该根据语境选择合适的工具,去完成自己的使命。

  第二,软件测试存在大量的创新空间,测试人员应该勇于开发自己的探索式测试工具。

  测试专家James A. Whittaker提出过一种测试工具构建方法[Whittaker01],值得测试人员参考。

原文转自:http://www.ltesting.net