近来,常在软件测试俱乐部里,跟一众测试精英讨论问题。Kerry说,你开源工具用过不少,不如写篇博客,让大家也少走些弯路。我应下来时,还不到十一,如今竟已是十一的最后一天,所以抓紧写点,省得又成了个大坑。
定义
动笔前,犹豫好久。想来想去,所有工具都只是为了解决一个问题,或是一时的问题。但只有一个东西,从头到尾,一直在用。那就是如何理解被测系统,找到测试点子。我盗用《the little black book of test design》中的说法(读书笔记,点我),称其为测试模型。借用其定义如下,测试模型:尽可能列出可能发生的错误,或导致客户不满意之处,按照发生概率与严重程度排序,自上而下的进行排查,即为测试。而帮助测试人员进行更好的规划与理解这一行为的抽象,即为测试模型。
JW圈圈模型
我们先来看James Whittaker的JW圈圈模型(因为原图中模型为圆环套圆环,有此得名)。
为了理解圈圈模型,我们先要介绍一下背景。发明者James Whittaker在发明此模型时,正在微软进行Office的测试工作。因此,JW圈圈模型并未涉及到太过复杂的系统框架,或性能因素。而只是从单用户,单一系统,单机出发,遍历了四大影响该被测系统的因素。即:
- 用户(行为:包括输入)
- 存储(如输出)
- 操作系统(资源)
- 第三方库(依赖性)。
试举一例:也已windows上的软件freemind为例,在freemind的插入图片选项中,要求用户输入该图片的路径,即:用户与存储。测试点子包括:输入一个存储设备存在的图片;不存在的图片;网络存储设备的路径。大家可以尝试填写一个http://*/.jpg, freemind没办法处理此请求,而导致卡死。
JB启发式模型
接下来,为James Bach的JB启发式模型(原文为heuristic):
为了理解JB启发式模型,我们依然先来了解一下JB的背景。高中毕业后辍学,自学软件与编程,21岁任Apple最年轻的软件测试经理,而后跟Cem Kaner,Michael Bolton一起,搞软件测试培训与咨询。鄙视一切认证,鄙视一切教条,几乎所有的东西都自成体系。通过对JB的了解,我推断他是一个思维过分活跃与发散的人,很难从他的文章中寻找出一根明确的主线。也许就是这样的人,才能找到大家找不到的Bug吧。
启发式模型中,提到了一点,时间。这是我测试以来最常忽略的一个因素。以测试Chrome中内嵌的flash播放器为例。我们测试了:
- 点击播放按钮,进行播放;
- 点击暂停按钮,视频暂停;
- 再点击播放,视频继续。
问题来了,如果你点击暂停,超过1小时,flash播放器会卡死,从而导致Chrome当前标签卡死;firefox更过分,整个浏览器卡死。这个问题严重了吧,我们测试登录,输入用户名,输入密码,正确的,错误的,测了一大推。好了,问题来了,输入用户名,停半小时,再输入密码,登录失败。以为自己已经将所有测试可能性考虑过的同志们,傻眼了吧。
RBRA模型
接下来为Rex Black的风险分析模型(Rex Black's Risk Analysis)。
我对RB知之甚少,只知道他从事多年软件培训与咨询工作,著有《Pragmatic software testing》一书,是ISTQB(国际软件测试认证组织)的核心成员。看RB的书时,正是我正进行系统测试,总管一个由三个项目合成起来的系统。可以测的地方太多,从哪里下手?如何排列优先级?测到哪里为止?这些问题,在读到RB的风险模型后,都一一获得了解答。
以我所作的系统测试为例:风险分析教会我先定义风险,按照风险排列优先级与测试时长。因此:我定义如下风险:
- 低风险:代码改动(包括缺陷修复与新功能)
- 中风险:所有低风险中,需要与其他模块交互之处
- 高风险:所有中风险中,会影响到大量用户之处
以此为标准,排列所有用户故事,每个高风险故事分配3小时,中风险故事分配1小时,低风险0.5小时。当系统测试结束时,我们只覆盖了高、中风险,而低风险则完全没有覆盖。但发现的每一个问题,都是必须要修复,否则便可能影响大量用户的问题。比起之前,RBRA模型产生的覆盖更有针对性。就算本次系统测试并不成功,发布后用户问题过多,我们又可以将这些问题分类,定义为高风险,以期下次去覆盖。
我的RP人品模型
为了便于记忆,我将RBRA模型稍加改动,便成了现今的人品模型。人品模型按照相关人(或角色)来划分,将RBRA中原有的风险,分配到各个角色下。即:由人及其需要出发,分析风险。
例如:
- 在测试用户界面时,
- 普通用户用鼠标,
- Geek则喜欢使用快捷键,
- 孩子喜欢乱点乱画,
- 老年人则可能会将字体放到很大,
- 当用户群体扩大到相当时,更要考虑某些方面有残疾的人士(如:红绿色盲等)
- 在测试功能时,也要考虑性格因素。如:
- 粗心的管理员可能忘记备份,
- 对于命令不熟悉的管理员可能误删配置文件等等。
人品模型的好处是它是自由的,发散的,何时何地都可以使用的。不需要死记硬背,不需要打印列表,三五个人,一块白板,一只记号笔,即可提问。如:
- 要是老板来用,他肯定会如何如何吧。
- 要是我爸来用,他肯定连什么都找不到吧。
- 要是让我那粗心的小师弟用,他会如何如何吧。
- 要是我那geek师兄,一定会如何如何hack吧。
对于人的了解越多,使用人品模型就越有效,考虑到的风险就越全面。我在认识新朋友时,甚至会想一想,若是让他来使用我们的系统,他会骂街呢,还是满心欢喜呢?