一级目录Jmeter和Loadrunner
Loadrunner:工业级的性能测试工具,可以模拟大量用户,并监控性能指标提供报表。
优势:
· 支持的用户量大
· 详细的分析报表
· 支持iP欺骗
缺点:
· 收费
· 体积大
· 无法定制功能
Jmeter:性能测试工具,Jmeter软件的功能与Loadrunner基本一致
优点:
·免费开源
·体积小
·可扩展的组件
缺点:
·不支持P欺骗
·分析和报表能力比Loadrunner弱
选择jmeter的原因:
· Jmeter免费
· Jmeteri能提供的功能与loadrunner基本一致,能满足绝大多数的性能测试需要
二级目录Jmeter
Jmeter环境搭建:
(1)安装DK
· 下载(注意选择操作系统对应的位数32/64)
· 安装(一键式)
· 配置环境变量
验证:iava-version
(2)安装meter
· 下载(注意下载的版本与JDK版本的对应关系)
· 安装(解压缩)
· 配置环境变量
· 验证:
双击Jmeter.bat
执行:Java-jar ApacheMeter.jar
1.Jmeter文件目录介绍
1.1 bin目录:存放可执行文件和配置文件
1.2 docs目录:是JMeter的pi文档,可打开api/index.html页面来查看
1.3 printable_docs目录
· printable docs的usermanual子目录下的内容是JMeter的用户手册文档
· usermanual下component_reference.html是最常用到的核心元件帮助文档。
提示:printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考
component reference.html:是最常用到的核心元件帮助文档。
1.4 lib目录
该目录用来存放JMeter依赖的jar包和用户扩展所依赖的jar包
2.元件的基本介绍
元件:多个类似功能组件的容器(类似于类)。
常见的元件类型有:
1.取样器
2.逻辑控制器
3.前置处理器
4.后置处理器
5.断言
6.定时器
7.测试片段
8.配置元件
9.监听器
组件:实现独立的某个功能(类似于方法)
2.1 元件作用域
作用域的原理:
按照jmeter测试计划的树形结构来定义作用域(有点类型python的缩进)
作用域的原则:
· 取样器是Jmeter的核心,不作用于其他的组件
· 逻辑控制器,只对子节点起作用
· 对于其他的组件,
。如果父节点是取样器的话,则只对父节点起作用,
。如果父节点不是取样器的话,则对父节点下的所有组件起作用
三级目录线程组
1.JMeter第一个案例
需求:使用JMeter访问百度首页接口,并查看请求和响应信息
操作步骤
1.启动JMeter
2,在”测试计划下添加‘线程组“
3,在”线程组”下添加“HTTP请求”取样器
4.填写“HTTP请求”的相关请求数据
5在“线程组”下添加“察看结果树”监听器
6,点击”启动“按纽运行,并查看结果
2
3
4
5
6
2.线程组特点
· 模拟多人操作
· 线程组可以添加多个,多个线程组可以并行或串行
如下图,“独立运行每个线程组”勾选,则所有的线程组按照添加顺序串行执行;
如果未勾选,则并行执行(先后顺序无法保证)
· 取样器(请求)和逻辑控制器必须依赖线程组才能使用
· 线程组下可以添加其他元件下组件
线程组的分类
普通线程组:用于发送业务请求的线程组(受并行、串行配置的影响)
setup线程组:在所有的线程组之前执行(不受并行、串行配置的影响)
teardown:在所有的线程组之后执行(不受并行、串行配置的影响)
线程组的属性:
线程数:需要模拟的虚拟用户数。
ramp-up time:模拟的虚拟用户数全部启动所需要的时间。
·目的:为了模拟性能测试的场景,更接近用户的使用习惯(用户慢慢接入系统)
循环次数:
· 设置为固定次数n时:脚本运行时发送请求的次数为n
· 设置循环次数为“"永远”时,脚本会一直运行下去,不停止
调度器:
· 一般与循环次数为“永远"的设置配合使用
· 持续时间设置为时:脚本的请求发送的时间为n秒
调度器:
· 一般与循环次数为“永远"的设置配合使用
· 持续时间设置为n时:脚本的请求发送的时间为n秒
· 延迟启动设置为n时:脚本的请求发送在等待n秒后再进行。
延迟创建线程直到需要:当启动线程发送请求时,才分配资源;如果暂未启动该线程,则不分配。如果不勾选,在jmeter点击运行时立即分配(使用不多,了解即可,无法观察效果)
线程数m和循环次数n的关系:
· 如果同时配置,实际发送的HTTP请求数应该为m✖n
· 虽然发送请求的次数相同,但是不能相互替换
线程数:代表并发用户数,体现服务器的负载品
循环次数:代表执行时间
HTTP请求
案例1 发送请求时:
· 协议未填写,则默认为HTTP协议
· 端口未填写,则默认为80端口
· 将GET请求参数放在路径中填写
案例2:发送get请求时
· 协议选择HTTPS,
· 端口号为443
· 将GT请求参数放在下面的参数列表中进行填写
案例3:发送post请求时
· 方法选择POST
· 将参数内容放入到消息体数据中,在发送时参数会添加到消息体中发送
查看结果树