月薪15K必会技术,如何从0到1学习性能测试,5个操作安排的明明白白

news2025/1/15 7:57:23

目录

【开幕】武林秘籍惊现江湖

【第一幕】该不该预测一个初始值?

【第二幕】从单线程开始

【第三幕】用命令行形式跑性能测试,然后观察机器性能。

【第四幕】控制吞吐!控制吞吐!控制吞吐!

【第五幕】武林秘籍重现江湖!

【剧终】 

性能测试学习资源分享


【开幕】武林秘籍惊现江湖

在庞大的性能测试面前,我还是一个江湖小辈。然而在被大神领进门之后,性能测试中的变化莫测、十面埋伏、刚柔并济、九九归一,仿佛让自己窥见了一门武林绝学,继而心生敬畏之心。

Long Long Ago,听过大神对性能测试方面的分享。那个时候就感觉眼前的这个男人不明觉厉,练就了一身武林绝学,是自己以后发展的榜样。当时他还给我们展示了他的武林秘籍,是这样的:

【第一幕】该不该预测一个初始值?

第一次真正接触性能测试是在邮箱大师组,当时是要去对“邮件撤回”的接口进行性能测试,2017年6月25日接到任务,二话不说开始准备了起来。对jmeter速成之后,拿着wzprecall的脚本就开始开压。

那么第一个问题来了:

我:我应该怎么压?我是说有没有一个初始的值可以入手去压?...
我:YW大神经验丰富,是否可以预测出这个初始值?
YW大神:不能。
我:...
YW大神:如果我都预测出来了,那还需要性能测试做什么?
我:哦...
YW大神:两个方法:要么和产品交流拿到实际的用户量数据,要么自己想办法。
我:好嘞。

屁颠屁颠跑去找产品同学,在我的三寸不烂之舌以及一箩筐解释下,产品同学终于听懂了,但是回答是:我不知道,我真的不知道,我真的真的不知道。。。

怀着复杂的心情我翻开了大神的武林秘籍第一页,当时有这么一张图:

看着这本高深的武功秘籍开始发散性思维:

性能测试就像过山车,开始的慢速起步让你紧张,中途的起起伏伏让感觉很爽,最后戛然而止回到起点。

所以,性能测试中:

  1. 起步阶段一定不要立马就开始,而是需要一个逐步缓冲阶段,这个时候就需要调整“Ramp-up Period”;
    这里普及一下【Ramp-up Period】:
    Ramp-up Period用于告知JMeter要在多长时间内建立全部的线程。
    该数据默认值是0,表示JMeter将立即建立所有线程如上图图一。
    假设Ramp-up Period 设置成T秒,全部线程数设置成N个,JMeter 将每隔T/N秒建立一个线程。如上图图二。
    
  2. 这个车不知道能坐多少人的情况下,你不能无限制添加人员,否则造成事故就坏了。
  3. 记录你被“甩”的最爽的那段时光,因为那段时光是过山车最大的意义,随后一切都是满脸激动的泪水。在性能测试中可以将90%Line作为一个重要的参考数据。

经过初探武林秘籍形成练法心得之后,开始了自己的第一层修炼,数据如下:

看到图中显示的这么多Error,发现第一次在没有高人点拨的时候,很难参悟其中奥义。但是也习得一些武功心法:

1、在以上用户量的情况下,这个性能是很差的;
2、知道了报告里面字段的意义:
     1)#sample:这次测试任务中,一共发出了多少个请求
     2)Average:单个request的平均响应时间
     3)Median:50%用户的响应时间
     4)90%Line:90%的用户一个请求的响应时间
还有Error和Throughtput以及最大、最小响应时间等。
我们这次脚本中设置的超时时间也是8000ms,所以可以看到还是有一部分请求超时,才会导致最后请求失败。

根据武侠小说的经验得出,再这样练下去肯定会走火入魔,当务之急需要大神指点一二,必能得其真传。

【第二幕】从单线程开始

拿着上面粗糙的数据,我又去找了YW大神。

当时大神只问了一个问题,我立马打道回府干劲十足:“单线程的响应时间是多少?”

