【自动化测试】:从零构建接口自动化,jmeter+ant+jenkins环境以及碰到的问题

一、首先开发jmeter测试脚本,我采用的是excel管理测试用例

1.1测试用例如下:

这个表中的字段,可以自己增添删改的,自用的话,可以根据实际项目需求修改,每一条就是一个接口测试用例;

1.2测试脚本的编写:

基本的文件结构如下:

其中:

HTTP请求默认值:可以填写该系统通用的一些参数,例如IP,端口号等等;

循环控制器:循环次数勾选 永远(目的是为了遍历整个csv的测试用例);

CSV Data Set Config:取csv文件中测试用例的参数,如下图:

注意:因为我Delimiter(分隔符)项设置使用逗号分隔,但是在参数parameter列,上传的参数包含逗号,所以Allow quoted data项必须设置为True。

如果(IF)控制器:在if控制器中判断测试优先级是否为“H”,如果是的话,就执行本条测试用例

POST请求:判断请求方法是否是POST还是GET

具体的测试案例:填写URL和parameter。其中的协议,ip,端口,字符编码在HTTP请求默认值中补充完整。

响应断言:用于判断返回结果和期望值expectValue是否一样

二、ANT构建:现在安装ant工具后,配置环境变量,具体的方法简单,验证安装结果

可以在cmd终端中输入 ant -v,出现版本信息则表示安装成功,如下:

2.1在ANT中配置Jmeter:

将jmeter extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到ant安装目录下的lib文件夹中

新建一个build.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="D:\gongju\jmeter\apache-jmeter-3.3" />
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="D:\gongju\jmeter\apache-jmeter-3.3\bin\test\autotest\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="C:\Program Files (x86)\Jenkins\workspace\接口测试" />
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="TestReport" />
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />
    
    <target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </target>
    
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="D:\gongju\jmeter\apache-jmeter-3.3\bin\test\autotest" includes="*.jmx" />

             <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
    
     <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
     </path>
        
    <target name="report">
        <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>    
        <xslt               
              classpathref="xslt.classpath"
              force="true"
              
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" />  
        
        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>    
    
</project>

这个xml文件,有几点需要修改的:

2.2需要修改jmeter.properties:

在jmeter根目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv 为 jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

 将测试脚本,构建build.xml,测试用例数据,放到指定位置:

2.3执行测试:

在cmd终端,进入到build.xml文件所在的目录,输入ant run,执行测试:

看到 BUILD SUCCESSFUL说明构建成功,可以在build.XML的位置看到生成的HTML报告,

2.4我生成的测试报告是经过优化的,在网上下载jmeter.results.shanhe.me.xsl的报告模板,拷贝到jmeter的extras目录中

并且设置了jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true

 

三、jenkins的环境配置

3.1下载安装好jenkins并配置好环境变量后,登录jenkins,配置用户名密码后,配置invoke ant插件、HTML测试报告展示的插件,还有发送邮件的插件

在jenkins中新建一个自由风格的项目

配置构建:invoke ant

配置build文件路径:

配置生成的报告:

3.2配置发送邮件:

首先配置系统设置:jenkins-系统管理-系统设置

 

然后配置发送邮件的设置等

 

设置发送邮件的格式:

 

 content的内容如下:

<!DOCTYPE html>    
<html>    
<head>    
<meta charset="UTF-8">    
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>    
</head>    
    
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"    
    offset="0">    
    <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">    
        <tr>    
            本邮件由系统自动发出,无需回复!<br/>            
            各位同事,大家好,以下为${PROJECT_NAME }项目构建信息</br> 
            <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></td>   
        </tr>    
        <tr>    
            <td><br />    
            <b><font color="#0B610B">构建信息</font></b>    
            <hr size="2" width="100%" align="center" /></td>    
        </tr>    
        <tr>    
            <td>    
                <ul>    
                    <li>项目名称 : ${PROJECT_NAME}</li>    
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>    
                    <li>触发原因: ${CAUSE}</li>    
                    <li>构建状态: ${BUILD_STATUS}</li>    
                    <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>    
                    <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>    
                    <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>    
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>    
                </ul>    

<h4><font color="#0B610B">失败用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>

<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>

            </td>    
        </tr>    
    </table>    
</body>    
</html>

利用系统自带的邮件配置,可以测试是否通畅:

3.3在构建项目中配置:

还可以设置定时构建:

3.4最终的效果:

 

posted @ 2019-04-30 10:03  fy-  阅读(409)  评论(0)    收藏  举报