近几年来,随着企业对软件质量的要求越来越高,对软件交付速度要求越来越快,很多企业开始重视软件测试,开始引入自动化测试,但是很多以失败告终,花重金购买了自动化测试工具,但是用不了多久就束之高阁。
如何才能成功地应用自动化测试,自动化测试成功的要素有哪些呢?
自动化测试不是一个人的事情,是一个团队的事情。
我看到很多企业的测试人员在做自动化测试的时候都是一两个人在研究,或者是单兵作战,自己琢磨,甚至是一个人身兼多职,偶尔客串一下自动化测试,有很多人是半路出家,领导头脑一发热,就指派了一个人去做自动化测试,而这个人可能根本不知道如何开展自动化测试。可想而知,这样的自动化测试怎能顺利开展?!
自动化测试对人有一定的要求,并不是随便抓一个人就可以去做自动化测试的。自动化测试工程师需要有一个完整的自动化测试知识体系。包括:
1、自动化在软件测试生命周期(STLC)中的角色。例如软件测试自动化与软件测试之间的区别、测试工具选购与整合、自动化的益处与误解、自动化的 ROI 计算等方面的知识。
2、测试自动化的类型和接口类型。例如自动化除了功能测试自动化外,还可以包括单元测试自动化、回归测试自动化、性能测试自动化等。需要知道,除了GUI类型的自动化测试外,还有命令行接口、应用程序编程接口(API)的自动化测试。
3、自动化测试工具。了解各种类型的自动化测试工具,知道如何进行测试工具选型。
4、测试自动化框架。包括自动化的范围、角色和职责的定义,了解框架的发展过程。
5、自动化框架设计。掌握自动化测试框架设计思想和开发流程。
6、自动化测试脚本思想。包括测试用例的选择、自动化测试的设计和开发、自动化测试的执行、分析和报告。
7、自动化测试脚本质量优化。考虑自动化测试脚本的可维护性、可移植性、灵活性、健壮性、可扩展性、可靠性、可用性、效率等方面的问题。
8、编程思想。掌握包括变量、控制流、模块化、面向对象等方面的编程思想。
9、自动化对象。包括识别应用程序对象、对象映射、对象模型、动态的对象行为等方面的知识。
10、调试技巧。了解常见的测试脚本编程错误类型,懂得相关的调试技巧的使用。
11、错误处理。了解错误处理的常用手段,掌握错误处理脚本的开发过程(诊断错误->定义错误捕获机制 ->建立出错日志->创建错误处理函数)。
12、自动化测试报告。一般包括高层(测试集/测试脚本)报告和底层(验证点)报告。
除了对自动化测试工程师的素质有要求外,自动化测试还需要开发团队的支持和配合,这主要体现在测试接口的提供和可测试性的问题上。例如,GUI测试通常会碰到的问题是界面控件的识别问题,而这些问题往往是由于开发团队采用了一些第三方控件或自定义控件导致的,如果在早期设计能考虑自动化测试的问题,则很多控件识别的问题都可以比较好地避免。
选择合适的项目开展自动化测试
有不少的企业是由于测试人员认为手工测试太繁琐了,耗时太长了,反复进行、效率低,因此想彻底摆脱这种困境,因此想到用自动化测试。
不是所有的项目都适合开展自动化测试。一般而言,短期的,2、3个月就结束的项目,没有后期维护、升级、版本更新的项目是不适合投入自动化测试的,因为这样的成本很高,开发出来的自动化测试脚本没跑几遍项目就结束了,这些脚本也就无用武之地了,倒不如都是用手工的测试进行。
另外,不宜在一个进度非常紧迫的项目中开展自动化测试。有些项目经理期待在一个进度严重拖延的项目中引入自动化测试来解决测试的效率问题,结果适得其反。
如果测试的软件系统在测试接口上很难适配自动化测试工具,例如很多GUI控件是难以被测试工具识别的,或者测试的软件大部分是报表、图像等依赖人为判断的内容,也不适合采用自动化测试。