Coaching实例剖析:ET中应用树形笔记

0. 简介

小C是一个有1~2年经验的tester,在我演示过一次如何用树形笔记TTN(Tree-Type Notes)记录探索的过程后,小C开始了第一次尝试使用TTN,她测试的是一款计算两数之和的Windows应用程序,整个探索性测试的Session持续40分钟。

 

本文通过这次coaching的实例剖析,可以一定程度上阐述树形笔记TTN在基于Session的探索性测试中起到的作用:

  • 记录必要的探索过程
  • 记录临时的testing ideas
  • 协助tester理清思路
  • 帮助做Session回顾
  • 找到自身的改进点

 

同时,针对小C做的同一个Session的测试,我和小C却记录了2个完全不同的树形笔记,这也揭示了一些记录树形笔记时应该避免的问题。

 

 

1. 小C的笔记和回顾

这是小C边测试边记录的树形笔记,注意她画的是一颗“倒着”生长的树 - 树根在最上面。

 

怎么样,看起来还不错吧!应该为小C鼓掌,这是她第一次尝试TTN。如果没有TTN之类的探索笔记,每当我要求一个tester讲述一下刚刚发生的探索性Session的测试故事时,我总是听到概况、笼统的回答,而有了TTN后,测试人员在讲述自己的测试故事时也更具体、更有内容了。

 

下面的音频是小C对照这个TTN给我讲述的关于这个Session的测试故事。当然对于“Telling Your Testing Story”这个技能而言,仅仅有TTN是不够的,还要练习表述的本领,这不是本文探讨的重点,就此略过。

 

(由于音频较大,希望收听的话,可以在微信公众号的文章里面收听) 

 

显然小C的“讲述测试故事”的能力也需要提升。不过这也提示了,对于听故事的人也是有技能要求的,如果一个test manager与ET tester一起做Session Debrief时,ET tester讲述测试故事的水平参差不齐,test manager就要求边听边提炼要点,然后展开对话交流。

 

通过小C的讲述,不难提炼出这个Session的几个要点:

  • 先做了KYM学习了解产品
  • 主要测试了核心的计算功能
  • 重点关注手工输入和随机输入两部分
  • 期间关注A和B的顺序比较多
  • 发现了2个bug
  • 小数部分没有完全找到规律
  • 异常输入部分测试不充分

 

 

2. 我的笔记

同样是小C做的这个Session,下面是我记录的TTN(当然我只是根据看到的小C的测试行为进行的整理,对于当时小C的心理活动只能猜测)。

 

 

对照这这个TTN,你的测试故事也许会这样表述:

  • 首先是KYM,了解学习SUT
  • 一共发现6个bug
  • 主要测试内容是两数相加的计算
  1. 包括正常输入和异常输入
  2. 异常输入覆盖了特殊字符(包括与数字、小数、负数的组合)
  3. 正常输入覆盖了整数(边界值)和小数(没有测试.5的情况)
  4. 经常互换A和B测试,关注顺序问题
  • 顺带测试了上下箭头、clear按钮
  • 发现7个后续测试值得关注的点
  • 发现4个自身在测试方面可以改进的点

 

同样的测试,不同的记录,二者讲的testing story为什么会差距这么大呢?

 

一个很重要的原因是,测试的思路不同

 

仔细查看小C的笔记,会发现她记录了大量的细节信息:每输入一回做了一次测试,就记录下来,可见平常工作中“测试用例”这个概念多么深入地影响着测试人员。虽然在做探索性测试,可是内心深处仍然在“追踪”着测试用例的踪影:我刚刚执行的是哪个测试用例、一共执行了多少个测试用例,还要执行哪个测试用例。结果就是:以测试用例这样的粒度为思考单位,详细记录每一个测试用例,虽然形式上采用了Session、记录了TTN、做了Debrief,如果大脑里的思维方式不转换,仍然按照Scripted Testing的方式思考,这种测试的探索性的成分还不够。

 

在探索性测试中,测试人员要关注的是Session整体目标的达成(进行KYM和Self-Management),关注可以探索的测试场景(Focusing和De-focusing),对SUT的反馈进行更全面的观察(这样才能发现更多的bug、引发更多的testing ideas),随时准备发现新的信息、设计新的testing ideas,不拘泥于头脑中已经想好的测试用例开展探索。

 

3. 我的点评

作为Coach,主要职责是帮助被coach的tester认识到需要改进的点,以便于后续测试就可以着手改进。其实,哪怕没有Coach在身边,我也建议每一个tester在做完一次测试后,Stop and Think,想想这次测试自己哪些方面表现的不错、哪些地方值得改进,这样不断的开展测试Practice、不断地Think、不断地Learning,你的测试水平才可以不断提升,这就是我所提倡的PTL学习法。反之,如果只是一味地做测试设计或测试执行,哪怕做了十年,中间却很少停下来思考,提升也有限得很。

 

