IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Jmeter基础 -> 正文阅读

[开发测试]Jmeter基础

Jmeter

1、中英文切换
主要切换配置在bin目录下的jmeter.properties文件,将该文件中内容进行修改,修改后保存再启动

#language=en
修改成:
language=zh_CN

2、threads(users)

  • thread Group
    • 在这里插入图片描述
  • setUp thread Group
  • teardown thread Group

3、NON-TESTELEMENTS

  • HTTP Mirror Server(HTTP镜像服务)
  • HTTP(s) Test Script Recorder (HTTP(s)测试脚本记录器,HTTP代理服务器)
    • 在这里插入图片描述
    • Target Controller
      • Use Recording Controller 使用录制控制器
      • Test Plan>HTTP(S) Test Script Recorder 测试计划>HTTP代理服务器 ★
    • Grouping
      • Do not group samplers 不对样本分组
      • Add separators between groups 在组间添加分隔
      • Put each group in a new controller 每个组放入一个新的控制器
      • Store 1st sampler of each group only 只存储每个组的第一个样本
      • Put each group in a new transaction controller 将每个组放入一个新的事务控制器中
  • Property Display (属性显示)

3、Listener

  • View Results Tree 查看结果树
  • Summary Report 汇总报告
  • Aggregate Report 聚合报告
  • Backend Listener 后端监听器
  • Aggregate Graph 聚合图标
  • Assertion Results 断言结果
  • Comparison Assertion Visualizer 比较断言可视器
  • Generate Summary Results 生成概要结果
  • Graph Results 图表结果
  • JSR223 Listener JSR223监听器
  • Mailer Visualizer 邮件观察仪
  • Response Time Graph 响应时间图表
  • Save Responses to a file 保存响应到文件
  • Simple Data Writer 简单数据写入
  • View Result in Table 用表格查看结果
  • BeanShell Listener Bean Shell 监听器

jmeter录制

1、http(s)代理服务器
2、线程组
3、录制控制器
在1中选择端口,录制的到什么控制器,然后开始录制,这边需要设置电脑的代理端口与jmeter在1中设置的端口一致

badboy

可以通过badboy在badboy里面进行页面操作,导出成jxm文件,再通过jmeter导入,不过badboby只支持IE,对于那些需要支持谷歌浏览器的行不通

Jmeter专业组件介绍

1、Jmeter组件(元素)

Jmeter 线程组

线程组:每个测试需求的必备组件,是用来模拟用户并发的组件。JMeter 的每个任务都是用线程来处理的。

  • 1、线程数:请求并发的数量

    • setUp 可以用来做用户创建,teardown可以用来做用户清理的工作(删除测试用户等等)在这里插入图片描述
    • 在取样器发生错误后执行动作
      在这里插入图片描述
  • 2、Ramp-Up Period(in seconds):在多少秒内创建线程数中定义的所有线程。每秒并发数 = 线程数/RUP 这里就是计算并发数,在于多少秒内创建所定义好的线程量,每秒的并发数就在线程数和RUP上进行计算

  • 3、循环次数:表示每个线程执行多少次请求;勾上永远,表示如果不停止或者限定时间将会一直执行下去, 是为了方便调度器的调用

  • 4、调度器:勾选后,启动延时,持续时间才可编辑

  • 5、持续时间:表示脚本持续运行的时间,以秒为单位,比如如果你要让用户持续不断登录1个小时,你可以在文本框中填写3600,这边需要把循环次数的永久勾上,转成持续时间,如果再循环次数做了限制,这边的持续时间就没有意义

  • 6、启动延迟:表示脚本延迟启动的时间,在点击启动后,如果启动时间已经到达,但是还没有到启动延迟的时间,那么,等到启动延迟的时间到达后,再运行系统(就是启动后需要等待的时间,或者说到这个进程时需要等待的时间,这边需要配合持续时间)

Jmeter 线程组2(Stepping Thread Group)

在这里插入图片描述
This Group will start 100 threads:本次测试100个线程。
First , wait for 0 seconds:延迟0秒开始执行测试
Then start 0 threads;从0个线程开始持续增加(一般设置为0个)
Next,add 10 threads every 30 seconds:每增加10个线程后都会运行30s,再起余下的10个线程,再运行30s,以此类推,这是增加的线程以及现有的线程持续跑的时间
Using ramp-up 5 seconds:前面每起10个线程的时候花30s,与上面结合起来即5s内起10个线程,运行30s,然后再5s内再起10个线程,再运行30s,以此类推。
Then hold load for 60 seconds. :全部的线程起来后,运行60s 后开始停止。
Finally , stop 5 threads every 1 seconds:最后停止线程,5个线程停一次,等1s再停5个线程。

