从零开始做一个Jmeter性能测试
安装Jmeter
1、下载地址http://jmeter.apache.org/download_jmeter.cgi
2、解压下载文件,然后将bin目录添加到系统环境变量PATH里。
3、确保已安装java 8
4、点击jmeter bin目录下的ApacheJMeter.jar文件或者在打开本机终端或输入jmeter启动jmeter客户端
Jmeter相关介绍
1、测试计划(TestPlan),运行jmeter测试的一个基本单位
2、线程组(ThreadGroup),类似于loadrunner里的groups
3、逻辑控制器(LogicController),用来定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列
4、 配置元件(ConfigElment),维护Sampler需要的配置信息
5、定时器(Timer),负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求
6、前置处理器(Pre Processors),前置处理器常常用来修改请求的设置
7、后置处理器(Post Processors),后置处理器则常常用来处理响应的数据
8、取样器(Sampler),模拟各种请求
9、断言(Assertions),用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。
10、监听器(Listener),负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。
11、工作台WorkBench,可以用来暂存,但是保存后会消失
Jmeter实例(餐饮系统批量上传和批量下载为例)
1、添加一个线程组,这里我们用默认参数
Number of Threads 设置并发数
Ramp-Up Period 设置什么时候启动完
Loop Count 设置迭代次数
2、添加两个Sampler,批量上传和批量下载
配置服务器IP,方法,路径,请求参数
3、由于批量上传的请求数据timemapStr会用到批量下载返回数据中的list,添加一个后置处理器–正则表达式处理器
引用名称:设置正则返回的变量名
正则表达式:()的数据是需要返回的数据
模板:上面如果有多个括号,N>0,$N$代表提取第几个括号里的内容;N=0表示提取所有提取表达式的内容
匹配数组:0代表数据;-1代表所有;N代表第N个匹配到的
缺省值:假如没有匹配到,设置的默认值
4、设置响应断言
支持正则匹配和多个匹配模式
5、添加配置元件和定时器
随机数:上传请求参数里的订单id每次随机生成
固定定时器:每个线程每次迭代时会延迟5000毫秒
CSV Data Set Config:设置终端名称的取值
6、添加监听器,并运行测试:
查看结果树:可以取样器的结果、请求参数、响应数据
聚合报告:主要展示接口名、迭代次数、响应时间参数,错误率,吞吐量,发送的数据量和接收到的数据量
图形结果:显示数据、平均值、中值、偏离、吞吐量
用表格查看结果:显示开始时间,线程名字,接口名,取样器响应时间,请求状态,收到的Bytes,发送的Bytes,延迟,连接时间
概要报表:
与聚合报告报表展示类似
Response Time Graph:响应时间曲线图
Aggregate Graph:聚合曲线图
no GUI 方式运行(建议运行方式)
jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
<test log file> 指生成的原生jtl文件
会生成如下图所示的文件
打开index.html,会看到一个html版的测试报告
从零开始做一个Jmeter性能测试的更多相关文章
- Vue.js 入门:从零开始做一个极简 To-Do 应用
Vue.js 入门:从零开始做一个极简 To-Do 应用 写作时间:2019-12-10版本信息:Vue.js 2.6.10官网文档:https://cn.vuejs.org/ 前言 学习 Vue ...
- 《从零开始做一个MEAN全栈项目》(1)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发? ...
- 《从零开始做一个MEAN全栈项目》(2)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...
- 《从零开始做一个MEAN全栈项目》(4)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心工具,express和 ...
- 《从零开始做一个MEAN全栈项目》(3)
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一篇文章给大家讲了一下本项目的开发计划,这一章将会开始着手搭建一个MEAN项目.千里之行,始于足下, ...
- 从零开始做一个Android自动化
移动端自动化简单说就是,写好操作app的程序,运行起来,自动执行程序和测试用例,输出执行结果,结果正确,测试通过. 自动化可以方便地完成安装/卸载.启动/运行.UI适配等环节,节省时间: 同一测试脚本 ...
- Jmeter初步使用二--使用jmeter做一个简单的性能测试
经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...
- 如何使用jmeter做一个功能的性能测试
一.为什么又再次写类似的文章? 在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的. 也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢? 加我好友的 ...
- 从零开始搭建一个PaaS平台 - 我们要做什么
前言 从最开始的小公司做小网站,到现在进入现在的公司做项目,发现小公司里很多很多工作都是重复的劳动(增删改查),不过想想也是,业务软件最基础的东西不就是增删改查吗. 但是很多时候,这种业务逻辑其实没有 ...
随机推荐
- 广义Fibonacci数列找循环节 学习笔记
遇到了2019ICPC南昌赛区的网络赛的一道题,fn=3*fn-1+2*fn-2,有多次询问求fn.总结起来其实就是在模P意义下,O(1)回答广义斐波那契额数列的第n项,可以说是一道模板题了. 这道题 ...
- ini配置文件内如果有更新参数
ini配置文件内如果有更新参数 执行更新 更新参数 自动去下载执行????
- 【LeetCode】随机化算法 random(共6题)
[384]Shuffle an Array(2019年3月12日) Shuffle a set of numbers without duplicates. 实现一个类,里面有两个 api,struc ...
- docker初学
Docker基础知识 1. Docker基础知识点 1.1 什么是Docker Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.(集装箱原理) 1.2 什 ...
- Codeforces Round #518 (Div. 1) Computer Game 倍增+矩阵快速幂
接近于死亡的选手没有水平更博客,所以现在每五个月更一篇. 这道题呢,首先如果已经有权限升级了,那么后面肯定全部选的是 \(p_ib_i\) 最高的. 设这个值为 \(M=\max \limits_i ...
- SQL Server 创建表
SQL Server 创建表 我们在上一节中完成了数据库的创建,在本节,我们要往这个新的数据库中加入点数据,要想将数据添加到数据库,我们就必须在数据库中添加一个表,接下来来看看具体的操作. 我们的数据 ...
- python的main函数
代码示例:test.py import sys if __name__ == '__main__' size = len(sys.argv) p1 = sys.argv[] p2 = sys.argv ...
- flask01
-python中的web框架 -a:socket服务端 b:路由转发 c:模板渲染 -Django:a:用了别人的 b,c自己写的 -Flask:a:用了别人的 b自己写的,c:用了别人的: jinj ...
- SQL group by分组查询
本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...
- 【Dart学习】--之Runes与Symbols相关方法总结
一,Runes 在Dart中,Runes代表字符串的UTF-32字符集, 另一种Strings Unicode为每一个字符.标点符号.表情符号等都定义了 一个唯一的数值 由于Dart字符串是UTF-1 ...