Jmeter+Ant+Jenkins(本地)进行持续集成自动化的初尝试

本文介绍了如何使用JMeter进行接口测试,Ant进行自动化构建和测试报告生成,以及如何通过Jenkins实现持续集成,包括脚本调试、Ant配置文件的编写和Jenkins定时任务的设置,最终生成并发送测试报告。
摘要由CSDN通过智能技术生成

前言

在实际工作中,有时我们需要进行一些持续集成的测试工作或者支持工作,就像开发同学会使用定时任务跑脚本一样。我们测试也是可以的,今天分享一个初尝试的工作案例,大家一起来学习探讨一下。


一、Jmeter+Ant+Jenkins是什么?

很简单的理解,jmeter支持接口测试,Ant 支持自动构建,可以执行我们的jmeter脚本并生成测试报告,并且在jmeter中我们每次只能执行一个测试计划,使用ant后我们可以同时执行多个测试计划,Jenkins支持持续集成,相当于把编译,测试,部署联系在一起的自动化测试工具,并且Jmeter和Ant 都是通过Java开发的,具有良好的跨平台性。同样这些工作的使用前提是进行各种配置。详细的教程网上一搜都有,在此文章中不做过多赘述,若需要后面可以专门出一个配置相关的文章。

二、场景描述:

目前我们的供应商没有一个完整的维护系统及入库流程,只是简单通过飞书多维表格进行填写相关字段后由开发定时任务同步到系统中,进行后续业务使用。供应商数据存储在系统B的数据库中(我们称为B_supplier),而数据使用是在系统A中(A_payee),进行付款操作,付款数据的收款单位=供应商, 所以需要我们每次付款前进行供应商维护:

①.在A_payee中查找出本次所有需要付款的供应商

②.将步骤1查询到的供应商参数在B_supplier中查询是否已经存在,若不存在则需要人工添加。若存在则可正常使用

三、使用步骤

   1.Jmeter中脚本调试

获取供应商的count是为了下个接口的使用,方便我们知道需要循环执行几次。

到此步骤,我们相当于把①.在A_payee中查找出本次所有需要付款的供应商  这一步骤完成了。

接下来同样的我们创建一个foreach控制器来循环执行我们下个接口执行的次数

接下来因为在一个线程中,所以上个接口获取到的供应商数据,可以直接作为参数供下个接口使用,连接供应商所在的库,查看这些供应商是否已经入库

查看结果树显示:系统A中本次需要付款对的有两个供应商,count为2,所以循环执行了2次,每个参数都是不一样的。都一一对应上了。

最后我们在加一个断言,因为没有入库的供应商查到的结果是空,调试查看断言正确后,脚本调试就结束了。

2.Ant配置

我专门在jmeter的安装目录中新建了一个文件夹,用来存放自动执行的测试计划,其中里面还分为多个文件,分别用来存储不同的文件,jtl和html中的文件都是执行后自动生成的,Script是存放我们调试好的jmeter脚本

bulid.xml是ant的配置文件,里面包括各种的路径执行,测试和发送邮件都在这里面设置:注意更换成自己的实际路径:

<?xml version="1.0" encoding="UTF8"?>
<project name="ant-jmeter" default="run" basedir=".">
    <property name="jmeterPath" value="D:\Tools\apache-jmeter-5.5"/>   
    <tstamp><format property="time" pattern="yyyyMMddHHmm" /></tstamp>
    
    <!-- jmeter环境配置 -->
    <property name="jmeter.home" value="D:\Tools\apache-jmeter-5.5"/>
    <!-- jtl测试结果存放路径 -->
    <property name="jmeter.result.jtl.dir" value="D:\Tools\apache-jmeter-5.5\jmeterTestPlan\jtl"/>
    <!-- html测试结果存放路径 -->
    <property name="jmeter.result.html.dir" value="D:\Tools\apache-jmeter-5.5\jmeterTestPlan\html"/>
    <property name="htmlReportNameSummary" value="TestReport"/>
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}${time}.jtl"/>
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}${time}.html"/>
	

		
	<!-- email配置-->
	<property name="mail_host" value="smtp.qq.com"/>
	<property name="mail_port" value="465"/>
	
	<!-- email账户设置-->
	<property name="username" value="246XXX@qq.com"/>
	<property name="password" value="kemufbeqgrbpdiia"/>
	<property name="mail_from" value="2468472488@qq.com"/>
	<!-- email_to配置 接受邮件列表,用,隔开-->
	<property name="mail_to" value="1359XXXXX1@163.com,asd@qq.com"/>
	<property name="mailsubject" value="Jmeter自动化测试报告"/>
	<property name="message" value="今日接口测试任务已经执行完毕,详情可查看附件!!"/>

	
	

    <target name="run">
        <antcall target="test"/>
        <antcall target="report"/>
		<antcall target="mail"/>
    </target>
       
    <!-- 执行接口测试 -->
    <target name="test">
        <echo>执行接口自动化测试用例</echo>
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!-- 声明要运行的脚本“*.jmx”指包含此目录下的所有jmeter脚本-->
            <testplans dir="D:\Tools\apache-jmeter-5.5\jmeterTestPlan\Script" includes="*.jmx" />
             <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
	
    
    <!-- 解决报告中NAN字段显示问题-->
    <path id="xslt.classpath">
        <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar" />
        <fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar" />    
    </path>
    
    <target name="report">
        <echo>生成接口自动化测试报告</echo>
            <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-report_21.xsl"  >
                  <param name="titleReport" expression="接口自动化测试报告${time}"/> 
                  <param name="dateReport" expression="${report.datestamp}"/>
            </xslt>    
            <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->  
            <copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.html.dir}/expand.png" />
            <copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.html.dir}/collapse.png" />
			
            
    </target>
	
<target name="mail">

 <echo>发送测试报告</echo>

    <mail mailhost="${mail_host}" 
	ssl="true"
	user="${username}"
	password="${password}"
	mailport="${mail_port}"
    subject="${mailsubject}"
	messagemimetype="text/html"
	tolist="${mail_to}">
	
<from  address="${mail_from}"/>

<attachments>
<fileset dir="${jmeter.result.html.dir}">
<include  name="${htmlReportNameSummary}${time}.html" />

</fileset>
</attachments>


 <message>
 ${message}
 </message>

 </mail>	

</target>
	

</project>

3.jenkins执行

我是通过tomcat启动Jenkins的,先执行startup.bat,执行后在浏览器输入localhost:8080,出现tomcat就说明执行成功了,直接在后面加上/jenkins就可以了,会直接进入登录页面。

登录jenkins后创建一个项目,然后在构建中添加一下Ant,保存应用。也如果想要定时的执行,,需要加一下构建触发器,选择Build periodically,输入表达式配置定时执行的频率,比如每天的下午一点四十一执行一次,如下

41 13 * * *

4.执行,查看测试报告

执行后,收到邮件提醒,邮件中带有测试报告的附件,测试报告中显示我们断言的提示信息

也可以去存放测试报告的路径下查看:可以看到测试报告的格式为TestReport+时间,便于查看,这个格式也是在build.xml中设置的。


总结

以上就是对于Jmeter+ant+Jenkins使用的思路,前提是我们需要配置好这几个软件的环境。其实对于可以直接访问数据库的人来说,倒是不用这么麻烦,可以直接通过数据库查询, 因为数据维护有时候不仅仅是技术人员在维护,他们并没有访问数据库的权限。刚好也趁着这个机会尝试一下这个框架的使用。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值