步骤:右键测试计划->添加->监听器->jp@gc - Active Threads Over Time
完整添加HTTP Request后,点击运行测试,查看Active Threads Over Time运行结果。可查看线程陆续启动的曲线,到达设置的最大线程数后,将持续运行设置的时间,到达设置的持续时间后,陆续结束进程。

Jmeter 中的sampler(取样器)

取样器(Sampler)是性能测试中向服务器发送请求,JMeter 原生支持多种不同的sampler如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。在Jmeter的所有Sampler中,Java Request Sampler是可定制的Sampler。
在这里插入图片描述

测试片段

测试片段要配合模块控制器,作用是吧一些较复杂的测试形成测试片段,通过模块控制器控制执行哪些片段
在这里插入图片描述

非测试元件

HTTP代理服务器app接口请求
在这里插入图片描述
HTTPS请求需要安装证书,证书在jmeter的bin录下,需拷贝到手机内安装即可。
在这里插入图片描述

2.取样器

Dummy Sampler

Response Code (eg 200):响应码200
Response Message (eq OK):响应信息ok
Connect Time (milliseconds):连接时间(毫秒)
Latency (milliseconds):延迟时间(毫秒)
Response Time (milliseconds):响应时间(毫秒)
Simulate Response Time (sleep):模拟响应时间
Request Data:请求数据
Response Data:响应数据
在这里插入图片描述
类似在服务没有开发完全前,模拟的一个mock,可供后续测试进行
配合查看结果树,即可查看请求及响应的内容:
在这里插入图片描述
在这里插入图片描述

Debug Sampler(调试取样器)

Debug Sampler 会把我们自定义的变量输出在 response data 中,方便我们调试的时候使

在这里插入图片描述

Java request(java 请求)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.逻辑控制器

逻辑控制器,包括两类,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、switch Controller 、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 吞吐量控制器。修改
在这里插入图片描述

ForEach逻辑控制器

通常配合用户自定义变量来使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述看一下实际效果:这边是定义在请求头
可以发现这边是通过这个来实现执行的次数(线程组本身只有1)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

While控制器

  • 跟本身的名称一样,判断是否为True,当为False的时候停止执行。
  • 为空(不输入任何值) – 直到某次请求执行失败才退出循环
  • LAST – 直到最后一个请求请求失败才退出循环
  • 其它 – 条件值等于"false"时(条件内容为“false”同理),退出循环
    例如:
${value} == 10  #当变量value不等于10时,退出循环
${__javaScript(${count}<A&& ${code}=="B")}  #满足 count<A 且 code==B 继续循环,否则退出循环 

判断BooleanValue是否为False,结合配置元件->CSV数据文件设置,每次获取csv文件的值,当等于false时退出循环。

在这里插入图片描述
注意,这时候CSV要放在While控制器下面,如果放在While之前,就会出现获取csv数据后进行while判断,如果第一次是TRUE的话,就会一直循环,正确的应该是csv配置放在while下,每次while获取一次csv数据。
在这里插入图片描述

通过函数助手来计算次数
在这里插入图片描述

循环控制器

这边的设置的次数是针对子节点整个循环,是可以对线程的次数相乘的
如:线程循环次数是2,循环控制器也是2,同时这边的ForEach控制器的遍历的是3个值,执行次数就是2X2X3 =12
在这里插入图片描述

事务控制器

勾选了 generate 之后,事务控制器下的所有 sampler 在结果树中都会被归入一个模块。
并且在聚合报告中,这些 sampler 的响应数据会被汇总
在这里插入图片描述

Jmeter 中的定时器

不同操作请求间的等待时间,还具有类似的集合点,比如多个线程陆续执行完前置操作后,到集合点等待执行并发操作
定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。 JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
在这里插入图片描述

Jmeter 中的前置处理器和后置处理器

在前置处理器中去编辑用户的参数化,还有正则等等,数据准备
前置处理器用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID ;如参数设置。
在这里插入图片描述

后置处理器是用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器,则可以提取响应数据中通过正则表达式获得的数据
在这里插入图片描述

