资深13年测试老鸟,性能测试-试准备过程总结,一文打通...

目录:导读

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


前言

1、必要性分析

分析是否有必要进行性能测试;

2、被测对象分析

确认被测对象,并根据被测对象性质确认测试方案;

3、测试技术准备

根据被测对象准备测试技术不同协议测试工具、测试重点及方案是有区别的,例如http接口、rpc、websocket、udp测试技术不同,应根据不同的测试对象准备不同的测试方案

4、目标评估

评估被测服务性能指标预期结果

5、峰值QPS

已上线的需求可以按目前线上状态评估,这样最准未上线的需求一种方式可以找类似其它功能。

没有相似功能的话可以找类似其它产品无法参照的话可按全量工具评估总请求,平均到秒后再按“帕累托法则(八二法则)”乘以对应系数估算

QPS:
大部分单一接口的QPS=HPS,一条请求就是一次query,有少部分需求可能一次Hit有多次Query,需了解具体业务实现

TPS:
复杂业务评估指标可使用TPS(每秒处理事务数),常见的情况像一次转账业务可能包含查询、转账、核对等几个连续动作,这种连续动作可称为一次T,TPS经常用来评估逻辑处理的能力和用时;

6、响应时间

不同产品对响应时间的要求是不相同的,内存处理一般请求的响应时间应该在10ms以内,有数据库读写的情况可能稍长(redis一般是十毫秒级别,mongo稍长,mysql最长。

但一般大小的数据也应该在百毫秒级别)超过百毫秒的情况需要确认具体需求,及这类情况占比,响应时间指标一般有下面几种级别;

平均响应时间
总时间/总请求数
TP50
所有请求中处理最快的前50%请求中的最长耗时
TP90
所有请求中处理最快的前90%请求中的最长耗时
TP95
所有请求中处理最快的前95%请求中的最长耗时
TP99
所有请求中处理最快的前99%请求中的最长耗时
TP999
所有请求中处理最快的前99.9%请求中的最长耗时

错误响应数占比:
所有请求中非200返回码的请求数占比

超时率:
所有请求中超时的请求数占比需在压测工具中定义一个超时时间

被测服务资源占用指标预期

服务器cpu预期:
程序有大量运算的情况下cpu可能成为瓶颈,例如dsa加密、大量检索运算;

服务器内存预期:
程序启动时需要load大量数据到内存;
程序运行时需要使用大量内存以增加处理速度(空间换时间)的情况;

存储预期:
绝大多数的web服务存储开销都在log等功能需求上,且一般情况log文件会定时传走&清理,这里要注意清理过程是否会存在log积压;

带宽预期:
一般过大的静态资源应放在专用的资源服务器上,带宽问题常见于大量数据资讯返回或流媒体服务中;

端口数预期:
端口问题常见于长连接服务,和需要作为client端向子服务请求的需求;
常见问题:time_wait过多;服务阻塞导致端口无法释放;

磁盘io预期:
磁盘io问题常见于写log的功能,业务逻辑中需要做磁盘io的需求已经不多了,因为数据在程序启动时会被加载到内存中以提升读写速度;

相关依赖预期评估
依赖后端子服务
处理一个请求时需要向一个或多个后端服务请求资源;

依赖后端DB
处理一个请求时需要做db读写操作;

依赖运行环境,例如K8S集群等
服务运行的环境可能导致性能不满足预期,例如当服务部署在虚机时,需要评估虚机处理能力;如果部署在k8s集群时,需评估宿主机和集群前端proxy处理能力;如请求流包含多个环节时,每个环节都有压力存在;

依赖外部资源,例如CDN服务等

场景:业务逻辑回返回cdn地址,客户端收到地址后直接去cdn获取数据;这类场景需要对cdn服务的处理能力和带宽预期做评估;

依赖磁盘空间,例如log存储
评估服务日志量大小;
其它意想不到的依赖

场景:百度春晚红包需求,百度红包服务端性能符合预期,但整理逻辑中忽略了用户习惯(用户对百度的认知是搜索引擎而不是app,所以app的红包功能对百度网页搜索带来了非常大的并发流量)导致搜索引擎主站瘫痪;
百度红包功能还对第三方app市场和appstore带来大量流量,导致其服务瘫痪;

7、测试方案

测试方案应包含以下内容:

