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

如何编写性能测试计划?一篇文章教你设计符合项目的性能测试计划

上篇文章,我们讲过性能测试计划,接下来我们就来讲讲如何设计符合项目的性能测试计划。

到上篇为止,我们了解了性能测试计划中包含的内容,但是,这个颗粒度,我觉得作为一名测试经验不够丰富的性能工程师来说,还是有些迷茫,只知道理论还不够,如何把性能测试计划落地,才是我们这次的目标。

所以,接下来,我会结合实际的项目案例,来落地性能测试计划。当然,针对一看就懂的内容,我就不过多唠叨,毕竟,大部分人的想法都是:时间很珍贵,干货要满满。

设计符合项目的性能测试计划

背景

根据你的实际项目来描述即可, 此处省略……

性能目标

根据商品在系统中的下发主流程,来测试系统的单接口最大容量;

根据业务比例设计容量场景,充分利用当前资源,找到当前系统的性能瓶颈,并优化,以达到系统的最佳运行状态;

根据稳定性场景,判断当前系统可支持的系统最大累加容量;

根据异常场景,判断当前系统中的异常对性能产生的影响。

压测范围

计算接口;

同步接口;

在这里,强调一下:需要测试的接口,是业务主流程的主要接口,并不是所有的接口都需要测试。

我在面试过程中,问求职者这个问题, 大部分都会说所有的接口都会测试一遍,这没必要。

启停准则

启动准则:环境准备完毕,架构服务部署完毕,测试计划、测试方案评审完毕、所有功能测试完毕、所有相关人员(PM、架构师、开发工程师、性能测试工程师、运维)已到位;

结束准则:达到项目需求的性能指标,性能瓶颈已解决,测试报告和调优报告都已完成;

暂停准则:系统环境出现问题导致无法继续测试,比如网络不同、压力机损坏、服务宕机等;

在启动准则:上述问题都已解决,可以继续进行测试。

性能指标

这里的TPS,可以通过运维提供的数据,进行预估。

根据多年的测试经验,这里的TPS标准方差不会超过5%,如果超过,那……能为你"点赞"。

系统架构图

系统逻辑架构图 和系统部署架构图,你可以与设计沟通或者运维沟通,都可以得到。得到这两个图,需要你去梳理架构逻辑,为你进行性能瓶颈分析做准备。

压测前准备

主要是硬件服务的配置信息,这里的资源配置,在评审阶段就可以得到。

工具准备

压测工具:Jmeter+InfluxDB。

监控工具:Promethues、Grafana、Kafka、Logstash、Spring Boot Admin等。

数据准备

测试脚本数据的准备,由于我的项目需要读取文件的方式往数据库里面写数据,所以,txt文件里面的数据,我也是写脚本自动生成的。

性能设计

①性能测试策略,一定是要满足:连续、递增的策略。

如果你的性能测试策略不满足这两点,那我可以断定,你的性能测试最后的结果,一定不是准确地,或者说一定不会符合实际的生产环境的业务场景。

②业务场景,一定要满足 基准场景、容量场景、稳定性场景 和异常场景,否则,最后的结果,一定是跟上面说的一样。

监控设计

①全局监控设计:一定是从整体出发,监控全局系统;如何快速定位问题, 取决于你的全局监控部署的是否完整。

②定向监控设计:对具体的应用、数据库等进行监控分析,如 jstack、mysqlreport等。

全局监控发现问题, 定向监控分析问题,这就是监控布局的整体意义所在,定向监控是分析问题最快最直接最便捷的。

如果你没有定向监控,即使你的经验在丰富, 分析性能瓶颈也不是最快最准确的。

项目组织架构

把你的项目组织架构图画出来, 这样便于发现问题后知道第一时间找谁去处理。

例如:

PM:项目负责人;

架构师:项目架构负责人;

开发工程师:参与项目编发人员,解决性能问题;

性能工程师:负责编写性能测试脚本 和负责分析性能瓶颈 , 这两个职位可以是同一个人;

