Jmeter
一、Jmeter概述
1、是什么?
jmeter是Apache公司使用java开发的一款测试工具
2、为什么?
高效、功能强大
模拟一些高并发或多次循环等特殊测试场景
3、怎么用?
- 下载jmeter解压缩
- 安装java环境(jemter和java环境的关系,类似于mp3文件和播放器的关系)
- 简单了解jmeter的目录结构
- bin:存储了jmeter的可执行程序,比如启动程序
- lib:存储了jmeter整合的功能(一些.jar文件的小程序)
- 启动jmeter
- 启动方式1:bin/Apachejmeter.jar 双击
- 启动方式2:jmeter.bat windows下的启动程序 | jmeter.sh linux下的启动程序
- 编写一个jmeter版本的测试案例
4、jmeter的作用优点和缺点
作用:
- 接口测试
- 性能测试:内在的东西 ---- 如程序的算法
- 压力测试:外在的东西 ---- 如外在负载
- web自动化测试
- 数据库测试:测试数据库
- java程序测试
优点:
- 开源、免费
- 支持多协议:http https ftp ftps
- 小巧
- 功能强大
缺点:
- 不支持IP欺骗
- 不支持前端测试
二、 Jmeter组件:线程组
1、是什么?
- 进程:一个正在执行的程序对应一个进程
- 线程:进程中的执行线索(一个进程可以有多个线程)
- 线程组:按照线程性质对线程进行分组
- 并发执行:多个线程同时执行,特点:执行结束的顺序和线程的启动顺序不一定一致
- 顺序执行:按照线程的启动顺序挨个执行
2、为什么?
- 方便管理
3、怎么用?
3.1、三者关系:进程有多个线程组,线程组可以有多个线程
- 进程 --- 测试计划
- 线程组 --- 线程组
- 线程 --- 线程组属性的线程数
3.2、默认情况下,线程组中的线程是并发执行的
每一个线程都要执行组内的http请求
3.3、怎样设置线程组顺序执行?
勾选测试计划的第一个复选框(独立运行每个线程组)
3.4、使用http请求默认值抽取共同的ip、端口号、协议、编码集 等信息
测试计划 ---> 右击 ---> 添加 ---> 配置元件 ---> http请求默认值
作用:通过复用属性简化实现,提高测试效率
4、线程组高级应用
4.1、线程组属性
- 属性1:线程数 --- 模拟用户数
- 属性2:时间值 --- 在指定时间内启动所有线程
- 属性3:循环数 --- 单个用户访问的次数
4.2、调度器
- 循环次数设置为永远
- 设置启动延迟x和持续时间y,在x秒后访问服务器,并持续y秒
- 设置启动时间M和结束时间N,在M时开始访问服务器,在N时结束
- 注意:第2和第3点不能同时使用,否则会冲突
三、Jmeter组件:参数化
1、是什么?
- 参数化就是动态的获取并设置数据
2、为什么?
- 比如执行批量操作时,批量插入或批量删除,之前数据都是手写的,每执行完都需要修改一次,效率太低
- 参数化就是可以以程序代替人工获取并设置数据:安全+高效
四、Jmeter组件:参数化实现之CSV Data Set Config
1、是什么?
- jmeter参数化实现组件之一
2、为什么?
- 通过这个组件可以动态获取并设置数据,实现类似批量添加操作(执行一次,将多条数据插入到数据库)
3、怎么用?
3.1、实现思想
- 绑定添加框架,设置循环次数;JSON数据格式固定,值先不写
- 编写一个外部文本文档,存储要添加的数据(循环次数是多少,数据就有多少条)
- Jmeter添加一个参数化组件CSV Data Set Config,每次循环时都读取外部文档的一行数据,再将JSON格式的字段分别设置进提交的JSON数据中
3.2、实现流程
1、创建线程组,并设置循环次数(有多少条数据就设置多少次循环次数)
2、编写外部文本文档(标准的CSV格式)
3、添加CSV组件
4、要将CSV解析的数据设置进HTTP请求中JSON格式的请求报文中
语法:${变量名}
4、其他
- CSV Date Set Config --- CSV数据配置
- CSV --- 逗号分隔值文件格式
五、Jmeter组件:线程组实现高级
- Set Up 线程组:最先执行的线程组,加载程序主体执行所需的资源
- Tear Down 线程组:最后执行的线程组,程序正式关闭之前,可以将数据保存进内存