被测对象(即性能测试需求中的功能-子功能)
测试目标
有预期的情况:经评估的各个指标预期预期不明确的情况:说明情况,例如“此功能无法预估预期qps状态,上线后根据实际情况调整”
测试环境
说明测试所用机器各项配置;
依赖说明
说明被测服务依赖的服务及功能的状态或mock状态
实验分组及排期
每组的验证点及环境、时间安排;

测试工具:
http接口工具、loadrunner、locust、jmeter、wrk

grpc工具:
ghz
流量复制放大回放
goreplay

websocket长连接:
websocket-bench

其它自定义协议等:
自己编写压测脚本
可使用go语言或python gevent库等方案模拟大并发

测试用例:
测试用例要覆盖所有逻辑,可以通过统计压测用例覆盖率的方法来确定是否有遗漏逻辑;需评估未覆盖的代码逻辑是否需要补充用例;

测试环境:
测试环境要尽量与线上保持一致;
不能保持一致的可选择性能比线上少低一点的机器;
如果服务是第一次上线,建议在不影响线上其它服务的情况下(外围有线上proxy,或需要读写线上数据库等类似情况不能直接使用测试环境进行性能测试)直接只用线上环境进行性能测试;

子服务&测试配置准备:
测试中台服务时需要准备与生产环境一致的子服务或微服务,没有条件准备时可使用mock服务替代;

风险预案:
对重要的被测系统应该做planB
例如:一组服务为节省资源,使用8台服务器,评估可满足需求;
但可能存在短时大并发的情况,所以,在上线之初或有运营活动之前,应准备一些备用机,当线上监控报出问题时,立刻扩容;

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生的路上充满了坎坷和挫折,但只有不停地追求、不停地努力,才能获得自己想要的一切。让信念的阳光照亮心灵,勇往直前,成功将属于你!

面对困难与挑战时,唯有坚定的信心和不懈的努力,方能驶向成功的彼岸。相信自己,勇往直前,终将迎来辉煌的成就。

生命是一场壮阔的征程,需要我们拥有无畏的勇气、坚定的信念和不懈的努力。相信自己,敢于追梦,你一定能创造属于自己的辉煌!

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

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

相关文章

Java学习——设计模式——创建型模式1

文章目录 创建型模式单例饿汉式懒汉式存在的问题 工厂方法简单工厂模式工厂方法模式抽象工厂模式 创建型模式 关注点是如何创建对象,核心思想是要把对象创建和使用相分离,这样两者能相对独立地变换 包括: 1、工厂方法:Factory Met…

嵌入式Linux:提升VMware虚拟机运行速度的方法

使用虚拟机运行Linux操作系统通常会比在物理机上直接安装系统的运行效率更低,本篇博文将介绍如何优化虚拟机的设置,进而提升虚拟机性能体验。 第1步:选择VMware菜单:编辑–>首选项–>更新,将”启动时检查产品更新…

ClickHouse基础知识(二):ClickHouse 安装教程

1. 准备工作 1.1 确定防火墙处于关闭状态 1.2 CentOS 取消打开文件数限制 (1)在 hadoop101 的 /etc/security/limits.conf 文件的末尾加入以下内容 sudo vim /etc/security/limits.conf(2)在 hadoop101 的/etc/security/limits.…

IntelliJ IDEA使用EasyCode插件根据Mysql表自动生成代码文件(controller、service、dao、mapper.xml等)

一、Intellij安装EasyCode插件: 首先点击 Intellij->Preference->Plugins,然后搜索 EasyCode,点击安装: 二、添加项目 新建spring boot项目, easy-code-demo 这里以easy-code-demo为例 3 连接Mysql 通过 IDEA 上的 Dat…

【Java系列】多线程案例学习——基于阻塞队列实现生产者消费者模型

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 目录…

计算机中找不到vcruntime140.dll无法启动此程序怎么解决?

无法继续执行代码,因为找不到vcruntime140.dll”。那么,vcruntime140.dll是什么文件?它的作用是什么?当它丢失时会对电脑产生什么影响?本文将为您详细介绍vcruntime140.dll文件的相关知识,并提供五种解决vc…

2024年【低压电工】试题及解析及低压电工模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 低压电工试题及解析参考答案及低压电工考试试题解析是安全生产模拟考试一点通题库老师及低压电工操作证已考过的学员汇总,相对有效帮助低压电工模拟考试学员顺利通过考试。 1、【单选题】()仪表可直接用于…

