性能测试从零开始落地实施全过程指南之性能测试计划怎么写?

news2024/11/25 0:42:21

目录

前言

一、测试背景

二、测试目的

三、测试范围

四、术语约定

五、环境说明

六、需求分析

七、测试策略

八、准备工作

九、组织架构

十、风险分析

十一、交付清单

十二、阶段进度


前言

最近有些同学找我咨询关于性能测试计划相关的问题,原因是他们公司要做性能测试,Leader要求写一份性能测试计划,苦于之前没做过相关工作,无从下手。

这篇博客,结合我个人的一些经验和总结,聊聊如何制定一份较为全面的性能测试计划。

一、测试背景

首先要阐述本次性能测试的背景,即被测系统类型,面向哪些用户,具备什么特点,为什么要进行性能测试,预期的一些指标等等。

比如:为了保证“双十一”大促期间,系统能稳定运行且保障业务的高可用,进行性能测试。

核心:评估系统性能、分析性能变化趋势、定位系统瓶颈风险、协助规划系统容量。

二、测试目的

测试的目的要根据测试背景来分析设定,比如:

1、线上服务由于流量过高某部分应用挂了,那测试目的就是:定位瓶颈、分析调优验证;

2、运营做了拉新和新的渠道拓展,那测试目的就是:评估系统性能是否满足新的线上业务;

3、系统架构由集群技改为微服务,那测试目的就是:验证稳定性、可用性、单实例容量,为线上服务扩容提供容量规划数据;

性能测试工程师必看视频教程:2023最新的真实企业大厂性能测试全流程的项目实战详解,可以写进简历面试的那种哦_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV1PW4y1R7ye/?spm_id_from=333.999.0.0

 

三、测试范围

通过需求调研,分析用户使用场景,对业务数据量增长变化趋势及峰值活跃用户等数据做定量分析,确定被测系统的应用范围,比如订单+购物车+商品+支付服务。

业务归属模块业务涉及场景
订单创建订单
取消订单
购物车添加购物车
删除购物车
商品商品列表
商品详情
支付余额支付
支付宝支付
微信支付

四、术语约定

这里的术语指的是:涉及本次性能测试相关的一些专业术语说明,目的是统一口径,做解释说明,便于参与本次性能测试的相关人员理解。常见术语如下:

术语名称术语释义
并发单位时间内(S)模拟客户端发起的请求数量
稳定性验证系统在长时间(24h/48h)负载情况下的性能表现
高可用验证系统在一部分服务宕机后能否正常提供服务以及服务恢复速率
TPS每秒事务数,即系统单位时间内(S)的请求处理能力
RT响应时间,及系统处理一笔请求所耗费的时间
请求成功率在测试过程中,系统成功处理请求占总请求数的百分比

PS:术语约定以实际情况为准,还要考虑性能测试计划的受众对于性能测试的了解程度,本约定旨在统一描述的口径,降低沟通成本。

五、环境说明

一般来说,进行性能测试的环境都是在UAT或者独立的性能测试环境,但为了准确描述环境类型和配置,以及测试环境和生产环境的区别,建议对生产环境和测试环境进行对比说明。

1、生产环境

①、系统架构

PS:上图只是一个简略的微服务类型系统架构,只做示意,理解即可。

②、服务配置

服务名称数量配置备注
gateway server102C3G网关服务,身份验证和请求转发
web server32C3G
app server52C3G
Redis34G哨兵模式,一主两从
DB28C16G一主一从

2、测试环境

①、系统架构

②、服务配置

服务名称数量配置备注
gateway server52C3G网关服务,身份验证和请求转发
web server22C3G
app server22C3G
Redis24G哨兵模式,一主一从
DB28C16G一主一从

3、负载机配置

负载机(machine)即模拟客户端发送请求的机器,一般情况下,说明负载机的硬件配置,数量,IP,发压策略即可。

4、网络

即负载机和性能测试环境的网络状况,比如国内公网/同一VPC内网,防火墙策略等。

六、需求分析

需求分析一般有这几个阶段:需求接入→需求收集→需求分析,主要内容如下:

1、业务模型

如下是一个典型的电商平台核心业务链路图,涉及到登录、首页、商品、购物车、支付、分享等模块。

2、性能指标

这里的性能指标包含如下两项:

①、业务性能指标

即预期的TPS、RT、请求成功率(一般默认请求成功率≥99.99%)。

②、硬件性能指标

即服务端资源耗用指标,常规的资源监控指标有:CPU使用率、Memory使用率、系统IO、网络IO等。

性能测试工程师必看视频教程:2023最新的真实企业大厂性能测试全流程的项目实战详解,可以写进简历面试的那种哦_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV1PW4y1R7ye/?spm_id_from=333.999.0.0

 

七、测试策略

本次性能测试所采用的测试策略,比如:

探测系统性能拐点,需要阶梯式压测;

