文章目录
1.jmeter下载与安装
1.1 配置jdk环境
1.2 官网下载jmeter,解压压缩包,在bin目录下双击jmeter.bat文件即可打开jmeter
2.jmeter环境介绍
2.1 jmeter体系结构
1.【取样器】–sampler:
取样器用来模拟用户操作,向服务器(被测试系统)发出http请求、Java请求等。可以把http请求元件看成一个没有界面的浏览器,可以发送http请求,接受服务器的响应数据。
取样器中的元件基本涵盖了常见的各种协议。
取样器访问路径:【测试计划】–>【线程组】–>【Sampler】
2.【断言】
断言用来验证结果是否正确,就是用一个预设结果(值、表达式、时间长短等条件)与实际结果匹配,匹配到则成功,反之则失败;比较常用的断言为响应断言。
断言元件有13个,常用的是响应断言,复杂断言可通过BeanShell脚本来完成(BeanShell是类Java的脚本语言,实际上是一个小巧的Java源码解释器,可以直接调用Java程序)。
断言访问路径:【测试计划】–>【断言】
3.【监听器】
监听器是用来收集测试结果,jmeter的监听器有两个任务:
(1)添加结果监听,并且可以保存测试结果到文件,这些结果数据可以供再次分析使用;
(2)展示结果,可以以表格及图形的形式展现结果,方便测试人员分析测试结果。
常用的监听器:
查看结果树:可以查看请求与响应的数据
断言结果:可以查看断言成功/失败
聚合报告:以表格形式展示取样器结果,主要展示执行次数、响应时间、出错率、吞吐量等信息。
jmeter监听器共有19个元件,访问路径:【测试计划】–>【监听器】
【取样器】+【断言】+【监听器】组合可以实现发送请求、验证结果、记录结果。
4.【前置处理器】
使用前置处理器做一些环境或参数的准备工作,如对数据库进行操作前先链接数据库,设置用户参数等。
访问路径:【测试计划】–>【前置处理器】
5.【配置元件】
配置元件为sampler提供预备数据,然后由sampler发出请求。jmeter的参数化可以通过配置元件来完成,如:使用CSV Data Set Config从文件中读取测试数据,使用众多函数生成动态数据等。
访问路径:【测试计划】–>【配置元件】
6.【后置处理器】
后置处理器用来处理服务器返回结果,比如服务器返回的sessionID等。jmeter的关联就是使用后置处理器对响应数据做处理。
7.【控制器】
即逻辑控制器,各种逻辑控制器组合在一起可以完成各种场景需求。如循环控制器,if控制器等。
访问路径:【测试计划】–>【线程组】–>【逻辑控制器】
8.【定时器】
使用定时器可以模拟请求同时或延迟发送场景,不同定时器代表了不同的功能,基本能够满足所有场景。
9.【线程组】
性能测试时模拟大量用户负载情况,通过设置运行的线程数来实现,一线程一用户,还可设置运行时长,定时运行等。
10.【Test Fragment】
这是一个辅助组件,此节点下可以放置几乎任何jmeter元件,但它一般不会被运行,这个组件的作用:
(1)在脚本看法过程中可以用来备份元件
(2)Test Fragmen下的元件可以被模块控制器调用,可以利用它来模块化请求供模块控制器调用(类似开发业务封装的一个方法)
2.2 jmeter运行原理
通过线程模拟真实用户对服务器的访问压力。
2.3 jmeter测试计划要素
jmeter中的一个脚本即是一个测试计划,也是一个管理单元。
(1)要素一:脚本中测试计划只能有一个
测试计划是根节点,根节点只能有一个。
(2)要素二:测试计划中至少要有一个线程组
jmeter负载是通过线程组驱动的,所以测试计划中至少要出现一个线程组,测试计划中可以建立多个线程组,把不相关的业务分布在不同的线程组。
(3)要素三:至少要有一个取样器
测试的目的是模拟用户请求,没有取样器脚本就没有意义。
(4)要素四:至少有一个监听器
测试结果用来衡量系统性能,需从测试结果来分析系统性能。
3.简单实例
3.1 添加线程组
右键点击“测试计划”–>“添加”–>“Threads(Users)”–>“线程组”,在线程组配置线程组名称、线程数、准备时长、循环次数、调度器等参数;
参数详解:
1.在取样器错误后要执行的动作
(1)继续:继续执行接下来的操作;
(2)start next thread loop:忽略错误,执行下一个循环;
(3)停止线程:退出该线程(不再进行此线程的任何操作);
(4)停止测试:等待当前执行的采样器结束后,结束整个测试;
(5)Stop Test Now:直接停止整个测试。
2.线程属性:
(1)线程数:虚拟用户数,一线程一用户;
(2)Ramp-Up Period(in seconds)准备时长:达到指定线程数所需要的时间。如果线程数为10,准备时长为2,每秒启动的线程数=线程数10/2=5;
(3)循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 ;
如果勾选了“永远”,那么所有线程会一直发送请求。
(4) Delay Thread creation until needed:直到需要时延迟线程的创建。 大致意思是,当线程需要执行的时候,才会被创建;如果不选择此选项,那么在计划开始的时候,所有需要的线程都被创建好了。
3.调度器:
调度器是设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远) ;需要在调度器复选框被选中的前提下,调度器配置才会生效
(1)持续时间(秒):测试持续时间,从某个开始时间算起,执行设置的时间后结束,会覆盖结束时间
(2)启动延迟(秒):测试延迟启动时间,手动点击开始执行计划,然后延迟N秒后,计划才真正开始执行,会覆盖启动时间
(3)启动时间:当点击开始测试时,将等到此处填写的启动时间,然后真正开始测试。
(4)结束时间:当开始测试时,将等到指定的开始时间开始测试,然后会停在此处填写的时间点结束。
3.2 添加http请求
右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”
参数详解:
1.web服务器
(1)服务器名称或IP:http请求发送的目标服务器名称或IP,比如www.baidu.com
(2)端口号:目标服务器的端口号,默认值为80,可空
2.HTTP请求
(1)协议:向目标服务器发送http请求时的协议,http/https,大小写不敏感,默认http
(2)方法:post/get
(3)Content encoding:内容的编码方式,一般为utf-8,可空
(4)路径:目标的URL路径(不包括服务器地址和端口)
(5)参数:在请求中发送的参数,每一行为一个参数(name=value),参数中传入中文是要勾选“编码”。
3.3 添加查看结果树
右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
3.4 添加用户自定义变量
添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”
(简单的参数化,后续会学习其他方式进行参数化)
新增一个参数wd,存放搜索词:
参数使用格式:${}
3.5 添加断言
添加 响应断言:右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”
添加 断言结果:右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”
断言结果查询: