Web自动化测试框架的研究

时间:2022-08-05 06:45:51

Web自动化测试框架的研究

摘 要 根据Web自动化测试的特性,提出了一种基于数据驱动测试方法的开源Web自动化测试框架,并着重描述了其数据驱动文件的设计。实践表明,该框架测试门槛低,独立性强,效率高等优点。

关键词 Web;自动化测试;测试框架;数据驱动

中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2013)11-0000-00

随着Web应用的日渐庞大和复杂,Web应用的测试越来越得到人们的重视,同时对Web应用的测试的要求也更高。研究表明,一种良好的自动化测试技术可以实现许多手工测试不能完成的工作。同时,自动化测试技术大大减少了产品的周期和软件的测试成本,软件测试的效率和速度也有了显著的提高。所以,软件开发组织测试工作可以采用自动化测试方法,同时结合相应的测试框架进行,这样,既提高了效率,又降低了维护成本。

自动化测试框架是一个由假设、概念以及自动化提供支持的实践的集合。现在,许多企业和个人都认识到Web自动化测试框架的重要作用,并积极投身于其研发中,并不断有新的框架出来。本文中描述了几种常用的自动化测试框架,并在此基础上,研究了一种实用性强的开源Web自动化测试框架。

1 自动化测试的优缺点

自动化测试之所以得到人们重视,是应为其具有其他测试所无法替代的优点,概括一下有以下几点:1)效率高,测试时间大大减少。2)降低了测试成本,减少了开销。3)比手工测试完成的测试范围更广。4)测试可靠性、一致性和可重复性好。5)工作质量提高,资源利用好。6)软件推向市场时间更短。7)测试的复用性高。

尽管自动化测试有诸多优点,但在测试中仍然存在一定的局限性,具体表现如下:1)自动化测试并不适用于每种情况。2)测试的有效性并没有提高。3)自动化测试工具不具灵活性。4)对测试质量的依赖非常大。5)有时对软件开发有一定的制约。6)没有手工测试发现的缺陷多。

通过以上分析可知,让自动化测试完全取代手工测试是行不通的,只有将手工测试与自动化测试很好的结合在一起,才会发挥各自的优势,测试效果才会更好。

2 几种常用自动化测试框架

以下为几种常用的自动化测试框架,它是研究人员为解决脚本维护性问题而设计的。以这些自动化测试框架为基础,结合自己的经验与需求即可以设计出适合自己的自动化测试框架。

2.1 脚本模块化框架

该框架用创建的独立的小脚本代替被测试应用程序的函数和模块,采用分层的方式完成测试。脚本的实现层作为底层,测试用例的组合层作为上层。脚本模块化框架应用了封装和抽象的原则,提高了测试套件的可维护性。为掩盖应用程序的其他部分采取在一个部件前构建一个抽象层的方式完成。该框架易于掌握和精通。但因其底层脚本的实现依赖应用程序的功能,故缺乏灵活性。

2.2 测试库构架框架

测试库构架框架与脚本模块化框架很相似,只是其将应用程序分解后创建的不是脚本,而是过程和函数。被测对象的功能或模块通过创建库文件来描述,测试用例脚本直接调用这些库文件。这样,抽象度更高,测试用例组装更加灵活。

2.3 关键字驱动测试框架

该框架又叫表驱动测试框架,是一种比较理想的自动化测试框架。其测试逻辑的描述采用关键字和数据表实现。这些关键字和数据表可以用来“驱动”测试脚本代码,并独立执行测试工具,是应用程序和自动化测试框架彼此独立。这种测试方式与手工测试很像。

2.4 数据驱动测试框架

数据驱动测试框架是从特定的文件(如Excel文件、OOBC源文件、CSV文件、ADO对象文件等)中,把测试的输入和输出数据独立出来,通过变量传入测试脚本中。这些变量就是测试数据用来传递和验证应用程序的。在整个过程中,测试动作的控制(如数据文件的读取,测试信息和记录测试状态等)写进测试脚本中;测试数据不写进脚本,而只包含在数据文件中。这里,测试脚本只是一个传送数据的机制,或仅是一个“驱动”。

数据驱动测试框架是测试不同的输入、输出采用相同的测试过程,并将测试输入和预期输出以表的形式组织起来,一个测试作为表中一行。测试过程就是从表中逐行读入,即可实现执行每个测试输入和检验预期输出。将数据驱动测试过程以表组织在一起,执行新的测试就可以反复使用这个过程。这种测试需要执行的脚本大大的减少,大量的测试用例仅需少量的脚本就可实现,对由许多不同数据选项的应用非常有效。

3 开源Web自动化测试框架的研究

3.1 设计思路

本框架以开源框架Selenium为基础,进一步设计了此框架的“私有语言”,也就是数据驱动文件的编写规则。数据驱动文件的解析程序的实现就以这些“私有语言”为依据,Web应用的测试执行框架也是由这些“私有语言”和Selenium合并组成。依据这些编写规则,测试人员把数据和对Web应用的操作行为写入数据驱动文件中,测试框架负责对这些数据驱动文件进行解析,将这些解析后的数据传入并调用Selenium API的相应方法,从而使其自动执行。

