一.概述
- Apache公司使用JAVA开发的一款测试工具
- 高效,功能强大;模拟一些高并发或者多次循环等特殊场景
- bin:存储了Jmeter的可执行程序,比如启动程序;lib:存储了Jmeter整合的功能
启动方式1:bin/ApacheJmeter .jar 双击
启动方式2:jmeter.bat windows下的启动程序
启动方式3:jmeter.sh linux下的启动程序 - 作用:
接口测试,性能测试(内在 --- 程序的算法,比如程序响应时间),压力测试(外在 --- 外在负载,比如高并发人数),web自动化测试,数据库测试,Java程序测试
优点:1.开源,免费;2.支持多协议 --- http,https,ftp,ftps;3.小巧;4.功能强大
缺点:1.不支持IP欺骗;2.不支持前端测试;
二、组件:线程组
A.是什么
进程:一个正在运行的程序就是一个进程
线程:进程中的执行线索(一个进程有多个执行线索)
线程组:按照线程性质对线程进行分组
并发执行:多个线程同时执行,线程结束的顺序和线程启动的顺序不一定一致
顺序执行:按照线程的启动顺序挨个执行
B.为什么
方便管理
C.怎么用(基本使用)
C-1.三者关系:进程有多个线程组,线程组可以有多个线程
---进程:测试计划
---线程组:线程组
---线程:线程组属性的线程数
C-2.默认情况下,线程组中的线程是并发执行的,每一个线程都要执行组内的http请求
C-3.顺序执行:在测试计划中选择独立运行每个线程组
D.线程组优化
可以使用http请求默认值抽取线程组共同的IP,端口,协议,编码集等信息
1.测试计划 ——> 配置元件 ——> http请求默认值
作用:通过复用属性简化实现,提高效率
E.线程组高级(初始化与销毁线程组)
E-1.线程组属性
属性1:线程数 ---- 模拟用户数
属性2:时间值 ---- 在指定时间内启动所有线程
属性3:循环数 ---- 单个用户访问次数
E-2.调度器
1.循环次数设置为永远
2.设置启动延迟X和持续时间Y:在X秒后访问服务器,并且持续Y秒
3.设置启动时间M和结束时间N:在M时间开始访问,在N时间结束
--------2和3不能同时使用---------
组件:参数化概述
A.是什么
动态地获取并设置数据
B.为什么
执行批量操作的时候,每执行一次都需要修改一次,效率低,参数化就是以程序代替人工获取并设置数据:安全+高效
参数化实现之CSV Date Set Config
A.是什么
Jmeter参数化实现组件之一
B.为什么
通过这个组件可以动态获取并设置数据,实现类似批量添加操作(执行一次,将多条数据插入到数据库)
C.怎么用
C-1、实现思想
- 编写添加框架,设置循环次数,JSON数据格式固定,值先不写;
- 编写一个外部的文本文档,存储要添加的数据;
- Jmeter添加一个参数化组件CSV Date Set Config,每次循环时都读取外部文档的一行数据,再将字段分别设置进要提交的JSON数据中
C-2、实现方法
- 线程组设置循环次数,线程组下插入的HTTP请求负责插入数据
- 创建一个文本文档,标准的CSV格式文件,每一行数据对应文档一条记录,不同字段之间使用英文 , 分隔
- 创建一个CSV元件,声明数据源以及编码集以及解析格式
Filename:文件路径
File encoding:编码集
Variable Names:变量名
Delimiter:分隔符 - 要将CSV中解析的数据设置进JSON格式的数据报文,语法${变量名}
BodyDate中:''键'':"${变量名}"
Jmeter组件:线程组实现高级
测试计划的添加中
Set Up线程组:最先执行的线程组----加载程序主体执行所需的资源
Tear Down:最后执行的线程组----程序正式关闭之前,可以将数据保存进内存