前置环境安装
首先我们需要知道如何下载Jmeter
这里贴上下载网站Apache JMeter - Download Apache JMeter
我们直接解压,然后在bin目录下找到jemter.bat即可启动使用
成功打开之后就是这个界面
每次打开可以用这种方式切换成简体中文
或者直接修改properties文件修改对应的语言包
接口测试自动化基础
我们都知道接口测试可以使用postMan或者使用浏览器直接查看数据
那我们为啥使用Jmeter呢?
笔者认为是因为Jmeter可以实现自动化
可以实现循环接口测试
假设a接口对登录依赖 我们可以提取登录的验证信息以某种形式传给a接口
首先得先添加一个线程组(先使用一个线程)
这里的线程组就可以模拟多个用户访问了
接着我们就可以创建对应的HTTP请求了
为了查看结果,我们得再创建一个查看结果树来进行查看接口返回的结果
我们不妨试一下,请求个api试试
本地写了一个最简单的测试一下结果
如果a对b有依赖关系我们就将b写成一个代码片段
可以保存下来使用一个include模块控制器即可
我们都知道不同环境都需要测试
开发环境/测试环境/预发布环境/发布环境
不同的环境测试改来改去比较繁琐
我们就可以使用自定义变量
这样我们每次只需要实现对相同变量的修改即可
这也是自动化最基础的应用
对一个接口使用多组数据输入咋办???
无所谓,循环和csv文件导入会出手对应的txt文件/csv一样
第一行是变量名称,可以在很多地方引用
JSON断言
我们对于返回的结果总要进行一定的验证
这里的验证可以放在csv文件中作为预期结果
当http请求失败后 我们会实现
通常我们可以判断code和对应的message
具体情况具体分析 实现自动化验证
对核心数据都需要测试
使用公共数据咋办,下一个接口对上一个接口有依赖关系
我们直接使用Json提取器提取上一个接口的返回信息
比如登录的token....
Jmeter连接数据库
我们知道开发的信息数据来源一定是数据库
有些时候我们可以直接连接数据库验证信息
比如说我现在要验证1w个用户的登录
这时候使用csv肯定不行啊
或者是抽查某些数据
这时候我们使用JDBC连接数据库
在这里填入mysql的jar包或者是对应的jar包驱动即可
然后我们直接写sql即可
这里获取的数据库变量也是可以直接进行断言的
Jmeter调试
这里可以看到目标结果和实际结果
注:我们不知道数据库会返回对应多少条数据
所以下面设置的变量会变成 变量_1 变量_2.....对应查出来的数据
随机查出一条数据
ORDER BY RAND() limit 1
问题
假设我现在需要搞10000条数据来验证咋办?
有人说循环? 多线程??
都不ok
循环多次访问数据库很容易就造成死锁了
多线程也是不到万不得已不去用的,因为出错概率很高且不好处理
这里就得使用V函数来操作了
使用这样的方式在变量中加入一个子变量
Jmeter 梯度压测
开始的时候使用多少个线程来压测??
不清楚,使用梯度压测性价比更高,逐步加压
这里需要下载对应的jar包解压放到对应的bin目录下
下载地址:Install :: JMeter-Plugins.org
首先我们说说负载测试压力测试和性能测试的区别
首先性能测试包括压力测试和负载测试
负载测试主要就是观察一个系统性能的拐点,第一次也可以做为基准测试的标准
压力测试主要就是给服务器一定的压力(一般在40%以下),进行稳定性测试,持续长时间查看一个系统的稳定程度
主要的指标就是并发数/吞吐量/错误率这样
但是我们如何知道需要引入多少个线程呢
这里梯度压测就登场了
我们只需要查看这个接口需要多少的性能指标 找到对应的性能拐点
同一时间去观察一下此刻的线程数 就可以知道使用多少线程去测试这个接口了
然后我们还可以看汇总报告
一个发送多少个请求以及响应时间 吞吐量 错误率等....
加上这个图就能实现以上功能了
但是别以为这就是压测了
真正的压测是需要知道对应的分析原因的
JVM? mq 缓存 哪里出现了问题 调优才是关键
因为光靠一张图开发也能轻松知道啊
我直接创建几个线程不是轻轻松松
OK本期分享就到这里