运维:部署服务,环境构建。

成果输出

性能测试报告、性能调优报告、性能测试脚本、性能缺陷列表,在大部分性能测试工程师认为,成果输出中,并不包含性能调优报告,我也调查过很多人,最后我得到的结果,让我很吃惊:

不知道性能成果还 性能调优报告;

性能调优报告是什么;

过程性内容,没必要提供;

性能调优是开发参与,我一个性能测试工程师,何必管那么多。

看到这里, 你是不是也很吃惊, 或者刷新了"三观认知"。所以,避免你说出同样的话,建议你在成果输出中包含 性能调优报告。

项目风险分析

关于项目分析分析, 你可能会说,项目风险是测试报告中体现的, 为何要在 性能测试计划中体现?

其实不然, 项目风险分析,是你性能测试开始前期进行分析和评估的。

例如:

你的测试环境无法满足与生产环境一样的配置;

你的业务模型可能因为某些原因,导致与生产环境某一节点不相符;

由于涉及多团队协作,可能在性能测试过程中,某些人员无法准确到位……

总结

看到这里,你是不是已经对如何编写性能测试计划有了重新的认识?我用了大篇幅的内容,从性能测试计划包含哪些内容,到如何落地性能测试计划,就是为了让你在性能测试更专业。

一份详细的性能测试计划,是整个性能测试工程的关键所在。而在这份性能测试计划中, 更核心的内容,就是:性能指标,系统架构图、性能场景、监控设计。

所以, 在整个性能测试计划中,你需要把更多的精力,放在更核心的内容上。只有编写详细的性能测试计划, 设定明确的性能指标, 理解系统架构图,设计完整的性能测试场景,部署完整的监控,你的性能测试才算完整。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

相关文章:

如何编写性能测试计划?一篇文章教你设计符合项目的性能测试计划

上篇文章,我们讲过性能测试计划,接下来我们就来讲讲如何设计符合项目的性能测试计划。到上篇为止,我们了解了性能测试计划中包含的内容,但是,这个颗粒度,我觉得作为一名测试经验不够丰富的性能工程师来说&a…...

第3章 Windows 下安装 Memcached教程

官网上并未提供 Memcached 的 Windows 平台install 包,咱们可以使用以下链接来download ,需要根据自己的去下载: 点击下载 在 1.4.5 版本以前 memcached 可以作为一个服务install ,而在 1.4.5 及之后的版本删除了该功能。因此咱…...

RXjava中的操作符

要使用Rxjava首先要导入两个包,其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0Rxjava中的操作符 创建型操作符 interval 创建一个按固定时间间隔发射整数序列的Observable&#xf…...

前端页面jquery规范写法

使用最新版本的 jQuery 最新版本的 jQuery 会改进性能和增加新功能,若不是为了兼容旧浏览器,建议使用最新版本的 jQuery。以下是三条常见的 jQuery 语句,版本越新,性能越好: $(.elem) $(.elem, context) context.find(.elem) 结果 1.6.2 版执行次数远超两个老版本。 jQ…...

【HEC-RAS水动力】HEC-RAS 1D基本原理(恒定流及非恒定流)

一、数据说明 HEC-RAS模型主要由工程文件 (.prj) 文 件 、 河道地形数据文件 ( .g01)、运行文件(p01)、非恒定流文件 ( .u01) 等部分组成。 1. 一般数据 在创建并保存project文件(*.prj)后,其他data文件均会自动以同样的名字保存,但采用不同的后缀来区分各类文件。 &qu…...

2.Gin内容介绍

目录 参考 主要内容 关于Web 创建项目 为什么要用框架 Gin框架介绍 Gin框架安装与使用 安装 第一个Gin示例: RESTful API Gin渲染 HTML渲染 自定义模板函数 静态文件处理 使用模板继承 补充文件路径处理 JSON渲染 XML渲染 YMAL渲染 protobuf渲染…...

python--matplotlib(3)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。 其他matplotlib文章 python--matpl…...

