浅谈RST的理论与实践

2018-09-05   出处: 大商所行业测试中心  作/译者:大连飞创  

摘要:RST(Rapid Software Testing) 是James Bach和Michael Bolton共同提出的一套探索式测试的方法论 ,强调充分利用人的主观能动性,多快好省的做好测试工作。本文将对RST的核心思想进行介绍,并描述如何在工作中应用RST。

一、引言

什么是探索性测试(Exploratory Testing)?这个问题可能没有统一的答案:有人认为探索性测试必须由经验丰富的高级测试人员执行,有人认为探索性测试是尽可能的发散以求发现更多的bug。笔者很认同Cem Kaner对探索性测试的定义:

Exploratory software testing is a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the value of her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project

从定义中我们能够看出探索性测试是不断优化个人工作的过程。笔者认为,探索性测试思想高度强调学习的重要性、探索的重要性、沟通重要性、总结的重要性。在有限的资源面前快速深入的学习,并通过不断地探索收集信息、分析结果、总结得失,从而不断优化和改进自己的工作,不断提升个人技能以面对更严峻的挑战。

业界有很多贯彻了探索性测试思想的方法论,笔者非常喜欢的一套方法论就是测试界大牛James Bach 以及Michael Bolton提出的RST(Rapid Software Testing)理论。本文将分别阐述RST的核心思想及如何在工作中应用RST,并在文章结尾进行简要总结。

二、RST核心思想

对于测试行业从业者来说,James Bach和Michael Bolton的名声可谓是“家喻户晓”,而RST(Rapid Software Testing)正是由这两位大牛提出的测试方法论。RST不同于传统的测试理论以技术因素为中心的看法,强调人的重要性,以测试人员为中心。顾名思义,RST的目标是更“快”的进行测试,尤其在不充分的资源、匮乏的信息、有限的时间约束下。RST是一个“大而全”的测试方法论,涵盖了很多知识点,其核心思想总结起来有以下几点。

2.1 基于上下文

上下文驱动测试学派(Context-Driven School)强调人的重要性,强调人对不同上下文的应变和处理。上下文驱动测试学派有七大准则:

  • 任何实践活动的价值依赖于它所处的上下文

  • 在某个上下文中,只有好的实践,没有最佳实践

  • 在一起工作的人才是项目中最重要的组成部分

  • 在项目过程中项目往往会以不可预期的方式展开

  • 产品是一个解决方案,如果问题没有得到解决,那么产品则没有意义

  • 好的软件测试是一个具有挑战性的智力活动

  • 在整个项目过程中只有通过精准的判断、恰当的技术应用、协作的进行实践练习,我们才能在正确的时间做正确的事从而更高效的测试我们的产品。

图1 What is Context

James Bach是上下文学派的拥护者,基于上下文进行测试也可以说是RST思想的一个大前提。

2.2 测试是服务,提供的是信息

测试人员在整个研发团队,甚至是整个产品团队中起到的是一个服务角色。测试人员要和众多相关方打交道:研发人员、研发经理、测试经理、运维人员、需求人员等。作为测试人员上述相关方均是我们的服务对象,而我们的服务方式则是向相关方提供信息。

图2 Tester Provide Information

当然不能是随便的信息,这个信息是关于产品质量的信息。Quality is value to some person who matters,质量由产品对于相关方来说的价值决定。就像买车一样,有的人买车喜欢买便宜的,对于这个人来说“便宜”就是质量;而有的人喜欢买越野车,对于这个人来说“越野性能”就是质量。质量是主观的,测试人员的目标正是收集不同相关方关注的关于产品质量的信息。

2.3是Testing,不是Checking

“Checking”指的是通过脚本或命令来按部就班的执行测试。传统测试中编写用例,观察结果,报告结果的过程正是典型的“Checking”过程。而“Testing”是无法预先通过脚本或命令设计的部分,也是探索过程中大多数时间需要做的活动。“Testing”是通过探索和做实验来学习被测产品,从而对其进行评价的过程。

图3 What is Testing—James Bach

而“Checking”——操作产品来检查特定的输出,只能算作是“Testing”中很小的一环。RST理论强调的是进行Testing而不是Checking,需要通过问问题、学习、建模、观察和分析等活动不断的进行探索和试验。

三,RST应用与实践

上文总结了笔者认为的RST核心思想,下面列出RST的一些应用与实践。

3.1 上下文分析

在生活中大多数人的思维是What->How->Why的过程,而正确且高效的思维过程应当是Why->How->What(见图2)。测试工作中我们常常一头扎进测试设计和执行中,而往往忽略了对上下文的分析。上下文分析的过程是通过不断问问题了解上下文的过程。

图4 The Golden Circle—Simon Sinek

笔者在分析上下文时经常采用MIDTESTD引导词,分别代表:Mission、Information、Developer Relations、Test Team、Equipment & Tools、Schedule、Test Items、Deliverables。

图5 MIDTESTD引导词

如上图,引导词中包含了很多的问题,当然实际工作中的问题不局限于图中列出的。通过不断的问问题,并尝试给出问题的解决方案,能够让自己更加清晰产品脉络,并且能够做出更好的测试计划。

3.2 测试策略选取

测试策略的选取很大程度上跟我们要测试产品中那些部分有关,通常在我们明确测试策略过程中经常会漏掉一些产品的关键区域或组件。笔者经常使用SFDIPOT引导词来进行启发式的分析,明确产品中那些地方需要注意,从而提高测试覆盖。

图6 SFDIPOT引导词

