| |
|
开发:
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性能测试从零基础到精通 |
?一.基本元件介绍:
二.参数化1.参数化-用户定义的变量在配置元件中配置:添加路径:测试计划——线程组——配置元件——用户定义的变量 参数设置:参数名:参数值 在HTTP取样器中引用:${参数名} 线程组下配置的用户定义的变量,在线程组下生效,与测试计划中配置的变量冲突时,以线程组下的为准 ? ? ??2.参数化-在测试计划配置全局变量在测试计划中配置(全局生效) ?三.用户参数使用用户定义的变量时,不同的用户在访问时,读取的参数值完全相同,如果希望每个用户在访问时的变量不同,可以使用用户参数。 配置方法
? 四.CSV数据文件设置?使用用户参数时,每个用户可以取不同的数据,但是同一用户的多次循环时读取的数据是不变的。如果想让同一用户多次循环读取时的数据也不同,需要使用CSV数据文件设置的方式。 配置CSV数据文件设置:添加位置:线程组——配置元件——CSV数据文件设置 参数配置: 添加HTTP请求:引用参数值时,使用时CSV数据文件中定义的变量名${变量名} ? ?五.函数函数对话框里面有很多可以自助生成的函数方法,需要什么用什么? 我现在是通过counter函数在生成动态变化的数值 counter函数:如果counter参数设置为:TRUE,则每个用户分别从1开始计算,每循环一次加1,如果counter参数设置为:FALSE,则所有用户公用一个计数器,每发送一个请求时,取值加1? ? ?六.响应断言添加:线程组——HTTP取样器——断言——响应断言(断言一定是在HTTP请求的子节点下) 配置介绍: 1.测试字段:需要进行校验的部分
2.模式匹配规则:要校验的方式
测试模式:校验预期结果数据
? 可以在同一个HTTP请求下包含多个响应断言?? ?七.JSON断言配置介绍:
? ?八.断言持续时间客户端发送请求,到收到服务器的响应的时间,要求不超过指定的时间。 实际时间,是统计的取样器结果中的load time 配置介绍:断言持续时间:配置能接受的最长的响应时间(单位:毫秒) ?九.关联-正则提取器当请求之间有依赖关系,一个请求的入参,需要使用到之前请求的响应数据时,需要使用关联 正则表达式介绍:
应用场景:正则表达式提取器可以提取任意格式的响应数据 参数介绍:
在下一个http请求里面引用变量token 十.xpath提取器?应用场景:只能适用于响应消息为HTML格式的情况 参数介绍:
? ?十一.json提取器应用场景:适用于返回的数据类型为JSON格式的情况 参数介绍:
? ? ?十二.跨线程组关联跨线程组关联指的是多个请求之间有关联关系(即一个请求的参数需要使用前面请求的响应),但是两个请求不在一个线程组内,此时使用提取器无法完成关联,需要使用Jmeter属性来完成数据的传递。 生成全局变量:
使用全局变量:
?十三.自动录制脚本jmeter脚本录制: 1、在测试计划中添加非测试元件中的HTTP代理服务器 2、配置HTTP代理服务器
3、配置浏览器的代理设置:输入IP地址和端口号 4、启动HTTP代理服务器的配置 5、进入浏览器进行操作,HTTP请求会自动记录在Jmeter中 过滤规则的配置: Cookie管理器:
?十四.连接数据库准备工作: 1.启动数据库 2.加载mysql的JDBC驱动: 方法1:在测试计划下方的位置,点击浏览添加JDBC的jar包 方法2:将JDBC的jar拷贝到lib目录,并重启jmeter 3.配置JDBC连接池的参数 编写JDBC脚本步骤: 1、添加JDBC Request请求
?2、添加HTTP请求 —— 搜索请求? 参数为中文时,将参数写到下方参数位置,并勾选上“编码” ?3、添加响应断言 在响应断言中配置要检查的数据内容。 注意:应用JDBC Request查询出的结果时,需要加上索引(因为JDBC查询的结果保存为一个列表) ?十五.逻辑控制器1.如果(if)控制器第一种配置方法: 第二种配置方法: 勾选上Interpret Condition as Variable Expression,判断条件需用使用jexl3函数。? (使用这个函数来进行判定时,Jmeter自身的执行效果要高一些) ?2.循环控制器控制子节点下的HTTP请求的执行次数 循环控制器与线程组中的循环次数的对比:
? 3.ForEach控制器:?与用户定义的变量或者正则表达式提取器配合使用,循环读取用户定义的变量或者正则表达式结果中的所有数据。 配置参数: ?与用户定义的变量配合使用:
? ? ?与正则表达式配合使用:?
? ? 十六.定时器?1.同步定时器又叫做集合点(LR的叫法),保证大量的请求在同一时间进行发送,形成绝对的并发 实现原因:设置同步定时器,有请求要发出时,同步定时器会暂缓请求发送,一直到积攒的请求数达到要的数量时 将所有的请求同步发送出去,形成绝对的并发(更大的压力负载) ? ?2.常数吞吐量定时器设置Jmeter以指定的吞吐量速度往服务器发送HTTP请求。 注意:常数吞吐量定时器只是帮忙达到性能测试的负载(压力)要求,本身不代表性能有bug/无bug,对于bug的分析需要通过响应时间来判断 ?十七.jmeter分布式应用场景:当性能测试时需要模拟的负载(用户/请求)太高,一台测试机无法模拟,需要使用多台测试机一起来模拟以达到要求的负载量,这就叫分布式 原理:
?分布式相关注意事项:
分布式配置与运行: 配置: 代理机(Jmeter.property):
控制机:
运行:
?十八.jmeter报告1.聚合报告:label:接口名称 样本:每个接口请求的总次数 平局值:请求的平均响应时间 中位数:50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值 90%百分位:90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值 95%百分位:95%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第95%的值 99%百分位:99%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第99%的值 最小值:所有请求最小值 最大值:所有请求最大值 错误率:本次测试中,有错误请求的百分比 吞吐量:吞吐量是以每秒/分钟/小时的请求量来度量的。这里表示每秒完成的请求数,一般认为他为TPS 接收:收到的千字节每秒的吞吐量测试,测试机在过程中的网络传输速率 发送:发送的千字节每秒的吞吐量测试,测试机在过程中的网络传输速率 重点关心的性能指标:
2.jp@gc - Response Codes per Second?每秒事务响应时间 3.jp@gc - Bytes Throughput Over Time?每秒服务器处理的字节数 Bytes Received Over Time:接收 Bytes Sent Over Time:发送 4.jp@gc - PerfMon Metrics Collector?基于jmeter客户端监控服务器 硬件资源 CPU:服务器CPU使用情况 memory:服务器内存使用情况 net worK:服务器网络使用情况 disks I/O:服务器磁盘I/O使用情况 5.Concurrency Thread Group??6.并发数计算TPS(每秒的请求数)(1)普通的计算方式: TPS = 总的请求数 / 总的时间 问题:对于同一天的时间内,不同的时间段,请求速率会有波动,这样计算会被平均掉,无法测试负载高的情况 (2)二八原则: 核心:80%的请求数会集中在20%的时间内完成 TPS = 总的请求数 *80% / 总的时间 * 20 注意:二八原则的计算方法会比平均的计算方式更准确 (3)按照每天的具体业务数据进行计算(稳定性测试TPS) 当获取每天的具体业务统计数据时,就可以统计出业务请求集中的时间段作为有效业务时间;并统计有效业务时间内的总请求数 TPS = 有效业务时间的总请求数 * 80% / 有效业务时间 * 20% (4)模拟用户峰值业务操作的并发量:(压力测试TPS) 获取每天的交易峰值的时间段,及这个时间段内的所有请求的数量 TPS = 峰值时间内的请求数/峰值时间段 * 系数 系数可以是:2、3、6、10,由项目组自己觉得要达成的性能指标? ?十九.性能测试监控关键指标1、系统指标:与用户场景与需求直接相关的指标并发用户数:某一物理时刻同时向系统提交请求的用户数 平均响应时间:系统处理事务的响应时间的平均值。对于系统快速响应类页面,一般响应时间为3秒左右 可以直接用来衡量系统处理能力的指标是(吞吐量) 在系统处于轻压力区(未饱和)时,并发用户数上升,平均响应时间(基本不变),系统吞吐量(上升) 在系统处于重压力区(基本饱和)时,并发用户数上升,平均响应时间(上升),系统吞吐量(基本不变) 在系统处于崩溃区(压力过载)时,并发用户数上升,平均响应时间(上升),系统吞吐量(下降) 2、服务器资源指标:硬件服务器的资源使用情况的指标CPU使用率:一般可接受上限为85%(用户CPU和系统CPU)硬件的组成: ?CPU时间的介绍: CPU占用分类: 内存利用率:一般可接受上限为85%(虚拟内存和实际内存)1、正常情况下,程序加载到内存中来执行 2、当内存不够时,会加载部分立即要执行的程序到内存中,其他的程序部分放在磁盘中(虚拟内存) 3、当立即要执行的程序执行完成后,从虚拟内存中读取其他的数据内容到实际内存中,再执行程序的处理 4、依次循环第3步,完成程序的运行 卡的原因的就是:每次都需要从虚拟内存(磁盘)中读取数据进行执行,磁盘的读取速度相对CPU和内存而言非常,因此感觉内存不足程序很卡 闪退的原因就是:在第2步中,需要加载部分立即要执行的程序到内存中,如果当前的内存空间不满足最低要求(立即要执行的程序所需要的内存)时,就会出现闪退 磁盘I/O(磁盘input和ouptut)监控点:监控磁盘实际IO是否已经接近最大值,接近则有问题 监控点:IO队列,如果当前IO队列长度一直不为0,说明磁盘IO有问题 网络带宽(网络上下行带宽)监控实际的网络流量,与网络带宽做对比,如果实际网络流量与网络带宽接近,则说明网络存在瓶颈,需要优化。 百兆带宽:100Mbyte/s 实际技术中衡量的宽带的单位:KB/s,因此需要换算:100/8 = 12.5MKB/s ?3、JAVA应用 : JAVA应用程序在运行时的各项指标java虚拟机JVM(JAVA Virtual Machine): 虚拟出来的空间,专门供JAVA程序运行 java虚拟机内存?堆区:需要重点关注的部分(动态变化) 所有的对象在初始化会申请堆区的空间,如果申请的空间在使用结束没有及时的释放,那么这个空间就会被占用。—— 内存泄漏 监控点:因此在测试时,需要关注堆区的空间是否持续上升,没有下降 FULL GC机制?垃圾回收:将内存中已申请并使用完成的那部分内存空间回收,供新申请使用。 垃圾回收机制都是针对堆区的内存进行的。 因为系统在做垃圾回收时,不能够处理任何用户业务的。如果垃圾回收过于频繁,导致系统业务处理能力下降。 监控点:Full GC内存比较大,垃圾回收一次时间比较长,那么这段时间内都不能处理业务,对系统影响比较大,因此我们需要关注Full GC频率 4、数据库:数据库服务器运行时需要监控的指标慢查询慢查询:监控系统在运行时,所执行的所有SQL语句,检查这些SQL执行时间是否慢(自己设置一个时长,执行时间超过这个时长就是慢查询) 通过这个方法可以把系统运行时所有执行时间比较长的SQL找出来,进行优化。 缓存命中率如果缓存命中率过低,需要优化对应的代码和SQL查询语句,想办法提交缓存命中率 监控点:业务执行过程中SQL查询时的缓存命中率。(查询语句读取缓存的次数占总的查询次数的比例)? ?数据池连接数监控点:数据库连接池的使用率 如果数据库连接池被占满,此时如果有新的SQL语句要执行,只能排队等待,等待连接池中的连接被释放(之前的SQL语句执行完成) 如果监控发现数据库连接池的使用率过高,甚至是经常出现排队的情况,需要进行调优 MYSQL锁?对比: 页面锁:处理效率低,但是不会出现死锁 行锁:处理效率高,但是可能出现死锁 监控点:需要监控在性能测试过程中,是否有死锁出现,如果出现需要进行代码优化。 5、压测机资源指标:测试机在模拟用户负载时的资源使用情况CPU:使用率不超过80% 内存:使用率不超过80% 网络:带宽 磁盘空间: 压测机主要是发送请求,发请求时往外发消息, 没有太多的磁盘操作,IO通常不会有问题 jmeter运行时会记录日志,注意磁盘空间不要被占满 一般情况下,测试人员执行性能测试时,只需要关注1、2、5就可以,判断系统是否有性能问题而开发人员要定位性能问题时,需要再次运行,并监控所有的性能指标,来进行分析并调优 ?二十.性能监控工具1.系统指标:通过性能测试工具jmeter以图形化方式监控 2.服务器资源指标 使用jmeter性能监控插件perfmon进行监控 使用linux命令监控:
Nmon:全面监控liunx系统资源使用情况,包括CPU,内存,IO等,可独立应用监控 3.JAVA应用:jvisualvm 监控JVM内存等指标: 找到JDK的路径:/usr/libexec/java_home -V 进入bin目录:cd /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin 打开Jvivusalvm:open Jvivusalvm 点击“远程”,右键添加远程主机(IP地址为linux虚拟机的IP) 点击JMX连接,选择监控,看JVM对应的监控指标。(重点关注:CPU使用、堆的内存使用) 4.数据库 自带的功能,可以在数据库配置中打开对应的开关,通过日志的方法来监控 定义:指执行速度要低于设置的时间的sql语句。帮助定位查询速度比较慢的sql语句 慢查询时的几个重要参数::
设置方法: 查询:
设置:
5.压测机资源:windows自带任务管理器 二十一.性能调优?步骤: 1、确定性能问题,根据性能测试的指标进行分析,确定是否存在问题。—— 测试人员能掌握 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年5日历 | -2024/5/19 8:38:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |