Jmeter测试学习笔记

第一章 jmeter基础知识

一.Jmeter工具中的组件

1.测试计划:Jmeter测试的起点。容器。

2.线程组:代表一定的用户

3.取样器:发送请求的最小单元

4.逻辑控制器:处理请求逻辑

5.前置处理器:请求之前的操作

6.后置处理器:请求之后的操作,可以用来进行数据提取

7.断言:判断请求结果是否正确

8.定时器:延迟请求

9.配置元件:配置请求

10.监听器:收集测试结果

二.组件作用域

下面这三个在配置元件中是默认一般必须存在的。

结论1:组件能作用于同级组件

结论2:组件能作用于同级组件下的子组件

结论3:组件能作用于父组件

三.目前市面上的接口

1.基于webservice的协议接口,使用xml来传输数据

2.基于dubbo的协议接口,使用json来传输数据

3.基于http的协议接口,使用json来传输数据

四.Jmeter接口测试实战

接口关联

1.正则表达式提取器

 1)变量名:可以随意定义

2)正则表达式,要包括有左边界和右边界以及(.*?),而且必须唯一

3)$1$ 表示取第一个正则,$2$表示取第二个正则

4)匹配数字,表示取第一个匹配到的值

5)默认值,没有匹配到就使用默认值

2.Json提取器

jsonpath的语法规则:只适用于json数据

{"name":"11","code":"code11"}

$代表根目录

.代表子节点

$.name          $.code

$.*:代表将根目录下的所有子节点值的获取

3.取数组的值通过 [下标],下标从0开始

1.变量名

2.是json path表达式

3.匹配数字,表示取第一个匹配到的值

4.默认值,没有匹配到就使用默认值

四.接口断言

常用的断言有:响应断言,json断言,和beanshell断言

1.响应断言

如何校验数据库?

用beanshell来实现

第二章 性能测试

一.性能测试的目的

性能测试是通过性能测试工具(Jmeter,loadrunner)通过特定方式,对系统施加一定的压力;正常,异常负载以及峰值来对系统进行实施压力,得到各项性能指标,保证系统的性能需求。

价值和目的:

1.评估系统的能力

2.识别系统的弱点:瓶颈,弱点

3.检查系统隐藏的问题

4.检验系统的稳定性和可靠性

二.性能测试指标理解透彻以及测算

1.指标

【虚拟用户数】:可以理解成线程,一个线程=一个虚拟用户

【并发数】:指在某一时间,一定数量的虚拟用户同时对系统的某个功能进行交互。一般通过集合点来实现。

【事务】:一个接口,多个接口,或一个流程都可以是事务。事务代表一个完整的功能,有由测试人员决定。一般把一个流程作为一个事务。

【场景】:性能测试的用例,

【响应时间RT】response time,

          平均响应时间:

           中位数:

           90%:从小到大排序,第90位的时间

           95%

           99%

        基准测试:一般设定一个用户请求接口,为200-500ms.

        压力测试:N个用户并发请求接口,一般设置为2s.

【TPS】:是系统的重要性能指标,用于衡量系统在一定时间内能够处理的事务数

transaction

如果一个接口是一个事务的话,TPS的数量=吞吐量

计算公式:总的事务数/总的运行时间=每一秒能完成多少个事务

(1)没有更详细的数据:根据二八定律(80%的事务在20%的时间完成)计算

TPS=(总的事务数*80%)/(总的运行时间*20%)

(2)如果有更详细的数据:根据业务的增长等,分情况计算

【QPS】:每一秒的查询率

【HPS】:每一秒的点击率(客户端的)

【吞吐量】:用来衡量网络成功传输的数据量,单位Byte/s

【资源利用率】:服务器的资源:CPU,内存,磁盘,网络

三.性能测试流程

1.需求的分析以及需求确定(指标值,场景,环境,人员)

2.性能测试计划和方案制定

基准测试:怎么做

负载测试:

压力测试:

稳定性测试:

3.性能测试准备阶段

人力,硬件,软件,环境折算

干净,保持各个版本一致

4.测试执行阶段

脚本生成和增强

场景设计

指标监控

性能瓶颈定位和性能调试

5.测试报告和总结

四.性能脚本的生成以及完善和增强

1.通过jmeter代理服务器录制脚本

 1)设置客户端的代理,

控制面板-> internet选项->连接-> 局域网设置->勾上代理输入jmeter所在电脑的ip个端口8888,  端口一般默认8888,

2)录制脚本

2.完善脚本以及增强脚本

token:一般用于鉴权

jmeter的聚合报告中的吞吐量=TPS

