《集成Jenkins和TestNG实现自助式自动化测试平台.docx》由会员分享,可在线阅读,更多相关《集成Jenkins和TestNG实现自助式自动化测试平台.docx(13页珍藏版)》请在优知文库上搜索。
1、集成Jenkins和TestNG实现自助式自动化测试平台背景介绍在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求、缩短的开发周期、频繁的部署上线、复杂的产品架构和团队组织,如何继续保证软件的质量是一个不能Inl避的课题。许多企业级规模的项目常常按照功能模块将庞大的团队分为多个独立的Scrum团队.在这种情况下,每个Scrum团队各自负责其所属功能模块的开发和测试。在Scrum团队中各种角色在不同的时间点有针对性不同的测试需求。其次,Build部署以及测试频率大幅增加。测试类型和阶段也更加细化。而现有的自动化测试,常常由独立的自动化测试团队
2、来执行和维护。其他的Scrum团队成员除非十分了解自动化测试包的细节,否则无法按照自身多类型的测试需求来执行自动化脚本。并且有些项目自动化测试包涵盖了成百上千的测试用例,仅仅因为需要验证某个模块或某几个功能点是否成功而执行整个测试包不仅费时且没有必要。本文针对以上涉及的问题,提出以下的解决方案:利用JenkinS和TeStNG搭建自助式”自动化测试平台,充分利用了JenkinS成熟的平台及其插件,以及TestNG对选择测试用例的内在支持。该平台具有以下优点:基于成熟的测试工具。Jenkins是目前业内最流行的快速持续集成工具之一,其稳定的性能和丰富的扩展性,使得很多的团队都优先选择它作为项目的
3、主要支持工具。TeStNG作为一款强大的Java测试框架,其在Junit,NUnit的基础上做了广泛的增强,从单元测试、功能测试到集成测试,都能提供良好的支持。这两个工具一方面功能稳定,有大量的实际使用案例和文档支持,另一方面由于其属于主流工具,很多团队已经有过相应的经验,可以大大缩短学习曲线和成本。灵活地定制自动化测试。团队成员通过登陆平台Web界面,按照需求任意选择部署在平台上的自动化测试包,目标测试环境,测试集和测试用例。提交定制化的自动化执行请求,执行结束系统自动发邮件通知。不同人员的请求可以实现并行执行。所有的自动化执行历史记录都可以保存在平台上.可以通过Web的方式随时查阅。Jen
4、kins支持丰富的插件,用户可以按照需求进行选择安装和配置,以实现生成执行状态表格,自动部署/更新自动化测试包等高级功能.方案设计概述任务提交与执行模块:JenkinS支持稳定的任务管理机制,管理员可以通过配置使同一个任务支持并发响应多个请求,彼此之间独立且互不干扰。任务状态与历史纪录查询:对于任务请求的状态信息跟踪,JenkinS默认只支持控制台输出的监控,而且每一次请求记录,JenkinS只提供一个数字ID和时间戳进行标识。对于一个多用户的自助式平台这是远远不够的。我们利用插件HTMLPublisherPlugin”,保存清求生成的httnl格式的运行报告。这样可以在页面上对任意历史请求的
5、执行纪录和报告进行查询和检索;同时利用EnvInjectPlugin,BuildUserVarsPlugin和“BuildNameSetterPlugin”为每一次请求动态生成包含用户姓名等多方面信息的ID以区分,大大方便信息的管理和测试结果数据的追溯。Emai1提醒:JenkinS默认只支持最基本的emai1通知机制。我们使用插件EmaiextPIUgin”进行扩展,以支持更加强大的通知机制,灵活定制email标题和内容,添加附件,定制收件人名单等。TestNG自动化测试框架:TestNG是一款强大的自动化测试框架,适用于Unit测试,功能测试,集成测试等多类型的自动化测试。其拥有一整套成熟
6、的API和Annotation,支持数据驱动,测试周期和依赖控制,多线程执行等一系列特性。本方案采用TestNG还因为其具有对测试脚本集进行灵活选择的特性。TestNG利用xml文件来组织测试脚本集,在运行的时候,我们可以通过参数指定需要运行的脚本,把JenkinS任务与建立在这一框架之上的自动化测试包进行连接,就可以轻松实现用户在页面上选择测试集。平台的实现与配置本章介绍该平台具体的实现和配置流程,主要包含以下步骤:安装JenkinS及必要的第三方插件建立新用户及配置权限为自动化测试建立和配置新任务1.配置用户输入定制化选项2.配置执行报告保存3.配置emai1提醒Jenkins及相关插件的
7、安装(本文以jenkins-ver.1.524为例)Jenkins是一款成熟强大的开源软件,对大部分主流的操作系统平台(Linux,Windows,MacOS)都提供支持,在其官方网站上可以直接下载到最新的安装包和每一个平台的安装流程文档,新建账号完毕之后,用专门为管理员创建的账号重新登陆,再次进入ManageJenkins-ConfigureGlobalSecurity,为我们刚才创建的团队成员账号设置权限,同时禁用Anonymous的所有权限,具体方式如图7所示,保存之后即可生效。图7.权限配置为自动化测试建立和配置新任务。当以上工作都准备完毕之后,就可以开始在JenkinS平台上为自动化
8、测试创建新的任务。首先在主界面的左上方点击NewJob”,选择Buildafreestyiesoftwareprojectw类型,并且提供一个合适的任务名如ProjectARESTAPIautomation.图8.新Job创建JeknsAllPeople/ Eild HiStOrV, MaCaaH JenkmsMY VleWSJobHameProjectARESTAPIautomationBuildafree-stylesoftwareprojectThistbecentralfeatureofJenkins.JenkiCSwillbuildyourproject,mbnrjanySCMwit
9、hanybuildsystem,andthiscanbeevenusedforsomethingotherthansoftwarebuM.Buildamaven23projectBWkja11ven2/3project.JenkmitakesadvantageOfyourPOMfls.点击OK之后就可以开始对Job内容进行定义和配置。传统的JenkinS平台应用主耍集中在持续集成(CI)领域,所以在配置页面提供了大量的关于源代码获取,Build创建等传统配置选项。而本文从全新的角度利用JenkinS平台的特性搭建自助式平台,基于篇幅所限,这里只介绍和本方案相关的主要配置项。首先,为了让自动化任
10、务在提交请求的时候都能够接收不同用户的选择,我们需要勾选Thisbuildisparameterized.在接下来的AddParameter,下拉菜单中,JenkinS提供多种类型的用户输入,在这里我们选择ExtendedChoiceParameter(这是由上文中提到的插件ExtendedChoiceParameterplugin新增出的支持类型),同时JenkinS每一个Job支持多个用户输入选项,并且彼此之间可以属于不同类型,管理员可以根据项目需要进行灵活搭配.图9.参数化配置DiscardOldBuildsVThisbuildisparameterizedAddPBrar*tfDisa
11、bleBtIf=IBoolcValuCVSSymbolicNamPr.mtrChocItheprojectisre-enabled.)ExecuteExtendedChoiceParameterAdvancedProFileParameterUstSubversiontags(andmor)PasswordParamtrRunParameterStringParameterSourceCodeCVSTtParameter在这里为了简单起见,本文新建了两个参数化输入选项以说明问题。其中第一个为单选项,提供用户对目标测试环境的选择,另一个为多选项,提供对具体测试用例的选择。每一个输入项在配置时需要
12、提供唯一标识的名字,不仅会显示在输入页面上,同时用户提交请求时真实的输入将会以同样命名的环境变量的形式传递给具体的执行脚本。其次对于备选项列表的配置,系统提供两种方式。第一种是宜接在Value”项中提供所有备选项的列表,并以逗号隔开(如图10中对环境选项ENVIRONMENT的配置),另一种是当备选列表比较长的时候我们可以以文件的形式来提供(如图U中对测试用例SELECTEDJESTCASE选项的配置)。备选列表文件的内容格式如清单1所示:清单1.SELECTEDTESTCASE选项的备选列表文件内容TestCase=Testcasel1Testcase2.Testcase3备选选项列表以文件
13、形式提供的好处之一是我们可以自己设计脚本来自动生成和更新这个列表,这样当自动化测试包有更新的时候我们并不需要每次都手动更新这些配置文件。同时文件的更新可以即时生效,这一点十分重要。ExtendedChoiceParameterNameDescriptionParameter TypeValuePr0perty FileProperty KeyDefault valueD*ult Property FileDefault Property KeyElUVIRONMEhnCheese the target test environmentSingle Select envlr ev2QyGe Va
14、lue口Numiber f Visible Items 旨图IL多选项配置ExtendedChoiceParameterNameSELECTEDeTESTCASEDescriptionParameter TypeValuePrOPertY FileProperty KeyDefault ValueTestCaseChoosethetargettesterseMultiSelectC:ProjectA_RestAPI_AutoJenkinsConfigtextcaselstDefaultPropertyFileDefauftPropertyKeyQuoteValue本例所示参数化配置之后,用户在提交请求时,系统将会显示如下页面以提示用户进行选择,用户可以根据需要自由的选择测试的目标环境和测试用例集合。