Jmeter 中的断言

一般使用响应断言Response Assertion
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
在这里插入图片描述

4.前置处理器

5.后置处理器

JSON提取器

在这里插入图片描述
模拟的json响应内容:

{"msg":"登录成功!",
	"result":[
		{"username":"hy",
		"password":"123456a"},
		{"username":"hy2",
		"password":"123456b"}
		],
	"element":[
		{"ele":"ele1"},
		{"ele":"ele2"},
		{"ele":"ele3"}
		]
}
$.key 匹配单层key,例如这边msg,$.msg,匹配内容为:登录成功!
但要匹配username的内容,则需要$..name,表示匹配所有内容的name,返回就有“变量名_1”= hy 和 “变量名_2” = hy2
$.result[*].username[0]; 在单层的result下查找username,以username为key获取value值,"hy"
$.result[1].password; 在单层result下排除第一位,下的password值,"123456b"
$..[?(@.ele== "ele1")]  返回ele== "ele1"所在的list数据
$.element[2] ,表示顺序去index+1条数据,这边是第3条数据
$.element[:2], 正序取index条数据
$.element[2:],
$.element[-3], 范围"ele":"ele1" 
$..[?(@.username)] ,获取含username的所有节点,
	1.{"password":"123456a","username":"hy"}
	2.{"password":"123456b","username":"hy2"}

这边结合java请求来对上述JSON提取的内容进行返回

$.result[*].username;$.result[*].password;$.result[*].null

在这里插入图片描述

正则表达式提取器

1、主体:响应报文的主体
2、Body(unescaped):主体,是替换了所有的html转义符的响应主体内容,注意html转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用
3、Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能
4、Response Headers:信息头,即响应头
5、Request Headers:请求信息头
6、URL:请求url
7、Response Code:响应状态码,比如200、404等
8、Response Message:响应信息
在这里插入图片描述

  • 引用名称:

后续使用该变量时即:${引用名称}

  • 正则表达式:

如图的:set-Cookie:(.?);
以set-Cookie开头,以;结尾,匹配()里的内容
左边界(.
?)右边界,左右边界就是为了能准确定位到想匹配的内容,(.*?) 是替换了想要提取的内容
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。

  • 模板(Template):

正则表达式的提取模式。
如果正则表达式有多个提取结果,则结果是数组形式,模板 1 1 1 2 2 2等等,表示把解析到的第几个值赋给变量;从1开始匹配,以此类推。若只有一个结果,则只能是 1 1 1

  • 缺省值:匹配失败时候的默认值;
  • 匹配数字:正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值(比如1代表取第一个值),负数则表示提取所有符合条件的值。

结果状态处理器(Result Status Action Handler)

它允许用户在相关的请求(取样器)失败时,停止线程或停止测试等多种方式。
在这里插入图片描述
Break Current Loop:跳出当前循环
go to the next iteration of current loop:进入当前循环的下一个迭代

6.配置元件

配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池(Data Pool),而对应于 HTTP 信息头管理器 的配置则可以设置请求的数据类型格式。记录数据返回。
在这里插入图片描述

CSV数据文件设置

这里设置一个简易的demo来进行数据获取
如下配置,即每次执行时会获取一个数据,数据本身通过“,”隔开,接到逻辑控制器的While循环配合使用。逻辑控制器->While控制器
在这里插入图片描述
在这里插入图片描述

HTTP Cookie管理器

Cookie管理器可默认配置,在进行一次请求后会获取当前请求的cookie值并用于后续的请求。
例如图中有2个HTTP请求,当添加了HTTP Cookie管理器后,第一次请求完Cookie管理器会收集第一次请求的Cookie,并在第二次请求中使用。
在这里插入图片描述

HTTP信息头管理器

