欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    集成Jenkins和TestNG实现自助式自动化测试平台.docx

    • 资源ID:824275       资源大小:185.43KB        全文页数:13页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    集成Jenkins和TestNG实现自助式自动化测试平台.docx

    集成Jenkins和TestNG实现自助式自动化测试平台背景介绍在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求、缩短的开发周期、频繁的部署上线、复杂的产品架构和团队组织,如何继续保证软件的质量是一个不能Inl避的课题。许多企业级规模的项目常常按照功能模块将庞大的团队分为多个独立的Scrum团队.在这种情况下,每个Scrum团队各自负责其所属功能模块的开发和测试。在Scrum团队中各种角色在不同的时间点有针对性不同的测试需求。其次,Build部署以及测试频率大幅增加。测试类型和阶段也更加细化。而现有的自动化测试,常常由独立的自动化测试团队来执行和维护。其他的Scrum团队成员除非十分了解自动化测试包的细节,否则无法按照自身多类型的测试需求来执行自动化脚本。并且有些项目自动化测试包涵盖了成百上千的测试用例,仅仅因为需要验证某个模块或某几个功能点是否成功而执行整个测试包不仅费时且没有必要。本文针对以上涉及的问题,提出以下的解决方案:利用JenkinS和TeStNG搭建"自助式”自动化测试平台,充分利用了JenkinS成熟的平台及其插件,以及TestNG对选择测试用例的内在支持。该平台具有以下优点:基于成熟的测试工具。Jenkins是目前业内最流行的快速持续集成工具之一,其稳定的性能和丰富的扩展性,使得很多的团队都优先选择它作为项目的主要支持工具。TeStNG作为一款强大的Java测试框架,其在Junit,NUnit的基础上做了广泛的增强,从单元测试、功能测试到集成测试,都能提供良好的支持。这两个工具一方面功能稳定,有大量的实际使用案例和文档支持,另一方面由于其属于主流工具,很多团队已经有过相应的经验,可以大大缩短学习曲线和成本。灵活地定制自动化测试。团队成员通过登陆平台Web界面,按照需求任意选择部署在平台上的自动化测试包,目标测试环境,测试集和测试用例。提交定制化的自动化执行请求,执行结束系统自动发邮件通知。不同人员的请求可以实现并行执行。所有的自动化执行历史记录都可以保存在平台上.可以通过Web的方式随时查阅。Jenkins支持丰富的插件,用户可以按照需求进行选择安装和配置,以实现生成执行状态表格,自动部署/更新自动化测试包等高级功能.方案设计概述任务提交与执行模块:JenkinS支持稳定的任务管理机制,管理员可以通过配置使同一个任务支持并发响应多个请求,彼此之间独立且互不干扰。任务状态与历史纪录查询:对于任务请求的状态信息跟踪,JenkinS默认只支持控制台输出的监控,而且每一次请求记录,JenkinS只提供一个数字ID和时间戳进行标识。对于一个多用户的自助式平台这是远远不够的。我们利用插件"HTMLPublisherPlugin”,保存清求生成的httnl格式的运行报告。这样可以在页面上对任意历史请求的执行纪录和报告进行查询和检索;同时利用"EnvInjectPlugin",BuildUserVarsPlugin"和“BuildNameSetterPlugin”为每一次请求动态生成包含用户姓名等多方面信息的ID以区分,大大方便信息的管理和测试结果数据的追溯。Emai1提醒:JenkinS默认只支持最基本的emai1通知机制。我们使用插件"EmaiextPIUgin”进行扩展,以支持更加强大的通知机制,灵活定制email标题和内容,添加附件,定制收件人名单等。TestNG自动化测试框架:TestNG是一款强大的自动化测试框架,适用于Unit测试,功能测试,集成测试等多类型的自动化测试。其拥有一整套成熟的API和Annotation,支持数据驱动,测试周期和依赖控制,多线程执行等一系列特性。本方案采用TestNG还因为其具有对测试脚本集进行灵活选择的特性。TestNG利用xml文件来组织测试脚本集,在运行的时候,我们可以通过参数指定需要运行的脚本,把JenkinS任务与建立在这一框架之上的自动化测试包进行连接,就可以轻松实现用户在页面上选择测试集。平台的实现与配置本章介绍该平台具体的实现和配置流程,主要包含以下步骤:安装JenkinS及必要的第三方插件建立新用户及配置权限为自动化测试建立和配置新任务1.配置用户输入定制化选项2.配置执行报告保存3.配置emai1提醒Jenkins及相关插件的安装(本文以jenkins-ver.1.524为例)Jenkins是一款成熟强大的开源软件,对大部分主流的操作系统平台(Linux,Windows,MacOS)都提供支持,在其官方网站上可以直接下载到最新的安装包和每一个平台的安装流程文档,新建账号完毕之后,用专门为管理员创建的账号重新登陆,再次进入"ManageJenkins->ConfigureGlobalSecurity",为我们刚才创建的团队成员账号设置权限,同时禁用Anonymous的所有权限,具体方式如图7所示,保存之后即可生效。图7.权限配置为自动化测试建立和配置新任务。当以上工作都准备完毕之后,就可以开始在JenkinS平台上为自动化测试创建新的任务。首先在主界面的左上方点击"NewJob”,选择"Buildafreestyiesoftwareprojectw类型,并且提供一个合适的任务名如"ProjectARESTAPIautomation".图8.新Job创建JeknsAllPeople/ Eild HiStOrV, MaCaaH JenkmsMY VleWSJobHameProjectARESTAPIautomationBuildafree-stylesoftwareprojectThistbecentralfeatureofJenkins.JenkiCSwillbuildyourproject,mbnrjanySCMwithanybuildsystem,andthiscanbeevenusedforsomethingotherthansoftwarebuM.Buildamaven23projectBWkja11ven2/3project.JenkmitakesadvantageOfyourPOMfl<sanddrasticallyreducesth«configuration.Buildmulti-configurationprojectSuitableforprojectsthatneedalargenumberOfdifferentconfigurationssuchastestingonmu)bpleenvironments,piatform*specbuilds,etc.MonitoranexternaljobThistypeOfjoballowsyoutorecordtheexecutionOfaprocessrunoutsideJenkm,evenonaremotemachine.ThissdeignedsothatyoucanuseJenkinsasadashboardofyourexistingautomationsystem.Seetedocumentationformoredea,>s.点击OK之后就可以开始对Job内容进行定义和配置。传统的JenkinS平台应用主耍集中在持续集成(CI)领域,所以在配置页面提供了大量的关于源代码获取,Build创建等传统配置选项。而本文从全新的角度利用JenkinS平台的特性搭建自助式平台,基于篇幅所限,这里只介绍和本方案相关的主要配置项。首先,为了让自动化任务在提交请求的时候都能够接收不同用户的选择,我们需要勾选"Thisbuildisparameterized".在接下来的"AddParameter,下拉菜单中,JenkinS提供多种类型的用户输入,在这里我们选择"ExtendedChoiceParameter"(这是由上文中提到的插件"ExtendedChoiceParameterplugin"新增出的支持类型),同时JenkinS每一个Job支持多个用户输入选项,并且彼此之间可以属于不同类型,管理员可以根据项目需要进行灵活搭配.图9.参数化配置DiscardOldBuildsVThisbuildisparameterizedAddPBra<r*tfDisableBtIf=IBoolcValuCVSSymbolicNam«Pr.mtrChocItheprojectisre-enabled.)ExecuteExtendedChoiceParameterAdvancedProFileParameterUstSubversiontags(andmor)PasswordParamtrRunParameterStringParameterSourceCodeCVST×tParameter在这里为了简单起见,本文新建了两个参数化输入选项以说明问题。其中第一个为单选项,提供用户对目标测试环境的选择,另一个为多选项,提供对具体测试用例的选择。每一个输入项在配置时需要提供唯一标识的名字,不仅会显示在输入页面上,同时用户提交请求时真实的输入将会以同样命名的环境变量的形式传递给具体的执行脚本。其次对于备选项列表的配置,系统提供两种方式。第一种是宜接在"Value”项中提供所有备选项的列表,并以逗号隔开(如图10中对环境选项ENVIRONMENT的配置),另一种是当备选列表比较长的时候我们可以以文件的形式来提供(如图U中对测试用例SELECTEDJESTCASE选项的配置)。备选列表文件的内容格式如清单1所示:清单1.SELECTEDTESTCASE选项的备选列表文件内容TestCase=Testcasel1Testcase2.Testcase3备选选项列表以文件形式提供的好处之一是我们可以自己设计脚本来自动生成和更新这个列表,这样当自动化测试包有更新的时候我们并不需要每次都手动更新这些配置文件。同时文件的更新可以即时生效,这一点十分重要。ExtendedChoiceParameterNameDescriptionParameter TypeValuePr0perty FileProperty KeyDefault valueD*ult Property FileDefault Property KeyElUVIRONMEhnCheese the target test environmentSingle Select envlr ev2QyGe Value口Numiber f Visible Items 旨图IL多选项配置ExtendedChoiceParameterNameSELECTEDeTESTCASEDescriptionParameter TypeValuePrOPertY FileProperty KeyDefault ValueTestCaseChoosethetargettesterseMultiSelectC:ProjectA_RestAPI_AutoJenkinsConfigtextcaselstDefaultPropertyFileDefauftPropertyKeyQuoteValue本例所示参数化配置之后,用户在提交请求时,系统将会显示如下页面以提示用户进行选择,用户可以根据需要自由的选择测试的目标环境和测试用例集合。ProjectProjectARESTAPIautomationThisbuildrequiresparameters:ENVIRONMENTSELEcTED一TESTeASEChoosethetargettestcaseBuU其次,如果该Job需要支持多人提交请求的并行执行(前提是Job执行的内容本身不会因为并行执行产生问题,比如每个请求都需要独占某个仅有的目标资源等),我们可以勾选"Executeconcurrentbuildsifnecessary",同时我们需要考虑Jenkins所在服务器本身的配置和负荷能力.图13.并行配置DisableBuild(Nonewbuildswillbeexecuteduntiltheprojectisre-enabled.)ExecutencurrentbuildsifnecessaryAdvancedProjectOptions同时,每一个来自不同用户的请求在系统中都会产生唯一的ID和时间戳以标示,但是这些信息并不足以让我们了解该请求的具体内容和发起人,可读性是很差的。为了更方便阅读和管理过往的记录,在此可以为每一个请求动态生成包含多种可识别信息的名字.我们利用"EnvlnjectPlugin",wBuildUserVarsPlugin"和"BuildNameSetterPlugin"三个插件以实现为不同请求定制如图U所示的名字。(Jenkins自身提供部分系统环境变量如BUILD.NUMBER,之前为选择目标测试环境而配置的用户输入提供了环境变量ENVIRONMENT,BuildUserVarsPlugin"插件为我们提供了请求发起人的用户名信息BUlLD一USER)图14.请求命名ID的配置½uua2Ckpnqa9mpm9nqh93GtB11ID-WWBEtf-tfE21VbI-KEW*A«».-.EWAItfOWWEHL.-tEWAkA三t.BID-2Etf.B11qMWiu)qb9B三M0Lq三(Op<1lq92GUAJLoIJUJeWAflUSPfCZIIUleauu>uuc9uvpee(0(Pnqqbu>ceeeD11lqUILOUUJCU通过以上的配置,不同用户请求的历史记录将更加易于查询和管理,如图15所示图15.历史记录(trend)JUl 27, 2013 1:12:33 PMJUl 27, 2C13 1:12:12 PMJUl 27, 2013 1:12:05 PMJUl 27, 2013 1:11:41 PMBuildHistoryU#23-RESTAPI-env2-member2。#22-RESTAPI-envl-memberlJ#21-RESTAPI-env2-memberl20-RESTAPI-envl-administrator紧接着就是通过配置“BuildStep”来定义每次请求具体的执行内容,Jenkins提供Windowsbatch,shell,Ant,Maven四种方式调用外部的命令和脚本®16.BuildStepBUildAddbuddstepExecuteWindowsbatchcommandExecuteshellInjectenvironmentvariablesInvokeAntInvoketop-levelMaventargets我们将在buildstep的命令中调用基于TestNG框架的自动化测试包。TestNG是利用一种特殊格式的XML文件来定义测试用例集合的,称之为测试套件文件。假定我们项目的自动化测试包有一个包含三个test的测试套件,如清单2所示,它所包含test的名字(IeStname属性)分别为TeStCaSe1,TeStCaSe2,TeStCaSe3。<suitename="ProjectARestAPIautomationsuite*><testname=*Testcasel*><classes><classname=*asel*><classes><test><testname=*Testcase2*><classes><classname=*ase2*><classes><test><testname=*Testcase3*><classes><classname=*ase3*><classes><test><suite>那么就可以用下面的命令集来定义buildstep,在此处巧妙地利用了TestNG启动命令的两个重要选项:-testname接受以逗号隔开的testname列表,脚本运行时suitexml中只有-testname选项列表里指定了的test才会被执行.而上文当中用户在提交请求时在定制页面上实际选择(多选)的测试集合恰恰会以逗号隔开的方式传递给SELECTED_TESTCASE环境变量,我们正是通过这种方式达到用户自由选择CaSe执行的目的。-d指定TestNG默认report生成的路径。因为不同用户可能存在并行执行的请求,为了防止冲突,每一个请求的report会生成在以环境变量BUlLD_ID命名的目录下,BUILD_ID可以唯一标示不同的请求。而前面的另一个用户输入ENVIRONMENT也可以以环境变量的形式被自动化脚本所读取,根据用户的不同输入做出不同的响应。3】,.«*vdr.nace-rcWrrrrrrrrmmryu-.e,el*c1efw.cr;*=.vr7*CWl*XN>Tr*'*u*3T*w<*i*;,*raE£»<MUOM<F<*«m»*M)-testname只是TeStNG支持定制化选择的其中一个选项,除此之外还支持包括-groups,-methods,-testclass等多种选择方式,用户可以根据项目的需要灵活使用,具体方法可以参照TestNG的官方帮助文档。脚本执行完毕之后,接下来就需要归档生成的测试报告。这里采用了插件"HTMLPublisherPlugin"新增的配置选项。首先在"AddpostbuiIdactionw中选择"PublishHTMLreports",指定每一个请求所生成的HTMI.报告的路径和文件名,勾选"KeeppastHTMLreports",这样就可以在历史记录的快捷菜单中轻松的查询过往请求的执行报告了。图18.报告发布AggregatedownstreamtestresultsArchivetheartifactsBuildotherprojectsgablesPublishHTMLreportsPublishJUnittestresultreportPublishJavadocRecordfingerprintsoffilestotrackusageE-mailNotificationEditableEmailNotificationAddpostbuidaction图19.报告路径和配置lLb4tBD-lDwspLt×>4'(LUtfE21Vbl eowpou tfboyH1M L6C(Ol (O 9LC6bpR! Hiwr JGboywIUqeX gdsaK8b bs( H1W LGtx>UbC(pnqyc>oucFdMabI* Fm<l NotihcatkMiP*O)0t RO0t<At UMProieet ftepl-To LBtContefM TypeDfuR S*b)ctDe*ult ContentMtAChmente-Attach Butd L09 Content TOk«n RfrncPre-send ScnptSend To Recipient LtatT PiQQerS««Mi To Requester4Include Culprit*More Configuration QxQMd) (wnd)DdeteDeleteAdd a 1Eer: select最后,因为该平台是提供给整个团队使用的公共自助式平台,所以每一个请求执行结束后我们都希望请求发起者可以收到执行完成的email通知,这里我们利用,Email-extplugin"新增的配置选项,在"Addpost-buildaction"中选择"EditableEmai1Notification".该插件提供丰富的email配置,可以利用环境变量定制email通知的主题,正文,添加附件等等,在高级选项中可以添加“Trigger".当然为了邮件可以成功的发出,还需要在“ManageJenkins-XJonfigureSystem"中的"JenkinsLocation"中为系统邮件配置一个默认邮箱地址,以及在"E-mailNotification"中配置一个有效的SMTPserver地址。图21.Email通知配置#OEFAULT_RECIPIEMTSCeEEsrx*ku“nail«Mr«*sththuMrctvetA<c>xart>«apr*ct.$eef<uLT一ftBPtrroCo<nw*tf'MrtdE.et*at4ddvChM.buH“attf*l*Y0l*d*rfart¼rojctg3t8xscTe<YourM>ustof|PROJECT_HAMefort(ENV.vr-'Environment*)SU1LD.STATUSYourequestcompleted,Please叵QlP>r>kjcandaccessfob。WVM)U*U.tocheckdetrfr*port:SOUILQ,U>STAflutama<Jfoart/:nuIWldeIika'moA4'd'a*'aB.Smthe4u>a。,&m*<*tuctte*maThbMAractarytdelaS图22.系统发件人Email地址配置JenIdnSLOCatiOnJenkinSURLhttp:/192.168.1.*|:8080/SystemAdmine-mailaddressDoNotRepIy<nobodynowhere>图23.SMTP配置E-mailNotificationSMTPserver192.168.1.*Defaultusere-mailsuffix按照本文所介绍的内容,我们可以搭建起一个白助式的自动化平台,同时不仅仅局限于自动化测试的需耍,项目团队所开发的其他自动化工具包,部署,监测,生成报告等脚本工具都可以按同样的方式部署在该平台上,让所有团队的成员都能够自由的共享使用,也更加便于管理和维护。图24用来表示这种全新的团队协作模式:图24.协作模式结论本文简要介绍了如何使用JenkinS和TestNG搭建一个自助式的自动化测试平台。这个平台可以让项目团队成员更加灵活和有效的使用自动化工具包完成各项工作,提高工作效率,降低管理和维护成本。

    注意事项

    本文(集成Jenkins和TestNG实现自助式自动化测试平台.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开