基于Geb的Web自动化测试的原理与实践
2016-10-27胡荆陵陈建明
胡荆陵,孙 涌,陈建明
(苏州大学 计算机科学与技术学院,江苏 苏州 215006)
基于Geb的Web自动化测试的原理与实践
胡荆陵,孙涌,陈建明
(苏州大学 计算机科学与技术学院,江苏 苏州 215006)
随着互联网技术在全球范围内的迅速发展,各种 Web 应用程序已成为系统软件开发的主流,对应的自动化测试理论和工具日趋重要。基于开源的自动化测试工具 Geb,介绍了它的大致原理,给出了一个简单可行的实践步骤。通过准备测试用例,编辑测试脚本,执行测试脚本的步骤,Geb 可调用各子模块,根据脚本的要求,模仿真正的人手动操作浏览器、并得到测试结果。Geb 可以跨浏览器,跨平台运行,进行本地或远程的测试,值得在真实开发场景中推广使用。
自动化测试;测试脚本;Geb
引用格式:胡荆陵,孙涌,陈建明. 基于Geb的Web自动化测试的原理与实践[J].微型机与应用,2016,35(17):23-25.
0 引言
随着我国经济的飞速发展,软件行业发展迅速。基于互联网的 Web 应用程序软件以易开发、易使用、易扩展和易维护等优点被广泛使用。而 Web 应用程序的测试往往还是由测试人员手工进行,测试成本高,效率低。并且由于软件版本的迭代和更新,产生大量回归测试的工作量。因此对 Web 自动化测试的可行性和效率提出了更高的要求。
本文介绍的 Geb 开源自动化测试框架,对 WebDriver 进行封装,可以做到跨浏览器测试,利于 Web 应用程序在不同浏览器品牌和版本下的兼容性测试;使用 Groovy 语言开发测试脚本,使代码相对精简,在提高开发效率的同时,Groovy 运行于 Java 虚拟机中,因此也可以轻松地实现跨平台运行,极大地扩展了 Web 自动化测试的运行环境。
1 测试原理
Geb 汇集 WebDriver 的力量、优雅的 jQuery 内容选择、页面对象模型的鲁棒性和 Groovy 语言的表现力,支持 Spock、JUnit、TestNG 等知名测试框架的集成。Geb 总体框架图如图1所示。
图1 Geb 框架图
所谓自动化测试,其原理很简单,就是最大程度地模拟人工对页面进行的各种点击和输入操作。WebDriver 用于调用浏览器驱动程序,来模拟用户的各种输入和操作,比如:在某个文本框中输入预设的字符串值,或者是点击当前页面上的某个指定的按钮,是 Web 自动化测试的主要实现方式和核心模块[1];jQuery选择器的作用是根据CSS的ID标识符定位 Web 页面上的唯一 HTML 标签元素,或根据 CSS class 样式来定位 Web 页面上的一个或多个 HTML 标签元素,提供了开发者最熟悉的获取页面 HTML 标签的方式[2];页面对象模型的作用是将 jQuery 选择器获得的各种 HTML 标签元素映射抽象为 Geb 能理解的各种对象,为面向对象编码方式奠定基础,并为后面的一系列抽象做支撑,最大程度地降低测试脚本的冗余度;测试库的作用是提供对 Spock、JUnit、TestNG 等知名测试框架的集成支持,测试者可以根据使用习惯,选择熟悉的测试方法;Groovy 脚本的作用是根据测试用例编写所有的测试脚本,因此占据工作量的主要部分。
2 Web应用程序
为说明问题,需要有一个被测试的对象,也就是前面提到的Web应用程序。由于只是对 Geb 做一个初步了解,无需太复杂的场景,本文以一个简单实体类的新增、查询、更新和删除 Web 应用为例,来检验 Geb 自动化测试的效果。
2.1数据库设计
准备一个班级实体类,数据表设计如表1所示。
表1 班级表
2.2实现功能
在这个Web 应用程序中,已提供以下功能:查看班级列表、新增班级、删除班级、查看班级信息。这些功能都是后面需要进行测试的。
具体实现过程和细节已省略,实现后通过浏览器打开并访问即可。需要补充的是,由于 Geb 封装的 WebDriver 使用 FireFox、Chrome 浏览器,实践时请留意安装。图2给出了做好的班级列表页面。
图2 班级列表页面
3 测试脚本
在准备了 Web 应用程序后,接着就需要准备测试用例和测试脚本。
3.1测试用例
测试用例通常与功能用例成正比关系,本文准备以下5个测试用例,详见表2。
3.2编辑脚本
测试人员需要根据已制定的测试用例,编写测试脚本,再由程序自动化测试。由于篇幅有限,本文仅提供其中一个测试用例对应的脚本,代码如下所示。
表2 测试用例表
class Sit01ClassListToAdd extends GebReportingSpec{
def "测试用例01-班级列表到新增班级"() {
given: "班级列表页面"
to ClassListPage
when: "点击新增按钮"
classAddBtn.click()
then: "新增班级页面"
at ClassAddPage
}
}
测试脚本是使用 Groovy 语言编写的,再结合Spock测试库的使用。其具有以下特点:Groovy 是面向对象编程语言,相对 Java 代码更加精简,更加灵活。在同样熟悉的情况下,使用 Groovy 可以显著提高编码效率;Spock 是行为驱动开发的典型代表,得益于敏捷开发提供的新理念,代码风格属于自然语言,可读性极强,可以简化设计人员与测试人员之间的交流成本[3]。
笔者已将全部的测试用例示例代码上传至因特网,读者如有兴趣了解更多,可以通过网络下载和查看,地址是:http://pan.baidu.com/s/1slKMe9v,期间如遇任何疑问,也可以再做进一步交流。
4 测试方式和结果
在执行之前,确保Web 应用程序已启动,并可通过浏览器访问相应的页面。
本文使用的 PC 配置如下:操作系统 Windows 7,处理器 i3 4170 3.7 GHz,内存4 GB DDR3 1 600 MHz,硬盘160 GB,主板P8B75。这个配置是非常普通的,大多数软件公司都可以轻松采购和配置,也就是说大范围推广 Web 自动化测试的硬件成本不高。
测试方式采用的是黑盒测试,分别进行3次手动测试和3次自动测试,对比结果如表3所示。
表3 测试结果对比表
可看到,自动测试可以缩短约 50% 的测试时间,并且无需人为干预。这一特性对于 Web 应用程序的回归测试的贡献尤其重要,测试脚本可以一次开发多次运行。
5 结论
Geb 为 Web 应用程序的自动化测试提供了一种切实可行的方案,实践结果表明,可以极大节约测试成本。也可用于 Web 应用程序的通用自动化处理,有着非常广阔的应用场景。
目前,Geb版本为0.13.1,还在不断发展中,期待后续版本发布后,能为各方面带来提升。
[1] CHANDRAPRABHA C, KUMAR A, SSXENA S. Data driven testing framework using selenium WebDriver [J]. International Journal of Computer Applications, 2015, 118(18):18-23.
[2] 王晶, 温向彬. 利用jQuery操作HTML元素 [J]. 农业网络信息, 2008(4):98-99.
[3] SOEKEN M, WILLE R, DRECHSLER R. Assisted behavior driven development using natural language processing[C]. International Conference on Objects, Models, Components, Patterns. Springer-Verlag, 2012:269-287.
Principle and practice of Web automated testing based on Geb
Hu Jingling, Sun Yong, Chen Jianming
(School of Computer Science &Technology, Soochow University, Suzhou 215006, China)
With the rapid development of Internet technology in the global scale, all kinds of Web applications has become the mainstream of software development, the corresponding theories and tools of automated testing have become increasingly important. Geb is an open source browser automation tool. This paper introduces the general principle of Geb, and givs a simple and feasible practical steps. By preparing the test cases, programing the test script, executing the scripts, Geb can directly call its sub-module. According to the requirement of the testing specification, imitation of human manual operation, and the test results are obtained. Geb is a cross-browser, cross-platform automation tool which supports also local and remote mode, is worth used widely in the real development scenarios.
automated testing; test script; Geb
TP31
ADOI: 10.19358/j.issn.1674- 7720.2016.17.007
2016-05-14)
胡荆陵(1981-),男,硕士研究生,主要研究方向:软件工程、人工智能。
孙涌(1958-),男,博士,副教授,研究生导师,主要研究方向:科学计算可视化、智能信息、软件工程。
陈建明(1960-),男,硕士,副教授,主要研究方向:软件工程、智能信息处理、嵌入式系统的开发与应用。