Jmeter简介
- JMeter 是Apache 组织使用 Java 开发的一款测试工具
- 应用领域:
- 测试静态和动态资源(静态文件、Java小服务程序、CGI脚本、FTP服务器等)
- 用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分销整体性能
- 对应用程序做功能/回归测试
- 作用:
- 接口测试
- 性能测试
- 压力测试
- web自动化测试
- 数据库测试
- JAVA程序测试
- 优缺点
- 开源、免费,跨平台,支持多协议,小巧,功能强大
- 不支持IP欺骗,使用JMeter无法验证JS程序和页面UI,须与selenium配合完成web应用的测试
JMeter 组件
1. 线程组概念
- 进程:正在运行的程序
- 线程:进程中的执行线索
- 线程组:进程中有许多线程,对线程按性质分组,分组的结果就是线程组
- 三者关系:1个进程可以包含多个线程组,1个线程组可以包含多个线程
- 并发执行:多个线程同时执行
- 顺序执行:多个线程顺序执行
2. 线程组的作用
- 方便管理线程
- 可以通过一系列属性控制线程的执行
3. 线程属性
- 线程数:组内线程个数, 多个用户访问
- Ramp-UP时间(s):时间间隔,ramp_up time/线程数
- 循环次数:每个线程循环执行取样器的次数;1个用户循环访问
- Same user on each iteration
- 延迟创建线程直到需要
- 调度器配置
- 持续时间(s):持续执行几s
- 启动延迟(s):延迟几s开始执行
4. 层级结构与执行顺序
- 测试计划下有多个线程组,线程组下有多个线程
- 线程组的执行顺序:默认并发执行;勾选 测试计划 下的选项:独立运行每个线程组--》顺序执行
5. 特殊线程组 setUp线程组和tearDown线程组
6. 参数化
- 概念:动态的获取,设置或生成数据,是一种由程序驱动代替人工驱动的设计方案
- 作用:提高脚本的编写效率和质量
- 实现
- 用户定义的变量
- CSV数据文件设置(csv:逗号分隔值,简洁的数据存储格式)
使用JMeter编写脚本模板<--中间件关联程序与数据-->使用CSV文件存储测试数 据 - 用户参数
- 函数
7.直连数据库
- 概念:编写脚本 让 JMeter直接访问并操作数据库
- 作用
- 将接口响应的结果与直连数据库响应的结果做对比,判断接口实现是否符合预期
- 比人工访问数据库更高效快捷
- 实现
- 在测试计划里添加依赖(选择需要的jar包)
- 配置数据库连接信息
- 添加并配置JDBC Connection Configuration组件
- 添加线程组,在线程组下添加 JDBC Request组件-->编写 sql语句
- 添加察看结果树组件
8. 断言
- 概念:让程序代替人工判断响应结果是否符合预期
- 作用
- 更安全
- 更高效
- 更准确,功能更强大
- 实现
- 响应断言 response code + response body
- 大小断言 size
- 断言持续时间 响应时间 time