面试了上百位性能测试后,我发现了一个令人不安的事实...

在企业中负责技术招聘的同学,肯定都有一个苦恼,那就是招一个合适的测试太难了!若要问起招哪种类型的测试最难时,相信很多人都会说出“性能测试”这个答案。

每当发布一个性能测试岗位,不一会就能收到上百份简历,其中不乏学历亮眼、背景出色、简历里各种高并发、大流量的项目经验。

但是进入面试环节后,却发现绝大多数的候选人,简历上所谓的性能测试经验,都是停留在工具使用、脚本编写的水平,通常都是把脚本放到压力机上跑一下,然后统计出数据就完了。

当你希望候选人讲一个项目中遇到的性能问题,以及如何分析定位时,却发现绝大多数根本没有遇到过性能问题。

也有少量候选人也测出过一些性能问题。然而追问其性能瓶颈的原因以及如何解决时,对方却回答说,把问题抛给开发后,由开发来解决,至于什么原因,后续并没有关注。

甚至面试了几个高级性能测试工程师,还是发现一旦涉及到性能分析调优,就开始左顾右盼、答非所问

究其原因,大部分测试同学本身参与的性能测试项目就比较少,从而造成遇到的性能问题的概率就很低。即便是专职做性能测试的,如果你没有良好的追踪和总结问题的习惯,而是过度的依赖开发,那自然也不会有太多的积累

不要说测试了,就算是开发,能有几个懂性能分析调优呢?性能难,难于上青天。企业希望能招到擅长性能分析的人。而广大测试小伙伴却根本没有实践机会,何来经验积累?这本身就是一个行业矛盾!

有时候我就在天真的想,如果能有人把自己的性能分析经验免费分享出来该多好啊!

有这样的人吗?有!那就是我哈哈哈

一、性能测试想做什么
二、性能测试的基本流程
三、性能测试的前期准备
四、性能测试的工具及相关学习建议(文末分享性能测试学习资源)

一、性能测试想做什么

首先,性能测试想做的事情,类似下图:

这是一个简化过的关于web应用的服务端的性能测试示意图,性能测试想要模拟真实业务场景。当一个应用上线,有很多用户通过客户端访问服务端。他们把请求通过用户界面发送给了服务端,于是在服务端接收到了大量的请求,如果用户数很多,那么服务端有可能承受不了这种压力,进而崩溃,严重的可能导致大量经济损失。

性能测试则是希望通过提前模拟这种压力,来发现系统中可能的瓶颈,提前修复这些bug,减少服务器宕机的风险。此外,性能测试还可以用来评估待测软件在不同负载下的运作状况,帮助管理层做一些决策。比如早期有的管理者会希望通过性能测试来评估需要买几台服务器。但,这种做法随着云计算的普及,已经过时。在云计算平台上,硬件资源可以弹性获取,自动调整。云计算也会对性能测试的方式产生影响,包括服务端资源监控在内的很多工作,未来都可以交给云计算平台了。大家也可以关注一下,云计算对传统测试工作的冲击。

二、性能测试的基本流程

下图表示了一个简单的性能测试的基本流程中,我们怎样得到性能测试的结果。

然后,这只是一轮性能测试的开始,得到性能测试的结果之后,还有很多工作:

可以说,这里的调优过程才是性能测试的技术含量所在。这可能也是性能专家这个角色存在的意义之一。而测试人员通过做性能测试,进阶成为性能专家,也是一种发展方向。但不得不说,这条路是比较难走的,限于我个人视野,我觉得DBA、运维、开发、这些角色都比测试更容易发展为性能专家。当然是否走这条路也要看个人兴趣了。

调优的话,主要看调优小组推测的瓶颈在哪里,比如推测瓶颈在数据库,可能让DBA调整一下数据库配置,然后再测一遍。推测瓶颈在第三方提供的设备上,那就咨询一下第三方的技术支持,然后调整一下配置再测一遍。这个调优过程,可能比较长。

从以上两图可以看出,在整个性能测试过程中,测试人员能做的工作其实并不多,且大多数属于第一阶段的低技术含量工作。主要集中在脚本录制或编写、性能监控器的配置和数据的收集上。后者还会受到云计算平台普及的冲击,很可能以后不用你做任何工作就能简单得收集到想要的资源使用情况数据。而在第二阶段调优时,性能调优小组的介入使测试人员存在感进一步下降。其中水平较低的测试人员将沦为脚本执行员和脚本修改操作员。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!qq群号:110685036

 

