三番四次看见有人在俱乐部里提及,所以找来看看。翻开introduction,不由大笑。因为我也不止一次提过,现存的测试方法,不适合于系统测试(system testing)。在我每年两次的system testing时,每次我都复习之前用过的方法,并加以改进。自己也试着把经历写成博客。点我。所以看到RE也跳出来写,觉得颇为亲切,于是看了下去。顺便写些阅读手记,给不常看书的tester们一点提示,看软件测试书籍,要带着询问,思考,回答,联想的方式阅读,而万不能一目十行。

  注:Q为问题代号,即在阅读时,由于作者描述不清,产生的问题,我会在Q后,试图在文中寻找答案。

  1、标题

  作为一个的tester,首先我们要发问:这是一本关于什么的书。标题是:the little black book on test design。

  Q1.1为什么叫little?因为本书只有32页。

  Q1.2black book,为啥叫魔法书?

  Q1.3test design,哪一部分的test,unit test,component test,还是integration或system test,抑或全部包括?

  仅从标题,我们还无法得到答案。

  2、纵览目录,结构及方向

  RE将本书分为:介绍,灵感,分析,点子,执行,终曲,及参考书目这几个部分。

  3、简介

  简介里,通常会告诉我们,作者为什么会写这本书,写了给谁看。RE说:本书是讲述system testing的。这回答了问题1.3。如果我们只做unit test,却忽略了这句话,读完了才开始骂街,那要冤枉RE了。但是注意,RE在此处提到了一个新词:ambitious,野心。

  Q3.1什么叫有野心的进行system testing呢?

  RE说:十年来常觉得现存测试方法之不足,现将坊间实用方法记录如下,以供诸位品鉴。实用方法包括:测试策略,分析,设计,和执行。此处,RE提供了一条新的线索,即:本书所谓的测试设计,不止包括设计,更包括其他一切。因为在现实中,这些任务彼此互相联系,很难彻底分开。由于测试的抽样区间过分巨大(即连一个计算器都有无穷多种组合的输入),因此,从中选出重要区域才是关键。手动进行system testing的人,如何抽样重要区域更为重要。此处,勉强算是Q1.2的解答,因为在真实环境中,现存方法并不实用,因此,才将实用方法总结分享,称之为black book。

  我们更可以替作者做出总结:本书是针对系统测试(system testing)的实用方法的总结归纳(用于找到测试的重要区域),尤其适用于手动测试。

  3.1 要素

  RE说:tester应该收集尽可能多的信息(需求,说明,雏形,代码,缺陷,技术支持,用户故事,用户预期,技术,工具,模型,系统,质量标准,质量特点,测试技术,测试点子,交谈,风险,可能性),将所有这些整理起来,而后发挥创造力,找到重要区域。但是,这个方法只适合于ambitious projects,即有野心的项目。若是你的项目,资源紧缺(说白了是没啥经费,没啥牛人),别扯这个。即:ambitious project needs ambitious testers and ambitious testing。(有野心的项目,才需要有野心的tester和有野心的testing)。此处,对Q3.1,ambitious有了解答。

  RE又说:若是有野心之人,那么可以采用下面四步:1,搜寻灵感,2,分析重点区域,3,合成测试点子,4执行。我们留意到,这四步,正是接下来四章的标题。

  3.2 基础理论

  RE以社会学研究为例:科学家总是收集被研究对象的所有信息,加以分类,试图从中发现一些理论。直到收集来的信息稳定下来,再不更改,此时,理论才成型。整个过程中,没有前提,没有假设,若是我们开始自许已经将重要问题都一网打尽,那是非常危险的事情。RE将基础理论的形成与testing进行类比。基础理论是要从社会中收集信息,包括面谈,背景资料等,相比对于testing如何收集信息,3.1中的要素中已经列举过了。

  3.3 测试设计理论

  RE说:测试的策略、分析、设计与执行不应分离,而应结合在一起。因为它们之间互相影响,更不要一开始定下strategy,让它慢慢随着情形演变。此处RE的理念,开始与敏捷共鸣。越是晚下决定,对客户越有利。那么是不是不应该有strategy呢?RE说,高层的策略可以有,但不要具体。底层的测试策略,则应该在学习的同时,逐渐成型。

  RE说:为什么测试分析不常被提及?因为“要测什么”早已在需求中说清楚了。市面上大部分的书,都在讲述单元测试或模块测试的方法,而比之更重要的system testing,以及如何选择重要区域(important things)这个问题,却被忽略了。好在,探索性测试比较关注于此。RE更感兴趣的,不是设计测试用例,而是设计测试点子。此处,与基础理论相对应,RE认为,他的工作是搜集相关信息,分析,针对性的进行选择策略与工具。

  Q3.3.1:我们已经听RE提到过数次,重要区域了,到底什么是重要的?

  3.4 重要区域(important things)

  终于来解答Q4.3.1这个问题了。RE列举了如下若干可以为重点区域提供参考的信息来源:1需求,2业界知识,3用户情况,4想象力,5批判性,6技术,7测试人的思维。从上述来源中选去重点,需要对价值观的判断,而计算机,在这一点上,远远不如人类。此处,提到需要用到价值判断(value judgement),来选择重点区域。相信这个词,在之后会频繁出现。