性能测试超细总结,如何才能做到有效压测?性能压测看这篇就够了...

news2024/11/16 17:37:00

目录:导读

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


前言

目标制定以及业务规则梳理

① 目标制定
衡量性能最重要的三个指标是TPS、响应时间、报错率。那如何制定性能测试的指标呢?你的依据是什么呢?

列举几个常见的误区答案:
我是根据二八原则,老板说我们百万日活,80% 的用户在 20% 的时间段里访问,响应时间是根据业内的 2-5-8 来制定;

我是根据竞品数据分析,他们产品的 PV 应该是百万级,所以我们的产品也是这么制定的;

这个指标是业务定的,他们和开发讨论过,应该没什么问题。

以上回答不仅从道理上讲有些牵强,而且也没有任何制定性能测试可以参考的有效信息。性能测试是一项非常严谨的工作,通过间接或者普适规则不可能满足具体特定的分析,所以对这个问题的理解基本可以判断一位同学是否真正做过性能测试。

对于每一个接口都会有访问计数,这是目前业内比较常见的,也是衡量接口访问能力最准确的指标之一。

一般大公司会自己开发相应的监控工具,发展中的公司也会使用一些开源或者商业工具进行监控。比如从ELK就可以提取这些数据,通过实际访问的频次去指定目标Tps。

② 业务规则的调研
对于性能测试而言,业务规则的了解也是不可或缺的。一些公司的性能测试组在进行压测时,业务线的测试也需要协助支持压测的进行,由此可以体现业务的重要性。

对业务的充分了解不仅可以帮助你提高写脚本的效率,也可以帮助你构造更为真实的性能测试场景。

举个简单的例子,你模拟下单的时候是否考虑商品属性会员属性等,比如是单一商品还是套餐商品,下单的时候购物车里有几件商品,通过不同条件的组合,这些都会影响性能测试的结果。

这一部分很重要,比如你测试过促销,有可能功能的组合会产生上千条case,活动会触发很多规则,如果你只走一个简单的流程,逻辑复杂度根本不是一回事,性能差异会跟真实的逻辑差别很大,而交易又作为最核心的链路,如果出了问题,这锅挺大的,这一块需要好好思考。

部署架构调研

被测的业务部署架构是什么意思呢,简单来说就是 被测服务涉及哪些组件,每个组件部署在哪些服务器上,服务器的配置是怎样的?

你需要画一个部署架构示意图,有了这张图,才能知道如何做到全貌监控,以及遇到问题从哪些服务入手。

一个经典的链路:
从客户端发起到服务端,服务端从代理层到应用层,最后到数据层。需要注意的是,你需要明确被测的环境里的各个服务有多少节点,比如客户层的压测机节点有几台,分别在哪个网段。同理我们可以去调研服务层和数据层的节点。

而且现在都是云服务,会做到弹性扩容,不同的时间节点会有不同的实例节点,这些都应当做好记录。

对测试数据进行调研

关于测试数据调研,包含了非常多的内容,对于业务测试来说数据调研就是获取必要的参数来满足既定的场景可以跑通。那对于性能测试来说,需要做哪些方面的数据调研呢?

① 数据库基础数据量分析
数据库的基础数据量就是目前线上数据库实际的数据量,为什么要统计基础数据量呢?

很多公司往往有独立的性能测试环境,但是数据库的数据量与线上相比差距较大,可能出现一条 SQL 在性能测试环境执行很快,但上了生产却会很慢的问题。这就导致测试觉得该测的都测了,但上了生产还是会有问题出现。

这种问题可能会因为索引缺失以及性能环境数据量较少而不能将问题暴露出来,所以在 性能测试环境下的数据量一定要和生产上一致。

为了达到这个目的,有的公司可以将生产数据脱敏后备份,有的则需要你自己写脚本来根据业务规则批量造数据。

② 压测增量数据分析
除了数据库的基础数据量,我们也需要考虑一轮性能测试下来会增加多少数据量。

往往增加的数据量最终落到数据库,可能会经过各种中间件如 Redis、Mq 等,所以涉及的链路可能存在数据量的激增,所以这方面需要根据增加情况制定相应的兜底方案(即:最差情况下的临时解决办法)

③ 冷热数据的分析
以我的从业经历来讲,能够在方案阶段考虑到冷热数据分布的公司并不多,往往都是从性能测试结果的一些异常点或者实际产线出现的问题去追溯。