引导词中包含了从架构、功能、数据、接口、平台、操作、时序七个维度的分析和各个维度包含的可测试点的列举。当然需要用启发式的思想应用,需要结合自身系统时机情况进行思考,列举出被测系统需要关注的测试覆盖点。

3.3 基于Session的测试执行

很多人说探索性测试的过程杂乱无章,但其实不然,正如前面讲到的上下文分析和测试策略选取中运用的引导词实际上是非常结构化的模型。RST强调人在测试执行过程中的重要作用,但是有人会质疑过分强调人的作用会使得测试执行不能被管理,这时候就可以使用SBTM(Session Based Test Management)进行测试管理。SBTM中有以下几个重要组件:

  • Charter:Charter为一个Session(时间会话盒)的要点,明确了整个Session的目标,即要测什么,要怎么测。举个例子:探索A模块中所有极值输入的处理情况。Charter不一定是很详尽的计划,在探索开始时,笼统的Charter也是可以的。详尽的Charter提供了更多的关注点,但是需要花很多时间进行设计。

  • Time Box:即Session,Session指的是一段全神贯注的时间,将自己的精力灌注进探索活动中,充分利用大脑进行学习和探索。一般来说Session按照时间长短可分为三类:S(Short)-60分钟(+-15),N(Normal)-90分钟(+-15),L(Long)-120分钟(+-15)。当然实施中可以依照具体情况调整,不过时间不宜太短也不宜太长。

  • Debriefing:Debrief提供了一个反馈机制,由管理者在Session结束后通过听执行人讲述探索过程并问问题来确认测试人员的测试过程是否存在与Charter冲突的地方,亦或是哪些地方漏掉了,哪些地方应当更加深入的探索。在进行Debrief时,讲述人和管理者可以按照PROOF原则来进行讲述和提问。

图7 PROOF原则

通过实践笔者认为Debrief在SBTM中至关重要,正如戴明提出的PDCA质量环中 提到的,Check这一环节决定了整个质量环能否持续运转下去。

图8 PDCA质量环

作为Debrief的双方,测试人员和管理者都需要提高自己的表达能力和问题分析能 力,这样才能在短时间的Debrief中取得最好的效果,不断在迭代中改进测试工作。

  • Metric:SBTM使用TBS&NO进行度量,其中TBS代表:T(Time)-全神贯注探索的时间,B(Bug)-处理bug和报告bug的时间,S(Setup)-准备环境及测试的时间。探索结束后测试人员需要填写三者的比例:如T(70%),B(20%),S(10%),三者相加需要为100%。

图9 SBTM-Activity Hierarchy

而NO代表:N(Non-session)-不在Session内的时间,O(Opportunity)-Session时间范 围内但是不在Charter描述范围的时间,NO也可以以比例方式呈现。TBS&NO度量 的层级关系见图9。

  • Notes:笔记的目的是进行信息的整理和结构化,Charter往往包含了Session的主题,而笔记的作用则是和Charter结合在一起回答“在这个Session里发生了什么”这一问题。笔记中可以包含关于覆盖情况,判断准则,测试策略的信息,当然也可以是自己觉得重要的信息。记笔记的部分作用在于为将来的测试做计划

下面列出笔者在工作中应用SBTM的一些实践:

图10 禅道集成SBTM

上图为SBTM与禅道平台集成的实例图,其中一个TBI(Testing Backlog Item)代表一个需求或一个测试单元。TBS&NO部分与SBTM原始实践有所不同,但是基本能够符合其思想(具体实践中将TBSNO整体算为100%)。

图11 笔记

上图为笔者在测试执行过程中记录的测试笔记,结构为垂直时间轴的树形笔记。实际测试执行中一般不对笔记进行形式和内容的强制要求,只需要根据测试人员个人偏好和实际情况进行记录,能够达到在Debrief时自己能够通过笔记整理好讲述思路并在后续其他测试人员再次执行时通过笔记快速抓取当时重要的测试场景和测试点即可。

图12 Trello测试执行日志

探索式测试过程中经常会遇到一些有启发的点或者一些大大小小的问题,上图即为笔者记录测试执行过程的日志看板。在看板中会将自己的想法、待解决的问题、遗留的风险、需要学习的知识、问题或错误的截图进行记录,方便日后进行总结和追踪,同时也可以和树形笔记一起在Debrief时讲述探索情况。

四,总结

测试是一门涉及面很广的学问,是一项值得终身打磨的“匠艺”。这门“匠艺”需要测试人员不断地努力和付出,而RST则为我们提供了指引。RST方法论中不仅包含了“道”,例如James和Michael对测试理论的深入理解,以及对一些基础概念的澄清和解释;而且还包含了“器”,在RST方法论中有着众多实践中可以运用到的测试模型和实践策略。篇幅有限,笔者仅能对其中部分思想和实践进行介绍,通过对RST的学习笔者也能深深认识到测试是一门需要长时间来积累和沉淀的学科。只有通过实践才能磨砺自己的“器”,而只有实践后的思考和学习才能深化自己的“道”,希望每一个测试人员都能够找到并丰富自己的“道”与“器”。

五,参考文献:

[1] Defining Exploratory Testing, Cem Kaner , http://kaner.com/?p=46  

[2] Rapid Software Testing, James Bach, Michael Bolton. www.satisfice.com/rst.pdf

[3] The Seven Basic Principles of the Context-Driven School, http://context-driven-testing.com/   

[4] Heuristic Test Strategy Model, James Bach , www.satisfice.com/tools/htsm.pdf 

[5] Session-Based Test Management, James Bach , http://www.satisfice.com/sbtm/ 


欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
205°|2059 人阅读|0 条评论

登录 后发表评论
最新文章