基于三层脚本构架的自动化测试设计与实现

时间:2022-10-28 09:32:11

基于三层脚本构架的自动化测试设计与实现

摘 要:为了降低测试脚本的维护工作量,提高软件测试自动化的成功率和投资回报率,提出基于重用脚本、对象映射脚本、测试脚本的3层脚本构架自动化测试设计与实现技术,并介绍了三层脚本构架设计和实施步骤。通过实例应用结果表明该方法简单、有效,实现不同软件版本和不同项目间测试脚本的重用,是一种有效提高自动化测试的成功率和投资回报率的方法。

关键词:软件测试; 自动化测试; 三层脚本构架; 测试脚本

中图分类号:TN919-34 文献标识码:A 文章编号:1004-373X(2011)24-0069-04

Design and Achievement of Automation Software Testing Based on

Architecture with Three-layer Testing Script

HUANG Mao-sheng,YANG Chun-hui

(The 5th Electronics Research Institute of MII, Guangzhou 510610, China)

Abstract: To reduce the maintenance workload of testing script, and improve the success rate and return on investment of automation software testing, the method to design and realize the automation software testing based on the architecture with three-layer testing script (reused script, object mapping script and testing script) is brought forward. The design and implementation steps of the architecture with three-layer testing script are introduced. The results of application in several projects show that the method is simple and effective, can achieve the reuse of testing script in the different projects, and increase the return on investment of automation software testing effectively.

Keywords: software testing; automation testing; architecture with three-layer testing script; testing script

0 引 言

随着软件规模越来越大,其步复杂程度越来越高,软件测试的工作量也越来越大,在软件测试工作需要更多时间的同时,项目周期却比以前大大缩短,此外,原型的迭代需要大量的回归测试,手工完成测试几乎不可能,自动化将是获取可接受的测试覆盖率的一种有效途径,也是软件测试发展的必然趋势[1]。

近年自动化测试工具也得到了广泛的应用,已经可以实现大多数情况下的测试用例的自动化执行。国外很多的软件开发机构都尝试过在项目中引入自动化测试,但统计数据表明“80%的自动化测试尝试是失败的”[2],而导致失败的主要原因之一就是自动化测试脚本的维护工作量随着软件版本的更替和需求的改动越来越大,最终导致自动化测试投入回报比骤降而不得不放弃[3]。为解决自动化测试脚本所面临的这一问题,本文提出了一种利用三层结构来组织测试脚本来提高自动化测试的成功率。

1 三层脚本构架设计

三层脚本结构框架图见图1所示,自动化测试脚本分重用脚本、测试脚本和界面对象映射脚本三层,三层脚本分别实现不同的角色和功能[4]。根据三层脚本构架的自动化测试设计与实现框架,软件开发工程师、测试工程师、自动化测试工程师都可以依据软件需求规格说明和设计说明文档同步开展工作,软件开发工程师进行被测应用对象的编码开发,测试工程师设计测试用例和测试数据,自动化测试工程师则进行测试脚本以及重用脚本的设计工作,最后自动化测试工程师对已经完成开发的被测对象应用进行界面抽象,将前期设计的测试脚本与被测试对象关联起来,实施自动化测试执行与结果比较,且三层构架的自动化测试设计技术的实现与具体测试工具的无关,常用的自动化测试工具如Winrunner,Robot等[5],各个角色的分工见表1所示。

1.1 重用脚本

重用脚本作为底层脚本,一般分为操作脚本、输入脚本、验证脚本等,主要实施一些常用的测试操作,如文本内容录入、菜单选中、列表框内容选择、按钮单击、预期输出结果验证等。对常用的软件使用操作,可以针对每个类型控件设计一个通用脚本,控件识别ID和相关联操作(单击、输入、选中等)作为该脚本的输入参数。对测试预期结果验证也可以使用类似的方法设计针对特定控件的验证脚本,不同之处在于其输入参数是验证的属性和验证结果值。由于所有软件的使用和测试都是这些基本操作的组合,因而在不同项目之间,重用脚本是一致的,不同的是测试所使用的测试数据从不同的数据文件内读取[6],因此,这些脚本可以在不同项目中实施共享,实现一次编写,多处共享,减少脚本的数量,从而降低脚本的维护工作量。