接下来我就带你了解下什么是冷热数据,以及如果不对其进行分析可能会带来什么影响。

冷数据,是指没有经常被访问的数据,通常情况下将其存放到数据库中,读写效率相对较低。

热数据,是经常被用户访问的数据,一般会放在缓存中。

在性能测试的过程中,被频繁访问的冷数据会转变为热数据。如果参数化数据量比较少,持续压测会让 TPS 越来越高。

而在实际大促情况下,往往有千万级的用户直接访问,但大多都是冷数据,会存在处理能力还没达到压测结果的指标,系统就出现问题的情况。所以在需求调研时,你也需要考虑:数据会不会被缓存,缓存时间多久的问题?

性能监控

为什么监控很重要,它是发现问题的眼睛,而且一旦在过程中没有及时监控和发现,还原现场是有难度的。不仅需要罗列清楚你所需要的监控工具和访问方式,同时也需要层次分明地传递你监控的内容。对我来说做监第一个关键词:全。

怎么去理解“全”呢?
先举一个典型的例子,有时候做一个新的项目,询问支持的同学有没有部署监控,他们说已经部署了,但等你真正使用的时候发现只监控了一台应用服务器的 CPU。

这个例子我相信大多数人都似曾相识,所以我说的全,至少包含两个方面:
涉及所有服务器;
涉及服务器基础监控,包括 CPU、磁盘、内存、网络等。

第二是分层,不仅仅硬件相关的,还有链路相关的,都要监控,工具如skywalking,pinpoint等。

监控还有个很重要的点是设置阈值来报警,无论是线上和线下的性能测试,报警功能都是必需的。因为通过人工的观察,往往不能以最快的速度发现问题。一旦能够及时报警,涉及的人员就可以快速响应,尽可能降低风险。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一次的努力都是未来的投资,尽管困难重重,成功路上充满坎坷,但坚持不懈的奋斗将会使你获得自己更多意想不到的成果,也会让你成为更好的自己,让我们一起努力吧!

每个人都有选择放弃或者奋斗的权利,但只有那些勇敢拿起武器、冲破障碍的人才能迎来更美好的明天。所以不要轻易放弃,坚持自己的梦想,继续向前走!

岁月不等人,现在就是改变未来的最佳时机。只要你心怀信念、勇往直前、孜孜不倦地努力,即使路途崎岖,也终将到达成功的彼岸。让我们一起为梦想而奋斗,创造更美好的明天!

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

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

相关文章

java SSM 游戏资讯系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM 游戏资讯系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B…

3ds Max - Pivot Painter Tool

很久之前的笔记,整理归档; Pivot Painter Tool是3dsMax中的插件,主要是辅助将Mesh中每个Element生成自己的Pivot Position,方便如使用World Position Offset对每个Element进行精确控制,导入使用Pivot Painter Tool工具…

深入理解Linux虚拟内存管理(七)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理(一) 深入理解Linux虚拟内存管理(二) 深入理解Linux虚拟内存管理(三) 深入理…

Linux系统和Windows系统下Python2代码转换为Python3代码工具使用指南

简介 本文主要介绍Linux系统和Windows系统下Python2代码转换为Python3代码工具2to3.py或2to3指令使用指南。 项目场景及问题描述 Python2的最后一个版本是2.7,在2020年彻底停止支持。有些环境不方便同时安装Python2和Python3,或者在使用Python3的环境…

【JVM】JVM 垃圾回收算法

文章目录 前言标记清除(Mark-Sweep)介绍优缺点 复制(拷贝 Copying)介绍优缺点 标记整理(Mark-Compact)介绍优缺点 前言 目前JVM中有三种常见的垃圾回收算法,分别是:标记清除、标记整…

Matter实战系列-----1.软硬件开发环境搭建

一、硬件方面 我使用的是一套xG21 BRD4180B和两块xG24 BRD4187C,如下图: 1.1 RCP: 芯片型号EFR32MG21A020F1024IM32 1.2 Matter Light/Switch over Thread: 芯片型号EFR32MG24B220F1536IM48 1.3 蓝牙5.0 USB dongle 注意由于Linux对蓝牙…

阿里、字节、网易面试必考,黑马【爆火】微服务项目发布

最近,收到一位粉丝投稿,他说:“阿里三面凉凉了,输在了微服务上。” 在看到微服务的面试题后,整个人都是懵的,发现没有经验的自己,一窍不通。 如今,微服务已经成为Java开发者必备的…