开始参悟: 当没有人坐过山车时,过山车肯定是不会开的。 但是就算只有一个人坐过山车,一段时间内,也必须开车。(当然在国内不可能)。而本文的第一张图可以看到,用户量也是从0开始增长,而单线程(1个用户)可以作为一个参考的基准。

上图可以看到一个用户的执行一次的响应时间,然后可以慢慢递增。 然后我将线程数逐渐增加的同时,有了以下的测试数据:

拿着上图手中的测试数据,说不出来的感觉,早晨测试出用户量在20~25之间似乎接近饱和,但是下午的数据基本是在30~40之间,带着疑问我又来咨询YW大神。

【第三幕】用命令行形式跑性能测试,然后观察机器性能。

YW大神:你是在哪里跑的?机器的cpu如何?内存怎样?
我:...这些我有看的啊,在我本地机器跑的(顺便随手拿出了我的电脑内存和cpu数据)
YW大神:要在服务器用jmeter命令行跑。
我:哦...

认真回去看了Jmeter官方文档,第一页赫然写到:欲练此功,必先...使用命令行!

For load testing, you must run JMeter in this mode (Without the GUI) to get the optimal results from it. 

这里对命令行格式的使用记录如下:

例1:测试计划与结果,都在%JMeter_Home%\bin 目录
> jmeter -n -t ../scripts/wzprecall.jmx -l result.jtl
例2:指定日志路径的:
> ./jmeter -n -t ../scripts/wzprecall.jmx -l report-output\01-result.csv -j report-output\01-result.log
【拓展】:
例3:默认分布式执行:
> jmeter -n -t ../scripts/wzprecall.jmx -r -l report-output\01-result.csv -j report-output\01-result.log
例4:指定IP分布式执行:
> jmeter -n -t ../scripts/wzprecall.jmx -R 192.168.10.25:1036 -l report-output\01-result.csv -j report-output\01-result.log

测试数据以及分析:

数据中看到: 用户量在30到40之间基本饱和, withdrawQuery请求吞吐量基本在16.5/s。

测试数据看起来已经有点样子也得到了结果,拿着数据我找了YW大神。

【第四幕】控制吞吐!控制吞吐!控制吞吐!

YW大神:吞吐20都不到,这个是不可能的。
我:...
YW大神:注意控制吞吐!

测了这么多的数据,发现很多时候的步骤都是自己不断尝试不同的线程数,在有很多未知的情况下去试探,这种方法耗时耗力,而且最后得到的数据并不能说明问题。

那么另一种方法就是完全通过定时器来控制QPS,这就类似于控制变量法,将吞吐控制之后,如果实际的吞吐达到限制的吞吐表示现在性能合理,且有上升空间,如果随着线程数的增加限制的吞吐和实际吞吐差别很大,那么恭喜你,你找到了这个接口性能的天花板中的一板。

  Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数。20 QPS ,这里的值应该是1200 。

Calculate Throughput based on :有5个选项,分别是:
  This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以该线程的数量。
  All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
  All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。
  All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
  All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

在控制吞吐之后,得到的数据有模有样:

【第五幕】武林秘籍重现江湖!

手捧着数据,回到了大神身边,大神语重心长的说:

在我的武功秘籍里,不对,在我的ppt里有一张performance curve。
你的结果能对的上performance curve,你就能明白一些结果了。

一切仿佛又回到了起点,只是世界变得安静了。静静地翻看这本秘籍,我想我有点懂了。

最后的总结: 总结:

用户量为40的时候,平均响应时间基本在400ms左右,此时吞吐量在1500/min(25/s),吞吐量还在上升阶段。
用户量到55~65阶段,吞吐量基本达到峰值2076/min(34.6/s),用户量在65的时候,响应时间开始快速上升。
用户量在70+以后,吞吐量急速下降,相应的响应时间也在75的时候达到了1000ms+左右。
通过以上评估,压力<=40阶段,为light load阶段,压力在40~50之间比较理想饱和阶段,50~65之间服务器heavy load阶段。
当用户>70的时候,为buckle Zone阶段。

【剧终】 

