|
|
|
|
| >>首页 >>研发动态 |
|
|
自动化测试开发 |
测试驱动开发(TDD,Test-Drivern Development)需要勇气。
泥瓦匠拉一根水平线是简单的,而写测试程序却复杂得多。即使程序员意识到应该为自己的代码编写测试程序,但却很少能这样做。因为开发工作本身已经非常紧张,所以少有额外的时间去编写测试程序。这往往会导致一个宿命的循环―――越缺乏时间编写测试程序,代码的效率与质量越差,花在发现Bug、解决Bug上的时间也就越多,周期效率自然也就降低了,因此变得更紧张,压力更大。
普渡项目组的成员基本上是那些对代码情有独钟的“呆子们”。为了实践TDD,他们起初尝试利用应用级别的测试结合自己所编写的程序员级别的测试来驱动开发。
项目组首先引入了Rational公司的Robot系列测试工具。
Rational Robot是用于回归测试的自动测试工具。它利用录制/回放Windows消息原理,以图形界面脚本即GUI脚本(主要由SQA
Basic语言编写,一种扩展的BASIC语言)来记录测试人员对被测软件的操作动作(鼠标,键盘)Windows消息,通过回放这些消息来模拟测试人员的测试操作;当然也可以直接编写GUI脚本,通过Robot发出Windows消息来执行相应的图形界面操作,达到测试目的。通常的做法是先录制一段GUI脚本,然后根据测试人员的目的,在此基础上进行编辑,最后回放编辑过的脚本进行测试。除了GUI脚本外,还有虚拟脚本即VU脚本(主要由一种类C语言编写)来记录C/S系统在网络上传送的命令和命令响应的网络消息,通过编辑并回放这些网络消息脚本,可以模拟虚拟用户和服务器系统的交互,所以VU脚本经常用于测试客户端应用程序与服务器、数据库以及Web服务器交互时的性能。〕
借助成熟的商用软件,这对于实现应用级别测试的自动化非常重要。工具原理简单易懂,脚本可以自动生成并手工编辑, Robot工具帮助项目组实践TDD跨出了第一步。
此后,项目组又引入了RobotJ。RobotJ是Rational公司在Robot之后推出的基于Java语言,依照录制-回放测试模式的测试工具。其最大好处在于提供基于和项目软件开发语言相同的脚本语言。因此,团队成员试用该工具进行自测的阻力大大减少。
在借助工具的基础上,项目组进一步摸索程序员级别的测试自动化之路。起初,他们编写每个都对应上百行逻辑代码和数小时重构的测试。经过一段时间,普渡的测试驱动开发人员逐步倾向于采用小步骤进行开发,尽量编写每个都对应一行逻辑代码和少数重构的测试,把条件部分、循环部分、操作部分、多态性都尽量纳入测试覆盖的范围。
到现在,已经累积起1658个能够在20分钟内执行完毕的测试。现在整个测试用例每天都要运行几遍。实践测试驱动使写出的代码错误率降低的同时,也使产品与该领域中通常的设计相比更加清晰。
|
|
|