linux环境下搭建jenkins+jmeter+ant持续集成测试平台

Linux环境下搭建jenkins+jmeter+ant持续集成测试平台

文章目录

  • Linux环境下搭建jenkins+jmeter+ant持续集成测试平台
    • 一、JDK安装
    • 二、安装jmeter
    • 三、安装ant
    • 四、Jmeter+Ant配置
    • 五、Jenkins安装与配置
      • 1.Jenkins安装
      • 2.Jenkins配置
        • 插件安装:
        • 系统设置
        • 全局工具配置
      • 3.项目配置
          • 点击新建任务,选择构建一个自由风格的软件项目
          • 添加构建操作
          • 构建后操作
          • 构建定时任务
        • 定时任务构建规则:
        • 实例说明

一、JDK安装

  1. 下载jdk18(最新版的jenkins后续不支持jdk8,所以下载jdk18):https://www.oracle.com/cn/java/technologies/javase/downloads/#java8,选择对应的linux版本进行下载
    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第1张图片

  2. 下载后的tar包,通过rz/scp或者ftp传输工具(xftp/FileZilla)传输到目标linux服务器,解压后移动到目标目录,我这里是保存到/usr/tools/

    # 解压
    tar -zxvf jdk-18_linux-x64_bin.tar.gz
    # 解压后的文件移动到指定目录
    mv ./jdk-18.0.1.1 /usr/tools
    
  3. 将jdk添加到环境变量

    # 打开环境变量配置文件
    vim /etc/profile
    

    在文件末尾添加java环境变量

    #java env
    JAVA_HOME=/usr/tools/jdk-18.0.1.1(你的jdk目录)
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    PATH=$PATH:$JAVA_HOME/bin:
    export JAVA_HOME
    export CLASSPATH
    export PATH
    
  4. 重新加载环境变量

    source /etc/profile
    
  5. 验证jdk是否安装成功

    java -version
    

linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第2张图片

二、安装jmeter

  1. 下载jmeter包:https://jmeter.apache.org/download_jmeter.cgi,下载后上传到服务器、解压后移动到指定目录,步骤和jdk安装一样,这里我安装到/usr/tools

  2. vim /etc/profile配置环境变量

    在文件末尾添加jmeter环境配置

    #jmeter env
    JMETER_HOME=/usr/tools/apache-jmeter-5.5
    CLASSPATH=.:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/log4j-core-2.11.0.jar
    PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin:$ANT_HOME/bin
    export JMETER_HOME 
    export CLASSPATH
    export PATH
    
  3. 重新加载环境变量

    source /etc/profile
    
  4. 验证是否安装成功

    jmeter -v
    

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第3张图片

三、安装ant

  1. 下载ant,下载地址:https://ant.apache.org/bindownload.cgi

  2. 下载包上传到服务器,解压后移动到指定目录

    tar -zxvf /etc/apache-ant-1.10.9-bin.tar
    mv /etc/apache-ant-1.10.9-bin.tar /usr/tools
    
  3. vim /etc/profile修改环境配置

     export ANT_HOME=/home/test/apache-ant-1.10.9
     export PATH=$PATH:$ANT_HOME/bin
    
  4. 重新加载环境变量

    source /etc/profile
    
  5. 检查是否安装成功,输入ant -v,成功会出现如下信息

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第4张图片

