近来,常在软件测试俱乐部里,跟一众测试精英讨论问题。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更过分,整个浏览器卡死。这个问题严重了吧,我们测试登录,输入用户名,输入密码,正确的,错误的,测了一大推。好了,问题来了,输入用户名,停半小时,再输入密码,登录失败。以为自己已经将所有测试可能性考虑过的同志们,傻眼了吧。