淘宝网-探索式测试白皮书
探索式测试白皮书
@淘宝技术质量部-支撑平台测试部-共享中心测试组 季哥
1 / 70
淘宝网-探索式测试白皮书
目录
引入篇 ..................................................................................................................................................... 5
1、测试手段的多样化 ........................................................................................................................... 5
2、测试手段分析之测试模型 ............................................................................................................... 8
理论篇 ................................................................................................................................................... 12
1、ET 和 ST 的关系 .............................................................................................................................. 12
2、ET 的优势和缺点 ............................................................................................................................ 17
3、ET 的管理手段 ................................................................................................................................ 19
3.1 实践中 ST 和 ET 的使用模型 .................................................................................................... 19
3.2 ET team 的管理方式 ................................................................................................................ 20
3.3 ET 过程中的任务 ..................................................................................................................... 21
3.4 ET 中管理 Session .................................................................................................................... 22
4、ET 的思维过程分析 ....................................................................................................................... 23
4.1 Heurisitcs 和问答模式 ............................................................................................................... 24
4.2 ET 总体过程和覆盖率 ............................................................................................................. 28
5、ET 实践总体流程前奏 .................................................................................................................... 33
5.1 Working with Functions .............................................................................................................. 33
5.2 Testing Functionality and Stability .............................................................................................. 34
6、ET 实践总体流程细节 .................................................................................................................... 36
6.1 Identify the purpose of the product ............................................................................................ 36
6.2 Identify functions ........................................................................................................................ 38
6.3 Identify areas of potential instability .......................................................................................... 40
6.4 Test each function and record results ......................................................................................... 42
6.5 Design and record a consistency verification test ....................................................................... 43
实践篇 ................................................................................................................................................... 44
1、ET 的实践结果分析 ........................................................................................................................ 44
2、ET 和 ST 的生产率比较 .................................................................................................................. 49
3、ET 方法的联想输入模型 ................................................................................................................ 52
4、ET 方法的漫游测试模型 ................................................................................................................ 58
5、ET 方法的场景探索模型 ................................................................................................................ 62
2 / 70
淘宝网-探索式测试白皮书
未来篇 ................................................................................................................................................... 65
1、ET 是否能够代替 ST ....................................................................................................................... 65
2、ET 是否能够自动化 ........................................................................................................................ 67
Reference…………………………………………………………………………………………………………………………………………………69
致谢………………………………………………………………………………………………………………………………………..……………….70
3 / 70
淘宝网-探索式测试白皮书
序
夜深人静的时候,有两个测试工程师在积极的探索测试的真谛。
Tester A: 哎,我们测试工作处在整个项目周期的下游,很多人认为我们为项目所做的贡献总
是小于开发的,似乎有种被人遗忘的感觉呀。有一句是这么形容我们测试的工作:成功没我份,失
败全我错。真郁闷啊!!
Tester B:不会吧,我前几天发现了一个非常严重的 bug,几乎把整个系统都搞崩溃了,PM 和
开发们都很感谢我,非常认可我们测试的工作啊,开发老大还写表扬信说我们测试发现 bug 的手段
非常新颖且有技术含量。
Tester A: 哦哦,这么厉害啊,估计那也是偶然吧,大部分的时候我们做手工测试的都感觉没
啥技术含量,搞得像随便找几个人点点鼠标都会一样的。
Tester B:这也不能这么想的吧,你看那些做自动化测试也没多少自动化脚本能发现问题呢,
大部分 bug 还是我们手工测试发现的呀,白盒测试其实也是同一个道理的,很多问题还是遗留到上
层被手工测试点鼠标发现的啊。
Tester A:说的也对哦,但我觉得做手工功能测试比较单调且枯燥无味,而且多次重复进行测
试,有没有快速进行测试的方法呢?
Tester B: 其实只要你用心去发现,手工功能测试也有她美的地方,也有她富有激情和创造力
的地方,其实有个探索式测试也许能改变你现在的想法,而且也能让你能快速的进行测试,而不需
走繁杂的流程,而且质量也不错哦。
Tester A:探索式测试,真的有这么神奇吗?好像很多人觉得这个不可靠啊。
Tester B:呀呀,这就像小马过河一样,你不去尝试你就怎么知道这个不可靠呢,何况未必别
人就真的正确理解了探索式测试,其实我倒觉得她可以让你测试的价值得到大多数人的认可,也会
让你真正的感受到测试像一门艺术,让你疯狂的爱上她,理解她,而不是抱怨它。
Tester A:呀呀,测试真的有这么大的魅力存在吗,我都不敢相信。
Tester B:还骗你不成,你如果相信我的话,跟我来,让我们开始测试的探索之旅吧,这里有
业界测试大师们的集体智慧,你可要好好琢磨哦。
Tester A:一定,一定,很想知道啊,那我们开始吧!!
Date:2010/11/06
4 / 70
淘宝网-探索式测试白皮书
引入篇
1、测试手段的多样化
我们测试人员都知道整个 Test Cycle 的样子,也知道功能测试是其中很重要的一环。其采用的方
法也是很通用的,根据需求写测试用例,站在功能是否被实现或被完美实现的角度去写测试用例,
然后按照测试用例来执行所写的测试用例,发现了一定量的 bug。似乎很合理,似乎看来无懈可击。
但平静的湖面下面是否存在那不为人所知的怪兽呢?
第一次听到测试手段的概念,无法理解,觉得测试手段和测试类型几乎差不多,估计是在炒概
念,最近很流行。但了解了 James Bach 的思想后,感觉自己错了,测试手段使测试更加富有,更加
活跃,更加专业;也使测试人员更能找到自我,更加富有创造性。
我们最熟悉的就是功能测试了,显然功能测试相对于性能测试,接口测试,安全测试,就是一
个特别典型的测试类型,我们会对测试类型进行不同的测试策略。但往往越是我们最熟悉的东西就
越存在非常隐患,这里我们从测试手段来考虑,功能测试只是一个测试手段而已,属于功能测试(测
试类型)。但我们实际测试过程中,还可以把功能测试手段和兼容性测试类型结合起来,甚至还包括
场景测试,这样做好吗?
测试手段关注于多个方面:测试员,覆盖率,潜在问题,测试活动,评估。
所以我们的测试都包含上面说到的五个要素,而测试手段就是将测试员的关注点集中在一个或
几个要素上,把其他要素留给测试员自己判断。而且我们期望好的测试手段就是可以跨多个要素的
更综合的测试手段。
那么我们所做的功能测试其实就是关注测试内容的基于覆盖率的测试手段,逐个测试每个功能,
彻底测试每个功能,直到可以确信该功能没有问题。这里面包括白盒功能测试(单元测试)和黑盒
功能测试。
另外还有其他的关注测试内容的基于覆盖率的测试手段:
(1) 特性与功能集成测试:一起测试多个功能,以 check 功能在一起执行的情况
(2) 菜单浏览:遍历 GUI 产品中的所有菜单和对话框,使用每个可以的选项
(3) 域测试: 使用等价类和边界值方法进行变量输入测试
(4) 等价类分析: 测试等价的一组变量的取值测试
5 / 70
淘宝网-探索式测试白皮书
还有很多这里就不说明了,说一个共同点:就是其实我们的其他很多测试手段都是在广义上的
功能测试剥离出来的,也就是说,我们淘宝现在做的功能测试其实都或多或少的包括这些测试手段,
只是做到的程度就不一样而已,也就是说这些测试手段发现的 bug 都被统称为功能测试这个测试类
型发现了。
我们测试执行的时候:考虑说要站在用户使用的角度,要站在功能设计是否合理的角度,要站
在破坏者的角度,要站在功能是否正确的角度,要站在市场的角度等等。不同的角度去测试,就会
发现不同的 bug。我们实际做功能测试的时候,会全面考虑这些角度,但我们的比重是非常清楚的
(不合理且很模糊),也就是我们更多的关注这个功能是否正确,是否符合需求。其最常用的手段就
是上面说的彻底的测试每个功能,也就是功能测试。
下面的图可更易理解(结合了功能测试类型和功能测试手段)
测试类型
功能测试
基于状态测试
功能测试
域测试
场景测试
红色的功能测试是从测试类型角度来分开的,测试类型是从产品或系统的质量特性角度来分开
的。绿色的功能测试时从功能测试类型角度分开的一个关注与功能实现的测试手段。和绿色的功能
测试同级的其他测试活动都是功能测试类型的测试手段。
那么如果我们看其他的手段,可以发现我们实际在做的功能测试都包含这些测试手段,但一个
人的精力和时间投入是有限的,你把更多的权重放在这里,其他的地方的权重会相对减小。我们为
啥会这样呢? 首先我们没有深入的分析功能测试发现的 bug 和使用不同的手段去进行功能测试带
来的好处。加上同一个角度的测试执行带来的浮躁和系统免疫现象,我们功能测试的手段的单一性
带来的结果是值得怀疑的。我们使用不同的手段去进行类似于功能测试的测试执行,会发现很多 bug,
这些 bug 表面上看像功能测试应该发现的 bug,像用户测试应该发现的 bug。一般情况下什么样的测
试手段决定发现什么样的 bug。当然不同的手段之间也会存在交集的,也就是说使用探索式测试手
段去测试,站在的角度也许会存在变化(在测试执行中),所以其发现的 bug 会很有可能是其他测试
手段应该发现的 bug。
上面说的比较模糊,那么举个例子来说明下,比如就打印机而言,打印是其最主要的一个功能,
那么功能测试就是测试这个打印机是否能正确打印出想要的文件。这里先说明如果是采用多样化的
测试手段会发现哪些问题吧,其对应关系是:
(1) 正常情况下,打印机未打印出想要的文件——功能测试发现的问题;
6 / 70
淘宝网-探索式测试白皮书
(2) 打印机打印出了想要的文件,但文件上存在格式问题,不符合用户习惯的显示问题——用户测
试发现的问题;
(3) 打印机要连续打印 100 张或打印 0 张时出现问题——域测试发现的问题;
(4) 打印机要打印其他操作系统存储的文件格式时出现问题——兼容性测试发现的问题;
(5) 打印机在连续打印 100 张时中途取消打印后出现问题——场景测试发现的问题
(6) 打印机在连续打印 100 张过程中,同步打印其他文件出现问题——基于状态的测试发现的问题
其实上面说到的那些问题,在我们目前的工作过程中,大部分都是在我们所谓的功能测试中可
以发现的,在我们放大功能测试的范围后,要想覆盖更多的就需要在功能层面理解更深,更透彻,
才能想到如上的测试用例,从而发现更多的问题。那么假设我们将功能测试分解成多个真正的测试
手段,那么每个测试手段都可以发现其应该发现的问题。这样我们在写某个测试手段的测试用例的
时候就是有针对性的写用例,去观察系统行为,从而更大的程度上去保证覆盖率, 保证产品质量。
当然这里面是从功能测试类型去分解我们应关注的测试手段,其实我们对于其他测试类型也可以采
用分解法,再与功能测试类型结合共同保证质量。
总之,国外已经有结果证明测试手段的多样性带来的成果是可观的。当然,成本也是需要考虑
的。我们需要考虑存在哪些测试手段,需要考虑哪些测试手段适合在哪里实施,需要考虑每个测试
手段对测试人员的能力的要求如何,有哪些能力或经验是可以传承的,等等。当然我们最新看到的
就是这些测试手段是如何应用在我们的项目测试过程中,之间的应用顺序是串行的,还是并行的,
等等。后面说下测试手段的组合成为新的测试模型。
7 / 70
淘宝网-探索式测试白皮书
2、测试手段分析之测试模型
测试手段的定义已经大概说明了,那我们想在测试的时候,其测试手段的多样性带来很多的好
处肯定比较多,为啥我们可以这么说呢?
我们可以好好分析下我们现在所做的功能测试,测试设计和测试执行时间很长,看似花的时间
很长,应该是对于功能的测试比较彻底了,这里说到的功能测试也就是我们目前所做的功能测试,
包含真正的功能测试和一些与功能相关的测试手段。这样我们会出现很多现象:
(1) 我们在第三轮测试的时候发现的 bug 相对第一轮来说少很多
(2) 我们无法去验证功能测试是否已经完全的彻底
(3) 我们对于可靠性和场景测试关注不够
(4) 我们太过于依赖需求文档去做测试设计和执行
(5) 我们太过于压抑自己的创造力和探索精神(感觉测试就是简单重复的执行测试用例)
这些都可以说明,我们还有些地方做的不够深入。那我们这边有个信条:大多数情况下,使用
多个不太彻底的测试手段的结果要优于单一的彻底的测试手段。
如下模型可易理解:
我们目前的测试模型:
而如果我们采用多样的测试手段则是如下的测试模型:
8 / 70