APP下载

基于selenium和Jenkins的持续集成自动化测试框架的设计和实现

2016-05-30冯小梅孙卫宁曾兰

企业科技与发展 2016年1期
关键词:自动化测试

冯小梅 孙卫宁 曾兰

【摘 要】为了及早发现和解决系统出现的问题,保证系统的质量,通过持续集成和自动化测试相结合的方式,设计并实现了持续集成自动化测试方案,采用持续集成工具Jenkins搭建持续集成平台,使用maven实现自动化构建和selenium实现测试功能,能自动化完成编译、测试、部署和发布过程,无需人工干预,做到集成和测试过程完全自动化,从而提高开发和测试效率。

【关键词】持续集成;自动化测试;selenium;Jenkins;maven

【中图分类号】TP311.52 【文献标识码】A 【文章编号】1674-0688(2016)01-0043-04

由于很多bug在项目的早期就存在,到最后集成的时候才发现问题,然后找原因解决bug,会耗费大量的时间与精力。通过maven和Jenkins实现系统持续集成,每次的集成都是通过自动化的构建来验证,包括自動编译、测试和部署,从而尽快地发现集成错误,让团队能够更快地开发内聚的软件[1]。在持续集成里不再只是编译和连接,创建还应该包括自动化测试,自测试的代码是开发人员提交源码的时候同时提交的,将所有的这些自测试代码整合到一起形成测试集,在所有的最新的源码通过编译和连接之后还必须通过这个测试集的测试才算是成功的创建。而selenium是一套自动化测试框架,可以用于单元测试、回归测试、冒烟测试、集成测试、验收测试等[3],可以完成持续集成中的测试功能。文献[2]采用持续集成的方式,使用Jenkins对相关的自动化集成部署进行了尝试。文献[3]通过Selenium的基本组件及实现测试原理,实现在B/S架构应用系统上进行自动化测试。文献[4]通过selenium的平台无关行和易操作性,研究能够直接在浏览器中运行,多语言多平台支持的低耦合测试框架,该框架主要针对如何降低脚本之间的耦合性,如何灵活地组合不同的脚本,以及如何快速地定位脚本的错误的问题来适应如今web应用开发中需求频繁变动的问题。本文通过持续集成和自动化测试相结合的方式,设计持续集成自动化测试方案,能自动化完成编译、测试、部署和发布过程,做到集成和测试过程完全自动化。

1 相关知识介绍

Jenkins是java开发的持续集成工具,能快速且高频率地自动构建项目的源代码,每次通过自动化的编译、测试、审查、打包和部署,并创建集成报告发送给相关人员。Jenkins与主流的构建工具、版本控制系统及自动化测试框架都能进行很好的支持,而且提供了灵活的插件扩展框架。

Maven是一个项目管理和构建自动化工具,它的服务之一是完成构建,从代码清理、编译、测试、打包和部署。Maven还是依赖管理工具,它提供了中央仓库,帮我们下载、组织和管理组件,通过一组坐标maven就能够找到任何一个Java类库。Maven抽象了构建生命周期,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。如:将maven-compiler-plugin插件的compile目标绑定到default生命周期的compile阶段,完成项目的源代码编译。绝大部分的构建任务提供了已实现的插件,不再需要定义过程,例如测试,只需要遵循maven的约定编写好测试用例,运行构建时测试便会自动运行。default生命周期的内置插件绑定关系及具体任务如图1所示。

Selenium是一套基于WEB应用的测试工具,支持多种浏览器,通过它来执行模仿用户在网页上的操作的测试脚本,Selenium 包含Selenium IDE、Selenium WebDriver、Selenium Remote Control(RC)和Selenium Grid等工具,可以用于单元测试、回归测试、冒烟测试、集成测试、验收测试等。

2 框架设计

持续集成自动化测试系统的目的是通过启用和触发,将提交代码、构建、测试、发送报告整个过程自动化完成,其框架如图2所示。

持续集成系统大致分为以下几个部分。

源代码:源代码是个maven project,使用maven实现自动化构建和对构件进行管理,配置POM文件就能自动从maven中央仓库中下载我们所需要的selenium、junit等jar包,并自动下载selenium、junit所依赖于其他的jar包。

版本库:由版本控制系统SVN进行管理,负责代码的管理和版本的控制,能够自动检测代码的更新以及提取代码提交者的信息。

持续集成工具Jenkins,完成持续构建系统,Jenkins可以监视代码库,探测到代码更新时自动地运行构建和测试,并提供构建报告给开发者。

3 实现

在开发平台Eclipse中配置SVN和maven插件,在Eclipse中建maven项目,项目代码结构如图3所示。

scr/main/java存放主代码,scr/test/java存放测试类,pom.xml文件是整个项目的核心,定义了项目的基本信息,描述项目如何构建和声明项目依赖等,在pom.xml中加入junit、selenium等需要的依赖,maven会自动访问中央仓库下载junit和selenium相关的jar包(如图4所示)。

maven生命周期test阶段是与maven-surefire-plugin的test目标绑定,我们设置maven-surefire-plugin的test目标自动执行测试源代码路径(scr/

test/java)下所有符合一组命名模式的测试类,这组模式为*Test.java,只要将测试类按上述模式命名,maven就能自动运行测试代码,pom.xml配置如图5所示。

使用selenium WebDriver提供的接口编写测试代码,实现打开浏览器,控制浏览器页面上的键盘输入和鼠标点击等操作,再捕获操作结果元素,例如某些属性作为返回结果,通过判断返回结果与预期是否一致来判定是否运行正确,部分代码如图6所示。

之后是在Jenkins中构建,在搭建好的Jenkins平台中配置svn、maven和tomcat插件,例如配置SVN库的用户名、密码和maven的MAVEN_HOME值等,之后新建一个maven类型的job(如图7所示)。

构建结果如图8所示。

也可以配置job,让job每天中的某时刻自动构建,同时将构建好的web.war发布到tomcat中,自动化完成一系列步骤,从svn库中抓取代码,编译、测试到生成报告,再到打包和部署。

4 结语

本文设计和实现了持续集成自动化测试方案,采用持续集成工具Jenkins搭建持续集成平台,使用maven实现自动化构建和selenium实现测试功能,能自动化完成编译、测试、部署和发布过程,无需人工干预,做到集成和测试过程完全自动化,从而提高开发和测试效率。

参 考 文 献

[1]段清蛇,李筠.基于Jenkins的持续集成测试环境插件开发[J].信息技术,2013(10):114-116,120.

[2]高珺.以持续集成方式进行系统自动化部署[J].华东师范大学学报(自然科学版),2015(z1):373-377.

[3]吴伶琳.基于Selenium的软件自动化测试的研究与应用[J].计算机与现代化,2013(2):65-68.

[4]边耐政,张琳.一种基于Selenium的Web自动化测试低耦合框架[J].计算机应用与软件,2014,31(8):13-16,37.

[责任编辑:钟声贤]

猜你喜欢

自动化测试
基于Java反射的APP自动化混合测试框架的研究与实现
Hadoop性能测试自动化研究
数据驱动和关键字驱动的研究与应用
浅谈空调控制器自动化测试
基于多总线结构的电路板测试系统设计研究
航空航天与国防电子新形势下自动化测试系统的应用
基于CTI—TET和SeleniumWebdriver的Web应用自动化测试框架的设计与实现
自动化测试实现研究
天线伺服自动化测试系统的设计与应用
一种航空交换机中CAN总线的自动化测试方法