3.2 框架结构

该框架是基于数据驱动的测试框架,并在其基础上进行了一些改进,开源Web自动化测试框架结构如图1所示。

此框架中,在Server端安装被测试Web应用,可以供远程访问,方便测试。Extended Selenium RC System作为测试执行引擎安装在Client端,它是本框架的核心,数据驱动文件解析系统是采用开源自动化测试工具Selenium开发的。它的主要功能是通过解析数据驱动文件,得到解析后数据及Web操作,而后调用Selenium API的方法,并将数据作为参数传入,这样对远程Server的操作即可实现。当Server的响应到达Client,Client进行各种元素验证,记录日志文件及保存测试结果等操作。测试工程存放在Project文件夹中,主要由若干XML数据驱动测试文件组成,在Project_Config.xml测试工程注册文件中对各种数据驱动文件完成统一的注册,然后又Extended Selenium RC System按注册的向后顺序对各XML文件依次进行解析。

3.3 设计数据驱动文件

相关操作和数据的文本文件构成了数据驱动文件。由自动化测试工具私有语言手动编写这些文件,接着对其变量赋值,并作为测试数据输入。这些变量使解析程序能通过外部的数据来驱动应用程序。软件自动化测试的一个重要环节是数据驱动文件的开发和维护。对测试文本做合理地修改和调整,可以扩大测试覆盖面,增加测试脚本灵活性,并且对被测试对象变量的应对能力大大提高。

本框架中,设计数据驱动文件的“私有语言”是重点,其设计包括以下几个方面。

3.3.1 对Web操作行为的定义

这一部分包括页面中数据的输入和对页面的各种操作。例如:将数据“efg”输入到页面标签中,具体设计如下:

< parameter value=”efg”/>

其中,方法结点用表示,表示向页面标签中输入数据。具体想哪个页面标签输入数据用表示,其中value属性可以是name或id等,表示定位关键字。具体输入哪个数据,用第二个 表示,value属性中放内容值。

3.3.2 验证部分

这部分是完成对页面标签及数据验证操作。同操作部分一样,方法结点与API的方法名称一致。例如:验证上例中页面中是否存在“efg”文本,具体设计如下:

其中与Selenium API中的isTextPresent(“”)方法相对应,表示要验证的内容结点,Value中放具体内容,本例中放的是文本“efg”。本例可以实现对页面中是否存在文本“efg”的验证。

3.3.3 设定测试环境

若Web应用要运行在不同操作系统上,就需要设计不同版本,虽内容差别不大,但若设计不同的测试工程,则工作量会大大增加。这个问题的解决,可以采取在同一数据驱动文件中写入不同版本的数据驱动文件来解决,并只需用测试环境结点加以标准区分,就可以在解析文件过程中通过操作系统类型与测试环境结点属性值得对比,来判断是否进行解析。

除了以上三个方面,还应对结点名称到API方法名的映射及结构等进行合理的设计,从而使数据驱动文件可控性更强,更具灵活性及更便于解释。

4 测试流程

首先将编写完的数据驱动文件添加到测试平台。接着解析数据驱动文件,实现测试脚本到执行引擎的映射。然后向Web服务器发送HTTP请求来模拟真实用户访问Web的场景,获得测试结果信息。最后,对得到的数据进行分析,得出测试报告及生成日志。

5 结束语

本文以数据驱动方法为基础,提出一种开源Web自动化测试框架,重点研究了数据驱动文件的编写规则。本测试框架可以应用不同的工程项目中,具有开发门槛低、独立性强、效率高等特点。特别适用于需要反复测试的回归测试阶段,大大提高了企业的经济效益。

参考文献

[1]赖利峰,刘强.Web应用程序的一种功能自动化测试模型与实现[J].计算机工程,2006,32(17):42-44.

[2]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.

[3]朱菊,王志坚,杨雪. 基于数据驱动的软件自动化测试框架[J].计算机技术与发展,2006,16(5):68-70.

[4]李晓会.Web系统自动化功能测试框架研究与实践[D].北京:北京邮电大学,2011.

[5]樊付星,黄大庆,周未.基于Web的自动化测试框架的研究与实现[J].电子设计工程,2012,20(20):36-38.

[6]黄侨,葛世伦.开源Web自动化测试框架的改进研究[J].科学技术与工程,2012,12(15):3630-3635.

[7]马春燕,朱怡安,陆伟.Web服务自动化测试技术[J].计算机科学,2012,39(2):162-169.

[8]Mike K. Choosing a Test Automation Framework[S].IBMDeveloper.

作者简介

池云(1974-),女,副教授,硕士,研究方向:网络,多媒体。

上一篇:配电网监控系统建设研究 下一篇:优化电源维护管理 保证电源安全