当前位置: 首页 > news >正文

13年测试经验,性能测试-压力测试指标分析总结,看这篇就够了...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

一般推荐,如果你:

没啥人用的服务 tps 20,返回有300ms就行了;
十万到百万级的服务,响应能达到tps50 /200ms就可以了;
后台服务,能达到tps 20 / 200ms即可(通常后台同时使用也没多少人);
秒杀类的短时间高并发……TPS100或200 在 100ms内响应 应该也能撑一段时间(具体情况还是要看业务量)

背景:
做项目开发的时候,不止一次被性能测试问“这个服务性能要求是多少?”他期望能得到一个这次接口TPS压到50还是100,返回时间是100ms还是200ms的回答。然后压力测试的脚本就跑起来,挨个接口就去压了。

但作为产品我怎么知道报多少合适呢?(是的,在某些团队这是研发负责人应该考虑的)。通常我们是只知道业务量,怎么转换成tps、返回时间的要求呢?(有时候业务量都估算不出来,那这种场景下你就按最顶部的推荐的来测吧。)

现在,只要10分钟,让你了解怎么计算这些内容。
首先,需要知道不同的产品有不同的应对要求

手机发货的抢购秒杀场景和美团的场景需求不一致,导致产品性能要求就不一致
千万级用户的app和十万级app,同样的性能要求,转换为技术指标上也不一致

继续计算,我们需要了解

什么是TPS?
Transactions Per Second(每秒传输的事物处理个数,或者说每秒系统接收的任务数量),系统接收到任务后会有一个处理时间。

在压力测试时,测试人员会主动按一定tps的量来主动发起接口请求,比如tps=50,就是每秒请求50次,获取一个平均的响应时间(单位一般都是毫秒ms)。压力测试人员口中的TPS50 200ms返回,就是指每秒测试人员主动发起50次请求,这些请求会在平均200ms返回。

由于其他技术指标如QPS(数据的每秒查询个数)等性能都会在tps这个维度上展示出来,因此可通过tps对系统性能进行简单判断,以满足日常性能测试需求。

性能测试的指标是怎么来的呢?

1、产品和运营要给出业务匡算:
这个服务,在多长时间段,多少人会访问

2、性能要求上,通常情况下的APP应该如何?
页面访问的2、5、8原理(用户进入服务2s内要展示完所有内容,超过5秒用户就无法忍受了,超过8秒就没有人再等了,直接关闭服务)
因此页面的渲染时间+资源文件的载入时间+接口的获取时间需要保证1s~2s内完成

3、这个条件下接口获取时间多长合适?
无脑建议200ms以内(考虑到你页面也要2s打开,还要给其他工作留时间)

怎么通过业务量来计算TPS多少合适呢?

直接上公式不太好理解,我们先看案例
案例1:
秒杀型算法
案例的业务量要求
某业务,类似秒杀型,用户估算有2W左右,每个用户平均请求2次接口(查询用户信息接口、查询业务接口), 这些用户大概率会在2分钟内会访问我们的系统,业务要保证用户2s能打开页面

TPS的分析
TPS是系统每秒钟处理的任务数量,给定二业务场景,我们就需要先计算出来每秒需要系统处理多少任务,从而反推在压力测试的时候,需要给多大的TPS了。

首先,整个系统的总请求数=用户(2W)* 每个用户请求数(2次)= 40000次
其次,每秒要求处理的请求数=总请求数/时间(切换到秒) 即约350(333向上取个整吧)。

最后,TPS并发数量与每个请求所消耗的时间,可实际计算出每秒实际能够处理的请求数。

即每秒实际处理请求数量=tps数量 * 1000【1秒,需要切换为毫秒】/单组tps处理时间【这里是按200ms返回】
因此,我们只要保证 每秒实际处理请求数>每秒要求处理的请求数 就可以了。

最终结果就是:
TPS数量 > 每秒要求处理的请求数 * tps返回时间【按200ms计算】/1000ms
带入数据计算
tps>(350 * 200)/1000,具体tps>70。

因此可让压力测试人员按照tps100来压接口,返回在200ms以内就满足性能要求。
当然如果实际tps50的返回时间为100ms,则按照这个粗略的公式来推算,也是能够支撑的(350 * 100/1000=35,也就是说tps高于35,返回100ms以内也是可以的)

案例2:
一个日常服务的算法
如:一个100w访问的服务,每天访问集中白天8小时,每个用户大约会请求3个接口,每天早上9点是峰值。

首先计算日均请求数(每秒);
按8小时 100w访问量、平均3个接口请求计算;
每秒日均请求数=100w(访问量)* 3(每个访问量平均请求接口数)/8(小时)/3600(切换成秒),结果就是每秒请求100次。

