软件功能自动化测试之我见
 

2009-06-25 作者:唐昌文 来源:e-works

 

1前言

软件测试对软件质量的保证起着致关重要的作用。虽然国内软件企业越来越注重软件测试工作,但仍然存在这样一个不争的现实:除了部分大中型软件企业外,相当多的软件企业的软件测试工作还完全处于手工测试状态,甚至还没有稳定的测试团队。在这样的企业环境下,软件测试工作变成了一项枯燥繁重的"苦差事"。大型软件项目的新增业务需求和变更需求比较多,且各类业务比较复杂,如ERP、CRM、SCM等等。软件开发往往采取模块化设计和增量集成的方式,加上某些系统对流程和权限的控制比较严格,从而导致单据从受理到进入归档状态是一个非常漫长的过程。测试人员准备测试数据比较困难,经常需要花很多时间去创建一张单并执行到预定的状态。此外还有大量的变更问题需要验证,软件测试中的许多BUG还需要进行回归测试。这些工作都存在大量的重复性劳动,有必要引入和运用功能自动化测试方法。

2自动化测试的适用性

自动化测试的切入时机以基本完成软件的程序界面开发、页面控件相对稳定为宜。如果项目还处在界面开发阶段,对页面的配置尚存在较多争议或处于频繁更改的状态时,不宜进行自动化测试。因为这样既达不到保证软件质量、提高测试效率的目标,反而浪费人力物力维护测试脚本。

当界面稳定后,自动化测试即可开始。但最好在以下几种情况下引入自动化测试,以便达到真正的测试效果。

测试时间相对长,且存在大量重复性、机械性手工测试的项目

产品型软件,每发布一个新的版本或打补丁都需要对其他模块执行相同的测试

项目型软件,需求变更频繁,每变更一次,需要对原有的无争议的功能做测试

经常需要更换应用程序部署站点的软件,每更换一次需要对所有功能做验证测试

测试时间相对长,且存在大量需要执行回归测试的软件项目

系统界面稳定,需要对业务流程进行验证测试的软件

采用增量开发持续集成的项目,需要对频繁更新的程序执行验证测试

软件项目采用主流开发平台技术,且不存在物理交互的测试,如刷卡测试

项目工期紧、测试周期短的项目不应采取自动化测试

界面的美观、声音的体验和易用性的测试不应采取自动化测试

3自动化测试的工具集

自动化测试的工具很多,按照用途可以划分为测试管理工具、功能自动化测试工具、性能自动化测试工具、单元测试工具、测试用例设计工具。按照收费方式,又可以分为商业测试工具、开源测试工具、免费测试工具。

当前主流的自动化测试工具有Mercury Interactive Corporation、IBM Rational、Compuware Corporation、Segue Software等公司的系列产品。美科林公司的系列产品简介如下:

4自动化测试的方法集

自动化测试的脚本开发有多种参考方法,简要介绍如下:

从上表可见,关键字驱动脚本的维护成本最低,但编程技能、设计和管理的要求是最高的。在自动化测试时,应根据实际的测试需求和条件选取适当的脚本开发方法。一般都会综合好几种开发方法。

5自动化测试的基本流程

5.1测试基本流程

5.2制定测试计划

在开展自动化测试之前,最好做个测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,下发给用例设计者。

5.3分析测试需求

用例设计者根据测试计划和需求说明书,分析测试需求,设计测试需求树,以便用例设计时,能够覆盖所有的需求点。一般来讲,基于Web的系统测试需要覆盖以下几个方面:

页面链接测试,确保各个链接正常

页面控件测试,确保各个控件可靠

页面功能测试,确保各项操作正常

数据处理测试,确保数据显示准确、处理精确可靠

模块业务逻辑测试,确保各个业务流程畅通

5.4设计测试用例

通过分析测试需求,设计足够多能够覆盖所有需求点的测试用例,形成专门的测试用例文档。并不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例。必要时,要将登录系统的用户、密码、产品、客户等参数信息独立出来形成测试数据,便于脚本开发。

5.5搭建测试环境

自动化测试人员在用例设计工作开展的同时即可着手搭建测试环境。因为自动化测试的脚本编写需要录制页面控件,添加对象。测试环境的搭建,包括被测系统的部署、测试硬件的调用、测试工具的安装和设置、网络环境的布置等等。

5.6编写测试脚本

根据自动化测试用例和问题的难易程度,采取适当的脚本开发方法编写测试脚本。一般先通过录制的方式获取测试所需要的所有页面控件,然后再用结构化语句控制脚本的执行,插入检查点和异常判定反馈语句,将公共普遍的功能独立成共享脚本,必要时对数据进行参数化。当然还可以用其他高级功能编辑脚本。脚本编写好了之后,需要反复执行,不断调试,直到运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。

5.7执行自动测试

测试脚本调试好之后,自动化测试者即可调用这个脚本,验证软件功能,执行回归测试、流程测试等,以替代机械重复性的手工测试工作。自动测试执行过程中,应关注脚本的运行情况,如果遇到错误,不要轻易中止运行。先分析运行出错是不是延时引起的,如果是,只要再试一次即可。如果是系统功能有问题,应及时记录系统问题。根据不同的需要,测试者可以选择批量运行测试脚本。

5.8分析测试结果

美科林公司的功能测试工具(QTP)能很好地与测试管理工具(QC)集成。执行测试后的结果报告会自动传递给QC,从而能够统计分析测试通过与没通过的情况,生成各种样式的报表。

在没有启用测试管理工具的情况下,则需要根据测试工具记录的结果撰写自动化测试分析报告。自动化测试分析报告应根据项目的需要编制,没有必要为每个脚本的执行结果都编写测试分析报告。

5.9记录测试问题

一般来讲,测试脚本中的检查点以及其他异常判断的信息都应写入测试工具的测试报告,测试脚本执行完毕之后,即可查看测试工具的测试报告,然后将没有通过的地方提取出来,描述成BUG,反馈给开发人员。

5.10跟踪测试BUG

测试记录的BUG要记录到测试管理工具中去,以便定期跟踪处理。开发人员修改后,需要对此问题执行回归测试,就是重复执行一次该问题对应的脚本,通过则关闭,否则继续修改。如果问题(BUG)的修改方案与客户达成了一致,但与原来的需求有所偏离,那么回归测试前,还需对脚本进行必要的修改和调试。

6自动化测试的策略论

自动化测试的难点在于实现测试工具、测试管理规范、测试人员之间的平衡。如果实现不了三者的平衡,那么测试工具就发挥不了应有作用,管理规范形同虚设,测试人员在自动化面前无能为力。

测试工具:最好选择支持标准语言的测试工具,如QTP(VB Script),避免去熟悉厂商特定的语言。另外,测试工具必须能够支持新平台、个性化控件。
管理规范:建立科学统一的管理规范,增强脚本的可读性、可重用性、可维护性。

测试人员:加强学习,采用合适的开发方法按照规范编写测试脚本,必要时与开发人员协商解决自动化测试问题。做好配置管理,系统的重构和调整都导致大部分脚本的修改。

自动化测试的目的是弥补手工测试的不足,保证软件质量,提高客户满意度。在为项目做自动化测试前,必须对项目做个评估,评估自动化测试是否确实对项目的进度、覆盖率、风险带来积极的影响,评估自动化测试所依赖的测试环境、人力资源、硬件资源和数据资源能否在短时间内得到满足。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织