1)逻辑控制器:事务控制器,仅一次控制器,吞吐量控制器

量=TPS

吞吐量控制器:

Based on:

             Percent...:默认,按百分比来分配流量

              Total..:代表总次

2)定时器:尽量少用

3)集合点:在jmeter中叫同步定时器,用于实现并发

4)使用线程组

如下图:

其中线程属性中

线程数:代表虚拟用户数

Ramp -up:代表多久加载完这些线程数

循环数:3,每个线程发送的总请求数:100*3=300个
 

五.Jmeter的插件安装以及监控使用

1.下载一个插件管理包jmter-plugins-manger版本的jar包,放到jmeter的lib/ext的目录下,重启jmeter

六.实际性能压测的场景设置

场景:性能测试用例

一般大部分公司的并发量很难超过500,京东淘宝除外。如果有5000以上,1万,十万,百万一定要做集群。

1.单接口的基准测试:使用一个用户测试接口5分钟

目的:在没有任何压力的情况下,查看各项性能指标。

第三章:压力测试

一.关注哪些参数:

1.响应时间

   135,258原则

2.TPS

每秒通过的事务数

3.错误率

90%的正确率就可以接受,如果是对应的银行,金融的不行,需要有对应的容错机制

4.CPU和内存的使用情况

CPU:占有率最好不超过80%,有20%的空闲

磁盘:读写操作频率不要过高

二.如何设置场景

负载测试:逐步增加并发数

稳定性测试:持续时间确定。查看该时间段内的性能情况

用聚合报告查看压力测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557997.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法课程笔记——pair的使用

先思考&#xff0c;为什么 STL 中的容器和算法都是用的左闭右开区间&#xff1f; | | | 这样迭代器只需要支持和!(或者<或者)操作就可以方便的进行区间遍历了。 其它区间设置的话&#xff0c;要么得支持<操作&#xff0c;要么得在循环体内&#xff0c;操作之前进行!判定。…

Proxmox VE 实现批量增加多网络

前言 实现批量创建多网络&#xff0c;更改主机名称&#xff0c;hosts解析 初始化网卡&#xff0c;主机名称&#xff0c;hosts解析&#xff0c;重启网卡 我的主机六个网卡&#xff0c;使用的有四个网卡&#xff0c;以下一键创建和初始化主机名称我是以硬件的SN号最为主机的名…

【InternLM 实战营第二期作业04】XTuner微调LLM:1.8B、多模态、Agent

基础作业 训练自己的小助手认知 1.环境安装 安装XTuner 源码 # 如果你是在 InternStudio 平台&#xff0c;则从本地 clone 一个已有 pytorch 的环境&#xff1a; # pytorch 2.0.1 py3.10_cuda11.7_cudnn8.5.0_0studio-conda xtuner0.1.17 # 如果你是在其他平台&#x…

[NISACTF 2022]huaji?

注意要加--run-asroot

第四百六十七回

文章目录 1. 知识回顾2. 使用方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"OverlayEntry组件简介"相关的内容&#xff0c;本章回中将介绍OverlayEntry组件的用法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中介绍了Overlay…

高通 Android 12 源码编译aidl接口

最近在封装系统sdk接口 于是每次需要更新aidl接口 &#xff0c;传统方式一般使用make update-api或者修改Android.mk文件&#xff0c;今天我尝试使用Android.bp修改 &#xff0c;Android 10之前在Android.mk文件修改&#xff0c;这里不做赘述。下面开始尝试修改&#xff0c;其实…

CTFHub(web sql注入)(二)

布尔盲注 盲注原理&#xff1a; 将自己的注入语句使用and与?id1并列&#xff0c;完成注入 手工注入&#xff1a; 爆库名长度 首先通过折半查找的方法&#xff0c;通过界面的回显结果找出数据库名字的长度&#xff0c;并通过相同的方法依次找到数据库名字的每个字符、列名…

ROS 2边学边练(29)-- 使用替换机制

前言 启动文件用于启动节点、服务和执行流程。这组操作可能有影响其行为的参数。替换机制可以在参数中使用&#xff0c;以便在描述可重复使用的启动文件时提供更大的灵活性。替换是仅在执行启动描述期间评估的变量&#xff0c;可用于获取特定信息&#xff0c;如启动配置、环境变…

2024年哪一款洗地机好用?四大热门主流机型分享

传统的拖地方式必须是拖一会就得清洗一遍拖把&#xff0c;如果房屋面积大&#xff0c;中途得经历无数次换清水的过程&#xff0c;而且拖地是得频繁得弯腰用力气&#xff0c;顽固的污渍还需要来回反复拖几遍&#xff0c;甚至要蹲下身子手动抹布清洁&#xff0c;真的是费时费力。…