好的方面:

 

  • 做了KYM

 

小C在打开应用程序后,先花了2分钟开始Know Your Misson,了解这个产品究竟是做什么的

 

  • 记录TTN

树形笔记清楚地记录了小C的探索思路

 

  • 关注Sequence

 

整个过程小C一直很关注Sequential Order的问题,比如2个输入Data之间的顺序、手工输入和随机输入之间的顺序、小数和整数和字符之间的顺序等。这是因为,在小C测试之前,我刚刚分享了另外一个测试案例,那个tester由于没有关注输入数据之间的顺序问题而导致了漏测。在本次测试的开始,小C受这个案例的影响比较深,我把这个称为1st Impression Heuristic。它的好处是,如果SUT中有这样的bug,那么小C极有可能发现它;不足的地方是,如果小C有较强的testing self-management的能力,就会及时做判断,适可而止,而不是整个过程在Sequence这方面花费太多的时间。

 

  • 发现2个bug

 

  • 试着阐述自己的测试故事

 

当小C给我讲述这个Session的时候,也提到一两个她认为自己可以改进的点。

 

 

主要改进点:

 

  • 细致观察,学习testing oracles,提升发现缺陷的能力

 

我所记录的4个bug小C并未意识到,虽然这些bug就在小C的眼前。这一方面有赖于测试中的细致观察,一方面与小C对testing oracle Heuristics的掌握程度有关,对这个话题不熟悉的人,可以先读一下Michael Bolton的文章《Testing Without A Map》。

 

  • 跳出基于测试用例开展测试的思维,关注大的测试场景

 

比如当你测试了一个“a+8”,你关注的不应仅仅是“a+8”这个用例,不仅仅是what-你做了什么-“我用手工输入的方式测试了a+8这个用例”,而更应该是why-我为什么要做这个测试-我想验证“字母和数字相加会是什么后果”这样一个场景。这样考虑的时候,接下来,你就得根据测试结果的feedback继续做判断,我是继续在这个场景下深入测试下去呢,还是可以更换其他的测试场景了?毕竟时间资源有限。本次小C更多的只是focuse在一个主要测试场景上测试,而忽略了其他相关的测试,说明需要练习Defocused Thinking。

 

  • TTN只做必要的测试记录,继续练习记笔记的能力

 

观察小C的测试,用于记录TTN的时间几乎占了一半的测试时间!对于探索性测试而言,我们只做必要的笔记,“测试”永远是主线,“笔记”只是辅助,不要让笔记打扰到你的探索思路。笔记更主要的目的是给自己用的,其次才是给别人看,所以那些力求在ET中努力把TTN记录得干净、整洁、漂亮的tester要好好审视一下了。

 

  • 测试深度不够,不断练习Follow-up Testing

 

我们不可能在每个点都做足够深入的测试,就像我们不可能每天都把家里的每一处细节打扫得一尘不染一样,测试是一种平衡的艺术。小C这次的Session中,至少有2处应当开展进一步的Follow-up Testing的,我在图中用2个蓝色的星星标出。关于Follow-up Testing,不了解的人建议读一下Cem Kaner的那本书《Foundations of Software Testing》,在我的喜马拉雅频道上也有关于这本书的解读。

 

  • 缺乏Evolving Testing Ideas的能力

 

基于Session开展探索性测试,不是基于test case开展测试,后者属于Plan

Based Testing,只要事先设计好test case,然后遵照执行就可以了;而前者强调的是testing ideas是在测试中不断演进的,我们并不相信在测试开始之前(此时对SUT的认识还不够)就可以设计好所有应该执行的测试了,因为我们不知道质量风险在哪里。所以,我们需要边探索、边学习理解SUT、边认识风险所在、边设计更适合的testing ideas,把基于风险测试的思想用到极致,拒绝测试中不必要的浪费(提前设计的测试用例)。

 

在ET中演化出来的testing ideas,一部分我们选择当即验证它,而还有一部分我们可能会选择下记录下来,后续的Session再去验证。所以TTN 中的“Next Time”这个分支也很重要,对于ET的测试管理是重要的输入。

 

4. 结语

探索性测试,或者说测试,想要做好,离不开测试人员的技能。TTN树形笔记只是其中一个小的方面,它可以帮助记录探索者的思维、记录探索的过程,TTN表现的外在形式并不重要,你完全可以用其他形式的笔记代替,重要的记录TTN过程中呈现的那种思维方式、学习思路、以及其他众多的探索技能。


Comment Box is loading comments...