在这里插入图片描述
常用的消息头:
Accept:text/htmil,application/xhtml+xml,application/xml:a=0.9,image/webp,image/apng,/:q=0.8
Accept-Encoding:gzip,deflate,br
Accept-Language:zh-CN,zh;q=0.8
Coonection:keep-alive
User-Agent:Mozilla/5.0 (Windows NT 6.1; WoW64) AppleWebKit/537.36(kHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36
Content-Type(请求的与实体对应的MIME信息,使用Content-type来指定不同格式的请求信息):
1.application/x-www-form-urlencoded : form表单数据被编码为keyvalue格式发送到服务器(表单默认的提交数据的格式)
2.mutipart/form-data :需要在表单中进行文件上传时,就需要使用该格式
3.application/json : JSON数据格式

JDBC Connection Configuration

需要装mysql-connector-java-5.1.47.jar到lib/目录下
在这里插入图片描述
https://downloads.mysql.com/archives/c-j/
在这里插入图片描述
在这里插入图片描述

  • Variable Nam
    数据库连接池的名称,因为一个测试计划可以有多个 JDBC Connection Configuration,每
    个可以取不同的名称。在 jdbc request 中通过这个名称选择合适的连接池进行使用。
  • Connection Pool Connetion:连接池参数配置,基本保持默认,根据需要进行修改;
  • Max Number of Connections: 最大连接数;如果做性能时,建议填 0,如果默认为 10,
    最大只能连接 10 个线程;
  • Max Wait(ms):最大等待时间,单位毫秒;
  • Time Between Eviction Runs(ms):有空闲的线程数,释放不使用的线程;
  • Auto Commit:自动提交,默认为 true,如修改数据库时,自动 commit;
  • Transaction isolation:事务隔离(默认);
    事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
    【TRANSACTION_NODE 事务节点 、
    TRANSACTION_READ_UNCOMMITTED 事务未提交读、
    TRANSACTION_READ_COMMITTED 事务已提交读 、
    TRANSACTION_SERIALIZABLE 事务序列化 、
    DEFAULT 默认、
    TRANSACTION_REPEATABLE_READ 事务重复读、
  • Connection Validation by pool:验证连接池;
  • Test While idle:处于测试空闲
  • Soft Min Evictable Idle Time(ms):
  • Validation Query: 验证查询,建议selcet 1
  • Database Connection Configuration:数据库连接配置:
  • Database URL:数据库连接 url;jdbc:mysql://localhost:3306/dbname,ipaddr:3306
  • JDBC Driver class:数据库驱动;com.mysql.jdbc.Driver
  • username:用户名
  • password:密码
  • Connection Properties:连接属性

结合JDBC请求来使用
在这里插入图片描述
这个 Sampler 可以通过 sql 语句向数据库发送一个 jdbc 请求,并对获取返回的数据进行
操作。它经常需要和 JDBC Connection Configuration(配置数据库连接的相关属性)一起
使用
Parameter values:参数值
Parameter types:参数类型
Variable Name:数据库连接池的名字,需要与 JDBC Connection Configuration 的 Variable
Name Bound Pool 名字保持一致
Query:填写的 sql 语句
Parameter valus:参数值
Variable names:保存 sql 语句返回结果的变量名
Result variable name:创建一个对象变量,保存所有返回的结果
Query timeout:查询超时时间
Handle result set:定义如何处理由 callable statements 语句返回的结果

随机变量(Random Variable)

每执行一次线程会获取一次变量数据
如下就是生成1~20的一个变量,以random输出
在这里插入图片描述

计数器

可配合循环控制器来使用,在循环中进行计数
在这里插入图片描述
在这里插入图片描述

7.断言

断言,作为顺序执行的倒数第二个,为监听器之前执行。常用响应断言。

响应断言

包括:响应内容包括需要匹配的内容就算成功。
匹配:响应内容要完全匹配内容,不区分大小写。
相等:就是完全等于响应的内容。
在这里插入图片描述

断言持续时间

约定响应时间,响应时间如果超出约定,则断言为失败
在这里插入图片描述

8.监听器

这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。
在这里插入图片描述

查看结果树

Thread Name: 线程组名称
Sample Start: 启动开始时间
Load time: 加载时长,这个时间是我们测试常用的时间,也是整个请求的消耗时间,从
发送到接收完成全程消耗的时间
Latency: 等待时长,不常用,表示从请求发送到刚开始接收响应时的时间
Size in bytes: 发送的数据总大小
Headers size in bytes: 发送头大小
Body size in bytes: 发送数据的其余部分大小
Sample Count: 发送请求数统计
Error Count: 交互错误统计
Response code: 返回码
Response message: 返回信息
Response headers: 返回的头部信息
在这里插入图片描述

断言结果

会展示所有断言的结果
在这里插入图片描述

PerfMon Metrics Collector(监控服务器)

用于监听服务器的资源情况,需要安装插件来启用该插件,还需要在服务器上安装服务器监控插件。
将 ServerAgent-x.x.x.zip 解压后放在需要监控的服务器上,并执行
chmod 777 startAgent.sh 可能需要root权限
./startAgent.sh 执行

服务器执行的时的相关命令:
服务器上可以修改默认端口:./startAgent.sh -–udp-port XXXX -–tcp-port XXXX
防火墙上的端口需要开放

监控器配置IP/端口,需要有一个输出的文件
xxx.txt 内容可如下编辑

<?xml version="1.0" encoding="UTF-8"?>
<testResults version="1.2">
</testResults>

在这里插入图片描述

AutoStop Listener (自动停止监听器)

  • average Response Time is greater than 10000ms for 10 seconds :连续 10s平均响应时间大于10000ms 停止测试。
  • average Latency is greater than 5000ms for 10seconds :连接 10s 平均等待时间大于 5000ms 就停止测试。
  • Error Rate is greater than 50% for 10 seconds :10s 内错误率一直高于 50%就停止测试。

在这里插入图片描述

Bytes Throughput Over Time(不同时间吞吐量展示,按字节展示)

在这里插入图片描述

9、组件顺序

在同一作用域名范围内(不考虑逻辑控制器),测试计划中的元件按照如下顺序执行。

  1. 配置元件(config elements)
  2. 前置处理程序(Per-processors)
  3. 定时器(timers)
    定时器是对每个采样器的间隔还有首个采样器的间隔,如果这个定时器是放在某个采样器下面的,那么是对这个采样器进行作用的
  4. 取样器(Sampler)
  5. 后置处理程序(Post-processors)
  6. 断言(Assertions)
  7. 监听器(Listeners)

10、解决响应的乱码问题

方式一:
添加一个后置处理器BeanShell 后置处理程序

prev.setDataEncoding("UTF-8");

加完之后再查看响应结果就不会乱码了,可以把BeanShell加在整个过程中在这里插入图片描述
方式二:
永久性解决:
在Jmeter的bin目录下找到Jmeter.properties
重启之后就可以生效了
在这里插入图片描述

11、Jmeter属性

1.JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性
2.JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。
3、JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值。
4、JMeter属性可以通过_setProperty 函数来定义JMeter属性
5、JMeter属性是大小写敏感的
创建函数
在这里插入图片描述
在这里插入图片描述
函数1:__setProperty
在这里插入图片描述
生成之后,在Jmeter属性栏就会出现名称带有kkk的属性
属性可以运用在全局
函数2:___p
匹配函数名称,如果所匹配的函数具有默认值取默认值,

12、Jmeter变量

定义方式一:
测试计划模块时可以定义变量的
在这里插入图片描述

1、JMeter变量对于测试线程而言是局部变量。
2、在不同测试线程中,JMeter变量既可以是完全相同的,也可以是不同的。
3、JMeter变量引用方法:${name}
4、JMeter变量是大小写敏感的
5、如果有某个线程更新了变量,那么仅仅是更新了变量在该线程中复制的值
6、Jmeter中定义变量的地方:
  a) 在样本中添加同请求一起发送的参数。根据服务器设置的数据类型,来添加不同类型的参数