Linux 查看系统类型和版本(内核版本 | 发行版本)

Linux 查看系统类型和版本 首先普及下linux系统的版本内容1. 查看linux系统内核版本2. 查看linux系统发行版本 首先普及下linux系统的版本内容 内核版本和发行版本区别 内核版本就是指 Linux 中最基层的代码,版本号如 Linux version 3.10.0-327.22.2.el7.x86_64发行…

项目经理面试10问

今天我们来说说项目经理专业面试的十条经验总结。如果你认真阅读并思考,相信对在屏幕前的你会有所帮助和启发。 1、请做一下自我介绍 自我介绍很重要。无论面试什么岗位,面试官通常都会问你一个最常见的问题:“请做一下自我介绍。” 在准备…

信号与线性系统翻转课堂笔记15——离散LTI系统模型分析

信号与线性系统翻转课堂笔记15——离散LTI系统模型分析 The Flipped Classroom15 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1,重点&…

如何为前端编写单元测试?从这篇入门指南开始学习!

前言 对于现在的前端工程,一个标准完整的项目,通常情况单元测试是非常必要的。但很多时候我们只是完成了项目而忽略了项目测试。我认为其中一个很大的原因是很多人对单元测试认知不够,因此我写了这边文章,一方面期望通过这篇文章…

HPM6750开发笔记《第一个helloworld例程》

HPM_SDK的使用: HPM_SDK界面如下图 此处选择所支持的5款evk大家根据自己的板子选 此处选择想看的例程工程 此处可选择生成工程的类型 其中debug工程是在纯RAM中运行的,板子掉电后代码会被删除,用来测试比较合适 其中挂flash的工程有两种其中…

java设计模式学习之【解释器模式】

文章目录 引言解释器模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用表达式解析示例代码地址 引言 在我们的日常生活中,语言的翻译和理解是沟通的关键。每种语言都有自己的语法规则,而翻译人员和计算机程序需要理解并遵循这些规则来…

【将G2O库使用交叉编译移植到arm平台】

一 准备材料 1.下载好g2o的代码。下载地址:https://github.com/RainerKuemmerle/g2o 如果只是在Ubuntu系统上安装g2o,可以参考代码库中的readme.md。 2.下载suitesparse4.4.6. 选择4.4.6版本是因为我发现ROS系统中使用的是这个版本。即使用sudo apt-get …

【Vulnhub 靶场】【Looz: 1】【简单】【20210802】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/looz-1,732/ 靶场下载:https://download.vulnhub.com/looz/Looz.zip 靶场难度:简单 发布日期:2021年08月02日 文件大小:2.1 GB 靶场作者:mhz_cyber &…

c语言:输出范围内的质数|练习题

一、题目 输入一个数n,输出n之内的所有质数 如图: 二、思路分析 1、设置一个数num,从2开始,不断作1操作,作为被除数 2、用一个不断自1的数,除以num,如果num不能被整除,则为质数 3、例…

超分之SRGAN

Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network使用生成对抗网络的逼真单图像超分辨率一作:Christian Ledig是Twitter2017年的一篇论文。 文章目录 0. 摘要1. 引言1.1 相关工作1.1.1 介绍了SR技术的发展历程1.1.2 介绍了SR…

算法基础day2

前缀和 #include <iostream> using namespace std; const int N100010; int n,m; int a[N],s[N]; int main() {scanf("%d%d",&n,&m);for(int i1;i<n;i) scanf("%d",&a[i]);for(int i1;i<n;i) s[i]s[i-1]a[i];while(m--){int l,r;s…

模型系列:增益模型Uplift Modeling原理和案例

模型系列&#xff1a;增益模型Uplift Modeling原理和案例 目录 1. 简介1. 第一步2. 指标3. 元学习器 3.1 S-学习器3.2 T-学习器3.3 T-学习器相关模型 简介 Uplift是一种用于用户级别的治疗增量效应估计的预测建模技术。每家公司都希望增加自己的利润&#xff0c;而其中一个…

Python+OpenCV 零基础学习笔记(6):ROI

文章目录 相关链接运行环境前言ROI颜色区域分割颜色通道合并 相关链接 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程 CSDN标题里个括号对应视频的分P OpenCVPython CSDN专栏 Gitee 项目地址 运行环境 Python:3.11.5Anaconda:23.7.4IDE:vscode运行环境&#x…