感谢大神循循善诱,不断的鞭策和无私奉献,最终获得这本武林秘籍,这将是我的研究方向。

性能测试学习资源分享

END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10 dubbo源码学习_线程池

1. 线程模型&线程池介绍1.1 线程池1.2 线程模型 2. 线程池源码分析2.1 FixedThreadPool2.2 CachedThreadPool2.3 LimitedThreadPool 3. 线程模型源码3.1 AllDispatcher3.2 DirectDispatcher3.3 MessageOnlyDispatcher3.4 ExecutionDispatcher3.5 ConnectionOrderedDispatch…

Visual Studio C# WinForm开发入门(6):TreeView 控件使用

TreeView控件用树显示节点层次。 例如&#xff1a;顶级目录是根(C:)&#xff0c;C盘下的每个子目录都是子节点&#xff0c;而每个子目录又都有自己的子节点 TreeView属性和方法&#xff1a; 属性说明CheckBoxes表示节点旁边是否出现复选框ImageList指定一个包含节点图标的Imag…

Spring Cloud Gateway 服务网关的部署与使用详细介绍

为什么需要服务网关 传统的单体架构中只需要开放一个服务给客户端调用&#xff0c;但是微服务架构中是将一个系统拆分成多个微服务&#xff0c;如果没有网关&#xff0c;客户端只能在本地记录每个微服务的调用地址&#xff0c;当需要调用的微服务数量很多时&#xff0c;它需要…

【音视频第20天】wireshark+tcpdump

tcpdump抓 wireshark分析 目录 tcpdumpwireshark tcpdump tcpdump参数详解 网上一搜一大堆。最全的不是用tcpdump -h而是man tcpdump来查询手册。 tcpdump -i eth0 -p udp -xx -Xs 0 -w /root/test2.cap -i 针对eth0网卡的&#xff0c;ifconfig是查看有几个网卡 -i eth0 表示…

海睿思分享 | 终于有人把指标体系和标签体系说清楚了

当前&#xff0c;随着企业数字化转型如火如荼地开展&#xff0c;在企业经营管理数字化的数据建设过程中&#xff0c;经常会遇到指标和标签的使用场景。 指标体系到底是什么&#xff1f;标签体系又是什么&#xff1f;这些疑问导致在数据分析过程中效率低下、科学性不高&#xf…

回首来路多感概,最是奋斗动人心。

我们必需要在不同的时代有不同的领悟&#xff0c;才能充满生机地去迎接生命中每个新的开始。 文章目录 前言 初心 成长 收获 憧憬 出发 前言 今天是我成为csdn创作者一周年纪念日&#xff0c;我非常开心能够和大家分享我的写作之旅。在这一年里&#xff0c;我经历了许多挑…

ChatGPT实现数据集模拟生成,ChatGPT实现密码生成

数据集模拟生成 之前章节我们已经演示过ChatGPT 如何根据 prompt 编写文章或续写文章&#xff0c;文本生成的作用不仅仅在语文方面有用&#xff0c;本节我们演示另一种场景&#xff0c;利用 ChatGPT 来生成数据。看似作用差不多&#xff0c;其实这是目前开源社区非常常用的大语…

低代码和零代码二子争夺,你扶谁上位?

传统的软件研发方式目前并不能很好地满足企业的需求&#xff1a;人员成本高、研发时间长、运维复杂。这时低代码或零代码工具的出现为快速开发软件提供了更好的思路。对于不太了解两者的人来说&#xff0c;零代码和低代码是什么&#xff1f;又有什么联系与区别&#xff1f; 什么…

手把手教你安装telnet(离线方式+在线方式)

系列文章目录 文章目录 系列文章目录前言一、telnet是什么&#xff1f;二、安装步骤总结 前言 一、telnet是什么&#xff1f; Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力…

[openwrt] valgrind定位内存泄漏

目录 要求 valgrind 简介 工具介绍 linux程序的内存布局 内存检查的原理 valgrind的使用 使用举例 内存泄漏 内存越界 内存覆盖 Linux分配虚拟内存&#xff08;申请内存&#xff09;的两种方式 brk和mmap 要求 被调试程序带有-g参数编译&#xff0c;携带debug参数…