1.2 测试脚本

测试脚本实施对特定功能点和业务功能进行测试,是针对特定被测试软件项目的脚本[7],其主要功能包括:从测试数据文件内读取测试数据,调用重用脚本和对象映射脚本将这些数据输入到被测试软件的特定对象中,并验证测试结果与预期输出的一致性,记录Log和Bug现象。它是由重用脚本依据一定的业务流程和特定操作流程组成。

1.3 界面对象映射脚本

界面对象映射脚本实现界面对象逻辑名与被测试软件真实界面对象之间的映射关联[8]。界面对象映射脚本是自动化测试的关键,它可以使测试工程师和自动化测试脚本开发工程师进行工作分工,实现测试开发与软件开发的同步。在软件需求确定后,测试工程师就可以开发测试用例,而自动化工程师根据与测试工程师约定的界面对象的逻辑名编写测试脚本,最后,测试工程师开发的测试用例与自动化工程师开发的测试脚本通过界面对象映射脚本关联成一个有机的自动化测试脚本集。

1.4 测试数据

测试工程师通过与自动化工程师约定的数据识别格式和顺序编写测试数据,测试数据文件内包含了测试输入数据和预期结果[9-10]。

2 三层构架自动化测试的实施步骤

如图1所示范例,使用上述三层构架的脚本组织技术实现测试自动化,进行“客户联系信息”功能测试,其一般实现过程分为:界面抽象和约定、用例设计和脚本设计、数据驱动的实现、界面对象识别录制和映射、测试执行等5个阶段。

2.1 界面抽象和约定

界面抽象和约定的角色工作内容如表2所示。

在进行软件需求分析和设计时,软件设计师、测试工程师和自动化测试工程师需要对界面和抽象进行约定(见表2所示),软件设计师确定程序要输入的数据内容(客户联系信息):客户姓名、公司名称,职位、部门、移动电话、办公电话、传真、电子邮件、邮政编码、通信地址,软件测试人员从设计人员那里得到上述输入数据内容,然后利用界面抽象确定这10个输入框和1个确定按钮、取消按钮的逻辑名分别为:EditBoxName,EditBoxCompany,Edit-BoxJob,EditBoxDepartment,EditBoxMobilePhone,EditBoxOfficePhone,EditBoxFax,EditBoxE-mail,Edit-Box-Postode,EditBoxAddress,PushButtonOk和PushButtonCancel。自动化测试工程师在教本设计时,对上述界面对象输入赋予不同的输入数据存储变量ID。

2.省略,123456,河南路118号,对应的输入对象和确定按钮逻辑名分别为EditBoxName,EditBoxCompany,EditBoxJob,EditBoxDepartment,EditBoxMobilePhone,EditBoxOfficePhone,EditBoxFax,EditBoxE-mail,EditBoxPostode,EditBoxAddress,PushButtonOk和PushButtonCancel,则测试用例可以设计为图2所示。

图2 客户联系信息输入测试用例对应的自动化测试脚本如图3所示。

2.3 数据驱动的实现

从上述的自动化脚本可以看出,脚本虽然使用了以前设计的一些重用脚本进行测试数据的输入,但输入的数据还是和脚本绑定在一起的,也就是脚本和数据是硬编码的,脚本虽然做到了重用但仍欠缺灵活性,为此要使用数据驱动,自动化测试工程师将对应的输入对象和确定按钮分别定义输入数据存储变量ID为EditBoxName,EditBoxCompany,EditBoxJob,EditBoxDepartment,EditBoxMobilePhone,EditBoxOfficePhone,EditBoxFax,EditBoxE-mail,EditBoxPostode,EditBoxAddress,PushButtonOk,并在脚本中将上述的输入内容使用变量来代替,变量的值则从驱动数据文件内读取,则可以做到多个测试用例共用同一个自动化测试脚本,因此上述脚本修改为如图4所示。

