4、胡马大宛名
上回书说到TE如侠。侠客离不开剑,也离不开马。就好比郭靖有了汗血宝马,想去哪就去哪,从来不必担心路程问题;而胡斐追捕南霸天雷老虎,没有宝马良驹,从广东一直追到北京才算完。侠客离不开马
,尤其需要骐骥骅骝,千里良驹。
杜甫《房兵曹胡马》:胡马大宛名,锋棱瘦骨成。竹批双耳峻,风入四蹄轻。所向无空阔,真堪托死
生。骁腾有如此,万里可横行。
然则对于TE而言,能够“风入四蹄轻”的千里马何在呢?
人的精力总是有限的,即便再伟大的TE,对于无穷无尽的测试任务,也总会有感到疲惫不堪,难以为
继的时候。这不是因为TE本身功力不够,也不是因为TE掌中剑(TC)不好,而是缺少了一匹良骥。人力有
时而尽,只有非人力的才可持久;因此这良骥便是且只能是自动化测试(Automation testing)。
虽然《荀子·劝学》有云:骐骥一跃,不能十步;驽马十驾,功在不舍。然而完全由机器所执行的自
动化测试,不论骐骥还是驽马,全都能够做到功在不舍。因此这时候TE如果只是埋头编写自动化代码便有
失明智了。
TE可以针对每一条TC编写一段测试代码,然后通过执行这段代码完成对测试目标内容的覆盖;此为驽
马的方法,虽然劳而有功,然而工程浩大,且成本不菲,后续项目的继承性也难以保证。
TE还可以先创建框架,从测试需求分析开始,与coding的CMM的流程同步,采用迭代的方法渐增完成
测试代码;“随风潜入夜,润物细无声。”当测试执行开始的时候,测试代码的架构已经完成,只需对细
节进行后续维护即可。
然而还有更可取的方式:TE不要针对每个测试例编码,而是每个STEP编写更小的一段代码。不同的测
试例有可能使用相同的STEP。这种等价于STEP的每一段小的代码(记为cell)可以用STEP的简述进行封装
。例如BS结构的web页面,第一步通常是登录,登录之后跳转到首页。可以采用如下封装:
login {
/*input username & password*/
input_username "xxxxxx";
input_password "xxxxxx";
/*check*/
if (get_new page "//main.htm")
output "step xxx is pass"
else
output "step xxx is fail"
}
若干个此种简易封装的函数(例如完成了login,download_source,edit_source,upload_source等)完成之
后,TE对于某个测试例(step1:登录xx网站;step2:下载xx文件;step3:编辑刚才下载的xx文件;
step4:把编辑过的xx文件再上传回xx网站。)可以如下编写:
login;
download_source;
edit_source;
upload_source;
对于使用函数编写测试代码的TE而言,完全不是在编码,只是写一篇简单至极的短文。如果测试例的管理
工具足够强大,甚至可以自动组装函数。至于今后的类似项目,同样可以直接使用这些函数;如果测试例
的管理工具足够强大,甚至可以第一次编写函数之后,一切的测试代码都自动生成。
只不过到那时,说不好TE是完全被解放了,还是完全被淘汰了。就好似汽车的出现代替了千里马,而
火器的出现淘汰了剑,剑与马都失去了价值的那一天,侠客也就消失了。