三、性能测试的前期准备

此外,还有一个性能测试还有一个前期准备阶段:

这里先补充一些名词解释,我只是根据自己理解写一下,并不精确。精确定义大家可以网上搜索,另外我最后会推荐一些参考资料。

吞吐量:

表示待测应用对业务的支持量,以TPS或QPS为单位,表示每秒钟能处理的请求数。需要分析业务场景来计算吞吐量。

请听题:小明办了一个电影网站,每天有2000个用户会上来看电影,假设每个人都只看一部电影,该电影网站每本电影需要播放两小时。每个用户每次看一本电影会向待测应用运行的服务器发送10个请求,其播放的电影数据存储和传输在第三方,本题中不需要考虑。每天晚上7点到9点为黄金时间,在每天的用户中会有一半人选择在这个时间点上来看电影。请计算该网站的平均吞吐量和峰值吞吐量。

-----自己思考-----

-----自己思考-----

-----自己思考-----

平均吞吐量=总请求数/总时间 = 2000×10/(24×3600)

峰值吞吐量=峰值请求数/峰值时间 = 2000*0.5*10/(2*3600)

具体数字就不算了,算出来你发现吞吐量很低很低。这是因为这些数据我是随便造的,并且我之前工作过的电影网站吞吐量确实也很低,没多少用户。然后除了这些,还有很多估算。比如故意夸大一点,乘以一个估算系数之类的。总得来说,算出来的吞吐量不一定很精确,对计算公式感兴趣的话,可以搜索一下,有很多人给出更具体的例子。

如果你还有许多困惑,那么我整理的视频资源和文档会是你的良师益友,或许可以给你带来一些实际性的帮助与突破。

点击文末小卡片关注我的gzh免费获取~

虚拟用户数:

性能测试要模拟的用户数量。

性能测试结果:

包括响应数据和性能指标。

响应数据相关的常见指标有:90%平均响应时间、错误率等

性能指标包括CPU,I/O,Memory,Network四个方面,每个方面都有几个指标。

关于这块,相信你能在网上找到相关文章教你的,我这里就不展开了。

测试策略,代表设计这些场景的依据,在这里主要有以下几种:

注意,这里的名字并不是全球统一的,不同的公司,不同的人可能对同一种测试策略有不同的叫法。

1)基线测试,又叫基准测试:
测一下单个用户做主要业务流程的场景。其性能测试结果会作为比对依据。
2)性能测试:
逐步增加用户数,比如10个,20个,50个,80个,130个,得到不同用户数情况下的性能测试结果变化趋势图。这个图里常常可以发现性能瓶颈。比如用户数到某个值时突然性能指标下降了很多,错误率大幅上升了。那就需要进一步分析是软件的问题还是硬件的问题,还是环境的问题等。
3)压力测试:
使用超过系统设计的最大用户数,看看待测应用会不会崩溃,会怎么样,有没有隐患和风险等。
4)负载测试:
在比较高的用户数情况下,较长时间得执行测试,观察系统在较高负载较长时间下的稳定性。
5)根据性能测试的负载生成器所在位置,还可以分出本地同网络的测试和跨网络的测试。
6)还有当下比较时髦的全链路测试,其实就是把真实环境划出一块来做测试。这样来解决估算不准的问题。这块网上有一些资料,但不太多。

关于分析生产环境和建立估算模型。可以去搜搜阿里研究员对全链路压测的演讲。或者去找其他资料。我也没估算过,不展开了。我只做过最简单的,在没上线的生产环境上做性能测试。但估算的问题很明显就是:很难估算准确。

其他在前期要做的事情,还有确定测试通过标准,比如吞吐量要达到多少,错误率低于多少,响应时间要多快,服务器CPU占用率要多少以下等等。

以及确定测试环境用什么设备,怎么搭建。等等。

四、性能测试的工具及相关学习建议

然后说到测试工具,再吐槽一下一上来就问工具的人。上面这么多原理你如果不了解的话,只会用工具是没什么用的。

现在的主流性能测试工具是:Jmeter、其次Grinder,Gatling,Locust,Loadrunner等等等等,此处排名不分先后。我也不知道哪个工具是第二流行的。