深入篇【C++】string类的常用接口介绍:标准库中的string类 【万字总结】

深入篇【C】string类的常用接口介绍:标准库中的string类 Ⅰ.string类介绍Ⅱ.string类的常用接口①.string类对象的常用构造1.string()2.string(const char*ch)3.string(const string& str)4.string(size_t n,char c)5.string(const string& str,size_t pos,…

想开发测试工具,应该如何入手?

何为测试工具?就是能辅助测试同学来完成特定的操作的工具,比如常见的如postman、Fiddler、Charles、jira,包括jmeter等,当然还包括公司自己开发的用例转换工具,造数工具,Mock工具或是平台等等。一般以应用程…

测试在“鸡头”和“凤尾”间如何选择?

经常在知乎上碰到这样的问题:同时拿到多个offer,公司有大有小,有创业型有成熟性,怎么在“鸡头”和“凤尾”间做选择? 为什么会纠结呢?通常创业型公司,给优秀的测试员的薪酬远高于市场平均值&…

“我只想找个测试岗,你却百般刁难我!”给我们带来的思考

最近看到一篇帖子,讲的是一个七八年的大龄测试员被公司补偿性裁员后,找工作的糟心经历。 原文是酱紫的: ---------------------------------------- 不管怎么说,我做测试也有七八年了,一直觉得自己的技术还是可以的&…

MongoDB实际场景应用

你要构建一个在线零售商店,这个店铺需要处理会员数据、订单数据以及商品数据等。为了保存和管理这些数据,你可以使用MongoDB。 目录 1. 设计数据模式 2. 插入数据 3. 查询数据 1. 设计数据模式 对于在线零售商店的数据,你可以设计三个Mo…

3年经验,面试测试岗20k都拿不到了吗?

我的情况 大概介绍一下个人情况,女,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,然而到今天都没有收到一份offer!从年后就开始准备简历,年…

C#基于云计算SaaS模式的医学检验云LIS系统全套源码

一、云LIS系统概述: 云LIS系统是一种基于云计算技术的实验室信息管理系统,它的主要功能是管理实验室中的各种信息数据,包括样品数据、检测结果、仪器设备管理、质控管理等。 二、与传统的LIS系统相比,云LIS系统具有以下优势&…

考完PMP后,还有必要考NPDP吗?

PMP证书目前在国内有很高的知名度,报考人数也在逐年上升,可以说,几乎所有的项目经理都有过考PMP的计划。 但随着PMP的持证人数越来越多,不少考完PMP的项目经理,开始考虑要不要报名NPDP考试。 那么考完PMP后有必要考N…

软件测试项目拿到不知道从哪里下手?今天我手把手教你

1.登录页面 2.首页 3.项目管理 4.测试环境 1>设置headers;可以每个url设置共同的header,可以存在变量;执行时,指定接口补全header; 5.接口管理 swagger导入功能;根据指定的测试环境url,导入s…

基于javaweb jsp+SSM 网红书店图书借阅系统的设计与实现

一.项目介绍 本系统分为管理员和读者两类 管理员:维护管理员账号和读者账号信息、维护书籍分类信息、维护书籍信息、维护书籍借阅信息、维护书籍预约信息、邮件管理、书籍阅读量统计、系统管理 读者:书籍借阅、书籍预约、预约邮件管理以及个人信息 …

Kubernetes的kubectl命令补全

Kubernetes的kubectl命令补全 环境准备 首先我们需要安装一个kubernetes的集群,可以参考我写的教程: 文档教程:https://blog.csdn.net/m0_51510236/article/details/130842122视频教程:https://space.bilibili.com/34615738341…

【springboot 实践】断点续传这么搞--附代码

目录 背景开搞RandomAccessFileAPI 代码文件分块断点续传、文件秒传分块上传、文件合并 总结 今天给大家分享的又是一篇实战文章,也是最近私活里遇到的,万能的互联网给了我办法,分享一下。 背景 最近接到一个新的需求,需要上传2…

chatgpt赋能python:Python中如何居中输入文字

Python中如何居中输入文字 Python是一种流行的编程语言,因其易学易用而闻名。尽管Python的主要用途是开发程序,但是有时需要在输出中使用美观的文本格式。本文将详细介绍如何在Python中居中输入文字。 什么是文本居中? 文本居中是指将文本…