基于GUI的自动化测试工具在软件测试自动化领域发挥着巨大的作用。但要真正找到一个方便高效的测试工具却并非易事,通过实践,我们发现一个好的测试工具必须具备如下特征:
支持脚本化语言:包括支持数组、列表、结构等多种常用的变量和数据类型、各种条件逻辑和循环、函数的创建和调用。如果此工具使用如VB、C等通用语言,测试就更方便。脚本语言的功能越强大,就能为测试者提供更灵活的使用空间,或者用它写出比被测软件还要复杂得多的测试系统。
对程序界面中对象的识别能力:工具必须能够将程序界面中的所有对象都区分并标识出来,录制的测试脚本才具有更好的可读性、灵活性和更大的修改空间。另外,对开发语言的支持也是很重要的一项。对于程序中存在的一些比较难于标识的对象,如位图对象,那么在软件设计阶段就应考虑,是一定要实现这样的功能,还是要保证软件的可测试性,或采取一些折衷处理方法。
支持函数的可重用:用它可以建立一套比较通用的函数库,一旦程序做了修改,只需把原脚本中的相应函数进行更改,而不用把所有可能的脚本都改动,可以大大节省工作量。
支持外部函数库:一些外部函数同样能够为测试提供更强大功能,如Windows程序中对DLL文件的访问,Client/Server程序中对数据库编程接口的调用等。
抽象层:可以将程序界面中存在的所有对象实体一一映射成逻辑对象,测试就针对逻辑对象进行,这样当程序界面改变时,就可大大减少测试维护工作量。
分布式测试支持:一个测试项目,通常需要多名测试人员协同工作,因此如果测试工具不支持分布式测试,将很难保障这种协同测试工作的开展。分布式测试最大的好处是我们可以事先定制任务执行的时间表,如在指定时间、指定设备上执行指定测试任务。
支持数据驱动测试:在数据驱动测试中,只需编制少量的脚本,而准备大量的测试数据,测试工具可以自动重复完成大量的测试工作。比如在WINDOWS系统中,如果测试工具支持对INI文件的处理,被测软件通过读.INI文件知道要在哪一台服务器上运行,那么我们只要把需要运行程序的服务器名写进.INI文件中,而不需要修改测试脚本,就可以让程序在指定设备上运行。
错误处理:利用它可以避免测试程序因一些异常错误而异常终止。这样就可将测试任务提前定制好,下班后启动任务执行,第二天上班再检查测试执行结果。如此以来就可充分利用时间。
源代码管理:可以帮助我们进行测试脚本库的倒入、倒出,回退到以前版本、比较不同版本间差别,以及同时对几个项目进行跟踪等,尤其在团队开发中很有必要,可以对测试数据文件、测试脚本、对象抽象层进行统一管理。如果测试环境与开发环境使用同一套版本管理工具,能够给项目管理带来更大的便利。
支持脚本的命令行方式执行: 如果能够通过命令行方式运行测试脚本,可以为测试的执行带来更大的灵活性。如机器启动时、程序Bulid后都可以自动启动测试脚本的执行。
用户社区:测试工具通常没有这个功能,但最好能寻找一些其它工具,帮助建立用户讨论组、Web站点等,支持成员间互相讨论、学习,共享一些比较实用的函数、源代码等,这对于自动化测试的开发非常有用。
购买建议:通常先买少量License,在小范围内试用是减小风险的好办法,特别是在现有工具还可以使用,而上面提到的某功能又不具备时,如果试用效果很好,再全面更新工具也不迟。多数销售商在推销产品时会首先强调产品易用性,而对其功能的可扩展性、定制和编程等不会特别宣传,而这些特点都是在你使用了一段时间,系统的维护、源代码的管理工作量越来越大以后,才会发现它的重要性的。因此以上提到的这些特征能够帮助对工具的选购提供参考,在实际购买时应该根据对工具的要求、资金情况进行综合考虑。