四、Jmeter+Ant配置

  1. 文件配置

    • jmeter需要生成报告,就需要下载jmeter.results.shanhe.me.xsl,下载地址为:New XSL stylesheet for JMeter command line results report | shanhe.me
    • “jmeter.results.shanhe.me.xsl” 文件放到jmeter安装目录的 extras 目录下
    • 将jmeter的extras目录下的ant-jmeter-1.1.1.jar文件,拷贝到Ant安装目录的lib目录下
    • 将jmeter的lib目录下,把serializer-2.7.2.jar、xalan-2.7.2.jar文件复制到ant的lib目录下
  2. 创建ant工作目录以及报告存放目录

    创建工作目录我这里选择的/usr/jmeter_test,在目录下创建script、result和data文件夹,其中script存放jmeter脚本文件和build.xml文件,result下新建jtl和html文件存放jmeter报告,data存放csv配置的数据文件

  3. 本地下载的jmeter插件要同步到linux上的jmeter,否则运行会失败

  4. build文件存放在script目录中,我这里对build.xml做了点个性化配置

    
    <project name="ant-jmeter" default="all">
        <description>
            Jmeter+Ant+Jenkins 
        description>
        
        
        
        <property name="jmeter.home" value="/usr/tools/apache-jmeter-5.5"/>
        
        
        <property name="script.dir" value="/usr/JmeterScript/wgh/Script"/>
        
        
        <property name="jmeter.result.dir" value="/usr/JmeterScript/wgh/result"/>
        
        
        <property name="jmeter.result.title" value="WGH_interface Test Summary Report"/>
    
        
        <property name="jmeter.result.name" value="Test"/>
        
        
        <property name="show-data" value="n"/>
        
        
        <property name="format" value="2.1"/>
            
        <condition property="style_version" value="_21">
            <equals arg1="${format}" arg2="2.1"/>
        condition>
    
        <condition property="funcMode">
            <equals arg1="${show-data}" arg2="y"/>
        condition>
        
        <condition property="funcMode" value="false">
          <not>
            <equals arg1="${show-data}" arg2="y"/>
          not>
        condition>
    
        
        <path id="jmeter.classpath">
            <fileset dir="${jmeter.home}\extras">
              <include name="ant-jmeter*.jar"/>
            fileset>
        path>
    
        
        <taskdef
            name="jmeter"
            classpathref="jmeter.classpath"
            classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
        
        
        <target name="all" depends="run,report"/>
    
        
        <target name="run">
            
            <echo>funcMode = ${funcMode}echo>
            
            <delete file="${jmeter.result.dir}/html/${jmeter.result.name}.html"/>
            
            <delete file="${jmeter.result.dir}/jtl/${jmeter.result.name}.jtl"/>
            
            <jmeter
                jmeterhome="${jmeter.home}"
                jmeterproperties="${jmeter.home}/bin/jmeter.properties"
                
                resultlog="${jmeter.result.dir}/jtl/${jmeter.result.name}.jtl">
    
                
                <testplans dir="${script.dir}" includes="*.jmx" />
                
                
                
                <property name="jmeter.save.saveservice.output_format" value="xml"/>
                
                <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
            jmeter>
        target>
    
        
        <property name="lib.dir" value="${jmeter.home}/lib"/>
    
        
        <path id="xslt.classpath">
            <fileset dir="${lib.dir}" includes="xalan*.jar"/>
            <fileset dir="${lib.dir}" includes="serializer*.jar"/>
        path>
    
        
        <target name="report" depends="xslt-report,copy-images">
            <echo>Report generated at ${report.datestamp}echo>
        target>
    
        
        
        <target name="xslt-report" depends="_message_xalan">
    
        <echo>生成接口自动化测试报告echo>
            <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>tstamp>
            
            
            <xslt
                classpathref="xslt.classpath"
                force="true"    
                in="${jmeter.result.dir}/jtl/${jmeter.result.name}.jtl"
                out="${jmeter.result.dir}/html/${jmeter.result.name}.html"
                style="${jmeter.home}/extras/jmeter-results-detail-report${style_version}.xsl">
    			
                <param name="showData" expression="${show-data}"/>
                <param name="titleReport" expression="${report.title}"/>
                <param name="dateReport" expression="${report.datestamp}"/>
            xslt>
        target>
    
        
        <target name="copy-images" depends="verify-images" unless="samepath">
            
            <copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.dir}/html/expand.png"/>
            <copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.dir}/html/collapse.png"/>
        target>
    
        <target name="verify-images">
            <condition property="samepath">
                    <equals arg1="${jmeter.result.dir}" arg2="${jmeter.home}/extras/" />
            condition>
        target>
        
        
        <condition property="xalan.present">
              <and>
                  
                <available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
                <available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
              and>
        condition>
    
        <target name="_message_xalan" unless="xalan.present">
            <echo>Cannot find all xalan and/or serialiser jarsecho>
            <echo>The XSLT formatting may not work correctly.echo>
            <echo>Check you have xalan and serializer jars in ${lib.dir}echo>
        target>
    <path id="lib_classpath">
    	<fileset dir="${basedir}/">
    		<include name="mail*.jar" />
    		<include name="activation*.jar" />
    	   <include name="commons-email*.jar" />
    		<include name="ant-contrib*.jar" />
    	fileset>
    path>
        
             
    	
    	<echo>jmeter.home = ${jmeter.home}echo>
    	
    project>
    
  5. 修改jmeter.properties文件如下部分,都改成true,让报告输出的内容更详细

    jmeter.save.saveservice.data_type=true
    jmeter.save.saveservice.label=true
    jmeter.save.saveservice.response_code=true
    # response_data is not currently supported for CSV output
    jmeter.save.saveservice.response_data=false
    # Save ResponseData for failed samples
    jmeter.save.saveservice.response_data.on_error=false
    jmeter.save.saveservice.response_message=true
    jmeter.save.saveservice.successful=true
    jmeter.save.saveservice.thread_name=true
    jmeter.save.saveservice.time=true
    jmeter.save.saveservice.subresults=true
    jmeter.save.saveservice.assertions=true
    jmeter.save.saveservice.latency=true
    # Only available with HttpClient4
    jmeter.save.saveservice.connect_time=true
    jmeter.save.saveservice.samplerData=false
    jmeter.save.saveservice.responseHeaders=false
    jmeter.save.saveservice.requestHeaders=false
    jmeter.save.saveservice.encoding=false
    jmeter.save.saveservice.bytes=true
    # Only available with HttpClient4
    jmeter.save.saveservice.sent_bytes=true
    jmeter.save.saveservice.url=true
    jmeter.save.saveservice.filename=false
    jmeter.save.saveservice.hostname=false
    jmeter.save.saveservice.thread_counts=true
    jmeter.save.saveservice.sample_count=false
    jmeter.save.saveservice.idle_time=true
    

    这俩个也ctrl F找出来改下

    jmeter.save.saveservice.output_format=xml (csv改为xml)

    server.rmi.ssl.disable=true (false改为true)

  6. 测试运行

    在以上步骤都完成后,进入script目录,直接运行ant命令

    img

