JMeter性能测试实战

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

jmeter+ant接口自动化测试与性能测试实战

首先需要安装和配置jmeter和ant 环境

jmeter与ant整合

在ant的lib目录下把ant-jmeter-1.1.1.jar 复制到jmeter的extras目录下。

邮件的插件activation.jar ,commons-email-1.2.jar ,mail.jar 放到jmeter的lib目录下

测试脚本

 在jmeter文件下边新建一个tests文件夹 ,report存放html测试报告和jtl文件信息

script存放的是要测试的接口脚本

 build.xml文件信息

<?xml version="1.0" encoding="UTF8"?>
 
<project name="ant-jmeter-test" default="run" basedir=".">
 
<property name="jmeterPath" value="E:\apache-jmeter-5.4.1"/>
<property name="mailhost" value="smtp.qq.com"/>
<property name="username" value="xxxx@qq.com"/>
<property name="password" value="sszhgagfkdynbbeaa"/>
<property name="mailfrom" value="xxxx@qq.com"/>
<property name="mail_to" value="xxxx@qq.com,"/>
<property name="mailsubject" value="API测试报告"/>
<property name="mail_port" value="587"/>
<property name="message" value="Hi!请查收下,API测试报告,如有任何疑问,请联系我,谢谢!"/>
 
 
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
     </tstamp>
     <property name="jmeter.home" value="${jmeterPath}" />
     <property name="jmeter.result.jtl.dir" value="${jmeterPath}\tests\report\jtl" />
     <property name="jmeter.result.html.dir" value="${jmeterPath}\tests\report\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" />
 
     
    <target name="run">
         <antcall target="test" />
         <antcall target="report" />
		 <antcall target="sendEmail" />
     </target>
     
	 <!--执行接口测试-->
     <target name="test">
	 	 <echo>执行接口自动化测试</echo>
         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
		    <!--要执行的测试脚本-->
            <testplans dir="${jmeterPath}\tests\script" includes="ApiPerformance.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>
 
     <!--生成HTML测试报告-->
     <target name="report">
	 <echo>生成接口自动测试报告</echo>
         <xslt classpathref="xslt.classpath"
		      force="true"
		      in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"  />
		
		<!--复制图片-->
        <copy todir="${jmeter.result.html.dir}">
             <fileset dir="${jmeter.home}/extras">
                 <include name="collapse.png" />
                 <include name="expand.png" />
             </fileset>
        </copy>
     </target>
	  <!--自动发送邮件-->
	<target name="sendEmail">
	<echo>发送自动化测试报告</echo>
		 <mail mailhost="${mailhost}"
			user="${username}" 
			password="${password}" 
			mailport="${mail_port}"
			subject="${mailsubject}" 
			messagemimetype="text/html" 
			tolist="${mail_to}">
		 <from address="${mailfrom}" />
			   <attachments>
					 <fileset dir="${jmeter.result.html.dir}">
							 <include name="${htmlReportNameSummary}${time}.html"/>
							 <include name="collapse.png" />
							 <include name="expand.png" />
					 </fileset>
			   </attachments>
			   <message>
			   ${message}
			   </message>
		 </mail>
	 </target>
 </project>

 在build.xml文件路径下,执行ant

生成的测试报告内容

性能报告

  

 把bin目录下的jmeter.properties文件添加jmeter.save.saveservice.output_format=csv

在tests目录下新建一个performanceReport文件夹。

执行命令:

jmeter -n -t script/ApiPerformance.jmx  -l api.jtl -e -o performanceReport/

执行成功后会生成性能测试报告:

 

 测试报告:

 jmeter+influxdb+grafana实时监控

Influx安装

执行命令:wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm --no-check-certificate

解压安装:执行命令:rpm -ivh influxdb-1.7.0.x86_64.rpm

修改默认的配置文件 /etc/influxdb/influxdb.conf

执行命令:vim /etc/influxdb/influxdb.conf,将最终修改的配置如下:

[[graphite]]
# Determines whether the graphite endpoint is enabled.
enabled = true
database = "jmeter"    # 数据库名称
retention-policy = ""
bind-address = ":2003"    # 端口
protocol = "tcp"
consistency-level = "one"

