Jmeter接口压测示例
Jmeter接口压测示例
Apache JMeter™
是 Apache
组织开发的一款开源软件,是典型的纯 Java
开发的应用程序,可以在不同平台比如Windows
、Linux
或macOS
系统上进行软件测试。JMeter
主要用于应用程序的功能负载测试以度量软件的性能,也可以用于其他类型的测试比如接口测试,API测试
等。
下载地址: https://jmeter.apache.org/download_jmeter.cgi
详解jmeter线程组
Threads (Users)线程 用户
- setup thread group 常规线程组前置操作 例如测试前的登录,注册等操作
- teardown thread group 常规线程组后置操作 例如 退出登录进行操作
- thread group(线程组) 常规线程组 正常接口测试 我们就以这个来演示
thread group基本设置
- 线程数
线程数可以理解为并发数,他们互不干扰.
- ramp-up period
设置启动所有线程所需的时间,我们设置了100个线程, 并且ramp-up period是1秒, 那么Jmeter
使用1秒启动100个线程,每个线程之间相隔时间 = 1 / 100
这个值设置比较小,线程数又设置这么大,对系统负载是比较大的,我们可以根据机器调整一下
- 循环次数
设置线程组在结束前每个线程的循环次数,如果设置为1,那么JMeter在停止前只执行测试计划一次,循环开始执行时间几乎与第一遍执行时间并行
http请求设置
请求响应断言
对接口进行断言,如果是正常API
的话用JSON
来断言,这里我就直接用响应码断言
同步定时器 并发测试
同步定时器是jmeter
中一个比较重要的定时器,同步定时器,相当于一个储蓄池,累积一定的请求,当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起并发,可以用来做大数据量的并发请求。
最近公司开发了一个转账功能,需要最转账接口做一个并发测试,测试账户余额剩下10的时候,同时发起两个转账请求,请求数额均为10,测试能不能发送成功。自己的话很难做并发测试,我们开发也可以使用这种工具对一些必要的接口进行测试
- 模拟用户组数量
每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。如果设置为10,即集合10个线程等待,同时发送请求。设置此数量不能超过线程组中的线程数量。
- 超时时间以毫秒为单位
如果设置为0,Timer
将会等待线程数达到了模拟用户组数量中设置的值才释放。如果一直没有达到,则会一直等待,除非手动关闭执行。如果大于0,那么如果超过超时时间中设置的最大等待时间(毫秒为单位)后还没达到 模拟用户组数量 中设置的值,Timer将不再等待,释放已到达的线程。默认为0
测试结果查看
- Android查缺补漏(IPC篇)-- 进程间通讯基础知识热身
- Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
- Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例
- Android查缺补漏(IPC篇)-- Bundle、文件共享、ContentProvider、Messenger四种进程间通讯介绍
- Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?
- Name node is in safe mode.
- Android查缺补漏(View篇)--事件分发机制源码分析
- Android查缺补漏(View篇)--事件分发机制
- Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解
- Android查缺补漏(View篇)--自定义 View 的基本流程
- CVPR2018: Unsupervised Cross-dataset Person Re-identification by Transfer Learning of Spatio-tempora
- 一个数据包消灭一台服务器的DNS漏洞
- java文件基本操作与实例
- 如何在Azkaban中安装HDFS插件以及与CDH集成
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用composer 安装 laravel框架的方法图文详解
- laravel5.6 框架操作数据 Eloquent ORM用法示例
- Python版名片管理系统
- docker-compose部署php项目实例详解
- Linux下通过sed命令对kv方式的配置文件进行修改
- laravel5.6框架操作数据curd写法(查询构建器)实例分析
- PHP基于timestamp和nonce实现的防止重放攻击方案分析
- 怎么在 Linux 中查找一个命令或进程的执行时间
- laravel5.6 框架邮件队列database驱动简单demo示例
- php layui实现前端多图上传实例
- 解决Centos7下crontab+shell脚本定期自动删除文件问题
- PHP使用ajax的post方式下载excel文件简单示例
- laravel邮件发送的实现代码示例
- php curl发送请求实例方法
- ubuntn备份办法总结(四种)