jmeter的学习主要通过官方用户手册。现在这个工具对我来说最大的问题就是图形界面用起来挺麻烦。后来的很多工具已支持纯脚本或代码方式描述测试场景。不过幸好我也不经常做性能测试。我的建议是大家都要学jmeter,其他工具可以选学,loadrunner除非真的你公司要用否则不用学。

而监控服务器指标方面,jmeter有插件支持。也可以用linux命令行工具做。也有人用商业工具做。总之要把服务器性能指标和请求响应时间两组数据的时间线对上,让我们可以看到什么时候发送了多少请求,响应时间多少,错误率多少,此时服务器负载又是多少。

此外再推荐blazemeter的博客。blazemeter虽然是付费工具,但他的博客里有很多干货,比如性能测试指标怎么分析,看到性能指标图在什么地方出现拐点最可能的瓶颈在哪里。他有很多不错的文章,是我近期研究性能测试工具时常常查看的。

另外强烈推荐这本书,可以带你了解一下web应用的性能测试到底是怎么回事:

微软MSDN上的:Performance Testing Guidance for Web Applications

不懂英文没关系,这本应该是有中文翻译本的。

总而言之,不管你做不做性能测试,多多少少要知道是怎么回事,可能什么时候你领导就要你做个简单的性能测试呢。也要有逐步加压的做性能测试的这种概念和思路。性能测试本身也是很系统化的一种测试,其中各个步骤环环相扣的特点,也是其最有意思的地方。

好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。
如果这个文章写得还不错,觉得我彭于晏有点东西的话 求点赞 👍求关注 ❤️求分享 👥 对耿男我来说真的非常有用!!!
白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

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

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

相关文章

kafka-4 生产者和消费者