按接口200ms返回,tps需要> 100 * 200/1000,即>20就行了。
如考虑日常服务的峰值,则按4 * 日均,即每秒请求400次,则tps>80即可,因此可推荐按tps=100来做接口的压力测试。

相关总结:
时间段越短,数据也越接近于瞬间并发
如果用整日的数据来计算总请求数,需要按照日流量分布来估算一个峰值数据,日常APP可考虑使用 峰值=4 * 日均【当然还是要看你具体的访问量】

如果觉得以上繁杂,反正你也可以参考这个结论:
没啥人用的服务 tps 20,返回有300ms就行了;
十万到百万级的服务,响应能达到tps50 /200ms就可以了;
后台服务,能达到tps 20 / 200ms即可(通常后台同时使用也没多少人);
秒杀类的短时间高并发……TPS100或200 在 100ms内响应 应该也能撑一段时间(具体情况还是要看业务量);

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

拥有梦想是勇敢的开始,坚持奋斗是壮丽的征程。不畏艰难,迎难而上,只有燃烧激情、持之以恒,才能谱写人生最美妙的乐章。相信自己,跨越极限。

每一次努力都是为自己的梦想增添一抹色彩,每一次挑战都是成长的机会。不畏困难,勇往直前,只要坚持奋斗,就能绽放出人生最耀眼的光芒,创造属于自己的璀璨未来!

奋斗是翻越荆棘的道路,汗水是收获的甘露。不屈不挠,追求卓越,只要努力奋斗,就能点亮人生的星空。相信自己,坚持梦想,你将书写属于自己的辉煌传奇,绽放生命的无限光芒。

相关文章:

13年测试经验,性能测试-压力测试指标分析总结,看这篇就够了...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般推荐&#xf…...

大数据课程D3——hadoop的Source

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Source的AVRO Source; ⚪ 掌握Source的Exec Source; ⚪ 掌握Source的Spooling Directory Source; ⚪ 掌握Source的Netcat Source; ⚪ 掌握Source的Sequence Generator Source;…...

F5 LTM 知识点和实验 4-持久化

第四章:持久化 持久化: 大多数应用都是有状态的,比如,使用一个购物网站,最重要的是用户在放入一个商品之后,刷新网页要能继续看到购物车里的东西,这就需要请求报文发到同一个后端服务器上,持久化就能完成这个功能。 持久化支持一下几种场景: 源地址目标地址SSLSIPH…...

SpringBoot之WebMvcConfigurer详解

目录 一、基本介绍 二、WebMvcConfigurer接口展示 三、常用方法列举 3.1 addInterceptors:添加拦截器 3.2 addResourceHandlers:添加静态资源 3.3 addCorsMappings:添加跨域 编写的初衷是为了自己巩固复习,如果能帮到你将是…...

WPF实战学习笔记22-添加自定义询问窗口

添加自定义询问窗口 详细代码&#xff1a;https://github.com/DongLiqiang/Mytodo/commit/221de6b2344d5c861f1d3b2fbb2480e3e3b35c26 添加自定义询问窗口显示方法 修改文件Mytodo.Extensions.DialogExtension 添加内容&#xff0c;类中添加内容 /// <summary> /// …...

Spring Boot项目的创建

hi 大家好,又见面了,今天继续讲解Spring Boot 文章目录 &#x1f436;1.什么是Spring Boot?&#x1f436;2.Spring Boot的优势&#x1f436;3.Spring Boot项目创建&#x1f33c;3.1使用ieda创建&#x1f95d;3.1.1下载插件Spring Boot Helper&#x1f95d;3.1.2创建项目 &…...

Python加载数据的5种方法

大家好&#xff0c;今天回顾五种引入数据的Python技术&#xff0c;并附有代码实例参考。 我们将使用Numpy、Pandas和Pickle包&#xff0c;所以要导入它们&#xff1a; import numpy as np import pandas as pd import pickle Manual功能 这是最困难的&#xff0c;因为你必须…...

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…...

vue+leaflet笔记之地图量测

vueleaflet笔记之地图量测 文章目录 vueleaflet笔记之地图量测开发环境代码简介插件简介与安装使用简介图形量测动态量测 详细源码(Vue3) 本文介绍了Web端使用Leaflet开发库进行距离量测的一种方法 (底图来源:天地图)&#xff0c;结合leaflet-measure-path插件能够快速的实现地…...

“深入理解SpringBoot:从入门到精通的几个关键要点“

标题&#xff1a;深入理解Spring Boot&#xff1a;从入门到精通 摘要&#xff1a;本文将深入探讨Spring Boot的关键要点&#xff0c;帮助读者从入门到精通。我们将从Spring Boot的基本概念开始&#xff0c;介绍自动配置、起步依赖、注解驱动开发等特性&#xff0c;并通过示例代…...

数值线性代数: 共轭梯度法

本文总结线性方程组求解的相关算法&#xff0c;特别是共轭梯度法的原理及流程。 零、预修 0.1 LU分解 设&#xff0c;若对于&#xff0c;均有&#xff0c;则存在下三角矩阵和上三角矩阵&#xff0c;使得。 设&#xff0c;若对于&#xff0c;均有&#xff0c;则存在唯一的下三…...

【JVM】详解对象的创建过程

文章目录 1、创建对像的几种方式1、new关键字2、反射3、clone4、反序列化 2、创建过程步骤 1、检查类是否已经被加载步骤 2、 为对象分配内存空间1、指针碰撞针对指针碰撞线程不安全&#xff0c;有两种方案&#xff1a; 2、空闲列表选择哪种分配方式 步骤3、将内存空间初始化为…...

华纳云:ubuntu下如何搭建nfs服务

在Ubuntu下搭建NFS(Network File System)服务&#xff0c;可以实现网络文件共享。以下是在Ubuntu上搭建NFS服务的步骤&#xff1a; 安装NFS服务器和客户端软件&#xff1a; 打开终端&#xff0c;并使用以下命令安装NFS服务器和客户端软件&#xff1a; sudo apt-get update s…...

HCIA实验二

实验要求&#xff1a; 1.R2为ISP&#xff0c;只能配置IP 2.R1-R2之间为HDLC封装 3.R2-R3之间为PPP封装&#xff0c;pap认证&#xff0c;R2为主认证方 4.R2-R4之间为PPP封装&#xff0c;chap认证&#xff0c;R2为主认证方 5.R1、R2、R3构建MGRE&#xff0c;仅R1的IP地址固定…...

stm32 舵机 cubemx

文章目录 前言一、cubemx配置二、代码1.serve.c2.serve.h3.主函数 总结 前言 stm32对舵机进行控制&#xff0c;很简单直接一个pwm就可以实现 pwm的周期是50HZ占空比分别对应 一个0.5ms的高电平对应于0度 一个1.5ms的高电平对应于90度 一个2.5ms的高电平对应于180度 因此&#…...

无涯教程-jQuery - Spinner组件函数

Widget Spinner 函数可与JqueryUI中的窗口小部件一起使用。Spinner提供了一种从一组中选择一个值的快速方法。 Spinner - 语法 $( "#menu" ).selectmenu(); Spinner - 示例 以下是显示Spinner用法的简单示例- <!doctype html> <html lang"en"…...

Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘 文章目录 Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘1️⃣简介2️⃣鼠标控制与移动3️⃣键盘控制与输入4️⃣结语&#x1f4e2; 1️⃣简介 &#x1f680;&#x1f680;&#x1f680;学会控制鼠标和键盘是…...

docker基于centos7镜像安装python3.7.9

下载centos7镜像 docker pull centos&#xff1a;centos7 启动容器centos-python-3.7 docker run -itd --name centos-python-3.7 -p 60021:22 --privileged centos:centos7 /usr/sbin/init 进入容器 docker exec -it centos-python-3.7 /bin/bash centos7环境下安装python3.7.…...

JavaScript中的switch语句

switch语句和if语句一样&#xff0c;同样是运用于条件循环中&#xff1b; 下面例子我们用switch实现 例如如果今天是周一就学习HTML&#xff0c;周二学习CSS和JavaScript&#xff0c;周三学习vue&#xff0c;周四&#xff0c;周五学习node.js&#xff0c;周六周日快乐玩耍&…...

Jquery笔记