二维码在数字化班组管理中的应用

为了更好地贯彻落实集团公司对班组安全建设的要求&#xff0c;可以运用“加法思维”&#xff0c;勇于直面当前安全班组建设中的突出问题&#xff0c;敢于创新和突破&#xff0c;自主搭建数字化班组管理平台&#xff0c;以进一步提升班组安全建设水平。 本文将详细介绍搭建设备…

腾讯云CDN的HTTPS服务是收费的?

腾讯云内容分发网络CDN的HTTPS请求数收费了&#xff0c;之前阿里云CDN是收费的&#xff0c;现在腾讯云HTTPS请求数也开始收费的&#xff0c;但是腾讯云还是很良心的每月300万次以内是不计费的&#xff0c;只有超出free额度的部分才另外收费&#xff0c;HTTPS请求数价格为0.05元…

Windows10资源管理器使用

文章目录 前言二、关联菜单操作1.分组展示2.添加选择复选框3.使用窗格模式4.功能区折叠二、“文件夹选项”对话框操作1.访问模式调整2.状态栏控制总结前言 目前Windows系统中的使用较多当属Windows10,资源管理器属于Windows系统中一个常用工具。本文总结了Windows 10 专业版下…

类的默认成员函数

为什么会有构造函数和析构函数呢&#xff1f; 1、初始化和销毁经常忘记 2、有些地方写起来很繁琐. Stack有了构造和析构&#xff0c;就不怕忘记写初始化和清理函数了&#xff0c;也简化了 例如在队列oj时&#xff0c;忘记释放&#xff0c;造成内存泄漏 构造函数 主要任务&am…

spark on k8s 部署的一点理解

Running Spark on Kubernetes - Spark 3.4.0 Documentation (apache.org) 前提条件 1. 本地有spark安装包&#xff0c;以便于执行 spark submit 命令 2. k8s 集群&#xff0c;以及本地的有 kubectl 并且配置的用户包含相关权限&#xff0c;具体可以参考官网 一些观念的转变 …

二百左右的蓝牙耳机哪款好?200左右音质最好的蓝牙耳机

在日常生活中离不开智能手机&#xff0c;特别是对无线蓝牙耳机的需求程度也越来越高&#xff0c;但是市面上有很多的蓝牙耳机戴久了耳朵会出现不舒服&#xff0c;为了获得更好的使用体验&#xff0c;我整理了市面上200左右价位佩戴和音质都表现不错的蓝牙耳机。 一、南卡小音舱…

Leetcode 并查集详解

在一些应用的问题中&#xff0c;需将n个不同的元素划分成一组不相交的集合。开始时&#xff0c;每个元素自成一格单元素集合&#xff0c;然后按一定顺序将属于同一组的元素的集合合并。其间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查…

【22】linux进阶——文本处理工具:cut、awk、sed

大家好&#xff0c;这里是天亮之前ict&#xff0c;本人网络工程大三在读小学生&#xff0c;拥有锐捷的ie和红帽的ce认证。每天更新一个linux进阶的小知识&#xff0c;希望能提高自己的技术的同时&#xff0c;也可以帮助到大家 另外其它专栏请关注&#xff1a; 锐捷数通实验&…

一段凄惨Android 面试经历分享,败在了项目架构原理上……

大家应该看过很多分享面试成功的经验&#xff0c;但根据幸存者偏差的理论&#xff0c;也许多看看别人面试失败在哪里&#xff0c;对自己才更有帮助。 这是一位网友分享的面试经历&#xff0c;他准备了3个月&#xff0c;刚刚参加完字节跳动的第三面&#xff0c;视频面&#xff…

数说故事联合中山大学国际关系学院共建「国关数据实验室」,深化数据科学与国际关系融合创新

4月9日&#xff0c;数说故事联合中山大学国际关系学院共建的「国关数据实验室」正式启动&#xff0c;此次强强联合是双方在国际关系领域的一项创新尝试&#xff0c;该实验室旨在整合数说故事和国际关系学院师生的资源优势&#xff0c;将数据科学与国际关系研究相结合&#xff0…