JMeter+Ant+jenkins搭建接口自动化测试环境

news2024/11/18 7:27:33

目录

前言:

       1.ant简介

  2. 构建ant环境

  3.JMeter与Ant集成

  4. 报告优化

  5.jenkins持续集成


前言:

JMeter是一个开源的性能测试工具,可以用于测试Web应用程序或API接口的性能,支持多种通信协议和数据格式。Ant是一个构建工具,可用于自动化构建、测试、打包和部署软件项目。Jenkins是一个支持集成开发环境的自动化构建工具。

1.ant简介

  1.1 什么是ant?

  JMeter: 编写测试脚本生成jmx脚本,运行接口测试。JMeter相当于篮球场,jmx脚本相当于篮球运行场。

  ant: 构建工具,通过调用JMeter来批量运行测试脚本,并生成测试报告。Ant是一个功能强大的打包编译工具。我们使用他的目的是将JTL(xml)格式文件转化为html格式的文件,相当于篮球教练的角色。

  1.2 什么是构建

  概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅于此,但是主要用来干这个。

  2. 构建ant环境

  1)去Apache官网上下载ant最新版,我下载的是apache-ant-1.9.15。

  2)下完之后解压,放到一个目录下面。我把它和jmeter都放在了D:\mysolution下。

  3)配置环境变量,与jmeter类似。   下面这些和你ant存放的路径有关。

  注:网上说需要设置ANT_HOME,CLASSPATH和Path,亲测可以只设置Path其他两项可以不进行设置。

  新建系统变量ANT_HOME,值D:\mysolution\apache-ant-1.9.15

  系统变量CLASSPATH,值后面添加D:\mysolution\apache-ant-1.9.15\lib

  系统变量Path,值后面添加D:\mysolution\apache-ant-1.9.15\bin

  4)进入命令提示符,输入ant,结果如下图所示,"build.xml does not exist "说明ant配置成功。

  3.JMeter与Ant集成

  3.1 JMeter部分

  1)将D:\mysolution\apache-jmeter-5.3\extras文件夹下的ant-jmeter-1.1.1.jar这个jar包复制到D:\mysolution\apache-ant-1.9.15\lib文件夹下。

  2)用记事本打开jmeter\bin\jmeter.properties,将jmeter.save.saveservice.output_format=csv改成jmeter.save.saveservice.output_format=xml,记得去掉前面的“#”。

  3)设置输出内容,修改jmeter.properties文件。

  注:可以尝试理解每行配置的含义,然后再进行你想要的个性化配置。

  4)在JMeter脚本目录创建build.xml文件,请根据实际情况进行配置。

  注:不要去查找build.xml文件,直接创建一个文本文件并把以下内容复制过去。配置时修改注释相当的地方即可。

<?xml version="1.0" encoding="UTF8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="D:\mysolution\apache-jmeter-5.3" />
    <property name="report.title" value="JMeter接口测试报告"/>
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="D:\Jmeter\report\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="D:\Jmeter\report\html" />
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="APITestReport" />
<tstamp> <format property="time" pattern="YYYYMMDD HHmmss" /></tstamp>
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName} ${time}.jtl" />
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName} ${time}.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:\Jmeter\script" 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-detail-report_21.xsl">
              <param name="dateReport" expression="${report.datestamp}"/>
              <param name="titleReport" expression="${report.title}:${report.datestamp}"/>
       </xslt>
                <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以需要手动拷贝 --> 
        <copy todir="${jmeter.result.html.dir}">
            <fileset dir="${jmeter.home}/extras">
                <include name="collapse.png" />
                <include name="expand.png" />
            </fileset>
        </copy>
    </target>
</project>

  3.2 ant部分

  运行ant,进入到build.xml所在目录,运行ant。注也可以使用ant -buildfile build.xml来运行ant。

  运行结束后,如若出现SUCCESS信息,则表示运行成功可去对应目录查看结果。部分运行结果信息如下:

BUILD SUCCESSFUL
Total time: 9 seconds

  3.3 查看JMeter结果

  此报告是\apache-jmeter-5.3\extras这个目录下jmeter-results-detail-report_21.xsl这个样式生成的报告。

  4. 报告优化

  ant默认报告并不好看,出错之后,很难从报告上去定位问题,定位问题在哪里,可进行优化。优化原理:其实由.jtl格式转换为.html格式的报告过程中,style文件起了很关键的作用。

  1)下载style文件:jmeter.results.shanhe.me.xsl

  2)把下载的文件放到jmeter的extras目录下。

  3)修改build.xml文件如下部分,修改xsl样式文件的文件名即可。

  4)运行结果:

  5.jenkins持续集成

  Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

  简而言之:Jenkins是实现持续集成平台脚本的定时运行、邮件发送、测试报告展示等。

  5.1 jenkins的安装配置

  jenkins下载地址:https://jenkins.io/zh/download/,下载windows版并安装jenkins,安装成功后会自动打开: http://localhost:8080 页面,等待进入jenkins的配置页面。

  解锁jenkins完成配置。

  关于插件的选择,还是老套路,省事用安装推荐的插件,高手自定义。

  创建管理员用户。

  实例配置。

  5.2 jenkins的使用

  5.2.1 新建一个job

  5.2.2  jenkin 配置中增加Ant插件

  添加待构建的文件路径,即Ant执行的build.xml文件路径。

  5.2.3 立即构建

  5.2.4 构建触发器

  日程说明:其中有5个参数

  ·第一个是代表分钟 H 表示随机

  ·第二个是代表小时 9-15/4 9点到下午三点期间的每隔4个小时

  ·第三个是代表天 * 任意一天

  ·第四个是代表月份 1-11 表示1到11月份

  ·第五个是代表星期 1-5 表示工作日

  ·H(9-18) 9点到18点 中随机的一个点,没有用到 H 随机的话,不要加括号

  常见的日程配置表:

  * * * * * 表示任何一个时间段,同一个时间都可能会触发执行。不建议使用。

  H/30 * * * * 表示每天每隔 30分钟构建一次。

  H 4-19/3 * * * 表示,一天的凌晨点到下午7点,每隔3个小时构建一次。

  * * 3-5 * * 表示,每个月的3号,4号,5号 都会被构建,具体时间未知。

  * * * * 1-5 表示,工作日时会构建,具体时间未知。

  H/30 8-19/3 1-28 1-11 1-5 表示 在1月到11月中的1号-28号,每个工作日,早晨的8点到下午7点每隔3.5个小时会触发构建。

  5.3 jenkins其他配置

  5.3.1 丢弃旧的配置

  服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。当然下方的"保持构建天数" 和 保持构建的最大个数是可以自定义的,需要根据实际情况确定一个合理的值。

  5.3.2 邮件通知设置

  1)回到最外面的主界面。找到manage jenkins,找到系统设置。

  2)找到插件安装这里面的邮件插件。

  3)查看已安装的邮箱插件。

  4)返回到配置界面,然后点击系统配置,找到下图的地方:填写两个东西:

  第一个url:用默认这个url 尝试一下能访问到jenkins就可以了;第二个参数:邮箱发件箱的账户。

  5)进入到最下面的邮箱配置,点开高级,然后按照要求填写内容。。请注意密码这个东西:是QQ邮箱的此处授权码,另外用户名不要跟后缀。然后勾选测试,成功后会收到邮件。

  SMTP基础设置,见下图:

  Extended E-mail Notification:

  这是使用第三方插件的邮箱功能,方法跟上面这个一样。

  5.4 构建结果说明

  5.4.1 构建状态

  Successful蓝色:构建完成,并且被认为是稳定的。

  Unstable黄色:构建完成,但被认为是不稳定的。

  Failed红色:构建失败。

  Disable灰色:构建已禁用。

  5.4.2 构建稳定性

  构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。

  5.4.3 构建历史界面

  console output: 输出构建的日志信息。

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步! 

留【自动化测试】即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ui自动化 SeleniumBase

目录 前言&#xff1a; git克隆 校验邮件的案例: 注意事项: 前言&#xff1a; SeleniumBase是一个基于Selenium WebDriver的Python框架&#xff0c;用于UI自动化测试。它具有简单易用的API接口&#xff0c;可轻松编写测试脚本以及管理测试用例。SeleniumBase不仅提供了Web…

【LeetCode】HOT 100(10)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

5月总共面试31次,我人麻了....

3年测试经验原来什么都不是&#xff0c;只是给你的简历上画了一笔&#xff0c;一直觉得经验多&#xff0c;无论在哪都能找到满意的工作&#xff0c;但是现实却是给我打了一个大巴掌&#xff01;事后也不会给糖的那种... 先说一下自己的个人情况&#xff0c;普通二本计算机专业…

华为OD机试真题 JavaScript 实现【寻找密码】【2023Q1 100分】,附详细解题思路

一、题目描述 小王在进行游戏大闯关&#xff0c;有一个关卡需要输入一个密码才能通过&#xff0c;密码获得的条件如下&#xff1a; 在一个密码本中&#xff0c;每一页都有一个由 26 个小写字母组成的若干位密码&#xff0c;从它的末尾开始依次去掉一位得到的新密码也在密码本…

母线保护(4)

4、母联死区保护 在各种母差保护中&#xff0c;存在一个共同的问题&#xff0c;就是死区问题。 如图&#xff0c;在母联合位时&#xff0c;当故障发生在母联断路器与母联CT之间时&#xff0c;故障电流由II母流向I母&#xff0c;I母小差有差流&#xff0c;判断为I母故障&#x…

yum安装nginx

Nginx介绍 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#xff0c;并在一个BSD-like 协议下发行。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上Nginx的并发能力确实在同类型的网页服务器中表现较好&…

电脑提示由于找不到vcomp140.dll无法继续执行代码怎么修复呢?这个三个方法可以帮到你

在我们打开游戏或者获取软件的时候&#xff0c;点击电脑提示由于找不到vcomp140.dll无法继续执行代码需要怎么办呢&#xff1f;vcomp140.dll是什么呢&#xff1f;相信困扰着不少小伙伴&#xff0c;vcomp140.dll是Microsoft Visual C Redistributable中的一个动态链接库文件&…