探测系统在可接受的性能指标下最大的处理能力,需要采用负载、容量测试策略;

验证系统的稳定性和高可用,需要采用稳定性、高可用测试策略;

验证系统在不同配置下的性能表现,一般采用配置测试策略;

1、测试策略及场景

①、容量测试

场景名称

01_登录

02_首页

执行时间

10min

业务配比

100%

测试策略

容量测试

测试目的

不断增加负载,验证系统单节点的最大性能表现

②、稳定性测试

场景名称

混合场景

执行时间

24h

业务配比

按生产业务配比,等比缩放

测试策略

稳定性测试

测试目的

验证系统长期运行的稳定性以及是否存在OOM之类的问题

PS:如上表格描述,依然作为一个示例来说明,主要内容包括:场景编号、测试类型、涉及业务场景、业务配比、执行时间、测试目的。

2、测试监控策略

监控对象指标范围监控工具
CPU≤90%nmon、zabbix
Memory≤70%
网络IO无明显IO瓶颈
JVM无频繁FGC情况jmap、jstat

八、准备工作

准备工作主要包含如下几项:

准备事项准备内容责任人预计完成时间
工具准备负载工具、监控工具、分析工具测试/运维0.5工作日
脚本准备测试脚本测试0.5工作日
环境准备机器配置、服务部署联调、脚本调试运维/开发1工作日
数据准备铺底数据、测试数据、参数化数据、缓存数据DBA/开发/测试1工作日

九、组织架构

组织架构即本次性能测试涉及到的团队各角色成员,主要包含这些:PM角色、测试、开发、运维、DBA、网络、基础架构。示例:

十、风险分析

罗列开始执行前会影响本次性能测试工作开展的风险项以及应对方案,比如:

风险类型风险描述风险级别应对方案
交付风险UAT阶段发现较严重的功能缺陷测试时间顺延,或增加对应人员
变更风险临时需求变更、新增需求需求评审是否加入本次测试范围,阶段性交付
数据风险数据脱敏耗时较长、测试数据不可用重新拟定数据准备方案,小范围数据验证
环境风险部署出现问题,联调进度缓慢、网络带宽瓶颈更换环境、增加资源配置、扩展带宽

十一、交付清单

在性能测试计划中,需要说明本次性能测试各阶段的交付物,主要包含这几项:性能测试计划&方案、测试脚本、性能缺陷统计、轮次小节、性能测试报告。

十二、阶段进度

这里主要指的是从需求阶段到结束,各个阶段的工作进展以及资源安排,建议采用看板的方式,及时更新进度,方便推进工作的开展。示例如下:

阶段

事项

开始时间

结束时间

状态

责任人

需求阶段

需求评审

完成

多方参与

系统架构图

完成

开发

需求调研

完成

性能测试人员

准备阶段

环境交付

完成

运维、开发

应用部署

完成

运维、开发

数据准备

完成

开发、DBA、测试

脚本开发

完成

性能测试人员

实施阶段

执行压测

未完成

性能测试人员

服务监控

未完成

运维、测试

数据收集

未完成

性能测试人员

结束

报告评审

未完成

多方评审

如上,就是一个较为完整的性能测试计划内容,当然,完成性能测试计划并评审通过后,就可以进入测试执行阶段了。

性能测试工程师必看视频教程:2023最新的真实企业大厂性能测试全流程的项目实战详解,可以写进简历面试的那种哦_哔哩哔哩_bilibiliicon-default.png?t=N4P3https://www.bilibili.com/video/BV1PW4y1R7ye/?spm_id_from=333.999.0.0

 

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

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

相关文章

《C++ list的模拟实现》

本文主要介绍list容器的模拟实现 文章目录 1、迭代器正向迭代器类反向迭代器类 2、push_back尾插函数3、 push_front头插函数4、 insert插入函数5、erase删除函数6、pop_front函数7、pop_back函数8、 构造函数9、 拷贝构造函数10、 list赋值重载函数11、clear12、 析构函数程序…

AI注册流程

1、首先需要有一个OpenAI账号,如果有方法的,就可以自己先注册一下。如果没有方法的,还有一个付费版本的可以备选,亲测可用。 2、注册建议使用谷歌账号关联登录,最方便。微软账号太慢了,也可以使用。注册使用…

SAP-MM库存进销存报表

1、总览: 事务代码MB5B是查询选择期间之内的收发存报表; 其中,收、发为汇总选择期间的收、发信息,存为选择期间的期初、期末库存数据;我们也可以用该报表查询历史上某一天的库存,但注意有一些限制条件。 …

【Selenium】提高测试爬虫效率:Selenium与多线程的完美结合

前言 使用Selenium 创建多个浏览器,这在自动化操作中非常常见。 而在Python中,使用 Selenium threading 或 Selenium ThreadPoolExecutor 都是很好的实现方法。 应用场景: 创建多个浏览器用于测试或者数据采集;使用Selenium…

Region Proposal Network (RPN) 架构详解

