谈谈测试工具的开发
上一篇 / 下一篇 2012-07-18 08:57:00 / 个人分类:杂谈
每次做测试架构师,就会面临测试工具的问题。尤其是在System Verification部门,他们的case是在仿真用户对产品的使用,产品的功能不断添加,但是用户的行为却是可遵循的,而且是复杂的,是各种行为的组合。不断地重复测试,似乎是在浪费测试人员的时间。在这种情况下,自动化测试工具就成为提高测试效率,解放测试人员的法宝。
0ou@)| C:VF"S0PRKz*Y3^/_"V ?"Bk0 如何开发测试工具,有很多需要注意的地方。51Testing软件测试网.}f xekMq-\B
51Testing软件测试网m1e,uM{ ^记得我刚去WiMax部门做测试架构师的时候,WiMax功能测试组需要软件组帮他们做一个截获正常报文,产生错误报文的工具。我和测试人员交流的时 候,测试人员说这个工具很不好用。我再去询问软件人员,他们很惊讶。说已经完全按照需求实现了功能,该做的都做了,怎么就不肯用呢?我具体看了看他们的实 现,发现基本功能确实都实现了,可是确实没办法用。测试人员不仅仅需要这个软件实现截获和修改报文的功能,更需要在实际的测试过程中灵活地使用它来实现整 体的测试。软件人员没有做过测试,无法正确地理解测试人员的需要,再加上两个部门一个在15楼,一个在16楼,交流很不通畅,才造成彼此无法理解,做不出 真正需要的东西。我和软件人员坐在一起,仔细地告诉他们我需要怎样来用这个工具,需要他们提供什么样的接口,测试人员该如何接入和管理这个软件,哪些配置 要图形化,哪些配置要被自动化工具调用,需要什么样的输出,哪些状态实时显示,哪些数据需要统计,哪些log需要输出到统一的log文档中,等等。他们才 恍然大悟,原来截获和修改报文只是很基本的需求,还有那么多事情要做。51Testing软件测试网c'at#OSBI
51Testing软件测试网VCm5p8I,o4I.tQ:m2P所以,开发测试工具,最理想的情况是找一个既精通开发,又精通测试的人来做。但这样的人比较难找。更普遍的办法是让软件人员和测试人员紧密合作,互相理解,才能够真正完成可用好用的产品。
9J PX^Vx051Testing软件测试网/}:\WJe{(Cp在我看来,一个好的自动化测试工具,需要注意以下特点:
5l-WY|'T*^Ih,B051Testing软件测试网1EuJ:Ad1p } v第一,必须将数据、配置和功能分开
0O9`;xv#BX051Testing软件测试网TJd#o"yDj第二,尽量使用已有的稳定的公开库
7F|[~ z9ko051Testing软件测试网2d.xr/e$k*^,PfXA+j_| K&S0M'N1RtXvuWH)\0 第四,封装基本功能,提供调用接口,用于测试人员的二次开发
]O;I5|;ds0S_'GR0R2oc0 第五,尽量采用统一的可直接编辑的格式用于记录数据、配置和log
nH4j#s/T!DA-gv0q CuQ4v6v:T_0 第六,不要求大求全,也不要采用过于复杂和灵活的测试框架,要有针对性,简单为上51Testing软件测试网KIo8ufa6JO(l
-g#q0eK1p1No(f-y0 第七,图形界面友好,符合测试人员的使用习惯51Testing软件测试网;\do;G(w?\&jI"b&\T
51Testing软件测试网?'@l\7U第八,注重系统效率,要采用多进程以利用多核CPU51Testing软件测试网&iB UfFr0KL
YqzRk^-r0 第九,提供测试结果采集、统计和log分析页面
$nC:f:f Vt]'U.aQ051Testing软件测试网*\"T2T8IJ#]}(I`第十,要考虑如何容纳已有的测试case
4FF![U [T}0w Aj gf6v9{ @0 我们曾经使用过Mobile Metrics的测试套件,据说这个公司只有9个人在开发和维护这个产品,但这个测试套件功能强大,比一般大公司100个人做出来的东西还要好,绝对是我们学习的 楷模。这个套件是用c和java写的,底层调用和报文处理都是c,以提高系统性能。用户界面都是java,非常友好。提供了众多的接口调用,封装粒度合 理,测试人员可以用非常简单的java语言实现非常复杂的测试行为,如入网、退网、handover等等。提供标准的java调用,让测试人员方便地使用 其他标准功能,如产生随机数,条件语句,循环语句,网络连接,文件读写,报文分析等等。
m0iYo MU6N%~:`C0(x"M%l p z{m W0 还有Spirent的自动化测试套件,这个套件 在使用界面上非常友好,配置和执行测试都很方便。我们曾经仿照它的模式来管理自己的测试case。但它不够开放,要想在上面做2次开发不是很容易,需要请 Spirent专门派人来协助和培训。Spirent的测试套都是用Tcl写的,我们觉得Tcl在开发大型测试软件的时候有点难度,出了错很难查错,开发 环境不够友好,不如c和java方便。Python近几年发展比Tcl快,可以调用的库很多,开发环境也友好一些了。但Tcl和Python的效率都要差 一些。我们自己写的测试管理工具还兼容了原先大量使用的内部测试工具,可直接运行原来的case,只是将测试结果和log记录下来。这样就不需要重写了。51Testing软件测试网%Y2A{g8hN
51Testing软件测试网*Lx@8qSs+a我们曾经研究过泰克的测试工具。泰克的图形化做得是最面面俱到的,连设计一个测试流程,也只需要用鼠标拉来拉去,这样其实很限制灵活性,只能按照它所设 定的模式来设计测试,二次开发很难。它的配置和数据也都是用自有的格式存储的,必须用它的工具来打开和修改。我个人不大喜欢这样的测试工具。51Testing软件测试网)C1K,sa8Tg7\
o({.KS l(_0 我们公司内部也有一些自动化测试的工具,有些是自己开发的,有些是外包的。我也不大喜欢这些工具,因为功能很弱,图形化差,不灵活,也不能与时俱进。这些代码都是从头开始写的,比起外面那些开源代码和公开库,无论是质量还是数量,都差远了。