牛客网Java面试题及答案整理(2023年秋招最新版,持续更新)

学习如逆水行舟&#xff0c;尤其是 IT 行业有着日新月异的节奏&#xff0c;我们更要抓紧每一次可以学习和进步的机会。所以&#xff0c;没有撤退可言。 即使是面试跳槽&#xff0c;那也是一个学习的过程。只有全面的复习&#xff0c;才能让我们更好的充实自己&#xff0c;武装…

基于Java高校专业信息管理系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

Spring Security--会话管理

就像登录qq一样&#xff0c;一个手机登录会将另外一个手机挤下线&#xff0c;这个就叫会话管理。 这个东西非常简单&#xff0c;在默认情况下可以登录n多次&#xff0c;一旦开启&#xff0c;就不允许登录多个。 什么是一个会话。 我们简单理解就是一个浏览器的同一个用户算一…

Redux 异步解决方案2. Redux-Saga中间件

利用Generator特性实现异步 因为Generator。结合yield yield操作符会获取右边表达示的值返回 可以用于异步变同步操作 中间件的特性: 以前的 action -> reducers -> store 现在的 action -> middleware -> reducers -> store 注意&#xff1a; reducer的type…

群晖云同步失败?一直卡在连接中怎么办?

群晖云同步是群晖NAS的一款基于网络的数据备份和同步服务&#xff0c;它可以帮助我们在不同设备之间轻松地同步文件、照片、文档等&#xff0c;并且支持自动化执行同步备份任务&#xff0c;让您的数据存储更加安全。 虽然群晖云同步能给我们带来很多便利&#xff0c;但是在…

yolov5 6.1 关于 tensorrt 加速的使用以及问题说明

文章目录 1. 参考连接2. 使用说明2.1 导出加速模型2.1 使用加速模型2.2 加速参数对比 3. 问题说明3.1 在 Tensorrt 8.4.1.5 版本上使用 export.py 导出失败的问题3.2 把模型文件由 best.pt 更换成加速后的 best.engine 后&#xff0c;执行推理时标注的类别名不正确的问题3.3 导…

面向教育机构的IT管理

多年来&#xff0c;高等教育见证了一些惊人的技术创新&#xff0c;包括远程学习、VR 和 AR 实验室、物联网等。随着技术席卷高等教育领域&#xff0c;机构有望高度依赖其技术基础设施&#xff0c;将学生的想法变为现实&#xff0c;以支持学习渠道并促进研究和合作。 另一方面&…

JMeter发送表单数据,响应体报错:参数校验异常

请求方式是post&#xff0c;请求参数就是表单形式。这个时候我们可以把请求参数写到参数里&#xff0c;也可以选择写到消息体数据里。 1、如果是写到参数中&#xff0c;那Content-Type默认就是表单格式&#xff0c;不需要格外添加HTTP信息头管理器。 2、如果是写到消息体数据中…

语音消息实现(聊天向)

语音消息实现记录下&#xff1a; SpringBootVue3客服项目&#xff0c;网页录制发送语音消息 Vue中使用js-audio-recorder插件实现录音功能并实现上传Blob数据到SpringBoot后台接口 2fps/recorder github地址 Recorder的API 语音测试地址 [Web] 4分钟搭建一个简洁好看的 We…

如何购买北京法拍房

1、对于有限购的法拍房来说&#xff0c;在没有购房者资格的前提下&#xff0c;请不要跟拍&#xff0c;就算是房子拍下来了&#xff0c;没办法过户的话&#xff0c;房子还不能算是你的&#xff0c;弃权则被罚保证金。2、对于没有限购的法拍房来说&#xff0c;在没有购房资格的前…

动态规划dp —— 24.最长湍流子数组

解释&#xff1a;数组中子数组中相邻数值一升一降称为湍流子数组 示例1&#xff1a; 1.状态表示 是什么&#xff1f;dp表中里的值所表示的含义就是状态表示 因为i位置是有两种情况&#xff1a;1.上升趋势 2.下降趋势 所以需要定义两种状态表示来把两种情况分开 f[i]表示&am…

抖音自动生成视频、字幕、自动上传发布

dy-auto ✨ 抖音自动生成视频、字幕、自动上传发布✨ 项目地址 点击进入https://github.com/Richard0403/dy-auto 录屏效果 https://github.com/Richard0403/dy-auto/assets/14147304/21400a42-9296-4956-9517-ced8d8bf4737 技术架构 名称功能ffmpeg处理视频的生成&…

Vue中如何进行Markdown文档展示与解析?

Vue中如何进行Markdown文档展示与解析&#xff1f; Markdown是一种轻量级的标记语言&#xff0c;可以在文本中使用简单的标记来表示格式和排版。在Vue项目中&#xff0c;Markdown文档的使用越来越普遍&#xff0c;因此在Vue中如何进行Markdown文档展示与解析也成为了一个热门话…