jmeter接口测试及压力测试
前言
安装
-
安装java开发环境jdk,安装地址Java Downloads | Oracle
-
安装jmeter,安装地址Apache JMeter - Apache JMeter™
注意下载binaries版本,不要下载源码版本
配置环境变量
- 打开系统属性->高级系统设置->环境变量
- 配置path变量,路径地址为解压包bin目录
运行
windows下打开jmeter.bat文件,等待可视化页面生成(gui)
基础知识
一个项目工程就是一个测试计划,通过创建线程组来模拟用户进行测试。一个线程组代表一种用户行为。通过线程组创建取样器(http请求),一种用户行为里http请求是从上到下执行。
创建线程组时,线程数就类似用户个数,Ramp-up时间就是所有线程执行完的时间
参数介绍性能指标
-
lantency:用户请求第一次接收响应所花费的时间
-
connectTime:用户连接服务器所用时间,为0表示连接复用
-
loadTime:用户接收所有响应所用时间
当连接响应为长消息时,一般loadTime>=lantency,因为有多个响应。
录制流量
-
测试计划右键非测试组件里添加http代理服务器,在分组选项里选择将每个组放入一个新的事务控制器中,端口默认为8888
-
新建线程组,右键逻辑控制器里添加录制控制器。
-
浏览器配置代理,不同浏览器方式不同,代理地址选择127.0.0.1,端口为http代理服务器里端口
这样在浏览器访问请求,就会在jmeter里记录完整的请求信息
模拟间隔时间发送请求
- 线程组右键添加定时器子菜单里固定定时器,设置时间,注意定时器放置位置。
- 右键取样器添加测试活动,暂停行为,并设置持续时间。
压力测试
命令行执行jmeter -n -t .jmx文件 -l log.jtl,生成测试报告
通过 jmeter -g log.jtl -o report 生成统计报表
注意report需要为空目录,或者不存在
cookie管理器
对于一些加入权限认证的页面,请求会被拦截,cookie和session机制会由浏览器发送请求时自动携带,当然对于jmeter同样可以解决这个问题,只需要添加配置原件子菜单里的http cookie管理器即可。
消息数据关联与后置处理器
一些请求的参数信息往往需要动态从接口返回的异步响应中获取,所以可以通过添加后置处理器的json提取器来把json信息提取成变量来供后续请求参数的使用。
关于json提取器的相关知识自己需要去网上自己搜索,这里注意一下,对于参数使用时通常通过${变量名}来引用变量。
csv数据文件配置
一个线程即为模拟一个用户,不同用户的登录账号和密码是不同的,对于大量数据进行测试时,可以添加csv配置文件元件,把请求需要的参数信息提取成表达式,表达式对应于数据文件的每一行,从而进行模拟真实用户。
断言
json断言,判断请求返回结果中某一项值是否符合预期,不符合将会请求失败
jsr223断言
断言功能更为完善,可以与逻辑表达式合用