说在前面
本系列性能测试全都基于WebTours环境来进行
Jmeter
元件
- sampler(取样器),包含http请求、ftp请求等
- Logic Controller(逻辑控制器),内包含各种控制器,如if、foeach等控制器。其本身只对其子节点的sampler有效。
- Config Elements(配置元件):包含session、cookie等管理器,影响其范围内的所有元件。
- Pre-porcessors(前置处理器):在sampler之前执行,如sampler需要大量参数配置时(如post请求需要携带大量参数),作用域其范围内的sampler
- Post-porcessors(后置处理器):在sampler之后执行,如下一个请求需要钱一个请求请求结果时。作用域其范围内的sampler。
- Timer(定时器):对其作用范围内的每一个sampler有效
- Assirtions(断言):对其作用范围内的每一个sampler元件的响应头Response Headers、响应体Response body、或者请求头等做出校验。
- Listener(监听器):收集其作用范围内的每一个sampler元件的执行情况,返回并统计。可表格形式展现,也可图表形式,不过图表形式可能需要安装扩展插件。
- Test Fragment(测试片段),它的主要作用是模块化测试过程,类似于编程语言中的函数。即,将测试过程封装成测试片段,就可以在其他地方直接引用了。作用范围内的每一个sampler。
安装
安装Jmeter需要JDK环境,并将java配置环境变量,然后打开Jmeter/bin/jmeter.bat运行即可
Jmeter用处
- 接口测试
- 接口性能测试
- 负载测试
- 压力/稳定性测试
Jmeter功能
- 多线程框架-支持多并发操作
- 用于对服务器模拟负载
- 支持Web/数据库/FTP服务器系统的性能测试
- 开源/纯JAVA/可二次定制化开发
Jmeter使用
线程组
上图如果要使用持续时间,要勾选永远,
注:整个线程组进行的配置只针对一个线程(用户),如果有5个线程则所有操作执行5次
Jmeter脚本
Jmeter脚本指的是模拟用户操作的请求
代理服务器录制脚本
- 设置浏览器代理
- 启动代理服务器(Jmeter)
- 右键点击testplan->添加->http代理服务器
- 新建一个线程组,用来放置脚本
- 操作浏览器
- 自动录制脚本
接口测试
接口
概念
- 内部接口:方法与方法之间的交互,模块与模块之间的交互
- 调用对外包装的接口
分类
- Web接口(https/http/webservice)
- 应用程序接口
- 数据库接口
接口测试原理
接口测试属于功能测试,也可以看作是需要了解部分代码的灰盒测试,测试流程是:
- 测试接口文档
- 根据接口文档编写测试用例
- 执行测试
查看接口返回的接口数据是否正确
接口测试的必要性
- 案例:一个登陆接口
- 场景:产品上规定用户名6-10个字符数字下划线,测试人员测试在前端做了校验通过,后端人员没有做校验
- 风险:攻击者直接抓包篡改接口,绕过校验,可以通过sql注入直接随意登录
接口测试操作
测试报告导出
jmeter -n -t 测试计划jmx文件的路径 -l report.jtl(自定义) -e -o 报告存储路径(必须为非空文件夹)