超详细,性能测试三大模式详解,资深测试老鸟一文道破...

news2024/9/20 8:11:16

目录:导读

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


前言

在性能测试工作中,业务模型、流量模型和数据模型是至关重要且必须在项目中构建的,否则很可能导致测试的场景和实际差距很大,测试结果也无法为性能分析和优化提供足够有说服力的支撑。

三大模型,以电商业务下单的场景举例说明,如下图:

请添加图片描述

业务模型

大家可以将业务模型看作功能测试中的业务场景。在性能测试中要构建业务模型,我们要考虑如下几个因素:

商品库存是否足够;
下单的商品是否可参与营销活动;
下单的用户是否是vip会员,有会员折扣;
下单的用户是否有优惠券,该优惠券是否满足本订单的优惠条件;

其实业务模型和功能测试时候的业务场景分析没什么区别,都是为了针对被测业务和服务进行分析,确保测试的场景和需求是一致的。

如果是更复杂的业务和更大范围的测试需求,可能还要考虑线上业务的流量入口、风控等因素。

当然在实际的工作或项目中,建议通过分析需求,梳理出压测涉及到的业务和场景,绘制成一个业务模型思维导图,这样便于后续的工作开展。

业务模型思维导图可以用树状图也可以用类似上图的样子,便于理解即可。

流量模型

我们都知道,性能测试执行压测时,都是基于接口或某个URL来进行的。本质是模拟生产环境的用户,构造请求对被测系统施加压力,验证系统性能是否满足业务需要,是否存在性能瓶颈。

生产环境的用户操作场景是很复杂的,所以请求的大小和请求路径也各不一样。

以上图为例,下单时候有些用户使用了优惠券,有些用户不是vip会员无法享受折扣,有些商品没有营销活动。这些因素要求我们在构造请求时,需要按照不同的业务场景构造不同的请求。

所谓的流量模型,其本质是按照业务场景的不同将请求按照真实的比例进行配置,也称之为业务配比。

大家也可以将流量模型理解为压测模型,工作中常见的压测模型有如下几种:

单机单接口基准测试
基准测试最常见的就是对登录场景进行压测。

单机单接口的压测,可以通过梯度递增的方式,观察随着请求的增加,其性能表现&资源损耗的变化。

单机混合链路容量测试
以上图为例,订单服务包含创建订单、取消订单、订单列表、订单详情等接口。

每个接口的请求量大小、请求内容各不相同。单机混合场景,大多通过梯度增加请求的方式,观察服务级别的性能表现,目的是排查上下游调用依赖的瓶颈。

生产环境全链路压测场景
针对生产集群的全链路压测,常见的案例就是双11电商大促。生产全链路压测模型较多,一般有如下几种:

梯度加压:为了探测集群模式下系统的最大吞吐量(避免压垮服务,造成事故);
固定并发:验证系统长期处于负载下的稳定性;
脉冲并发:探测系统的健壮性、验证限流熔断等服务保护措施的正确性&可用性;
超卖验证:对电商业务来说,主要针对一些限时抢购&秒杀的场景(一般这种场景,会涉及到分布式锁、缓存、数据一致性等技术点;玩不好的话,容易造成客诉、资损、甚至服务异常宕机!);

构建流量模型
这是之前实际工作中一次双11大促时的流量模型构建案例,仅供参考。

业务目标:双11当天,预估平均客单价为500,单日GMV为10亿,那么支付订单量为10亿/500=200W;

技术指标:

假设日常支付订单量为50W,支付转化率为40%,订单支付QPS峰值为200。预估大促时的支付转化率为60%,则可得:大促峰值订单支付QPS为(200/40%)60%(200W/50W)=1200QPS。为了留有一定冗余空间,上浮30%,即订单支付的QPS预估为1500;

电商的导购下单支付链路为:首页→商品详情→创建订单→订单支付→支付成功,这是类似漏斗的一个转化逻辑。假设首页→商品详情转化率为40%,商品详情→创建订单转化率为40%,创建订单→订单支付转化率为40%,那么可得:创建订单QPS为1500/40%=3750,商品详情QPS为3750/40%=9375,首页QPS为9375/40%=23437;

按照核心链路之间的依赖调用关系,借助trace追踪,可得到大促期间所有核心应用及核心链路的QPS数值。

建议评估后流量模型后,结合业务场景和服务间的调用关系,绘制成一个流量模型图,这样会更直观,便于工作开展。

数据模型

了解了业务模型和流量模型后,数据模型就很好理解了。
以上图为例,电商下单业务在构建数据模型时,要根据压测时常、压测次数和压测场景,准备不同类型的数据。

在准备数据时,还要考虑数据的有效性、数据量级、数据的组合逻辑关系以及数据是否符合生产环境的数据分布等情况。