​ 提示BUILD SUCCESSFUL,即运行成功

​ 可下载html查看html形式的测试报告,也可以通过jtl在jmeter里用查看结果树查看

五、Jenkins安装与配置

1.Jenkins安装

jenkins有多种安装方式,我这里使用的是rpm安装

  1. 下载jenkins的rpm包

    下载地址:https://jenkins.io/zh/download/或者https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/

  2. 安装rpm包及配置

    • 安装:

      rpm -ivh jenkins-2.358-1.1.noarch.rpm
      
    • 配置

      vim /etc/sysconfig/jenkins 修改端口号,8080有可能被占用
      JENKINS_PORT=“8090”

      vim /usr/lib/systemd/system/jenkins.service同步修改里面的端口号

      vi /etc/init.d/jenkins 编辑Jenkins配置文件,添加jdk的Java路径

      linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第5张图片

    重新配置的端口可能没有开放,这里需要开放端口

    # 开启防火墙
    systemctl start firewalld
    # 开放指定端口
    firewall-cmd --permanent --zone=public --add-port=8090/tcp
    # 重启防火墙
    Firewalls-cmd --reload
    netstat -ntlp   //查看当前所有tcp端口·
    netstat -ntulp |grep 8090   //查看所有8090端口使用情况·
    
  3. 启动

    # 重新加载配置
    systemctl daemon-reload 
    # 启动
    systemctl start jenkins
    # 查看jenkins状态
    systemctl status jenkins.service 
    

    安装好之后,打开浏览器,输入http://服务器IP:8090/,进入jenkins页面

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第6张图片

2.Jenkins配置

插件安装:

点击系统管理->插件管理,在可选插件依次安装Ant PluginHTML Publisher pluginGroovyEmail Extension

系统设置

  • 点击系统管理->系统设置,进入到这个页面,编辑全局属性

    添加环境变量ANT_HOMEJAVA_HOME

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第7张图片

全局工具配置

找到Ant,添加ant的名字,和ANT_HOME路径

linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第8张图片

3.项目配置

  1. 点击新建任务,选择构建一个自由风格的软件项目

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第9张图片

  2. 添加构建操作
    1. 增加构建操作,选择Execute system Groovy script在在命令行输入

      System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "script-src 'unsafe-inline'")
      

      这个命令是用于处理测试报告样式无法加载问题的

    2. 再增加加构建操作,Invoke Ant选择ant版本,需要运行的节点填写你build.xml文件中的节点,BuildFile就选择脚本目录下面的build.xml的路径

      linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第10张图片

  3. 构建后操作
    • 增加构建后操作,选择Publish HTML reports

    • HTML directory to archive,填写包含存放路径

    • Index page[s],填写报告名字,如果有多个报告,可以填写*.html

      linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第11张图片

  4. 构建定时任务

    点击构建触发器->定时构建

    linux环境下搭建jenkins+jmeter+ant持续集成测试平台_第12张图片

定时任务构建规则:

*     匹配范围内所有值
M-N   匹配M~N范围内所有值
M-N/X 或者 */X   在指定M~N范围内或整个有效区间内每隔X构建一次 
A,B,...,Z        匹配多个值

字段含义

实例说明

每隔5分钟构建一次
H/5 * * * *

每两小时构建一次
H H/2 * * *

每天中午12点定时构建一次
H 12 * * *

每天下午18点定时构建一次
H 18 * * *

在每个小时的前半个小时内的每10分钟
H(0-29)/10 * * * *

每两小时45分钟,从上午9:45开始,每天下午3:45结束
45 9-16/2 * * 1-5

每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午4:38)
H H(9-16)/2 * * 1-5

你可能感兴趣的:(笔记,jenkins,linux,集成测试)