福富软件 朱立秀
自动化测试的应用浅析
福富软件 朱立秀
本文分析了自动化测试的相关技术及重要性,并结合某项目的实际情况,提出了自动化测试实施的具体方案建议。
测试工具;自动化测试(Automated Testing);补丁流程;版本测试;回归测试
自动化测试对某些项目的重要性是不言而喻的,对于降低测试的成本、提高测试速度、测试可重用性等方面具有很高的价值。但许多人认为使用了测试工具就是实现了测试自动化,这种理解是不对的,至少是片面的。测试工具的使用只能说是自动化测试的一部分,并不简单等于“自动化测试”。自动化测试的真正含义应该是预设测试的输入条件等,通过软件来控制具体测试的步骤,对实际的输出与预期的输出进行自动对比,并可出具测试报告等功能。它不是一种测试工具或测试脚本就可实现,而需要一个完整的解决方案,尤其在具体的大型项目中。
本文并不是提出直接用一个商业测试工具来实现项目的自动化测试,而是提出一个合适的、分步骤的自动化测试的方案建议。
自动化测试是和手工测试相对而言的,自动化测试可以理解为“一切可以由计算机系统自动完成的测试任务都已经由计算机系统或软件工具、程序来承担并自动执行”。
自动化测试,预先设定测试输入,通过执行测试脚本来自动测试软件的功能,并自动出具测试结果报告等。自动化测试,可以借助测试工具(也包括某些策略等)来实施具体的测试,这个过程可以是全自动的,也可以是半自动的。
“自动化测试(Automated Testing)”与“测试自动化(Test Automation)”严格来说是不一样的。
测试自动化更侧重指所有的测试工作都由软件自动完成,包括测试环境搭建、测试脚本生成、测试步骤执行、测试结果分析、测试报告生成等。测试自动化是测试工程师所追求的一种理想境界,但是具体项目中(尤其是大型项目)很难实现的。不过我们可以向这个方向去努力,改进每项工作,不断接近测试自动化。
在具体的项目中实施自动化测试时,应该要从工作效率、产品质量的目的出发,而不是为了自动化而自动化,否则有可能出现投入大于产出,得不偿失。
自动化测试的好处:
快速:自动化测试运行速度比手工测试快的多,可以在短时间内,完成大量的测试用例的回归,节省测试时间。
降低人工成本:自动化测试以机器代替人工操作,可降低手工重复测试的人工成本。
可重用:在不同版本、不同环境下,自动化测试用例可重复使用,提高了投资效益。
可衡量:手工测试多数是模糊测试用例,无法对具体的测试质量进行衡量。自动化测试是鸡西华测试用例,可以明确测试范围、流程和数据,消除人为失误,使测试过程和结果清晰可见,测试质量可衡量。
传统的自动化测试方法使直接使用商用工具,通过录制、回放,实现测试自动化。这种方法,对于业务复杂、版本变更频繁的项目很难试用。
针对业务复杂、版本变更频繁的项目,考虑到单个补丁包的需求、问题多样化,自动化测试的难度较大,而实际效果反而不佳;同时项目的版本发布后问题往往较少发生在单个补丁模块上,而较多的体现在关联模块或系统整体上,自动化测试更多的是考虑在版本测试及回归测试阶段进行实施。
自动化测试实施主要包含以下几个步骤:(1)自动化测试环境
搭建一个完整的稳定的测试环境。
该环境除了包括系统自身的模块功能外,还要能模拟所有的外部接口,必要时,需要开发一系列的接口工具,模拟外部接口的输入、输出,以达到测试覆盖的完整性。
该环境需要稳定可用,包括程序版本、数据等,并进行严格管理。(2)测试案例库的管理
测试质量的高低,很大程度上取决于测试案例的质量及覆盖的范围,考虑到项目较为复杂庞大,功能模块多,业务场景及数据变化多,测试案例库的整理是一项长期而又繁重的工作,除了考虑各个模块的正常功能案例外,还要考虑异常的案例、全流程贯穿的案例等,同时还要将以往曾经出现过的问题场景补充到案例库中,并在后续不断完善测试案例库。测试案例库的管理也为下面的自动化测试提供坚实的基础。
(3)测试脚本和测试数据的管理
可以考虑采用CVS或者SVN工具来管理测试脚本及测试数据。它们能实现高度组织化的目录结构,对测试模块、测试数据的组织结构进行匹配,并做到分级管理,从而形成一个完整的测试脚本及测试用例的管理库。测试脚本的编写要有一套成熟的编写规范,并采用分层设计思想:a.持久层,包含数据资源库、对象资源库及统一的接口;b.逻辑层,包含基本业务逻辑的封装,API的调用;c.脚本层,包含测试步骤的描述等。测试工程师基于这些在编写测试脚本时就可以相对轻松,可以较大的提升测试的效率。
(4)测试脚本执行的管理
在测试脚本及测试数据准备好后,接下去就是要批量的执行对应的测试脚本。要有一个测试脚本执行管理系统对测试脚本的执行进行管理:在特定的时候执行选定的测试脚本;能够动态地跟踪当前测试任务的状态,如进度百分比、成功还是失败;能够实现多个用户提交的管理等。
(5)测试结果的管理。
测试结果的管理主要指测试结果的展示与分析,其输入包含测试执行过程中的日志信息、错误信息及测试结果数据。要能对测试结果进行图表等直观展示,并自动形成测试报告;还可以对大量的测试日志信息进行分析,并做些统计比较等,分析出测试的结果趋势等;对错误日志进行分析,总结测试失败的教训,并不断改进测试过程,较少失败概率。
自动化测试的应用是一个长期的过程,也不仅仅是测试人员的工作,要想能在项目中进行自动化测试的实施,前期需要投入较多的人员及时间,包括案例、数据的整理固化,包括测试接口工具的开发,测试脚本的编写等;自动化测试实施后,也需要一个较长的时间来完善,才能逐渐提高项目的自动化测试程度,达到提高测试效率、提高测试质量、降低测试成本的目的。
[1]Bach, James. 1996. “Test Automation Snake Oil.” Windows Technical Journal , (October):40-44.http://www.satisfice.com/articles/ test_automation_snake_oil.pdf.
[2]Dustin,Elfriede.1999.“Lessons in Test Automation.”Software Testing and Quality Engineering(September):16-22.http://www.stickyminds. com/sitewide.asp?ObjectId=1802&ObjectType=ART&Function=edetail.
[3]Fewster,Mark and Dorothy Graham. 1999. Software Test Automation,Addison-Wesley.
[4]Groder, Chip.“Building Maintainable GUI Tests”in [Fewster 1999].