测试专家:请测试一个纸杯?
测试菜鸟:什么?
测试专家:如果给你一个喝水的一次性一次纸杯,你将如何测试它?
测试菜鸟:。。。我想想啊。。。
几分钟后。。。。。。。
测试菜鸟:倒满水看看漏不漏。。。。嗯。。。。
测试专家:还有么?
测试菜鸟:能不能倒出水来。。。会不会变形?。。。。。。一个纸杯怎么测啊?脑子全乱了?。哦,对了!
你有需求么?
测试专家:嗯,不错的问题,你见过纸杯的需求说明书么?
测试菜鸟:没需求说明书我咋测?
测试专家:好吧,假设我是你老板,是你客户,你也这么回答我?
测试菜鸟:。。。我要积极。。。想办法,您能告诉我该怎么做么?
测试专家:跟着我念: FDSFSCURA - CIDTESTD - SFDPOT - CRUSSPIC - STMPL
测试菜鸟:神马?
测试专家:再念几遍:FDSFSCURA - CIDTESTD - SFDPOT - CRUSSPIC - STMPL
FDSFSCURA - CIDTESTD - SFDPOT - CRUSSPIC - STMPL
FDSFSCURA - CIDTESTD - SFDPOT - CRUSSPIC - STMPL
FDSFS。。。
测试菜鸟:等等等等。。。。您在教我念咒么?这就行?您是邓布利多我可不是哈利波特。
测试专家:不开玩笑,把这些字母记住并应用自如,你就能够非常好的做测试设计了。
测试菜鸟:真的?那。。。FDSFSCURA。。。。。
测试专家:你还真听话。不逗你了,先解释一下这些字母的含义吧。
基于多年的测试经验,测试大牛James Bach总结出了一套测试设计的方法论,那就是启发式测试策略模型( Heuristic Test Strategy Model)。这套模型包含了一组精心挑选出来的测试设计策略。测试者只要把这些策略熟记在心,在测试设计时依次对照这些策略,测试思路就会源源不断的从你脑子里迸发出来了,还不跑偏。
这套模型非常简单,只有4个域(见下图),每个域有那么几条测试策略,每个策略可以用1到2个单词描述,把这些单词的首字母串起来就是上面蓝色字体的字符串也就是我们所说的引导词。
来解释一下启发式测试模型。我们在做测试设计时,首先想到的是要应用我们已有的测试技术(Test Techniques)并综合考虑项目环境(Project Environment)、产出物(Product element)、质量准则(quality Criteria)。这样我们就能够得到一个有基本保障的(看得到的)质量(Perceived Quality)
回到刚才所说的“测试一个纸杯”,我们目前能拿到的只有手中的“一个纸杯”,对照一下刚才所说的图,其实最先想到的应该是产出物(Product element)。模型给出了产出物域需要思考的项:
结构(Structure)- 所有组成产出物的东西。
代码,界面,接口,硬件,非可执行文件,附属物件。
功能(Functions)- 所有产品所实现的功能
用户界面,系统接口,应用,计算,时间相关性功能,变化(如改变字体),
开启/关闭,多媒体,错误处理,交互,可测性
数据(Data) -所有产品处理的数据
输入,输出,预设值,持久数据,序列,大小数量变化,噪声数据,生命周期等
平台(Platform)-所有被测软件所依赖的外部事物
外部硬件,外部软件,内部组建
操作(Operation)-所有产品可执行的操作
用户,环境,常见操作,非正常操作,极限操作
时间(Time)-所有与产品相关的时间指标
输入/输出,快/慢,并发,变化率
注意到上述几项中英文被标蓝的首字母了么? SFDPOT 就是刚才测试专家念的引导词中的一组。我们再次回到“测试一个纸杯”,现在可以一项一项来了:
结构:用料是否环保?是否能平稳放在桌面上?放了水是否能平稳放在说面上?杯口是否光滑?。。。。。
功能:到进水是否不漏,是否不变形?拿起来是否能够不显著变形?水是不是能倒出来?。。。。。
数据:放半杯水,放一整杯水,放冷水,放热水,放茶叶,放可乐。。。。。。。
平台:能否放在桌子上不倒?手拿着是否不变形,不会感到不舒服?是否能放到杯架、套到别的杯子上?。。。
操作:倒进水,喝水,再倒水,倒开水,捏变形,弹烟灰,丢弃。。。。
时间:看喝水的时候水是不是很快的能流出来。。。
这里边有重复项,这没关系,合并同类项就好了,我们不是要强制归类,而是要利用这些引导词帮你想到该测试的地方。
剩下的就是把其他几个测试域中的关键字找到,根据这些关键字设计测试用例。限于篇幅,这里就不一一展开了,大家可以 参考启发式测试策略模型中给出的详细说明进行比照。如果把它们都用作测试这个纸杯,那么你至少有30种以上的手段来测试它(当然得根据实际需求做一定取 舍),谁说测试是没什么技术含量的工作?
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/