在这里插入图片描述
 b) 线程组,右键选择 配置元件( config element)–>User Defined Variables
在这里插入图片描述
7、Jmeter中的变量
变量定义:可以是具体的值,也可以是函数(函数可自动生成:选项-函数助手对话框)

13.Jmeter常用术语

性能指标

负载: 对被测系统不断施压,直到性能指标超过预期或某项资源使用达到饱和,验证系统的处理极限,为系统性能调优提供依据。

并发:
①狭义并发:所有用户在同一时间点进行同样的操作,比如1000个用户同时登陆。
②广义上的并发:多个用户与系统发生了交互,这些业务场景可以是相同的也可以是不同的,交叉请求和处理多。

压力: 系统在饱和状态下(CPU\内存等饱和),能够处理会话的能力,以及系统是否会出现错误。
特点:主要目的是检查系统处于压力情况下应用的性能表现,重点在于有无出错信息产生,系统响应时间等。

响应时间: 响应时间是“对请求作出响应所需要的时间”
一种是展现的时间,一种是系统响应时间,用户感受到的是展现时间,取决于客户端接收到响应数据后呈现到页面所消耗的时间,而系统响应时间是指从请求发出开始到客户端接收到数据所消耗的时间。

性能曲线图
性能平坦区域:在不进行更多性能调优情况下所能期望达到的最佳性能
压力区域:性能轻微下降的区域
拐点区域:性能开始急剧下降的区域