DOM对象通过jquery获取 所有的代码都是基于引入jquery.js文件 var mydiv $(#div);//直接获取到DOM对象元素id var mydiv$(.div)&#xff1b;//通过class获取DOM对象&#xff0c;如果有同名class只会获取第一个 var mysapn$(span);//通过元素的标签名获取DOM对象 var divarr$(…...

【C++】优先级队列的基本概念以及其模拟实现

文章目录 补充知识&#xff1a;仿函数一、优先级队列&#xff1a;1.引入2.介绍 二、priority_queue的模拟实现1.大体框架2.私有成员函数&#xff1a;1.向下调整&#xff08;AdjustDown&#xff09;2.向上调整&#xff08;AdjustUp&#xff09; 3.公有成员函数1大小&#xff08;…...

TextClamp for Vue3.0(Vue3.0的文本展开收起组件)

呦&#xff01;大家好&#xff0c;好久没有更新博客了&#xff0c;最近实现了一个一直想自己完成的一个东西&#xff0c;就是文本的展开收起组件&#xff0c;以前项目需要用到&#xff0c;自己实现一个又太繁琐&#xff0c;所以那个时候都是用的别人的轮子&#xff0c;现在自己…...

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测

区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 目录 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测 VAR(Vector Autoregression)模型是一种广泛应用于时…...

在 Windows 上搭建 NTP 服务器

文章目录 一、基础环境二、适用场景三、操作步骤四、常用的NTP服务器五、参考资料 版权声明&#xff1a;本文为博主原创文章&#xff0c;于2023年7月30日首发于CSDN&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/u011046671 一、基础…...

应急响应经典案例-FTP 暴力破解

应急响应经典案例-FTP 暴力破解 应急场景日志分析应急处理措施 应急场景 从昨天开始&#xff0c;网站响应速度变得缓慢&#xff0c;网站服务器登录上去非常卡&#xff0c;重启服务器就能保证一段时间的正常访问&#xff0c;网站响应状态时而飞快时而缓慢&#xff0c;多数时间是…...

41. linux通过yum安装postgresql

文章目录 1.下载安装包2.关闭内置PostgreSQL模块:3.安装postgresql服务:4.初始化postgresql数据库:5.设置开机自启动:6.启动postgresql数据库7.查看postgresql进程8.通过netstat命令或者lsof 监听默认端口54329.使用find命令查找了一下postgresql.conf的配置位置10.修改postgre…...

SpringBoot启动流程及自动配置

SpringBoot启动流程源码&#xff1a; 1、启动SpringBoot启动类SpringbootdemoApplication中的main方法。 SpringBootApplication public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, …...

【Linux】进程轻松入门

目录 一&#xff0c; 冯* 诺依曼体系结构 1&#xff0c;存储结构 ​编辑 二&#xff0c; 操作系统 1&#xff0c;概念 2&#xff0c;设计OS的目的 3&#xff0c;定位 4&#xff0c;如何理解 "管理" 5&#xff0c; 总结 三&#xff0c;进程 1. 概念 那么…...

【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Tomcat 安装配置教程及成功后,启动失败报错解决方案

解决方案 我的报错原因是因为我的JDK是1.8的而我的Tomcat是10版本的&#xff0c;可能是因为版本原因吧&#xff0c;我重新装了Tomcat 9就可以启动成功了&#xff01; 简单说下安装的时候需要注意哪些步骤吧 今天我在安装tomcat10的时候&#xff0c;安装成功后&#xff0c;启…...

学校网页网站模板/优化培训学校

此花像“野草”一样皮实&#xff0c;开花360天&#xff0c;35℃高温照样爆盆在平时养殖花花草草的过程中&#xff0c;有些花友把花卉盆栽买回家以后&#xff0c;没养多久就出现了黄叶、烂根的现象&#xff0c;所以最后对养花都失去了信心。其实石头认为&#xff0c;如果大家刚开…...

wordpress禁止截屏/福州seo公司

1.eclipse下面的servlet中的tomcat在stop状态下下双击&#xff0c;会弹出tomcat服务器的相关配置&#xff0c;在弹窗的页面下有个“Modules”选项&#xff0c;点击切换弹窗。 2.在右侧的 选择中有个 Add External Web Modules… 的选项按钮&#xff0c;点击后有个小的弹窗&…...

做网站需要公司备案/关键词排名优化易下拉软件

今天晚上我迫不急待的打开电脑&#xff0c;一阵撕心裂肺的猫叫之后&#xff0c;我开始了网上的旅程。 没搞错&#xff0c;上不去我的网页&#xff0c;怎么搞的&#xff0c;我可是网页的版主哦&#xff0c;这就像因太晚没回家而被老婆关在门外的可怜人一样&#xff0c;只…...

毕业设计做网站难吗/关键词优化哪个好

| 来源&#xff1a;知乎无意间刷到的一篇文章https://zhuanlan.zhihu.com/p/998520592019.11.27 &#xff5e; 2019.12.27 入职字节整整一个月了&#xff0c;这是我人生中第一份实习&#xff0c;也是我职场生涯的第一步&#xff0c;真的很幸运能够加入字节这样一个扁平、年轻且…...

企业网站开发制作/免费培训机构

有时候我们需要在程序中执行另一个程序的安装&#xff0c;这就需要我们去自定义 msi 安装包的执行过程。需求比如我要做一个安装管理程序&#xff0c;可以根据用户的选择安装不同的子产品。当用户选择了三个产品时&#xff0c;如果分别显示这三个产品的安装交互 UI 显然是不恰当…...

常州建站软件/seo推广技术培训

文章目录Java锁synchronized关键字学习系列之偏向锁升级无锁偏向锁原理批量重偏向和批量撤销偏向锁升级偏向锁升级轻量级锁偏向锁升级重量级锁参考源代码Java锁synchronized关键字学习系列之偏向锁升级 前面几篇博文已经简单介绍了偏向锁了。《Java锁synchronized关键字学习系…...