jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件
缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位)
工具 | 用户量 | 分析报表 | IP欺骗 | 费用 | 体积 | 扩展性 |
Loadrunner | 多(万) | 精确(s) | 支持 | 收费 | 大(单位gb) | 不能扩展 |
Jmeter | 少 | 较差(min) | 不支持 | 免费 | 小(MB) | 有扩展组件 |
地址:http://www.oracle.com/
环境变量 :
校验:cmd命令行里输入 java -version
地址:Apache JMeter - Download Apache JMeter
解压安装包即可
启动3种方式:进入bin目录,双击jmeter.jar ; 双击ApacheJMeter.jar ;命令行输入java -jar ApacheJMeter.jar
1. bin目录介绍(存放可执行文件和配置文件)
jmeter.bat: windows的启动文件(重要)
jmeter.log: Jmeter工具运行的日志文件
jmeter.propertites: jmeter工具的配置文件(重要)
jmeter.sh: linux的启动文件
jmeter-server: linux分布式测试的启动程序
jmeter-server.bat: windows分布式测试的启动程序
是jmeter的api文档,用于开发扩展组件
用户帮助手册
存放jmeter依赖的jar包和用户扩展所依赖的jar包(ext目录下)
临时的:菜单Options->Choose Language->Chinese(Simplified)
永久的:修改配置文件,bin\jmeter.properties文件,改成"language=zh_CN",然后重启jmeter
1. 元件:多个类似功能组件的容器(类似于类)
取样器 | 发送请求 |
逻辑控制器 | 控制语句的执行顺序 |
前置处理器 | 对请求参数进行预处理 |
后置处理器 | 对响应结果进行提取 |
断言 | 检查接口的返回结果是否与预期结果一致 |
定时器 | 设置等待 |
测试片段 | 封装一段代码,供其他脚本调用 |
配置元件 | 测试数据的初始化配置 |
监听器 | 查看jmeter脚本的运行结果 |
2. 组件:实现独立的某个功能(类似于方法)
如取样器里的HTTP请求,逻辑控制器里的循环控制器,事务控制器
元件的作用域是靠测试计划的树形结构中的父子关系来确定的。
提示:所有的组件都是以取样器为核心运行的。组件添加的位置不同,生效的取样器也不同。
同一个作用域下不同类型元件:
同一个作用域下多个相同类型元件:
举例:整理执行顺序
定时器1 - HTTP请求1 - 定时器1 - 定时器2 - HTTP请求2 - 定时器1 - 定时器3 - HTTP请求3
作用:线程组就是控制jmeter用于执行测试的一组用户
特点:
不控制顺序如图:
如果要顺序执行线程组,设置如下:
执行结果如图:
setup线程组-前置处理,初始化
普通线程组-编写脚本,可以看做一个虚拟用户组,每一个线程都可以理解为一个虚拟用户
teardown线程组-后置处理,环境恢复等
(1)模拟10个用户并行执行:
(2)模拟5个用户5s内启动完成
(3)模拟2个用户各循环3次
(4)模拟2个用户运行5s
(5) 模拟2个用户等待5s后开始执行,持续时间2s
(6)案例分析:
相同点:从请求数量来说,完全相同
不同点:场景不同
a.如何配置来发送http请求?
发送 GET 请求(请求参数在路径中 ):
URL协议:协议、服务器域名或IP、端口、方法(GET)、路径、编码格式
参数 :
发送POST请求(请求参数在消息体数据中):
URL:协议、服务器域名或服务器域名或IP、端口、方法(POST)、路径、编码格式
参数:
b.重定向
GET https://www.baidu.com/s
HTTP请求的响应数据和HTTP请求-1的响应数据一样
重定向的原因分析 :
第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径
需要修改取样结果的编码格式->修改jmeter.properties文件:
# The encoding to be used if none is provided (default ISO-8859-1)
sampleresult.default.encoding=UTF-8