吞吐量
在性能测试过程中网络上传输的数据量的总和。在单次业务中,客户端与服务器端进行的数据交互总量
红色:每秒接收字节数
蓝色:每秒发送字节数
在这里插入图片描述
吞吐量的三个基本面 ,说明了系统的负载能力
1 是上升阶段,吞吐量与负载成正比,面积越大性能越强
2 是平稳阶段,吞吐量随负载保持稳定,面积越大系统越稳定
3 是下降阶段,吞吐量与负载成反比,面积越大系统容错性越强
对交互式应用来说,吞吐量指标反映服务器承受的压力,容量规划的测试中它能够说明系统级别的负载能力

吞吐率
吞吐量/传输时间,即单位时间内网络上传输的数据量,也可以指单位时间内处理客户请求数量,它是衡量网络性能的重要指标。
通常情况下,吞吐率用“字节数/秒”来衡量,当然,也可以用“请求数/秒”和“页面数/秒”
来衡量。Jmeter 提供了两种不同的图形来展示。

TPS
Transaction Per Second:每秒事务数,指服务器在单位时间内(秒)可以处理的事务数量,一般以 request/second 为单位;

QPS
Query Per Second:每秒查询数,有点类似TPS,表示每秒查询响应的数量,指服务器在单位时间内(秒)处理的查询请求速率;
Response Time:响应时间,指一个事务花费多长时间完成;细分还有最小最大响应时间,50%、90%用户响应时间等。

资源指标

CPU 使用率
指用户进程与系统进程消耗的CPU时间百分比,如果该值持续超过95%,表明CPU处于瓶颈。
cpu瓶颈征兆:
1、响应时间很慢(slow response time)
2、CPU 空闲时间为零(zero percent idle CPU)
3、过高的系统占用 CPU 时间(high percent system CPU)
4、过高的用户占用 CPU 时间(high ercent user CPU)
5、长时间的有很长的运行进程队列(large run queue size sustainedover time)

内存利用率
内存利用率 = (1-空闲内存/总内存大小)*100%,一般至少有10%可用内存。如果该值偶尔走高,表明当时有线程竞争内存。如果持续走高,则内存可能是瓶颈,也可能是内存访问命中率低。
内存瓶颈征兆:
1、进程进入不活动状态;
2、交换区所有磁盘的活动次数很高;
3、很高的CPU利用率;
4、内存溢出(out of memory errors)

磁盘I/O
磁盘主要用于存取数据,因此说道IO操作的时候,会存在两种相对应的操作,存数据的时候对应的是写IO,取数据的时候对应的是读IO,一般使用%Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。
如果该参数一致很高,表名I/O有问题,可以考虑更换更快的硬盘系统。
磁盘瓶颈征兆:
1、过高的磁盘利用率(high disk utilization)
2、太长的磁盘等待队列(large disk queue length)
3、等待磁盘 I/O 的时间所占的百分率太高(large percentage of timewaiting for disk I/O)
4、太高的物理 I/O 速率:large physical I/O rate(not sufficient initself)
5、过低的缓存命中率(low buffer cache hit ratio(not sufficient initself))
6、太长的运行进程队列,但 CPU 却空闲(large run queue with idleCPU)

网络带宽
一般使用计数器 Bytes Total/sec 来度量,其表示为发送和接收字节的速率,包括帧字符在内;判
断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较

系统指标

并发用户数
单位时间内与系统发生交互的用户数;

在线用户数
某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求;

平均响应时间
系统处理事务的响应时间的平均值;事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间;

事务成功率
性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、提交操作均可定义为事务,单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般以事务成功率来度量;

超时错误率
主要指事务由于超时或系统内部其它错误导致失败占总事务的比率;

注意事项

在jmeter使用过程中,我们可以通过界面化的内容去进行一个配置,但实际执行尽量用命令行来节省资源,可以把结果保存在一个日志里面,然后再把这个日志内容拿出来分析,展示和保存这个消耗的资源是不一样的。

在遇到302这种会进行自动重定向
在这里插入图片描述
获取请求后的图片在这里插入图片描述


cookie获取
配置元件-
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:28:03  更:2021-11-18 11:28:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:23:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码