7年经验之谈 —— 浅谈web性能测试

什么是性能测试?

web性能应该注意些什么?

性能测试,简而言之就是模仿用户对一个系统进行大批量的操作,得出系统各项性能指标和性能瓶颈,并从中发现存在的问题,通过多方协助调优的过程。而web端的性能测试应该注意的指标有:用户操作的响应时间、系统的吞吐量(TPS)、系统的硬件资源情况(CPU、硬盘、磁盘)、网络资源占用情况等

web性能测试之HTTP请求

关于性能测试中,HTTP请求类的性能指标都需要我们去关注些什么?

响应时间,这里的响应时间一定得是前端+后端的响应时间,我们惯性的思维都是只关注后端服务的响应时间,其实前端的响应时间也是须考虑在内的。

并发测试的相应数据,这部分也得考虑前端数据,这只是一个大概的补充,因为具体的系统需要的数据不一样,其中也不乏包括响应时间。

其中,前端的响应时间都涉及到哪些环节呢?

DNS解析
各种请求的连接
TLS的建立
字节流的发送

另外,后端响应时间涉及的环节:
等待(前端请求)
接收信息流
返回响应数据

这其实就是一个比较完整的web端请求所需要的环节,而响应时间就是指的这个请求的过程所花费的时间。这部分时间就是一个用户在操作的时候所等待的时间,所以用户所能接受的时间范围恰好是性能测试所关注的时间范围。通常用户所能接受的系统响应时间是3-5s,若大于这个时间节点,将会使用户失去耐心,取消对系统的操作。

web性能测试之Jmeter

Jmeter属于一个非常实用的测试工具,在性能测试当中也占有一个非常重要的位置。通常jmeter在性能测试过程中,涉及到的基本是直接对接的后端服务,针对前端的响应基本不会涉及,所以用jmeter来对一个web系统进行性能测试时,很难去捕获到前端的响应数据。但是后端响应数据获取起来非常的便捷,其中就包括:并发数、平均响应时间、错误率、吞吐量等等,如下图:

那么,关于前端的响应数据,我们该用什么方法去获取呢?接下来讲的一种方法,就是利用LR来进行。

web性能测试之Loadrunner

Loadrunner则是属于企业软件,这就奠定了它功能繁多,用途广泛的基础。LR算是一个大型的性能测试工具了,但是平常使用也还是其基本的一些功能。LR在用户界面交互上进行了注重,也就是我们之前提到的前端的响应数据,利用LR能够弥补jmeter无法涉及到的前端响应时间这部分,通过更接近用户对界面的交互,得出前端发起请求到请求发送到后台服务这个过程的响应时间。所以,这前后端两部分的响应时间之和,就是我们基本能够判定一个系统真正响应时间的依据。

web性能测试之响应时间

结合以上提及到的响应时间,它所涉及到的有两个部分,一是前端,二是后端:

关于整体系统压测策略

那提及到系统压测的策略,其实是想提一下怎样去利用单节点和集群这两种方案。通常的压测,都是采用的单节点来进行的,这样“以小见大”的方法不为一个不可采取的方法,但是这其中还是会造成很多的误差。还有就是,单节点的压测容易压低整个系统的性能指标,因为无法充分的利用系统资源

而集群压测,在环境部署上是一个复杂点,但是能够充分利用系统已有资源,这样得出的数据能够更加真实有效。在有过量的时间时,可以讲单节点和集群的压测数据进行对比,这样就能发现其中存在的差异。

关于性能测试日志

关于性能测试日志

性能测试中,日志是非常能够反应出测试工作中问题所在的一个环节,通过查看日志来定位问题是一个繁杂但是极为可靠的方式。

此类测试中,都会涉及到哪些日志呢?

Jmeter端日志

HTTP端打到Nginx端的日志,这层会涉及到来源IP、请求地址、响应时间等。

Tomcat层日志

Server层日志

关于OS层数据监控

  • CPU监控

通常的指标是CPU使用率不能超过80%,这样给系统预留一个缓冲的范围。这里提及一点,就是其中涉及到多核CPU的情况,严谨的人会去关注每核CPU的使用情况,因为很多时候多核CPU的利用并不是均衡的,整体的CPU使用情况不能反映出单核的使用情况,容易造成误导。

  • JVM层监控

这主要是去监控线程,其中包含单线程、多线程,同步线程、异步线程。关于同步线程和异步线程,是一个系统中比较关注的点,假如:一个系统处理事务时,采用的是同步线程,很多事务会等待处理造成阻塞,那么这样的系统处理速度就会受到很大的限制,会被视为一个不合格的系统。

以上算是记录一下从多方面去考虑web性能测试的各个点,从而使测试结果更加真实有效。

最后: 可以在我的VX公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

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

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

相关文章

高效协作处理缓存清理需求:生产者-消费者模式助力多模块缓存管理

在现代应用系统中,缓存是提高性能和减少数据库负载的重要手段之一。然而,缓存的数据在某些情况下可能会过期或者变得无效,因此需要及时进行清理。在复杂的应用系统中,可能有多个系统、多个模块产生缓存清理需求,而这些…

【LeetCode】剑指 Offer Ⅱ 第1章:整数(5道题) -- Java Version

题库链接:https://leetcode.cn/problem-list/e8X3pBZi/ 题目解决方案剑指 Offer II 001. 整数除法快速除 ⭐剑指 Offer II 002. 二进制加法模拟:StringBuilder ⭐剑指 Offer II 003. 前 n 个数字二进制中 1 的个数动规:res[i] res[i & (…

