超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试

马肤

温馨提示:这篇文章已超过454天没有更新,请注意相关的内容是否还可用!

摘要:,,本性能测试使用Jmeter工具进行了超详细测试。Jmeter提供了强大的性能测试功能,能够模拟并发用户请求,测试系统的响应时间和稳定性。通过本次测试,我们能够获取关于系统性能的关键数据,包括吞吐量、延迟和错误率等。测试结果有助于识别系统的瓶颈和优化点,从而提升系统的性能和用户体验。

前言

性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。

测试流程:

  1. 需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告

    压力测试

  • 1、线程组设置,这里的线程数与同步定时器的用户数量一样
  • 2、添加HTTP cookie管理器
  • 3、默认请求值
  • 4、添加一个事务控制器,可以当作一个业务
  • 5、在事务控制器下添加,同步定时器
  • 设置用户数量,这里与线程组的线程数一样,超时时间可设置
  • 6、添加脚本(http请求)
  • 7、添加查看结果树
  • 8、添加->监听器
  • 9、在最后添加一个聚合报告,添加处:添加->监听器
    1. 负载测试实战
    • 1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
    • 2、添加HTTP cookie管理器
    • 3、默认请求值
    • 4、添加一个事务控制器,可以当作一个业务
    • 5、在事务控制器下添加,高斯随机定时器
    • 总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
    • 6、添加脚本(http请求)
    • 7、添加->监听器
    • 8、在最后添加一个聚合报告,添加处:添加->监听器

      第一章 Bug引发的又一次思考

      1. 课程介绍

      目录

      1. 性能测试认知主要内容
      • 什么是性能测试?
      • 性能测试分类
      • 性能测试指标
      • 性能测试的基本流程
        1. jmeter性能测试工具
        • jmeter的介绍与组成
        • jmeter工具的多并发请求
        • jmeter工具脚本开发的精要技巧
          1. linux与MySQL的性能理解
          • linux服务器性能监控指标与分析
          • MySQL数据库性能指标分析
            1. 课程学习目标
            • 掌握性能测试的基本流程
            • 掌握性能测试工具jmeter的基本使用
            • 掌握性能指标所代表的的含义
            • 掌握性能监控的基本命令
            • 了解慢查询的含义
            • 掌握海量数据下的数据库优化方案

              2. 打开一个页面非常慢是Bug吗

              1. 打开一个页面非常慢是Bug吗
              • 可能是,原因:网络慢、客户端运算能力不足、资源大到现有的网络无法承载、服务端资源响应时间过长。
                1. 页面打开慢的影响是什么?
                • 用户体验不好,从而导致用户流失
                • 用户流失会导致项目失败
                • 项目失败可能会导致公司破产

                  3. 页面响应耗时可以提前预知吗?

                  1. 在测试阶段是否能够发现页面响应慢

                    当然可以

                  2. 如何在测试阶段发现页面响应慢?

                  • 模拟大量用户访问
                  • 监控每个请求的响应是否准确
                  • 监控服务器的资源使用

                    第2章 性能测试认知

                    1. 企业级软件为什么要做性能测试

                    1. 历史上由于性能问题引发的事件
                    • 12306网站崩溃,用户购票失败
                    • 淘宝双十一网站崩溃
                      1. 网站崩溃或慢对用户的影响
                      • 离开
                        1. 企业为什么要做性能测试?
                        • 提升用户体验
                          1. 细化性能测试的目的
                          • 预估软件性能瓶顶,预估软件优化时间
                          • 验证是否存在多并发的逻辑问题

                            2. 什么是性能测试?

                            超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第1张

                            • 性能是用来描述产品除功能外的所具有的速度,效率和能力的综合能力评价

                            • 对产品或是物品的性能惊喜定性或是定量的量测过程

                            • 在这个过程中我们使用一些工具来进行场景的模拟,从而进行性能测试

                              3. 性能测试案例

                              1. 测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间
                              2. QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)
                              3. 测试步骤
                              • 1、添加线程组(线程数+准备时长+循环次数)
                              • 1.1、线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)
                              • 1.2、准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。
                              • 1.3、循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100

                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第2张

                                • 2、添加HTTP请求

                                  超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第3张

                                  超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第4张

                                  • 3、设置QPS限制:控制给定的取样器发送请求的吞吐量

                                    超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第5张

                                    超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第6张

                                    • 4、添加监视器-聚合报告、察看结果树

                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第7张

                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第8张

                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第9张

                                      • 5、运行脚本

                                        超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第10张

                                        • 6、聚合报告解析(响应时间单位:毫秒)
                                        • 1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
                                        • 2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
                                        • 3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
                                        • 4)Median:中位数,50%用户的响应时间
                                        • 5)90%Line:90%用户响应时间
                                        • 6)Min:最小响应时间
                                        • 7)Max:最大响应时间
                                        • 8)Error%:本次测试中出现错误的请求的数量/请求的总数
                                        • 9)Throughput:吞吐量-默认情况下白石每秒的请求数
                                        • 10)KB/sec:每秒从服务器端接收到的数据量
                                        • 超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第11张

                                          超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第12张

                                          4. 性能测试的分类

                                          1. 性能测试的分类
                                          • 压力测试、负载测试、并发测试、稳定性测试
                                            1. 什么是压力测试?
                                            • 压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
                                            • 举个例子:百米赛跑,逐步增加你的负重,直到你完不成百米的程度,也就是崩溃的边缘你所能承受的最大负重
                                              1. 什么是负载测试?
                                              • 被测试系统正常服务的前提下,系统所能承担的最大服务负荷数量(即最大并发数量),最终分析出系统性能的瓶颈
                                              • 举个例子:百米赛跑,设置必须15秒完成,负重奔跑(不断增加负重)
                                                1. 压力测试和负载测试的区别
                                                • 压力测试要测试出系统即将崩溃时,能够承受的最大并发数
                                                • 负载测试是满足系统指标要求的情况下,能够承受的最大并发数
                                                  1. 什么是并发测试
                                                  • 举个例子:商场卖货,售后员根据库存表单记录表卖货
                                                  • 仓库管理员应该在出货时同时更新库存表单记录表,但由于用户过多,表单记录更新不及时
                                                  • 导致仓库已经没有货了,但是售货员看到库存表单记录表中还显示有库存,仍然在卖货,但已经发不出去货了

                                                    5. 性能测试场景剖析

                                                    • 电商秒杀、学习系统考试、12306抢票、新闻热点事件、

                                                      网络游戏运营、视频网站播放

                                                      6. 必知必会的性能测试指标

                                                      • 并发用户量:同一单位时间进行同一操作的用户数量
                                                      • 吞吐量:单位时间内系统成功传输的数据量,单位通常是MB、GB
                                                      • 吞吐率:又叫Throughput,单位时间内系统成功处理的请求数量,通常单位为(请求数量/每秒、req/s)

                                                        7. 性能测试基本流程

                                                        1. 标准性能测试流程

                                                          超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第13张

                                                        8. 简述 性能测试流程?

                                                        1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下

                                                        2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具

                                                        3.编写测试用例

                                                        4.搭建测试环境,准备好测试数据

                                                        5.编写性能测试脚本

                                                        6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本

                                                        7.设计测试场景,运行测试脚本,监控服务器,

                                                        8.分析测试结果,收集相关的日志提单给开发

                                                        9.回归性能测试

                                                        10.编写测试报告

                                                        第三章. JMeter测试工具篇

                                                        目录

                                                        1. JMeter介绍与安装
                                                        • JMeter介绍与安装
                                                        • JMeter的组成结构
                                                        • 第一个性能测试案例
                                                          1. JMeter模拟多用户同时发送请求
                                                          • 逻辑分支控制
                                                          • 配置管理
                                                          • 发送请求的设置
                                                            1. JMeter脚本开发精要技巧
                                                            • 关联、断言、参数化、数据监控

                                                              1. JMeter介绍与安装

                                                              1. JMeter介绍

                                                                JMeter是Apache组织开发的基于Java的压力测试工具。具有开源免费、框架灵活、多平台支持等优势。除了压力测试外,JMeter也可以应用的接口测试上。

                                                              2. JMeter下载、安装及启动

                                                              下载:

                                                              访问JMeter官网:https://jmeter.apache.org/download_jmeter.cgi

                                                              超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第14张

                                                              点击下载windows版本apache-jmeter-5.1.1.zip

                                                              安装:

                                                              解压到D盘即可使用,目录结构:

                                                              • bin目录:启动命令
                                                              • jmeter.bat 在Windows可启动的批处理文件
                                                              • jmeter.sh 在Linux可执行的shell脚本
                                                              • jmeter.properties: 核心配置文件(配置中文编码)

                                                                lib目录:存放Jmeter依赖的jar包,同时安装插件放于lib中的ext目录中

                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第15张

                                                                启动:

                                                                • 进入bin目录,双击jmeter.bat文件即可启动jmeter

                                                                  (如果打不开,则说明其工作环境JDK没搭建好,原因:JMeter需要基于Java环境)

                                                                  • 在dos中进入到apache-jmeter的bin目录中,然后执行命令:jmeter也可以启动

                                                                    3、配置jmeter工作环境

                                                                    方式:安装jdk并配置环境变量

                                                                    1)安装jdk,要求是1.8级以上版本

                                                                    在安装jdk的过程中,记得把路径复制一份,方便后面使用。

                                                                    2)配置jdk的系统环境变量:

                                                                    a》java_home:jdk的安装路径,(需要新建)

                                                                    b》path:增加jdk的工作目录bin ( %java_home%\bin; )

                                                                    (只需编辑,往里添加工作路径)

                                                                    3)验证:

                                                                    A、在dos中输入命令:javac,显示javac命令的格式及选项

                                                                    B、启动bin目录中jmeter.bat能正常打开。

                                                                    设置界面为简体中文,如下:

                                                                    超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第16张

                                                                    2、使用JMeter来做接口功能测试

                                                                    过程:测试计划-》线程组-》http请求-》响应断言-》断言结果-》参看结果树!

                                                                    超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第17张超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第18张其中测试计划是自带的。

                                                                    测试计划:相当于项目,某某项目-测试计划

                                                                    1. 添加线程组:相当于功能点、或者接口,某某接口-线程组
                                                                    • 在“测试计划”上右键–>添加–>线程(用户)–>线程组。

                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第19张

                                                                      然后可以对线程组进行设置(一般在做性能测试时才需要去设置,接口几乎不用)

                                                                      线程组参数详解:

                                                                      • 名称:根据业务来设置合适名称,接口测试就是接口名称,性能测试就是功能点2. 遇错误的动作:默认“继续”,忽略错误继续完成请求3. 线程数:虚拟用户数,默认是1个,一个用户占用一个线程。多用户并发测试时就需要在这里设置并发用户数,也就是设置多少个线程数。
                                                                      • Ramp-Up 时间(秒):启动所有虚拟用户所需的时间。含义如下: 比如:如果线程数为10,启动时长为2秒,那就意味着2秒内需启动10个用户,平均下来就是每秒启动5个用户。启动时间为0,则代表同时启动 ,并发。
                                                                      • 循环次数:每个用户发送请求的次数,好比参数化。如果线程数为10,循环次数为5, 那么每个线程(用户)发送5次请求。总请求数为10*5=50 如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动停止运行或者设置了调度器。
                                                                      • 调度器:设置线程组启动的持续时间和延迟时间(调度器需勾选循环次数为永远才有效) 持续时间(秒):测试持续的时间:24小时=24*3600秒 启动延迟(秒):测试延迟启动的时间
                                                                        1. 添加HTTP请求:相当于测试用例中的测试步骤,某某-HTTP请求
                                                                        • 在“线程组”上右键–>添加–>取样器–>HTTP请求

                                                                          超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第20张

                                                                          • 设置HTTP请求信息:

                                                                            基本》

                                                                            2.1. Web服务器

                                                                            协议:向目标服务器发送HTTP请求的协议,可以是HTTP或HTTPS,默认为HTTP

                                                                            服务器名称或IP :HTTP请求发送到的目标服务器名称或IP ,比如:www.jd.com

                                                                            端口号:目标服务器的端口号,默认值为80 ,可以不写,https为443。

                                                                            注意: “ 服务器名称或IP”中不用输入http://, 请求时会自动加入 ;

                                                                            2.2. Http请求

                                                                            • 方法:发送HTTP请求的方法,包括GET、POST等。
                                                                            • 路径:目标URL路径(服务器名称与参数之间的部分)
                                                                            • 内容编码 :编码方式默认值为iso8859,改为utf-8支持中文。跟随重定向:当HTTP请求的响应是302/301时,JMeter会跟随重定向到目标页面。
                                                                            • 使用keepAlive :jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信保持长 连接,减少连接的次数,进而缩短了连接时间****

                                                                              2.3. 请求参数

                                                                              • A)参数: get请求所携带的数据列表,名值对 (同请求一起发送参数)
                                                                              • B)消息体数据: post请求所携带的请求数据是json格式数据,类似于字典
                                                                              • C)文件上传: post请求本地文件上传,文件类型一定是file说明:所添加的参数中有中文时需要勾选“编码”

                                                                                Http请求 示例 : https://www.jd.com/,打开京东首页get请求

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第21张

                                                                                1. 添加响应断言

                                                                                在“HTTP请求”上右键–>添加–>断言–>响应断言(检查请求后的响应是否正确)

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第22张

                                                                                需要设置的断言的内容:

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第23张

                                                                                包括:适用范围(那个请求),响应的字段,匹配规则以及添加要检查的测试模式

                                                                                3.1、apply to: 表达的是断言那个请求,默认是只断言主请求(main sample only)

                                                                                3.2、测试字段: 表达的是断言的内容,有响应文本,响应代码,响应信息等等,一般都是断言响应文本

                                                                                3.3、模式匹配规则: 表达的是断言的方式,有包括、匹配、相等等等,一般使用包括或者相等

                                                                                3.4、测试模式: 根据业务来编写,可以理解为我们的预期结果

                                                                                4. 添加断言结果

                                                                                在“HTTP请求”上右键 -> “添加”-> “监听器” -> “断言结果” ,查看断言的结果

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第24张

                                                                                【断言】又名:检查点

                                                                                含义: 检查预期数据与实际数据是否匹配

                                                                                方式: 先添加响应断言再添加断言结果,是一个组合

                                                                                断言成功 : 断言结果只有一行,为请求的名称,则表示成功。

                                                                                断言失败 :断言结果有两行,第二行显示失败的原因。

                                                                                5. 察看结果树, 目的是查看请求发送后 的结果:

                                                                                在“HTTP请求”上右键–>添加–>监听器–>察看结果树

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第25张

                                                                                点击发送请求,超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第26张结果如下:

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第27张

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第28张

                                                                                第四章 JMeter模拟多用户同时发送请求

                                                                                1、一个简单的压力测试实战

                                                                                现有一个http请求接口http://localhost:8080/goods/to_list, 要使用Jmeter对其进行压测,测试步骤如下:

                                                                                a.新建一个线程组。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第29张

                                                                                b. 设置线程组参数。这里配置为:10个线程,同时启动,循环一次。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第30张

                                                                                c. 新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为localhost,端口为8080。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第31张

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第32张

                                                                                d. 添加要压测的http请求。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第33张

                                                                                下图第一个红框内的协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可,这里填入/goods/to_list。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第34张

                                                                                e. 新增监听器,用于查看压测结果。这里添加三种:聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第35张

                                                                                f. 点击运行按钮开始压测,并查看结果。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第36张

                                                                                五、如何查看系统负载何性能瓶颈

                                                                                服务器上执行以下命令:

                                                                                top
                                                                                

                                                                                如下图所示,可以看到系统负载load average情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是1.58, 0.50, 0.23;同时可以看到最耗费资源的进程为mysql。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第37张

                                                                                2、如何创建带参数的请求

                                                                                1. 首先新建一个http请求。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第38张

                                                                                2.设置请求路径,并添加参数。 如下图所示,Path中填写请求路径,点击Add添加参数,有一个名为token的参数。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第39张

                                                                                至此给带参数请求已创建完成,点击运行即可开始压测。

                                                                                3、如何模拟设置多个变量,模拟多个用户请求接口

                                                                                1. 新建Csv Data Set Config设置。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第40张

                                                                                2.新建配置文件config.txt,配置用户信息。 文件名随便写,里面数据每行有两个值,userId和userToken,中间用逗号隔开,我这里设置了两个用户的信息。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第41张

                                                                                3.引用配置文件。 Csv Data Set Config中引用配置文件config.txt,并定义变量名为userId和userToken。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第42张

                                                                                4.请求中引用配置文件中的变量。 在填写参数Value的地方不要将值写死,而是写为 变量名这种格式,我这里想要引用配置文件中 u s e r T o k e n 的值,所以写为 {变量名}这种格式,我这里想要引用配置文件中userToken的值,所以写为 变量名这种格式,我这里想要引用配置文件中userToken的值,所以写为{userToken}。

                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第43张

                                                                                至此配置完毕,点击运行按钮,即可开始压测。

                                                                                3. jmeter模拟多用户并发

                                                                                一. 100个真实的用户

                                                                                1. 一个账号模拟100虚拟用户同时登录和100账号同时登录

                                                                                  区别

                                                                                • 1个账号100个人用,同时登录;
                                                                                • 100个人100个账号,同时登录。

                                                                                  相同

                                                                                  • 两个都是100人同时登录,具体看项目需求。
                                                                                    1. 账号来源
                                                                                    • 利用“注册”或“创建”账号接口,创建100个用户;
                                                                                    • “查询”接口,保存100个账号的账号、密码到一个文件。

                                                                                      3、提取100个账号、密码的文件

                                                                                      1. meter脚本整体布局
                                                                                      线程组(一级)---->请求默认值、请求头、http请求、察看结果树(二级)----->正则表达式、BeanShell 后置处理程序(三级)。
                                                                                      
                                                                                      • HTTP请求默认值:是存放系统通用ip的位置(协议:http; 服务名称或ip:127.0.0.1);
                                                                                      • HTTP信息头管理:接口请求之前需要带的信息,部分接口不带不能运行(Authorization、Content-Type、Accept、User-Agent),例如必须带的token就在信息头中存放;
                                                                                      • 登录请求:请求方法、请求路径、消息体;正则表达式提取token
                                                                                      • 创建请求:请求方法、请求路径、消息体;参数化用户名,创建多个用户;
                                                                                      • 查询账号:请求方法、请求路径、消息体;正则表达式提取用户名、密码;BeanShell 后置处理程序存储返回值到文件中

                                                                                        超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第44张

                                                                                        (2)查询请求中的正则表达式和BeanShell 后置处理程序

                                                                                        正则表达提取----->获取想要的字段内容

                                                                                        (详看:https://blog.csdn.net/belief_009/article/details/123051440)

                                                                                        超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第45张

                                                                                        • BeanShell 后置处理程序---->将提取到的字段内容存储在指定文件4.csv中
                                                                                          FileWriter fs=new FileWriter("D://近期//4.csv",true);
                                                                                          BufferedWriter out =new BufferedWriter(fs);
                                                                                          out.write(vars.get("username")+","+vars.get("id"));    //username、id为正则定义名称
                                                                                          out.write(System.getProperty("line.separator"));      //相当于"\n"自动换行
                                                                                          out.close();
                                                                                          fs.close();
                                                                                          

                                                                                          超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第46张

                                                                                          • 线程组线程数设置数目等于提取到的条数,执行脚本得到100个用户的账号和密码

                                                                                            超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第47张

                                                                                            二、100个用户同时登录

                                                                                            1. 设置线程组

                                                                                              线程数:并发用户数

                                                                                              Ramp-up时间(秒):启动所有线程所需要的时长

                                                                                            • 0---->代表同时并发;
                                                                                            • 100---->线程数100,时间100秒。代表每隔1s启动一个线程(100/100=1)

                                                                                              循环次数:Loop Count

                                                                                              • 默认值是1;
                                                                                              • 2---->线程数100,循环次数2。代表启动200个线程;
                                                                                              • 勾选“永远”,会一直执行,需要人工停止,一般配合调度器使用。

                                                                                                超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第48张

                                                                                                补充:同步定时器:

                                                                                                • 作用:阻塞线程,直到指定的线程数量到达后,在一起释放,可以瞬间产生很大的压力;
                                                                                                • 使用同步定时器时,循环次数要勾选为永远

                                                                                                  超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第49张

                                                                                                  2. 模拟多用户登录

                                                                                                  线程组下添加----->CSV 数据文件设置

                                                                                                  将存储用户账号、密码的文件引入,并命名变量名称,在登录时调用。

                                                                                                  超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第50张

                                                                                                  • 调用,传参${name}
                                                                                                  • 注释:本系统账号密码一致,所以只需要调用一列值
                                                                                                    /api/v1/oauth/token?username=${name}&password=${name}&scope=all&grant_type=password
                                                                                                    
                                                                                                    1. 执行测试,查看结果
                                                                                                    • 100用户同时登录

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第51张

                                                                                                      第五章. jmeter脚本开发

                                                                                                      1. 脚本开发方式大纲

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第52张

                                                                                                      1、badboy进行录制和导出

                                                                                                      badboy下载地址:

                                                                                                      链接:https://pan.baidu.com/s/18Po3RssrBRSnn_-xsHop1g

                                                                                                          提取码:h4w4

                                                                                                      直接解压就可以使用,在界面上输入对应录制的url进行操作,录制完成后导出为:export to jmeter,在jmeter中打开后即可对脚本进行优化

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第53张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第54张

                                                                                                      2、jmeter代理服务器

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第55张

                                                                                                      a、设置启动服务代理,在网络设置代理服务,如果为第三方服务器则写第三方服务器的IP而非本地IP(127.0.0.1)

                                                                                                      b、打开jmeter,新建线程组,目的为了录制后的脚本有地方存放,目标控制器选择对应的主线程组,存放脚本,添加非测试元件:http代理服务器,点击启动后则可以进行录制,录制完成后停止,在线程组中回出现请求的录制脚本

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第56张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第57张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第58张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第59张

                                                                                                      c、可在http服务代理请求中排除模式使用正则表达式进行过滤超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第60张

                                                                                                      d、再次代理请求录制,已发现.png格式已被过滤掉了

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第61张

                                                                                                      3、进行fiddler抓包后导出jmx格式,在jmeter中打开后进行优化,抓包后选择对应的url进行备注,(选中url按M键备注)

                                                                                                      下载fiddler插件后导出jmx

                                                                                                      插件下载链接:

                                                                                                      链接:https://pan.baidu.com/s/18uffy67lIfNatMGkjnC_2g

                                                                                                            提取码:iy20

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第62张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第63张

                                                                                                      在jmeter中打开导出的文件,可以看到对应的备注url,进行录制脚本优化

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第64张

                                                                                                      超详细!Jmeter性能测试,超详细指南,使用Jmeter进行性能测试 第65张

                                                                                                      工具是测试中的辅助并非必需品。

                                                                                                      总结:

                                                                                                      通过以上介绍的性能测试的思路和工具,我们基本上可以完成一次性能测试以及部分问题的性能定位,但是往往性能问题总是隐藏得很深的,并且受各种条件的影响,比如,各个环节的配置参数,网络情况,机器情况,性能测试的工具等等,所以,性能测试的结果往往不能脱离某个环境单独比较,不同的配置,环境,应用的性能都会呈现出不同的结果,出现问题时,也需要我们从前到后,从上到下仔细分析每一个流程的执行情况,逐步通过工具协助定位,才能最终找到瓶颈。总之,性能测试是一门考验耐心,细心,知识广度, 深度的活,每次遇到问题多问几个为什么,多做几次分析和验证,并尝试解决,优化它,一定会让你对系统有更多不一样的认识。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码