动动发财的小手,点个赞吧! 简介 如果您正在阅读这篇文章[1],那么我假设您一定听说过用于目标检测的 RCNN 系列,如果是的话,那么您一定遇到过 RPN,即区域提议网络。如果您不了解 RCNN 系列,那么我…

Github copilot的详细介绍,竞品比对分析,效率使用方法总结。

Copilot介绍,与竞品对比 Copilot是GitHub和OpenAI合作开发的一款人工智能代码助手,它可以根据用户输入的注释和代码片段,自动生成高质量的代码。Copilot使用了OpenAI的GPT模型,可以学习和理解大量的代码库和文档,从而…

javascript基础十三:说说 typeof 与 instanceof 区别?

一、typeof typeof 操作符返回一个字符串,表示未经计算的操作数的类型 举个粟子: typeof 1 number typeof 2 string typeof undefined undefined typeof false boolean typeof Symbol() symbol typeof null object typeof [] object typeof {} object…

TCP传输性能的关键因素除了流量控制,还有这些!

TCP网络通信基本原理 文章目录 TCP网络通信基本原理TCP效率(滑动窗口)流量控制拥塞控制延时应答捎带应答 面向字节流异常情况分析总结UDP/TCP特性与不同应用场景 TCP效率(滑动窗口) 滑动窗口:在TCP通信协议下&#xf…

【UnityShader入门精要】【总结记录】【第二章-2】

☀️博客主页:CSDN博客主页 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&a…

1901-2021年1km分辨率逐月最高气温栅格数据(全国/分省)

气温数据是我们最常用的气象指标之一,之前我们给大家分享过来源于国家青藏高原科学数据中心提供的1901-2021年1km分辨率逐月平均气温栅格数据(可查看之前的文章获悉详情)! 本次我们分享的同样是来自国家青藏高原科学数据中心的高…

【探索】在 JavaScript 中使用 C 程序

JavaScript 是个灵活的脚本语言,能方便的处理业务逻辑。当需要传输通信时,我们大多选择 JSON 或 XML 格式。 但在数据长度非常苛刻的情况下,文本协议的效率就非常低了,这时不得不使用二进制格式。 去年的今天,在折腾…

Redis中的整数集合(IntSet)

Redis节省内存的两个优秀设计思想:一个是使用连续的内存空间,避免内存碎片开销;二个是针对不同长度的数据,采用不同大小的元数据,以避免使用统一大小的元数据,造成内存空间的浪费。IntSet便具备以上两个设计…

160套小程序源码

源码列表如下: AppleMusic (知乎日报) 微信小程序 d artand 今日更新求职招聘类 医药网 口碑外卖点餐 城市天气 外卖小程序 定位天气 家居在线 微信小程序-大好商城,wechat-weapp 微信小程序的掘金信息流 微信跳一跳小游戏源码 微票源码-demo 急救应急处…

MyBatis- plus

实战总结 1.批量插入性能 1.批量插入性能差的原因 使用saveBatch()方法时, MySQL JDBC驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入&a…

2023企业真实性能测试常见面试题分析

简述性能测试流程? 1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人…

Three.js——八、坐标、更改模型原点、移除、显示隐藏模型对象

世界坐标.getWorldPosition() 基础坐标也就是模型的.position属性 世界坐标:就是模型资深.position和所有父对象.position累加的坐标 用.getWorldPosition()属性需要用三维向量表示摸个坐标后方可读取 例如: const geometry new THREE.BoxGeometry(10…

【Qt】createEditor进不去【2023.05.07】

摘要 妈卖批,因为这个函数进不去,emo了一下午。实际上就是因为函数声明和定义的地方漏了个const关键字。 1.正确✔: QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) cons…

Rocketmq面试(三)消息积压,增加消费者有用么?

目录 一.广播模式和集群模式的不同 二.延迟拉取 三.消费者延迟拉取消息的原因 四.增加消费者后是如何分配MessageQueue(引出负载策略) 一.广播模式和集群模式的不同 首先我们要强调一下。在广播模式(每条消息需要被消费者组中的每个消费者处理,也就是…

QT/PyQT/PySide 通过富文本形式实现关键词高亮

因为本质上都是QT,所以我标题带了QT,这个思路是没问题的,就是用C得换个语言。 最开始想根据之前一篇博客的思路进行高亮 PyQT/PySide 文本浏览器跳转到指定行,并高亮指定行_qt 指定行高亮_Toblerone_Wind的博客-CSDN博客https:/…

Linux 设备树文件手动编译的 Makefile

前言 通过了解 Linux 设备树的编译方法,手动写了一个可以把 dts、dtsi、设备树依赖头文件等编译为设备树 dtb 的 Makefile Makefile 如下 mkfile_path : $(abspath $(lastword $(MAKEFILE_LIST))) cur_makefile_path : $(dir $(mkfile_path))DIR_ROOT : $(cur_ma…