如果测试过程中采用的数据不准确,那测试结果往往出现较大偏差。关于测试数据模型构建,可参考如下几点:

数据信息说明
限制条件用户操作权限、数据引用次数、数据过期设定(次数、绝对时间)
数据量实际生产环境的数据量为多少,在性能测试环境如何等量代换
数据类型基础数据、热点数据、缓存数据、特殊数据
数据特点是否可以复用、是否具有唯一性、自增、加密、拼接、转义等
准备方式copy真实环境数据、预埋铺底数据、脱敏生成数据

基础数据
也称为铺底数据,铺底数据目的是与线上保持一致(至少数量分布一致),再结合线上增长率,确认预埋数据量级及预埋方式。

涉及到压测时需要校验的数据,需要在铺底的时候就要精细化的设计,包括数据大小、数量、分布。

热点数据
需要了解被测接口的实现逻辑,确认以下信息:
是否有热点数据相关的操作:比如说所有用户秒杀同一件商品;
不同类型数据处理逻辑有差异时,需通过测试数据多样化提高性能测试代码覆盖率;

缓存数据
要确认是否有缓存,缓存大小。

秒杀抢购相关数据,一般来说都是进行队列处理,将该类型数据放入缓存中进行处理来应对高并发。

再比如用户登录所需的token等数据,在压测时,可以提前将构造好的数据预热到缓存,避免压测时用户服务成为瓶颈。

构建数据模型
构建数据模型的目的,最直观的就是压测时候的测试数据参数化。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生活就像一场马拉松,要想走的更远,忍耐力和毅力不可或缺。在一路奋斗的过程中,我们会遇到挫折和失败,但只要坚持不懈地追寻理想,不断前行,就能收获美好与成功。怀着信心、热情和勇气,努力追求人生目标!

人生如一场修行,每天都在积累经验、学习成长。只有克服挑战和困难,才能超越自我,成就非凡。让我们勇敢面对挑战,持之以恒地努力,创造属于自己的辉煌人生!

成功不是结果,而是一个过程,是每天坚定信念和持续努力的体现。当困难与挫折来临时,我们需要有一颗沉稳勇敢的心,勇敢迎接人生挑战。让我们在奋发拼搏的路上,创造出不屈的品质和辉煌的人生!

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

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

相关文章

IC芯片自动测试系统平台ATECLOUD:提高半导体制造效率与质量

近年来,随着半导体产业的快速发展,IC芯片在各种电子设备中扮演着越来越重要的角色。然而,为了满足不断增长的需求和保持竞争力,制造商需要不断提高生产效率并确保产品质量。ATECLOUD——一款基于云计算技术的IC芯片自动测试系统平…

租赁小程序|人车网租赁系统|电动车租赁系统包含哪些功能?

随着科技不断完善,租赁行业的发展也越来越好,电动车也开始进行线上推广租赁,不仅可以让人们更加方便的租用电动车,还让商家可以通过线上模式带动线下的经营,不同于传统的汽车租赁,用户只要打开手机就可以进…

MySQL-5.7.19版本安装详解

MySQL-5.7.19版本安装详解 1. 软件下载 Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip 2. 软件安装 2.1 第一步:解压 下载后会得到mysql-5.7.19-winx64的zip 安装文件,先将其解压解压的路径最好不…

微信小程序导入Vant Weapp ui组件库2023年最新版

微信小程序导入Vant Weapp ui组件库2023年最新版 写这篇文章的原因是Vant Weapp的官方文档快速上手是有一定的问题的,没错,我就是那个试错的人,弄了一下午才发现问题所在,所以写了一篇正确的导入教程。 第一步:在项目…

Python进阶 │反爬虫和怎样反反爬虫

爬虫、反爬虫和反反爬虫是网络爬虫工作过程中一直伴随的问题。 在现实生活中,网络爬虫的程序并不像之前介绍的爬取博客那么简单,运行效果不如意者十有八九。首先需要理解一下“反爬虫”这个概念,其实就是“反对爬虫”。根据网络上的定义&…

PowerShell:因为在此系统上禁止运行脚本,解决方法

运行powershell脚本遇见报错: 无法加载文件 C:\Users\DH\Desktop\cs\rename.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 查了查之后发现是在计算…

差动测试棒如何连接到示波器

差动测试棒提供一个安全的绝缘仪器给示波器使用,它可以转换由高输入的差动电压进入一个低电压并且显示波形在示波器上,使用频率高达100MHz,非常适合大电力测试、研发使用。 差动测试棒输出标是设计在操作示波器1MΩ的输入阻抗的相对衰减量&a…

人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用

如:天空 coco包含pascal voc 的所有类别,并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言,有些图片并没有标注信息,或者有错误标注信息。…