2.4 界面对象识别录制和映射

在程序开发完成提交测试时,需要使用测试工具的录制功能对界面对象进行识别,并将测试工具对界面对象的识别标识与上述确定的界面对象逻辑名进行关联,并将关联文件作为测试执行脚本文件的文件头,使用类似C语言的#include命令包含在执行脚本内,即可将前期设计的用例、自动测试脚本、驱动数据和应用程序实物关联成一个可以进行自动化测试的有机整体,形成自动化测试集。

要测试图1的范例,利用Rational Robot直接录制输入一组数据为:Name,Company,Job,Department,MobilePhone的脚本如图5所示。

抽取录制脚本中对程序界面对象的识别标志,使界面对象的逻辑名和录制脚本中对界面对象的识别标志形成对应的映射关系,并将映射关系保存成一个脚本头文件,修改后形成的脚本头文件内容如图6所示,假设该头文件的文件名和保存路径为:c:\globals.sbh,则在自动测试执行脚本前加入命令:'$Include: "c:\globals.sbh",将该对象识别映射文件包含进去即可。

3 实例应用研究

通过在客户管理系统(见图1所示)和学生成绩管理系统的测试实施了基于三层脚本构架的自动化测试技术,2个项目共用了大部分的重用脚本,如WindowsSelect(),Text_input(),Button_Click()等,部分的用例测试脚本和测试驱动数据也实施了重用。在采用了基于三层脚本构架的自动化测试技术后,不但客户管理系统测试节省了原来手工测试的35.6%的测试执行时间,学生成绩管理系统在利用了客户管理系统自动化测试脚本和测试驱动数据,在整个测试周期上缩短了21.3%。

4 结 语

鉴于影响自动化测试成功与否的一个重要的影响因素是脚本的维护,三层脚本结构实施自动化测试使测试脚本与测试数据的彻底分离,实现了多个测试用例共用单个测试脚本,测试用例的增减、测试数据内容的变动无需对测试脚本进行大量的修改,甚至可以实现不同项目间的脚本重用, 大大降低测试脚本的数量以及维护工作量,从而提高自动化测试的成功几率。此外,利用三层结构组织自动化测试脚本,可以在软件需求确定后,在软件设计工程师进行软件设计的同时,测试用例设计工程师和自动化测试脚本设计工程师并行进行测试用例和测试脚本的设计,测试自动化与测试设计分开,利用不同人员的特点、优势,合理安排资源,从而缩短项目周期。

参 考 文 献

[1] FEWSTER Mark.软件测试自动化技术与实例详解[M].北京:电子工业出版社,2001.

[2] 史永莉.软件自动化测试方案的效益分析[J].微计算机信息,2010,37(6):226-227.

[3] 阚红星.改进的软件自动测试投资回报分析[J].计算机工程与应用,2010,34(3):71-73.

[4] 王磊.关键字驱动的自动化测试框架设计与实现[J].电子测试,2010,41(8):91-97.

[5] 胡滨.软件自动测试工具的研究 [J ].现代电子技术,2007,30(18):105-107.

[6] 张少博,罗省贤.自动化测试脚本运行控制方法研究[J].电子测试,2008,38(6):34-38.

[7] 杨德红.软件测试自动化在黑盒测试中的应用[J].现代电子技术,2008,31(18):97-99.

[8] 姚实颖.软件测试自动化中建立可维护脚本的技术[J].计算机工程,2008,31(11):79-81.

[9] 吴立松.基于构件的测试脚本复用技术研究[J].计算机应用研究,2009,40(4):129-132.

[10] 王蕾.基于数据驱动的软件自动化测试框架系统的研究与实现[J].软件导刊,2009,38(6):33-34.

作者简介: 黄茂生 男,1973年出生,高级工程师。主要研究方向为软件测试、软件可靠性。

杨春晖 女,1965年出生,研究员,硕士。主要研究方向为软件质量工程、项目管理。

上一篇:一种基于非采样Contourlet变换的图像融合算法 下一篇:基于Android系统的多媒体播放器解决方案