修改以下信息
[meta]
dir = "/usr/local/influxdb/meta"    #存放最终存储的数据,文件以.tsm结尾
[data]
dir = "/usr/local/influxdb/data"    #存放数据库元数据 wal
wal-dir = "/usr/local/influxdb/wal"    #存放预写日志文件

修改HTTP端口信息
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true

# The bind address used by the HTTP service.
bind-address = ":8086"
修改完成后执行:wq保存退出

上边设置了存放数据的目录为/usr/local/influxdb,需要手动创建并授权

mkdir -pv /usr/local/influxdb/
chown -R influxdb:influxdb /usr/local/influxdb/
启动与开机自启

systemctl restart influxdb
systemctl enable influxdb
创建数据库及用户

执行命令如下:

JMeter配置

 

然后发送请求后,在服务器上查看influxdb是否有接收数据成功 

 

Grafana安装

安装比较简单详细步骤参考:https://www.cnblogs.com/wx170119/p/13330638.html

然后执行jmeter

 

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv7算法和FLIR数据集的高精度实时红外行人目标检测系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法和FLIR数据集的高精度实时红外行人目标检测系统可用于日常生活中检测与定位自行车、汽车、狗和行人目标&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本…

数据库基础01-mysql和SQL语句

目录 一、关系型数据库 1.什么是关系型数据库 2.主要优点 二、SQL语句 1.简介&#xff1a; 2.SQL通用语法 3.SQL语法分类 4.DDL &#xff08;1&#xff09;查询库 &#xff08;2&#xff09;创建库 &#xff08;3&#xff09;删除库 &#xff08;4&#xff09;使用库…

Qt应用软件【协议篇】Modbus详细介绍

文章目录 概述Modbus 485协议概述在工业自动化中的应用 通信模式数据模型功能码 Modbus RTU示例 1&#xff1a;读取保持寄存器示例 2&#xff1a;写入单个线圈示例 3&#xff1a;写入多个保持寄存器报文传输 Modbus ASCII报文示例报文传输 Modbus TCP报文示例报文传输 概述 在…

在中国如何方便地使用GPT Plus?

一、背景 通过魔法&#xff0c;顺利登录ChatGPT&#xff0c;准备升级GPT Plus时&#xff0c;发现需要国外信用卡才能支付&#xff0c;这对大多数中国人来说是不方便的。在google搜索解决方案时&#xff0c;发现了WildCard平台&#xff0c;可以一键升级 GPT Plus (GPT-4)。将基…

浅谈隔离放大器

浅谈隔离放大器 定义&#xff1a;隔离放大器是将输入的电量信号或物理量信号通过一种技术手段处理后,隔离输出一组模拟量信号,这组模拟量信号是以标准的4-20mA/0-20mA/0-10mA/0-10V/0-5V/1-5V/2-10V/0-2.5V/0-20mA/0-10mA/0-10V/0-100mV/0-5V等信号,以便控制系统及仪器仪表设备…

【C语言】位操作符详解

目录 1、按位与&#xff08; & &#xff09; 2、按位或&#xff08; | &#xff09; 3.按位异或&#xff08; ^ &#xff09; C语言中的位操作符有以下&#xff1a; & | ^//按位与 //按位或 //按位异或 位运算符是计算两者之间的补码&#xff0c;然后得到的是计算后补…

【数模百科】如何提高数模论文的美观性(附美赛word和LaTeX模板)

有人说&#xff0c; 美赛 美术大赛 某种程度上是这样的。 「论文包装」是美赛的重中之重&#xff0c;如果大家有阅读过往年O奖论文&#xff0c;就会发现所有论文的「美观性」都很强。 比如这篇2019年的神作&#xff0c;花了条恐龙。 好的下面我来教大家如何画恐龙。&#…

什么是防抖和节流?有什么区别?如何实现?

文章目录 一、是什么定义代码实现节流防抖 二、区别三、应用场景 一、是什么 本质上是优化高频率执行代码的一种手段 如&#xff1a;浏览器的 resize、scroll、keypress、mousemove 等事件在触发时&#xff0c;会不断地调用绑定在事件上的回调函数&#xff0c;极大地浪费资源…