从源码中探究React中的虚拟DOM

引文 通过本文你将了解到 什么是虚拟DOM?虚拟DOM有什么优势?React的虚拟Dom是如何实现的?React是如何将虚拟Dom转变为真实Dom? 一、概念 虚拟DOM实际上是一种用来模拟DOM结构的javascript对象。当页面变化的时候通过一种算法来…...

容器架构概述

文章目录1. 介绍容器历史2. 描述 Linux 容器架构3. Podman 管理容器1. 介绍容器历史 近年来,容器迅速流行起来。然而,容器背后的技术已经存在了相对较长的时间。2001年,Linux引入了一个名为VServer的项目。VServer 是第一次尝试在高度隔离的…...

掌握MySQL分库分表(四)分库分表中间件Sharding-Jdbc,真实表、逻辑表、绑定表、广播表,常见分片策略

文章目录什么是ShardingSphere-JDBC?Sharding-Jdbc常见概念术语数据节点Node真实表逻辑表绑定表广播表数据库表分片(水平库、表)分片键 (PartitionKey)行表达式分片策略 InlineShardingStrategy(必备)标准分片策略Stan…...

2022-06-16_555时基的迷人历史和先天缺陷!

https://www.eet-china.com/news/magazine220608.html 555时基的迷人历史和先天缺陷! 发布于2022-06-16 03:39:12 LARRY STABILE 流行数十年的555时基,业内不知晓的工程师应该寥寥无几!几乎所有的数字电路教材中,都有该芯片的身影…...

SpringBoot 基础知识汇总

一、环境准备Java:Spring Boot 3.0.2 需要 Java 17,并且与 Java 19 兼容Maven:Apache Maven 3.5 或更高版本兼容二、启动器以下应用程序启动器由 Spring Boot 在该组下提供:org.springframework.boot表 1.Spring 引导应用程序启动…...

centos7下用kvm启动Fedora36 Cloud镜像

环境 os:centos7 Arch: aarch64 安装qemu-kvm yum install qemu-kvm kvm virt-install libvirt systemctl start libvirtd.service创建镜像 下载aarch64架构的Fedora36镜像 wget https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/36/Cloud/aarch64/images/Fedora-Cl…...

修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南

作者:老 Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 前言 测试服务器配置 主机名IPCPU内存系…...

uniapp 引入彩色symbol和 指令权限

uniapp 引入iconfont图标库彩色symbol 1,先去阿里巴巴矢量图标库登录 然后点击下载至本地 2.下载本地,然后解压文件夹 3.打开终端cmd命令窗口 npm安装全局包npm i -g iconfont-tools 4.终端切换到上面解压的文件夹里面,运行iconfont-too…...

【C语言】初识结构体

Yan-英杰 悟已往之不谏 知来者之可追 目录 一、结构体的声明 二、结构体变量的定义和初始化 三、结构体成员的访问 四、结构体传参 一、结构体的声明 1.结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。2.结构的…...

前端将base64图片转换成file文件

1、base64转成file具体代码 // base64图片转file的方法(base64图片, 设置生成file的文件名)function base64ToFile(base64, fileName) {// 将base64按照 , 进行分割 将前缀 与后续内容分隔开let data base64.split(,);// 利用正则表达式 从前缀中获取图…...

OAK相机跑各种yolo模型的检测帧率和深度帧率

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…...

存储拆分后,如何解决唯一主键问题?

在单库单表时,业务 ID 可以依赖数据库的自增主键实现,现在我们把存储拆分到了多处,如果还是用数据库的自增主键,就会出现主键重复的情况。 所以我们不得不面对的一个选择,就是ID生成器,使用一个唯一的字符…...

仿射变换学习

affine_trans_(iamge,region,xld):仿射变换-作用到iamge,region、xld等都可以 vector_angle_to_rigid():得到一个刚性仿射变换矩阵 orientation_region():得到指定区域的弧度(与x轴正方向的弧度&#xff09…...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...