• Jmeter + Ant + Jenkins 接口/性能测试,持续集成环境搭建


    1. 安装Jmeter、jdk

    Jmeter 3.3版本 :<http://note.youdao.com/noteshare?id=5e3fd287db24d08386207a7de22d2629&sub=D4C59A1418E643BEAD9D349C69398275>

    jdk 1.8版本 :https://pan.baidu.com/s/1nv668Mt

    2. 安装 ant
    下载ant : http://ant.apache.org/
    <https://pan.baidu.com/s/1SJ_EBCE2VVkmQaXTJrLL9w> 网盘地址 1.9.11版本
    ① 配置环境变量:
    ANT_HOME    D:apache-ant-1.9.11
    path             D:apache-ant-1.9.11in
    classpath      D:apache-ant-1.9.11lib
    ② 验证是否配置成功:
    cmd --> ant -versioin

    3. 安装Jenkins 

    ① 配置jdk和tomcat
    ② 下载Jenkins.war包
    ③ 将war包放到webapps下
    ④ 对应jdk1.7/1.8版本的war包 --2.19版本
    网盘地址<https://pan.baidu.com/s/1_jE4_dC2oocV3owz9bx3Zw>
    ⑤ 启动tomcat,访问地址:http://localhost:8080/jenkins/
     
     4. 配置
     将apache-jmeter-3.2extras下面的ant-jmeter-1.1.1的jar包到ant的lib目录,如图所示:

    5. 建立build.xml

    Jmeter 根目录创建一个demo文件夹,将build.xml和脚本放置在里面,并且需要配置下jmeter路径以及报告样式

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <project name="ant-jmeter-test" default="run" basedir=".">
     4     <tstamp>
     5         <format property="time" pattern="yyyyMMddhhmm" />
     6     </tstamp>
     7     <!-- 需要改成自己本地的 Jmeter 目录-->  
     8     <property name="jmeter.home" value="D:apache-jmeter-3.3" />
     9     <!-- jmeter生成jtl格式的结果报告的路径--> 
    10     <property name="jmeter.result.jtl.dir" value="D:apache-jmeter-3.3demo
    eportjtl" />
    11     <!-- jmeter生成html格式的结果报告的路径-->
    12     <property name="jmeter.result.html.dir" value="D:apache-jmeter-3.3demo
    eporthtml" />
    13     <!-- 生成的报告的前缀-->  
    14     <property name="ReportName" value="TestReport" />
    15     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    16     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
    17     
    18     <target name="run">
    19         <antcall target="test" />
    20         <antcall target="report" />
    21     </target>
    22     
    23     <target name="test">
    24         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
    25         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
    26              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
    27             <testplans dir="D:apache-jmeter-3.3demo" includes="*.jmx" />
    28             <property name="jmeter.save.saveservice.output_format" value="xml"/>
    29         </jmeter>
    30     </target>
    31     
    32     <path id="xslt.classpath">
    33         <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
    34         <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
    35     </path> 
    36     
    37     <target name="report">
    38         <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
    39         <xslt 
    40               classpathref="xslt.classpath"
    41               force="true"
    42               in="${jmeter.result.jtlName}"
    43               out="${jmeter.result.htmlName}"
    44               style="${jmeter.home}/extras/jmeter-results-report-loadtest.xsl">
    45               <param name="dateReport" expression="${report.datestamp}"/>
    46         </xslt>
    47                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
    48         <copy todir="${jmeter.result.html.dir}">
    49             <fileset dir="${jmeter.home}/extras">
    50                 <include name="collapse.png" />
    51                 <include name="expand.png" />
    52             </fileset>
    53         </copy>
    54     </target>
    55 </project>
    View Code

    6. 运行jmx文件

    ① 通过fiddler抓包,创建jmx文件脚本,并调试成功,可以查看结果树数据

    ② 然后通过ant运行,查看结果 :cmd进入脚本目录,并执行ant

     

     ③ 执行结果显示:BUILD SUCCESSFUL 证明执行成功,进入report文件夹,查看HTML报告显示,如下:【报告的样式,取决于apache-jmeter-3.3extrasjmeter-results-detail-report_21.xsl 模板】

     

    PS:问题解决

    问题1:  执行ant时报错 “Error reading project file D:apache-jmeter-3.3demouild.xml: 2 字节的 UTF-8序列的字节 2 无效。

    解决办法:build.xml中<?xml version="1.0" encoding="UTF-8"?>,UTF-8修改为UTF8;

    7. 集成Jenkins

    ***安装Jenkins,控制台模式进入到Jenkins.war包所在目录,执行<java -jar Jenkins.war>命令,打开<http://10.10.31.6:8080/login>

    【PS:Jenkins 通过命令行安装完之后,会在<C:UsersXXXX.jenkins>用户目录下生成.jenkins文件夹,里面包含配置文件等】

    ①第二次以后启动Jenkins

    jenkins.war 已放置在tomcatwebapps文件夹下,进入bin目录,双击startup.bat【linux系统用startup.sh】

     

    ② 浏览器输入:http://localhost:8080/jenkins  【默认端口号为8080】,弹出配置页面或登录页面,证明Jenkins启动成功。

     

     ③ 创建一个项目。

    ⑤ 配置ant,增加build路径

     

    ⑥ 点击高级;Targets 输入“run”;Build  File 输入“D:apache-jmeter-3.3demouild.xml”【build.xml配置文件地址】,点击保存。

    ⑦ Jenkins 配置性能测试报告模板

    a, 下载插件Public HTML reports 

     系统管理 ---> 管理插件 ---> 可选插件,输入 HTML Publisher 进行查询 ---> 并点击立即安装 ---> 安装完成

    b, 配置报告

    点击已创建的工程 ---> 进入配置页面 ---> 页面最下方,点击增加构建后操作步骤  ---> 点击Public HTML reports ---> 保存

     

     8. Jenkins 构建任务

    已创建任务中,点击立即构建

    9. 查看构建结果,构建成功

    10. 查看report,工程左侧,点击HTML Report 查看

     

     11. 配置系统管理中邮件发送相关内容

    ① 安装邮件插件 (Extended E-mail Notification) 搜索 Email Extension。

    ② 系统管理 ---> 系统设置 --->Extended E-mail Notification 进行邮件发送的配置

    ③ 系统管理 ---> 系统设置 --->邮件通知 配置【与②配置类似】

     

    ④ 需要注意项

    ⑤ 测试发送邮件配置是否成功,显示“Email was successfully sent”,证明邮件发送配置成功

    12. 设置job中,添加Email插件,给项目相关人员发送邮件通知

    ① 已创建任务 ---> 配置页面 ---> 构建后操作添加<Editable Email Notification> 

    ② Advanced Settings 设置邮件接受人以及接受邮件场景,通过<add triggers> 进行添加。

     Always

    Success

    【PS:接受邮件地址之间用逗号分隔,可在邮箱地址前加“cc”,直接抄送发邮件】

    【问题汇总】

    问题1:BUILD FAILED Error reading project file D:apache-jmeter-3.3demouild.xml: 2 字节的 UTF-8 序列的字节 2 无效。

    解决:build.xml 编码改为UTF8

    问题2:BUILD FAILED D:apache-jmeter-3.3demouild.xml:9: 在注释中找到无效的 XML 字符 (Unicode: 0xd9eb)。

    解决删除注释

    问题3:BUILD FAILED  “java.lang.UnsupportedClassVersionError: org/apache/jmeter/NewDriver : Unsupported major.minor version 52.0 

    D:apache-jmeter-3.3demouild.xml:16: The following error occurred while executing this line:

    D:apache-jmeter-3.3demouild.xml:39: input file D:apache-jmeter-3.3demo eportjtlTestReport201806200210.jtl does not exist

    解决:jdk版本与major.minor 版本对应 不一致造成的
    major  version : 52 对应的是jdk 1.8 

    配置Jenkins JAVA_HOME为jdk 1.8 即可解决

    系统管理 --> 系统设置 --> 全局属性-Environment variables 配置键 为 “JAVA_HOME”,值为“C:Program Files (x86)Javajdk1.8.0_144” --> 保存后重启Jenkins 

    附:其他minor.major 版本的对应关系,如下

     问题4:报告格式显示异常

    由于Jenkins安全默认将以下功能关闭:

    1、javascript
    2、html上的内置插件
    3、内置css或从其它站的css
    4、从其它站的图处
    5、AJAX

     

    解决:

    临时解决方案:

     在Jenkins 系统管理 ---> 脚本命令行中 输入 <System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")>

    ② 需要再次构建,查看新生成的report html,之前已生成的report仍然显示异常【重启Jenkins后需要重新执行此命令

    永久解决方案:

    ① 搜索安装<startup-trigger-plugin>和<Groovy>插件;

    插件管理---> 可选插件 搜索“tartup Trigger”、“Groovy”并安装;

    Startup Trigger:可实现在Jenkins节点(master/slave)启动时触发构建;

    Groovy plugin:可实现直接执行Groovy代码。

    ② 配置方式如下:

    • 新建一个job,该job专门用于Jenkins启动时执行的配置命令;
    • 在build trigger 模块下,勾选 build when job nodes start;
    • Build模块下,Add build step->Execute system Groovy script,在Groovy Script中输入配置命令,System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

    问题5:发送邮件配置完毕后,测试发送邮件时报错“553”

    解决:由于认证错误,校验下服务器地址、端口号、邮件名及密码、系统管理员邮箱地址未设置【注意:必须设置"系统管理员邮件地址"】

    问题6:发送邮件配置完毕后,测试发送邮件时报错“25”

    解决:邮件通知设置中,不要勾选<使用SSL协议>,点击apply后,重新测试发送邮件,问题解决

        

    问题7: 发送邮件配置完毕后,测试发送邮件时报错“535”

    解决:检查邮箱地址及密码是否正确,重新输入邮件通知中邮箱密码,问题得到解决,提示“Email was successfully sent”

  • 相关阅读:
    AGC023C Painting Machines
    LG3834 可持久化线段树1
    又是一天
    ARC103F Distance Sums
    CF1053E Euler tour
    UOJ22 外星人
    洛谷4248 AHOI2013差异 (后缀数组SA+单调栈)
    洛谷2408不同字串个数/SPOJ 694/705 (后缀数组SA)
    CF49E Common ancestor(dp+dp+dp)
    洛谷4051 JSOI2007 字符加密(SA)
  • 原文地址:https://www.cnblogs.com/SH-xuliang/p/9000975.html
Copyright © 2020-2023  润新知