摘要:本文通过对当前典型的自动化测试框架的研究,在开源工具的基础上,设计了分层WEB自动化测试框架,实现了界面元素、测试数据的统一管理,支持数据驱动和测试流程自定义控制。
关键词:自动化测试框架;Selenium;TestNG
water resources information management systemautomated testing framework based on Selenium and TestNG
HU-Shaoying, WANG-Mingye, Yao-Chi, Jiang-Xiao
(NARI GROUP CORPORATION/STATE GRID ELECTRIC POWER RESEARCH INSTITUTE,Nanjing 210000,
China)
Abstract:This paper researched the typical automated testing framework, designed a layered WEB automation testing framework based on open source tools. The framework achieved a unified management interface elements and test data, supported data driven and testing process custom control.
Key words:automated testing; selenium; testNG
1引言
软件测试是保障和提升软件质量的重要手段,为了提高测试测试的速度和效率,全方位保障产品的质量和可靠性,越来越多的产品引入了自动化测试的手段和方法。自动化测试可以有效提高测试效率,而设计良好的自动化测试框架是自动化测试工作成功的关键。
本文讨论了当前典型的自动化测试框架,并结合目前广泛使用的开源测试工具Selenium和TestNG框架,设计了松耦合的分层自动化测试框架。
2常见的测试框架
目前,常见的测试框架主要可以分为三种:录制/回放测试框架、数据驱动的自动化测试框架、关键字驱动的自动化测试框架[1]。
2.1录制/回放测试框架
录制/回放测试框架即通过简单录制测试的操作过程,生成脚本,然后进行回放从而完成测试。录制回放测试框架对测试人员的要求较低,但是这种框架自身也存在明显的缺点,即:生成的脚本为硬编码方式,测试脚本与测试数据为紧耦合,若用户UI发生了变化,就必须重新录制脚步;由于录制方式生成的脚本都是非模块化的线性脚本,难以维护。
2.2数据驱动测试框架
数据驱动(data driven)以数据来控制自动化测试的流程和动作,数据独立于测试用例脚本,通过变量传入脚本,不同的数据文件对应不同的测试用例。这种模式实现了数据和脚本的松耦合,脚本的利用率、可维护性大大提高,但其受界面变化的影响较大。
2.3关键字驱动测试框架
关键字驱动(keyword driven)是数据驱动测试的一种改进类型,它用面向对象的思想将测试逻辑按照关键字进行分解,用关键字的形式将测试逻辑封装在数据文件中,测试工具只要能够解释这些关键字即可对其应用自动化。主要关键字包括三类:被操作对象(控件)、操作(事件)和值。关键字驱动不仅实现了脚本与数据分离,也实现了测试逻辑和数据的分离、测试描述与具体实现细节分离。关键字驱动测试让脚本的维护工作量减少,其重用性得到了极大的增强。
3 Selenium
Selenium是一个开源的自动化测试工具,直接运行在浏览器中,就像真正的用户在操作一样。支持多种浏览器,包括IE、Chrome、firefox等;支持多种语言编写测试脚本,如java、phtyon、net等。包含Selenium IDE、Selenium WebDriver、Selenium Server[2]。
4 TestNG
TestNG是一个设计用来满足广泛的测试需求的测试框架[3],涵盖所有类型的测试,包括单元测试、功能测试、端到端测试和集成测试等,具有灵活的运行时配置,通过使用注解(annotation)来传递参数、进行测试方法分组,并控制测试逻辑流程,为大型集成测试提供了极大方便。
5 自动化测试框架设计
结合软件和测试自动化框架开发原则,本文提出了一个分层测试框架(图一)。
本框架包含四层结构:分别是数据层、控制层、模型层和视图层。
数据层主要包括测试数据和页面元素数据。通过对元素对象的单独管理,实现了界面元素和测试业务的分离,降低了测试用例和页面元素之间的耦合度,减少了页面修改对测试脚本的影响。
控制层用于控制测试的逻辑流程,实现了测试业务逻辑和控制流程的分离,降低脚本之间的耦合性,可针对不同的项目进行用例的灵活组合和扩展。
模型层实现测试业务模型,对测试数据进行解析,实现具体的测试功能。
视图层负责测试过程及结果信息的记录和展示,包括测试日志、测试截图和测试报告等,可方便的对测试过程信息进行跟踪和定位,方便直观地查看测试运行结果。
6 自动化测试框架实现
6.1数据层
本测试框架采用YAML来进行测试数据和页面元素数据的管理。
以系统登陆界面为例,系统页面元素配置及用户数据配置如下:
6.2模型层
模型层对测试数据及页面元素数据进行解析,并实现具体的测试功能。
以系统登陆界面为例,模型层对Yaml数据解析的示例如图四、图五,用户登录系统代码实现如图六。
6.3 控制层
控制层用于控制测试的逻辑流程。本测试框架采用TestNG来驱动模型层的执行。TestNG采用配置文件方式来控制测试流程。TestNG有suite/test/test method三个级别的注解,测试执行过程不再写死在代码中,若系统发生了变更或在进行回归测试时,只需修改XML配置文件,即可定制新的测试流程。图七展示了test method注解。
结语
本文基于Selenium和TestNG提出了自动化测试框架,实现了界面元素的统一管理、分层框架设计,支持数据驱动和测试流程自定义控制。一套成熟的自动化测试框架需要在项目实践中不断改进、持续优化,本框架还需进一步开展自定义对象识别、持续构建方面的研究,以求达到提高效率,保证质量的效果。
参考文献
[1]接卉,兰雨晴,骆沛. 一种关键字驱动的自动化测试框架[J]. 计算机应用研究, 2009,26(3),927-929.
[2]吴伶琳. 基于Selenium的软件自动化测试的研究与应用[J]. 计算机与现代化, 2013,210(2),65-68.
[3] 费丹青,李思易.单元测试工具TestNG和JUnit参数化研究[J]. 福建电脑, 2011,11,44-46.
作者简介
胡少英(1979—),女,通信作者,高级工程师,主要研究方向:水电厂自动化。E-mail:hushaoying@sgepri.sgcc.com.cn。
论文作者:胡少英,王铭业,姚驰,姜晓
论文发表刊物:《电力设备》2018年第14期
论文发表时间:2018/9/18
标签:测试论文; 框架论文; 数据论文; 脚本论文; 关键字论文; 元素论文; 流程论文; 《电力设备》2018年第14期论文;