自动化测试解决方案研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动化测试解决方案研究
自动化测试是通过编写脚本来模拟操作,以替代手工执行系统测试。文章对自动化测试平台架构和Selenium自动化测试工具进行研究,使用三种主流语言编写自动化测试脚本,并使用不同浏览器进行测试,结果表明:与传统测试相比,开展自动化测试有缩时间、降差异、提质量、零干预等优势。
标签:自动化测试;Robot Framework;Selenium;Jenkins;持续集成
1 概述
目前主流的测试手段原始,基本上都是通过手工方式进行各类测试,每次软件版本更新时项目组耗费大量时间和精力去重复执行测试用例,甚至不少软件为赶上线进度,不回归测试原有功能即发布上线的情况,软件质量却很难有显著的提升。而软件维护占去了软件生命周期80%的时间,我们迫切的需要找到方法解决日常维护工作中遇到的上述问题,即引入自动化测试技术。
自动化测试是把以人为驱动的测试行为转化为机器执行,使软件测试在预设条件下自动运行,并得出运行结果的过程。通过自动化的测试脚本来模拟系统操作及断言预期结果来替代手工执行测试用例,大大提高测试的效率和质量,将测试人员从重复的用例执行中解放出来。
2 搭建自动化测试平台
2.1 自动化测试平台架构
自动化测试平台由自动化测试框架Robot Framework和Selenium、持续集成工具Jenkins、测试脚本库SVN三部分组成。一个完整的自动化测试作业的过程如下:
Step1.实际运行时测试人员编写自动化的测试脚本提交到SVN,触发Jenkins 从SVN服务器下载最新的测试脚本,同时启动测试框架开始测试脚本的执行。在平台中,自动化测试不但可以通过轮询测试脚本的更新来触发,还可以定时触发、手工觸发或者通过其他自定义行为来触发脚本执行。
Step2. Robot Framework或Selenium通过Webdriver API启动并控制浏览器访问被测系统,并依赖内部的TestLibraries解析和执行测试脚本,生成测试报告。
Step3.测试报告和日志将被回传至Jenkins,最终由Jenkins以邮件的形式发送给测试人员。
2.2 Robot Framework框架优化
由于Robot Framework具有过于繁琐的先天性劣势,我们对Robot Framework 测试框架进行了调整和优化。例如将测试脚本中重复使用的测试步骤进行提取[3]。
以登录功能为例,“Log In System”关键字为登录系统的函数,每个测试脚本都会使用到该函数。如不使用关键字,测试脚本的实现如图3所示。如使用关键字,测试脚本的实现如图4所示。通过提取关键字,可以提升脚本质量,降低代码冗余。
在研究过程中我们共封装了106个脚本事件,共合并代码行数3078行,整个过程节约代码量越1.7万行,大大降低了测试脚本的编写难度,提升编写效率。
2.3 Selenium自动化测试研究
在Robot Framework测试框架研究之后,我们还对Selenium展开了研究。
2.3.1 Selenium自動化测试工具的研究
Selenium是代码驱动类型的Web自动化测试框架,支持多种语言,相对更为灵活,对测试人员的编码能力要求较高,能够更好地满足个性化的测试需求。Selenium WebDriver是Selenium最新研发的,而且是目前使用最多的一款工具。我们对Selenium WebDriver进行了研究,包括实现原理、常用的测试方法和Selenium的使用方法[4]。
2.3.2 三种编程语言的自动化测试脚本
在Selenium的研究基础之上,我们分别使用Java、C#和Python语言编写了测试脚本进行自动化测试POC,以下简单介绍使用不同编程语言搭建Selenium 测试环境并实现脚本的方法。
(1)Selenium+Java。
引入selenium-java-2.53.1.jar、selenium-server-standalone-2.53.0.jar到Java工程后,即可开始写自动化测试脚本,结合java的单元测试框架Junit4的annotation 主键进行断言。
(2)Selenium+C#。
引入WebDriver.Support.dll、ThoughtWorks.Selenium.Core.dll、Selenium.WebDriverBackedSelenium.dll、WebDriver.dll到测试工程,使用.net的单元测试工具Nunit或者MStest进行测试脚本的编写,参照.net单元测试的运行方法可以顺序地运行自动化测试脚本并跟踪测试运行情况。
(3)Selenium+Python。
以Python实现测试脚本,首先需要通过pip安装Selenium,并在项目中引入mon.exceptions、mon.keys,selenium webdriver最后使用unittest就可以进行脚本逻辑和断言的编写了。
最终的测试结果表明,三种语言编写的测试脚本对同一系统进行自动化测试得到了相同的缺陷列表,表明Selenium的自动化测试脚本运行结果只和脚本逻辑有关,和编写的语言无关。这个特性可以方便我们使用熟悉的语言进行脚本编写[5],极大地减少学习成本。
3 自动化测试平台的价值
与其他自动化测试工具相比,我们搭建的自动化测试平台具有如下优点:支持多种编程语言(Java、C#、Python、Ruby、Php、Perl、JavaScript);支持多种浏览器测试(IE、Firefox、Chrome、Safari、Opera);支持数据驱动测试和关键字驱动测试;开源软件,无需采购经费,节约项目成本。
此外,若测试失败,平台可自动获取当前页面快照截图,保存失败现场;如遇突发情况可自动发送报告、截图发至邮箱,及时通知相关人员,便于及时、全面地了解测试结果,做到测试质量的快速跟进和及时反馈,主动发现和作为,改变过去直接发布上线后发现问题的“救火式”修复。
参考文献:
[1]陈江勇,许力,张辉,等.Web自动化测试框架的设计与实现[J].福建师范大学学报(自然科学版),2013(04).
[2]齐涛.Robot Framework自动化测试修炼宝典[M].电子工业出版社,2015.
[3]朱宏峰.基于关键字驱动的Web自动化测试的研究[J].硅谷,2009(24).
[4]赵卓.Selenium自动化测试指南[M].中国邮电出版社,2013.
[5]程佩.基于Selenium WebDriver和Selendroid的自动化测试的研究[D].湖北:华中师范大学,2016.