IDEA中git的使用和代码对比神器Beyond Compare

和多同学idea配置好了&#xff0c;但是使用却不知道怎么使用。 我这里说说idea中使用的几招常用操作。如&#xff1a;提交&#xff0c;拉取&#xff0c;推送&#xff0c;合并&#xff0c;取消合并&#xff0c;撤回本地提交。 以及一些刚接触idea使用git的怕把公司代码搞砸了的同…

Spring cloud智慧工地信息平台管理系统源码

目录 报警统计 实时报警列表 工程进度 劳务信息 隐患信息 施工安全管理 人员证书管理 专项安全方案 安全方案审批 隐患排查管理 安全检查统计 危险源Top10 整改超时预警 检查问题数量统计 安全隐患趋势 安全日志管理 视频监控查看 视频回放 AI危险源识别 AI应用总览 AI设备 机械…

Vue3的v-model

目录 基本用法 底层机制 v-model 的参数 多个 v-model 绑定 处理 v-model 修饰符 带参数的 v-model 修饰符 例子 总结&#xff1a;Vue 3 中的 v-model 指令与 Vue 2 中的 v-model 相比有一些变化和改进。最显著的变化是&#xff0c;在 Vue 3 中&#xff0c;v-model 可以…

TypeScript(四) 运算符

1. 运算符 1.1. 描述 运算符用于执行程序代码运算。 1.2. 运算符主要包括&#xff1a; &#xff08;1&#xff09;算术运算符 &#xff08;2&#xff09;逻辑运算符 &#xff08;3&#xff09;关系运算符 &#xff08;4&#xff09;按位运算符 &#xff08;5&#xff09;赋值…

R语言【taxlist】——print_name():为发表文章准备可用的格式化名称

Package taxlist version 0.2.4 Description 在撰写关于生物多样性的文章时&#xff0c;可以使用名称自动插入到文件中&#xff0c;包括学名不同元素的典型斜体格式。函数print_name既可以应用于 Markdown 文档&#xff0c;也可以应用于图形。在 Rmarkdown 文档中&#xff0c;…

linux中配置文件目录为什么用etc来命名

在早期的 Unix 系统中&#xff0c;/etc 目录的名称确实来源于单词 “etcetera” 的缩写&#xff0c;最初意味着 “其他”&#xff0c;用来存放杂项或者不属于其他特定目录的文件。然而&#xff0c;随着时间的推移&#xff0c;/etc 目录的用途逐渐演变并专门化。 在现代的 Linux…

houdini relate graph

此图来于网络&#xff1a;如有冒犯敬请告之&#xff0c;侵删 类知识图谱效果 wiki graph d3.js&#xff1b; python d3blocks 1.使用算法模拟动态效果&#xff0c;运动形态&#xff08;计算量小&#xff0c;实现 2.wire solver &#xff08; 3.使用刚体&#xff0c;柔体&…

Pytest与unittest区别

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

如何实现Win系统ssh连接Ubuntu使用vscode远程敲代码

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接…

Unity 迭代器模式(实例详解)

文章目录 简介**实例1&#xff1a;遍历数组****实例2&#xff1a;自定义迭代器类****实例3&#xff1a;异步加载资源****实例4&#xff1a;游戏关卡序列****实例5&#xff1a;无限生成敌人** 简介 在Unity中&#xff0c;虽然不直接使用迭代器模式的原始定义&#xff08;即设计…

EasyExcel通用导入 | 简单封装

0. 前言&#xff1a;1. 基本思路&#xff1a;2. 调用代码&#xff1a; 0. 前言&#xff1a; 之前做了好几个导入&#xff0c;用EasyExcel每次都要定义监听器去处理&#xff0c;就想能不能做个通用的方式&#xff0c;如下 1. 基本思路&#xff1a; 导入无非主要就是参数校验和数…

代码随想录刷题笔记-Day14

1. 对称二叉树 101. 对称二叉树https://leetcode.cn/problems/symmetric-tree/给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root […