【组内工作】木马回联

文章目录 C2服务器安装和运行方法CrossC2运行方法sliver运行方法empire安装方法DeimosC2安装教程TrevorC2安装教程: C2服务器的流量特征CrossC21. 心跳包2. 命令3. ja3/ja3s Sliver1. http2. https empirehttphttps DeimosC2https TrevorC2 C2服务器安装和运行方法 …

C\C++内存管理

目录 1.C/C内存分布2.C语言中动态内存管理方式3.C中动态内存管理3.1new/delete内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数4.2重载operator new与operator delete(了解) 5.new和delete的实现原理5.1内置类型5.2 自定义类…

2023亚马逊云科技中国峰会——Amazon DeepRacer

1.DeepRacer技术背景 早在20世纪初汽车问世之时,发明家们便已提出无人驾驶的设想。但即便是实现无人驾驶的初级阶段,也经历了足足百年时间。毕竟在复杂的城市路况下,机器若想像人一样实现感知、决策、控制等功能,必定面临各种复杂…

每日一博 - How To Improve API Performance

文章目录 包括但局限于以下措施1. 采用分页显示2. 异步记录日志3. 利用缓存技术4. 实施负载压缩5. 管理数据库连接池 包括但局限于以下措施 1. 采用分页显示 当查询结果过多时,将结果分为多个页面进行显示,可以有效地提高系统的响应速度。这样&#xff…

IntelliJ IDEA 2023.2 主要更新了什么?(纯文本介绍版)

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

empty module导致的lvs问题

write_verilog时-exclude empty_modules即可 这里也分享一下ICC2 write lvs netlist的命令 write_verilog -exclude {scalar_wire_declarations leaf_module_declarations empty_modules well_tap_cells filler_cells supply_statements} -hierarchy all -force_no_referenc…

Spring MVC 是什么?

一、什么是 Spring MVC? 官方对于 Spring MVC 的描述是这样的: Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web …

信息安全战线左移!智能网联汽车安全亟需“治未病”

当汽车由典型的工业机械产品逐步发展成为全新的智能移动终端,汽车的安全边界发生了根本性改变,信息安全风险和挑战不断增加。 面对复杂的异构网络、异构系统及车规级特异性要求,智能智能网联汽车信息安全到底要如何防护,已经成为…

【Linux】POSIX信号量

1 认识信号量 前面的初识信号量 信号量(信号灯):本质就是一个计算器信号量需要进行PV操作,P -- ;V ,原子的!信号量是用来描述临界资源中资源数目的 根据资源数目分成两类一个资源&#xff…

JVM类加载

一、类记载过程 1、通过类的全限定名获取存储该类的class文件 2、解析成运行时数据,即instanceKlass实例,存放到方法区 3、在堆区生成该类的class对象,即instanceMirrorKlass实例 二、将.class文件解析成什么?类的元信息在JVM中如何…

IOS UICollectionView 设置cell大小不生效问题

代码设置flowLayout.itemSize 单元格并没有改变布局大小, 解决办法如下图:把View flow layout 的estimate size 设置为None,上面设置的itemSize 生效了。

系统架构设计师-软件架构设计(5)

目录 一、构件与中间件技术 1、软件复用 2、构件与中间件技术的概念 3、构件的复用 3.1 检索与提取构件 3.2 理解与评价构件 3.3 修改构件 3.4 组装构件 4、中间件 4.1 采用中间件技术的优点: 4.2 中间件的分类: 5、构件标准 5.1 CORBA(公共…

【弹力设计篇】弹力设计总结

前面主要聊了多个弹力设计,遮盖力主要做一个汇总 弹力设计总图 集群:服务不能是单点的,所以我们的架构需要冗余设计,设计成集群服务,也就是多个副本机制。需要具体的技术 负载均衡服务健康检查,使用像Ng…

【单谐波非线性振动问题求解器 GUI 】使用单个谐波表示解决 MDOF 非线性振动问题(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 对于解决多自由度(MDOF)非线性振动问题,使用单个谐波表示是一种常见的近似方法。这种方法将系统的非线性部…

使用3ds Max粒子系统创建飞天箭雨特效场景

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 设置箭头 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我使用多边形建模技术制作了一个简单的箭头,我将 在教程中使用。.max您可以从 下载部分。 箭头.max 步骤 3 将此箭头重命名为静态…

Stability AI推出Stable Diffusion XL 1.0,文本到图像模型

Stability AI宣布推出Stable Diffusion XL 1.0,这是一个文本到图像的模型,该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示,SDXL 1.0能生成更加鲜明准确的色彩,在对比度、光线和阴影方面做了增强,可生成…

【JavaSE】运算符

【本节目标】 1. 熟练掌握各种运算符 这部分内容和C语言的位运算相似,可以参考这篇文章:【C语言】操作符详解 目录 1. 什么是运算符 2. 算术运算符 3. 关系运算符 4. 逻辑运算符 5. 位运算符 6. 移位运算(了解) 7. 条件运算符 1. 什么是运算符 …

用JavaScript和HTML实现一个精美的计算器

文章目录 一、前言二、技术栈三、功能实现3.1 引入样式3.2 编写显示页面3.2 美化计算器页面3.3 实现计算器逻辑 四、总结 一、前言 计算器是我们日常生活中经常使用的工具之一,可以帮助我们进行简单的数学运算。在本博文中,我将使用JavaScript编写一个漂…