kafka的生产者和消费者四、 生产者4.1 分区分配策略4.2 副本和消息消费4.2.1 副本(AR、ISR、OSR)4.2.2 HW与LEO4.2.3 ISR 集合和 HW、LEO的关系五、消费者5.1 分区分配策略5.2 消费者offset的存储四、 生产者 4.1 分区分配策略 (1&#xff…

Webpack 实践:配置、性能优化和最佳实践

总结 通过以下的配置示例和性能优化策略,我们希望能帮助你在 Webpack 实践中获得更好的开发体验和项目性能。这里仅仅是冰山一角,Webpack 的功能还有很多等待你去探索。 在本篇文章中,我们将深入探讨 Webpack 的实践,包括配置示例…

Python 小型项目大全 71~75

七十一、声音模拟 原文:http://inventwithpython.com/bigbookpython/project71.html 类似于西蒙电子玩具,这款识记游戏使用第三方playsound模块,播放四种不同的声音,分别对应键盘上的A、S、D、F键。当你成功地重复游戏给你的图案时…

【SSL】ssl证书简介、ssl证书生成工具与ssl证书生成步骤

ssl证书简介、ssl证书生成工具与ssl证书生成步骤一、ssl证书是什么?二、ssl证书生成工具有哪些?2.1、工具一:CFSSL2.2、工具二:OpenSSL2.3、工具三:XCA三、ssl证书有什么用?四、ssl证书生成步骤4.1 步骤1&a…

6基于二阶锥规划的主动配电网最优潮流求解

matlab代码:基于二阶锥规划的主动配电网最优潮流求解 参考文献:主动配电网多源协同运行优化研究_乔珊 摘要:最优潮流研究在配 电网规划运行 中不可或缺 , 且在大量分布式能源接入 的主动配 电网环境下尤 为重要 。传统的启发式算…

【安全防御】防火墙(二)

目录 1、防火墙如何处理双通道协议 2、防火墙如何处理nat 3、防火墙支持哪些NAT,主要应用的场景是什么? 4、当内网PC通过公网域名解析访问内网服务器的时候,会存在什么问题,如何解决?请详细说明 5.防火墙使用VRRP…

2023-04-10 网络流和最大流问题

网络流和最大流问题 1 网络流和最大流问题阐述 网络流基本概念 网络流图中,从源点出发,在满足每条边容量限制的条件下,汇点t最多能接收多少流量 s:sourcet:target 网络流需要满足的限制 容量限制平衡限制:除了源点s和汇点t&a…

第三章 spring IOC与Bean环境搭建与应用

1、手动导入Lib包搭建环境 1.1、下载Apache Common Logging API https://commons.apache.org/proper/commons-logging/download_logging.cgi 1.2、下载spring https://repo.spring.io/ui/native/release/org/springframework/spring/5.3.13/ 名称作用docs包含 Spring 的 …

李宏毅2021春季机器学习课程视频笔记9-再谈宝可梦分类器

宝可梦与数码宝贝很类似。 明显数码宝贝的线条更加复杂,宝可梦更简单,可以从这个角度出发。 利用一些边缘检测工具(canny),e用来计算线条的复杂程…

CSDN,感谢遇见【我的一周年创作纪念日】

机缘 第一次遇见CSDN已经是7年前的事了,那时的我还是一名初二的学生,由于沉迷于玩具战争这款游戏(很遗憾这款游戏已经停服),里面有许多大佬利用各种手段去开挂,所以我意外的接触到了浏览器抓包等计算机技术…

考研数二第十四讲 牛顿-莱布尼茨公式与用定义法求解定积分

牛顿-莱布尼茨公式 牛顿-莱布尼茨公式在微分与积分以及不定积分与定积分之间架起了一座桥梁,因此,这个公式又被称为微积分基本公式。 微积分基本公式的简单推导 在看微积分基本公式之前,我们先来看一个有点特殊的函数,积分上限…

HashMap和HashTable的区别

目录一、HashMap和HashTable的区别二、验证结论1.线程安全和不安全2.继承的父类不同3.对null key和null value的支持不同4.初始化和扩容方式不同一、HashMap和HashTable的区别 1.HashMap方法没有synchronize修饰,线程非安全,HashTable安全 拓展:HashTabl…

OctoClock CDA 2990

CDA 2990 CDA 2990为时钟和PPS分发设备,支持外部一路时钟和PPS输入,最高支持8路时钟和PPS输出。同时CDA 2990可选配带GPS模块版本,可外接GPS天线,支持通过GPS锁定时钟和PPS信号输出。CDA 2990主要用于多台USRP设备进行同步。 CDA…

康耐视Designer-通过康耐视VC5与Omron PLC CJ2MEthernet IP通讯详细设置步骤

测试使用软件版本 Designer Version: 2.7 EDS File Version: 1.01 CX Programmer Version: 9.2 Network Configurator Version: 3.56 测试使用硬件 Cognex Vision Controller VC5 CIC500&CIC2900 OMRON PLC: CJ2M CPU31 PLC端设置 1.在Network Configurator中安装…

算法 二叉树2 || 层序遍历 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111 二叉树的最小深度 222.完全二叉树的节点个数

102 二叉树的层序遍历 队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。 而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。 迭代法: /*** Definition for …

进来拿!最近疯传的154页微软 GPT-4早期实验报告:探究 AGI进化之路(全中文版)

这应该是,最近一段时间以来,关于 ChatGPT4.0剖析最全面的一份报告。 看懂10%,能帮我们对 ChatGPT 的认识,有一个质的跃升; 看懂50%,你将是分享 ChatGPT 知识领域最顶尖的那一拨人。 这份报告证明了 GPT-4…

若依数据隔离 ${params.dataScope} 替换 优化为sql 替换

若依数据隔离 ${params.dataScope} 替换 优化为sql 替换 安全问题:有风险的SQL查询:MyBatis解决 若依框架的数据隔离是通过 ${params.dataScope} 实现的 但是在代码安全扫描的时候$ 符会提示有风险的SQL查询:MyBatis 所以我们这里需要进行优化参考: M…

5分钟学会Ribbon负载均衡

文章目录一、Ribbon1.1 Ribbon的负载均衡流程:1.2 负载均衡策略1.2.1 内置的负载均衡策略1.2.2 如何修改负载均衡1.3 加载方式一、Ribbon 1.1 Ribbon的负载均衡流程: 获取可用的服务列表:客户端在进行服务调用之前,首先需要获取可…

如何基于ChatGPT+Avatar搭建24小时无人直播间

0 前言 最近朋友圈以及身边很多朋友都在研究GPT开发,做了各种各样的小工具小Demo,AI工具用起来是真的香!在他们的影响下,我也继续捣鼓GPT Demo,希望更多的开发者加入一起多多交流。 上一篇结合即时通 IM SDK捣鼓了一个…

SpringAOP入门基础银行转账实例(进阶版)------------事务处理

SpringAOP入门基础银行转账实例**(进阶版)**------------事务处理 由上一节讲述的通过Connection和QueryRunner对事务进行的处理(详情可以去我之前写的博客文章:https://blog.csdn.net/m0_56245143/article/details/130069160?spm1001.2014…