需求:js给html添加css

目前发送请求&#xff0c;请求回html&#xff1a;<div class"articleRecommendation_con"> <a href"https://weekly.caixin.com/2023-05-26/102059365.html"><img src"https://img.caixin.com/2023-05-27/168515251870385…

如何选择适合平台的直播美颜SDK:从技术和商业角度考虑

直播美颜SDK作为一种技术解决方案&#xff0c;可以帮助直播应用实现优秀的美颜效果&#xff0c;提高用户体验和粘性。然而&#xff0c;如何选择适合你应用的直播美颜SDK&#xff0c;需要从技术和商业角度综合考虑。本文将从这两个角度出发&#xff0c;为你介绍如何选择适合你应…

手把手带你读vue2文档(基础篇总结)

目录 声明式渲染 v-bind v-if条件与循环 name命名 学会log打印 一些js方法 双向绑定v-model和v-bind 那么请实现一个复选框吧 自定义标签模板 vue2实例 数据与方法 你提到vue有两种数据和方法&#xff0c;js是不是只有一种 vue2自带的实例和方法 vue2$会和jQuery冲…

四站精彩回顾 | Fortinet Accelerate 2023·中国区巡展火热进行中

Fortinet Accelerate 2023中国区巡展 上周&#xff0c;Fortinet Accelerate 2023中国区巡展分别走过青岛、南京、长沙、合肥四站&#xff0c;Fortinet携手太平洋电信、亚马逊云科技、中企通信等云、网、安合作伙伴&#xff0c;与各行业典型代表客户&#xff0c;就网安融合、网…

spring事务管理详解和实例(事务传播机制、事务隔离级别)

目录 1 理解spring事务 2 核心接口 2.1 事务管理器 2.1.1 JDBC事务 2.1.2 Hibernate事务 2.1.3 Java持久化API事务&#xff08;JPA&#xff09; 2.2 基本事务属性的定义 2.2.1 传播行为 2.2.2 隔离级别 2.2.3 只读 2.2.4 事务超时 2.2.5 回滚规则 2.3 事务状态 3…

盘点索引常见的11个知识点

今天来盘点一下关于MySQL索引常见的知识点 本来这篇文章我前两个星期就打算写了&#xff0c;提纲都列好了&#xff0c;但是后面我去追《漫长的季节》这部剧去了&#xff0c;这就花了一个周末的时间&#xff0c;再加上后面一些其它的事&#xff0c;导致没来得及写 不过不要紧&…

chatgpt赋能python:Python中0的输入方法:完整指南

Python中0的输入方法&#xff1a;完整指南 Python是一门强大的编程语言&#xff0c;广泛应用于数据分析、人工智能、网络应用等领域。在Python中&#xff0c;输入0有多种方法&#xff0c;因此本文将带您深入了解Python中0的输入方式&#xff0c;包括基础类型、字符串和列表等结…

【计算机网络】网络安全,HTTP协议,同源策略,cors,jsonp

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 网络安全非对称加密中间人攻击 HTTP协议同源策略corsjsonp 网络安全 非对称加密 会生成一个公…

Arm发布最新内核 : Corte-X4/A720/A520,支持Armv9.2

1、背景 Arm 是一家设计智能手机的CPU内核的公司&#xff0c;并且每年它都会进行新的迭代&#xff0c;这些迭代随后将集成进芯片SOC&#xff0c;例如当年的旗舰 Snapdragon 、 MediaTek Dimensity。2023年&#xff0c;发布了新的旗舰级内核&#xff1a; Cortex-X4 超大核、Cort…

数据集成到可视化分析,轻松驾驭数据洞察力:ETLCloud与帆软BI完美结合

在当今数据驱动的业务环境中&#xff0c;企业需要快速而准确地获取、处理和分析大量的数据。为了满足这一需求&#xff0c;ETLCloud通过和帆软BI的集成提供了一种强大的数据采集和数据分析解决方案&#xff0c;通过可视化的ETL工具和灵活的BI功能&#xff0c;帮助企业快速实现高…

【笔记整理】元学习笔记

【笔记整理】元学习笔记 文章目录 【笔记整理】元学习笔记一、元学习基础概念1、概述&#xff08;“多任务&#xff0c;推理&#xff0c;快速学习”&#xff09;1&#xff09;Meta-learning&#xff08;“学习如何学习” “老千层饼”&#xff09;2&#xff09;Transfer learn…

JDBC查询数据库——普通、流式、游标

问题 通过JDBC对MySQL进行数据查询时&#xff0c;有个很容易踩的坑&#xff0c;以下面代码为例&#xff1a; public static void selectNormal() throws SQLException{Connection connection DriverManager.getConnection("jdbc:mysql://localhost:3306/test", &qu…