【性能测试】真实企业,性能测试流程总结分析(一)
目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
性能测试什么时候开始?
一般在系统功能稳定没有大的缺陷之后开始执行。
但前期准备工作可以从系统需求分析时就开始:性能目标制定、场景获取、环境申请等。
1、制定性能测试目标
在特定的并发用户数下测试特定场景的响应时间
在一定的响应时间的要求下来测试特定场景的最大并发用户数
测试特定场景的TPS
1)线上系统
对线上系统的日志进行分析以获取到这个系统每个功能的访问情况、最大的并发用户量、平均/最大/最小响应时间。
然后通过每日的增长趋势来确定最大的并发用户数、响应时间参考日志分析的结果,即与平均响应时间相当。
2)全新项目
开发过程相关文档
项目开发计划书、需求规格说明书、设计说明书等文档都可能涉及性能测试的要求。通过收集这些材料,可以找到初步的性能需求。但这些性能测试需求往往不够准确,需要性能测试人员进行专业的引导。
类似项目
公司的其他产品或以往项目会累积出一些数据,可以作为参考。
用户使用模型
分析用户使用模型是获取性能测试需求的有效手段,考虑哪些用户使用系统的哪些典型的业务,在什么时段有多少用户进行了什么功能的操作。
例如:
某OA系统每天早上8:00会有200个用户在10分钟内登录系统;
每天查询交易的高峰是在9:0011:00和下午的14:0016:00等,然后根据这个用户使用模型并结合80/20原则计算OA系统的登录以及交易查询业务的并发量。
80/20原则
80/20原理就是系统在每个工作日有80%的业务是在20%的时间内集中完成,或者系统80%的用户会在20%的时间内集中进行应用操作。
下面我们来举两个例子说明:
某网站每日的总访问人数为10万,其中浏览单品页占30%,搜索业务占20%,登录+购买业务占50%。采用80~20原则,8小时的20%作为基准时间,计算各个业务的并发数。
搜索业务:(100000*20%*80%)/(8*3600*20%)=2.78取整为3浏览单品页:(100000*30%*80%)/(8*3600*20%)=4.17取整为5登录+购买:(100000*50%*80%)/(8*3600*20%)=6.94取整为7
系统每年的业务集中在8个月完成,每个月平均有20个工作日,每个工作日8小时,按照80/20原则,即每天80%的业务在1.6小时完成。
年全年处理业务约100万笔,其中15%的业务处理中每笔业务需对应用服务器提交7次请求,其中70%的业务处理中每笔业务需对应用服务器提交5次请求,剩余15%的业务处理中每笔业务需对应用服务器提交3次请求。
根据以往的统计结果,每年的业务增长量为15%,考虑到今后3年的业务发展需要,测试需按现有业务量的两倍进行请求数来计算系统应该达到的TPS。
每年的总请求数=(100万*15%*7+100万*70%*5+100万*15%*3)*2=1000万TPS=(10000000*80%)/(8*20*8*3600*20%)=8.68,取整即TPS=9
响应时间标准:
2秒以内,用户感受良好;
2~5秒,用户觉得可以接受;
5~10秒,用户会觉得很烦躁,无法接收,会频繁刷新页面;
10秒以上,用户完全无法接收,直接离开;
2、性能测试场景获取
1)线上系统
单场景:
根据对线上系统的日志分析结果,访问量排在前面的功能、本次改动的以及可能会影响到的功能、和钱有关的功能。
为保险起见最好再和开发确认一下会影响到的功能。
混合场景:
还是根据线上系统的日志分析结果,得到系统级别的最大并发数,再根据每日的增长趋势做一个增量从而得到最终的最大并发数。
然后根据日志分析结果中的各个重要功能的占比数来进行用户分配。
稳定性场景:
确定好单场景和混合场景后,还应该考虑稳定性场景。其目的是测试系统是否有内存泄漏现象发生,同时也可以测试系统的平均无故障时间。
所以,可以用混合场景做长时间的稳定性测试。
2)全新项目
单场景:
重要、核心的功能
常用功能
业务流程复杂的功能
资源占用严重的功能(比如多表查询或向多张表中插入数据)
混合场景:
根据一定的比例把所有重要的功能都加入混合场景
稳定性场景:
可以考虑用混合场景做长时间的稳定性测试。
3、性能测试数据确定
性能测试中很重要的一点就是场景数据的设计。
比如一个数据查询场景,如果该场景对应的数据库表只有10条数据,那么查询结果肯定相对较快。
但是,如果这个查询场景对应的数据库表有1000万条数据,那么查询结果肯定会比只有10条数据的查询结果要慢一些。
如果性能测试不考虑数据量,那么性能测试的结果是不准确的,上线后由于未考虑数据量的因素而引发的性能问题几率会很大。
对于线上系统来说,各表的数据量可以根据线上系统的各表数据量以及增量来确定。而新系统需要根据开发文档以及和相关项目干系人(如:客户代表、项目经理、需求分析员、系统架构师以及产品经理一起调研和讨论来决定)
| 下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)
勇往直前,不畏挫折;努力奋斗,无惧困境。拥抱变革,追逐梦想;燃烧激情,创造辉煌。只有坚持不懈的努力,才能让我们的人生绽放出耀眼的光芒。
把握当下,放眼未来,勇敢追逐梦想,脚踏实地努力奋斗。只要坚持不懈地追求,就能在人生的舞台上书写出属于自己的精彩篇章。
每一次努力,都是向梦想更近一步;每一次坚持,都是给未来更大的机会。相信自己的力量,勇往直前,奋斗不息,终将创造出辉煌的人生。
相关文章:
【性能测试】真实企业,性能测试流程总结分析(一)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试什么时候…...
20231224解决outcommit_id.xml1 parser error Document is empty的问题
20231224解决outcommit_id.xml1 parser error Document is empty的问题 2023/12/24 18:13 在开发RK3399的Android10的时候,出现:rootrootrootroot-X99-Turbo:~/3TB/Rockchip_Android10.0_SDK_Release$ make installclean PLATFORM_VERSION_CODENAMEREL…...
电子电器架构刷写方案——General Flash Bootloader
电子电器架构刷写方案——General Flash Bootloader 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:文章1万字左右,深度思考者入!!! 老规矩,分享一段喜欢的文字,避免…...
【Linux】僵尸与孤儿 进程等待
目录 一,僵尸进程 1,僵尸进程 2,僵尸进程的危害 二,孤儿进程 1,孤儿进程 三,进程等待 1,进程等待的必要性 2,wait 方法 3,waitpid 方法 4,回收小结…...
Java小案例-Sentinel的实现原理
前言 Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。 主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 核心概念 要想理解一个新的技…...
【Leetcode Sheet】Weekly Practice 21
Leetcode Test 1901 寻找峰值Ⅱ(12.19) 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 …...
C语言使用qsort和bsearch实现二分查找
引言 在计算机科学领域,查找是一项基本操作,而二分查找是一种高效的查找算法。本博客将详细解释一个简单的C语言程序,演示如何使用标准库函数qsort和bsearch来对一个整数数组进行排序和二分查找。 代码解析 包含头文件 #include <stdi…...
MySQL的替换函数及补全函数的使用
前提: mysql的版本是8.0以下的。不支持树形结构递归查询的。但是,又想实现树形结构的一种思路 提示:如果使用的是MySQL8.0及其以上的,想要实现树形结构,请参考:MySQL数据库中,如何实现递归查询…...
2022第十二届PostgreSQL中国技术大会-核心PPT资料下载
一、峰会简介 本次大会以“突破•进化•共赢 —— 安全可靠,共建与机遇”为主题,助力中国数据库基础软件可掌控、可研究、可发展、可生产,并推动数据库生态的繁荣与发展。大会为数据库从业者、数据库相关企业、数据库行业及整个IT产业带来崭…...
2024 年 10大 AI 趋势
2025 年,全球人工智能市场预计将达到惊人的 1906.1 亿美元,年复合增长率高达 36.62%。 人工智能软件正在迅速改变我们的世界,而且这种趋势在未来几年只会加速。 我们分析了未来有望彻底改变 2024 年的 10 个AI趋势。从生成式人工智能的兴起到…...
Uboot
什么是Bootloader? Linux系统要启动就必须需要一个 bootloader程序,也就说芯片上电以后先运行一段bootloader程序。 这段 **bootloader程序会先初始化时钟,看门狗,中断,SDRAM,等外设,然后将 Linux内核从f…...
ECMAScript 的未来:预测 JavaScript 创新的下一个浪潮
以下是简单概括关于JavaScript知识点以及一些目前比较流行的比如:es6 想要系统学习: 大家有关于JavaScript知识点不知道可以去 🎉博客主页:阿猫的故乡 🎉系列专栏:JavaScript专题栏 🎉ajax专栏&…...
代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素
239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 文章讲解…...
推荐五个免费的网络安全工具
导读: 在一个完美的世界里,信息安全从业人员有无限的安全预算去做排除故障和修复安全漏洞的工作。但是,正如你将要学到的那样,你不需要无限的预算取得到高质量的产品。这里有SearchSecurity.com网站专家Michael Cobb推荐的五个免费…...
Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记
Cross-Drone Transformer Network for Robust Single Object Tracking论文阅读笔记 Abstract 无人机在各种应用中得到了广泛使用,例如航拍和军事安全,这得益于它们与固定摄像机相比的高机动性和广阔视野。多无人机追踪系统可以通过从不同视角收集互补的…...
【LeetCode刷题笔记】动态规划(二)
647. 回文子串 解题思路: 1. 暴力穷举 , i 遍历 [0, N) , j 遍历 [i+1, N] ,判断每一个子串 s[i, j) 是否是回文串,判断是否是回文串可以采用 对撞指针 的方法。如果是回文串就计数 +1...
(十七)Flask之大型项目目录结构示例【二扣蓝图】
大型项目目录结构: 问题引入: 在上篇文章讲蓝图的时候我给了一个demo项目,其中templates和static都各自只有一个,这就意味着所有app的模板和静态文件都放在了一起,如果项目比较大的话,这就非常乱…...
蓝牙技术在物联网中的应用
随着蓝牙技术的不断演进和发展,蓝牙已经从单一的传统蓝牙技术发展成集传统蓝牙。高速蓝牙和低耗能蓝牙于一体的综合技术,不同的应用标准更是超过40个越来越广的技术领域和越来越多的应用场景,使得目前的蓝牙技术成为包含传感器技术、识别技术…...
宝塔面板Linux服务器CentOS 7数据库mysql5.6升级至5.7版本教程
近段时间很多会员问系统更新较慢,也打算上几个好的系统,但几个系统系统只支持MYSQL5.7版本,服务器一直使用较低的MYSQL5.6版本,为了测试几个最新的系统打算让5.6和5.7并存使用,参考了多个文档感觉这种并存问题会很多。…...
掌握常用Docker命令,轻松管理容器化应用
Docker是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。下面介…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