【科研入门】评价指标AUC原理及实践

评价指标AUC原理及实践 目录 评价指标AUC原理及实践一、二分类评估指标1.1 混淆矩阵1.2 准确率 Accuracy定义公式局限性 1.3 精确率 Precision 和 召回率 Recall定义公式 1.4 阈值定义阈值的调整 1.5 ROC与AUC引入定义公式理解AUC算法 一、二分类评估指标 1.1 混淆矩阵 对于二…

脾虚百病生,出现这3种情况,说明是脾虚了,简单2步养出好脾胃~

中医认为脾胃为后天之本&#xff0c;人体通过脾胃来消化吸收营养物质&#xff0c;脾主运化水谷精微、运化水湿&#xff0c;脾主肌肉&#xff0c;脾主生血、统血&#xff0c;为气血生化之源&#xff0c;是人体气机升降的枢纽。 脾虚百病生 李东垣在《脾胃论》说&#xff1a;“内…

Python CSV数据处理工具库之clevercsv使用详解

概要 CSV(Comma-Separated Values)是一种常见的数据格式,用于存储和传输表格数据。Python clevercsv库是一个强大的CSV数据处理工具,提供了丰富的特性和功能,帮助用户高效处理CSV文件。 安装 要安装Python clevercsv库,可以使用pip工具进行安装: pip install cleverc…

mysql 重复单号 统计

任务&#xff1a; 增加重复件统计分析&#xff1a; 统计展示选择时间范围内重复1次、重复2次、重复3次、重复4次、重复5次及以上的数据量 17、统计出现的重复次数 增加重复件统计分析&#xff1a; 统计展示选择时间范围内重复1次、重复2次、重复3次、重复4次、重复5次及以上的数…

Scala 04 —— 函数式编程底层逻辑

函数式编程 底层逻辑 该文章来自2023/1/14的清华大学交叉信息学院助理教授——袁洋演讲。 文章目录 函数式编程 底层逻辑函数式编程假如...副作用是必须的&#xff1f;函数的定义函数是数据的函数&#xff0c;不是数字的函数如何把业务逻辑做成纯函数式&#xff1f;函数式编程…

【Linux系统】地址空间 Linux内核进程调度队列

1.进程的地址空间 1.1 直接写代码&#xff0c;看现象 1 #include<stdio.h>2 #include<unistd.h>3 4 int g_val 100;5 6 int main()7 {8 int cnt 0;9 pid_t id fork();10 if(id 0)11 {12 while(1)13 {14 printf(&…

牛客Linux高并发服务器开发学习第三天

静态库的使用(libxxx.a) 将lession04的文件复制到lession05中 lib里面一般放库文件 src里面放源文件。 将.c文件转换成可执行程序 gcc main.c -o app main.c当前目录下没有head.h gcc main.c -o app -I ./include 利用-I 和head所在的文件夹&#xff0c;找到head。 main.c…

进程控制相关

进程终止 进程终止时&#xff0c;操作系统要释放对应进程申请的相关内核数据结构和对应的代码和数据。其不本质就是释放进程申请的系统资源。 进程终止的常见方式&#xff1a; 1、代码运行完毕且结果正确。 2、代码运行完毕但结果不正确。 3、代码没运行完&#xff0c;进程…

【Entity Framework】闲话EF中批量配置

【Entity Framework】闲话EF中批量配置 文章目录 【Entity Framework】闲话EF中批量配置一、概述二、OnModelCreating中的批量配置元数据API的缺点 三、预先约定配置忽略类型默认类型映射预先约定配置的限制约定添加新约定替换现有约定约定实现注意事项 四、何时使用每种方法进…

通过实例学C#之ArrayList

介绍 ArrayList对象可以容纳若干个具有相同类型的对象&#xff0c;那有人说&#xff0c;这和数组有什么区别呢。其区别大概可以分为以下几点&#xff1a; 1.数组效率较高&#xff0c;但其容量固定&#xff0c;而且没办法动态改变。 2.ArrayList容量可以动态增长&#xff0c;但…

使用go和消息队列优化投票功能

文章目录 1、优化方案与主要实现代码1.1、原系统的技术架构1.2、新系统的技术架构1.3、查看和投票接口实现1.4、数据入库MySQL协程实现1.5、路由配置1.6、启动程序入口实现 2、压测结果2.1、设置Jmeter线程组2.2、Jmeter聚合报告结果&#xff0c;支持11240/秒吞吐量2.3、Jmeter…