8年测试老鸟谈,性能测试-测试环境搭建与常见问题,这些你都知道吗?

news2025/5/17 6:22:27

目录:导读

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


前言

一个问题:性能测试环境必须和生产环境保持1:1配置一致吗?

我们经常听到各种各样性能测试相关的问题,比如高并发/性能优化/各种性能指标以及压测工具等。

但作为性能测试活动开展的基础:测试环境,却很少有人提及。

独立性能环境重要性

有些伙伴担心,由于性能测试环境和线上环境配置不一致,会导致线下环境得到的性能结果无法发现足够多的性能问题,无法对线上环境的容量评估/稳定性保障带来足够的参考。

其中担心的重点有如下几点:
一致,服务的容量无法很好的换算;
配置不一致,导致压测时候无法模拟太高的并发;
数据量不一致,导致有些性能问题上量后会暴露出来;

其实这些担心不无道理,从技术的角度出发,只有尽可能的和生产保持一致,才能确保测试的结果对生产的稳定性有足够的参考价值,也是保障性能测试交付质量的一个重要因素。

但,性能测试环境和生产保持一致,就真的能避免生产环境不出现性能问题吗?

环境配置高低是决定性能结果的一个影响因素,但不是全部因素。提前测试、提前暴露问题,修复的成本也就越低。

我们常见的性能问题,比如JVM GC/慢SQL/死锁/for 循环/缓存未命中等,都可以在线下的性能环境提前发现。

这些问题的发现和修复与服务器配置并没有直接联系,能够在线下提早用更低的成本解决是一种更优的选择。

大家可以思考下,功能测试的测试环境作用,就能理解独立性能测试环境的作用了。

我们搭建独立的功能测试环境,是为了在项目上线前进行充分的各种维度的验证,尽量保障线上的交付质量。

但绝不是功能测试环境没问题,线上就不会有问题。测试环境我们可以通过功能测试验证/自动化测试回归等手段尽可能发现问题,生产环境同样需要进行回归测试/自动化测试去进行日常的巡检,做到早发现早修复。

原则上bug只要没影响到用户,是不会造成直接的影响和损失的。对于线上的bug,需要的是更完善的监控告警机制和oncall修复流程,在造成更大影响之前修复。

同理,性能测试环境的作用也是这样:
在服务线上发布前,尽可能暴露一些存在的性能问题并进行修复验证。线上通过全链路压测/日常巡检/容灾演练/监控告警等手段来保障线上服务的稳定性。

如果没有做线下性能测试的情况下直接在生产上测试,对性能中的异常测试、高可用测试可能无法充分执行;
同时,修复性能 bug 也需要功能上的回归,这些都增加了过程管理的复杂度。

因此,搭建独立性能测试环境的重要性主要有如下几点:

提前进行性能验证,发现并修复问题;
独立的性能测试环境可以避免其他测试动作的影响;
提前进行各种手段的性能测试,降低线上出现问题的修复成本;

独立性能环境几点建议

性能测试其实在日常的工作中不是充分必要的需求,大家不要被业内大厂的高并发高可用之类的概念所迷惑。

绝大多数公司,线上峰值流量可能还不到1w并发,均摊到所有服务集群上,可能一些核心接口的QPS都不会超过10。

而且大多业务是只读的,写或者先读再写的复杂业务场景比较少,升配+扩容+缓存,能解决多数性能问题。

不在大厂,或者业务高速增长的企业,很少有所谓的高并发性能需求。
痛点有时候是技术假设的,站在业务角度和成本角度,并不是痛点。
所谓的高并发,是个伪命题,其实只是你个人所认为的并发高,但其实不高。

当然,搭建独立的性能测试环境,在成本和需求都满足的情况下。

可以参考如下几点建议:
和生产等比最小化,即1个服务1台机器;
如果是云服务,尽量部署在不同可用区;
机器配置类型和生产保持一致(cpu类型/几核几G);
如果是云服务,选择按量收费,而不是包年(降低成本);
非核心服务(调用量不大/重要性低),可以多个服务部署同一个机器;
数据量缩小,数据库隔离降配(8C64G的数据库实例足够满足日常压测所需);
该有的链路追踪/基础监控/应用监控等技术设施必须部署,便于问题定位排查;

小结:

独立性能环境可以支撑服务线上发布前尽可能暴露存在的性能问题并进行修复验证。
线上服务的稳定性保障通过全链路压测/日常巡检/容灾演练/监控告警等手段来保障。
搭建独立的性能测试环境,需要充分评估需求的必须性和硬件成本以及管理维护成本。
性能测试也可以分层,线下环境解决线下的问题,线上稳定性保障用其他手段来解决。
前期的需求评估/技术方案评审就是很好的性能风险评估窗口,性能测试也可以测试左移。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命太短,不要让自己有任何遗憾。无论前路多么坎坷,都要保持勇气和信心,毫不动摇地追求自己的目标。让我们一起秉持着这份信念,去创造属于自己的精彩人生!

在追寻梦想的道路上,不要轻易放弃。即使前路漫长坎坷,我们也要永远保持热情和勇气,为自己的理想而努力奋斗。让我们一起用毅力和智慧,去创造出属于自己的人生辉煌!

生活中总会遇到各种挑战和困难,但我们一定要坚信自己能够克服它们。只有不断地奋斗和超越自我,才能迎来更加光明的未来。让我们一起努力,书写属于自己的精彩篇章!

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

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

相关文章

千模大战鏖战正酣,大模型能否帮360重回巅峰?

ChatGPT问世后,互联网终于看到了变革的曙光。 回望互联网的征程,几乎每十年左右,就会因产品和技术的变革,而催生出全新的应用场景。 00年代,随着PC产品的逐渐成熟,桌面互联网成为时代的“主旋律”。在此背…

ChatGPT提示词工程(七):Chatbot聊天机器人

目录 一、说明二、安装环境1. 辅助函数:get_completion2. 辅助函数:get_completion_from_messages 三、聊天机器人(Chatbot)1. 一般聊天机器人1.1 简单的例子1.2 多轮对话 2. 订单机器人 一、说明 这是吴恩达 《ChatGPT Prompt E…

Jackson使用详解

Spring MVC 默认采用Jackson解析Json,尽管还有一些其它同样优秀的json解析工具,例如Fast Json、GSON,但是出于最小依赖的考虑,也许Json解析第一选择就应该是Jackson。 一、简介 Jackson 是当前用的比较广泛的,用来序…

【Spring框架全系列】第一个Spring程序

🏙哈喽,大家好,我是小浪。那么从今天开始,我就要开始更新spring框架全系列的博客了;本专栏免费阅读,最好能够点个订阅,以便于后续及时收到更新信息哈!🏟 📲目…

【Java EE 初阶】线程的常用方法

目录 1.多线程的作用 2.示例:分别对两个变量实现10亿次自增 1.使用串行(单线程) 2.使用并行(多线程) 结果显示: 3.线程的类构造方法 代码展示: 4.Thread类的常见属性 1.演示各个属性 2.演…

( 数组和矩阵) 378. 有序矩阵中第 K 小的元素 ——【Leetcode每日一题】

❓378. 有序矩阵中第 K 小的元素 难度:中等 给你一个 n x n n x n nxn 矩阵 m a t r i x matrix matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 …

InnoDB存储引擎B+树的树高推导

目录 一、基本结论:InnoDB存储引擎B树的树高3-4层 二、存储引擎B树结构简单分析 三、主键索引B树推导 四、InnoDB页的内部结构推导 五、剖析InnoDB数据文件推导 六、一般思路推导计算B树高度总结 参考文献、书籍及链接 一、基本结论:InnoDB存储引…

uni-app实战笔记

3 页面跳转 点击【成员列表】进入到子页面,这里就涉及到页面跳转。 路由是基础并不难,但是路由跳转的方式比较灵活,这里就需要记录一下。有一点是需要配置的,就是在pages.json中需要将路由整理好,否则页面是无法跳转的…

Hive架构原理以及部署教程

◆了解Hive架构原理 ◆了解Hive和RDBMS的对比 Hive架构原理 Hive架构原理 - 知乎 Hive 是基于 Hadoop 的数据仓库工具,它提供了类 SQL 查询语言 HQL(Hive Query Language),可以将 SQL 语句转化为 MapReduce 任务进行数据处理。 Hi…

【软考备战·希赛网每日一练】2023年5月2日

文章目录 一、今日成绩二、错题总结第一题 三、知识查缺 题目及解析来源:2023年05月02日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 三、知识查缺 复习 流水线技术。序列图(顺序图)用于展现系统中一个用例和多…

剪枝与重参第九课:DBB重参

目录 DBB重参前言1. DBB2. DBB的六种变换2.1 Transform I: a conv for conv-BN2.2 Transform II:a conv for branch addition2.3 Transform III:a conv for sequential convolutions2.4 Transform IV:a conv for depth concatenation2.5 Tran…

【SpringBoot】 整合RabbitMQ 消息单独以及批量的TTL

生产者端 目录结构 导入依赖 修改yml 业务逻辑 队列消息过期 消息单独过期 TTL(Time To Live)存活时间。表示当消息由生产端存入MQ当中的存活时间,当时间到达的时候还未被消息就会被自动清除。RabbitMQ可以对消息单独设置过期时间也可以对…

爬虫 - QS世界大学排名数据

爬虫 - QS世界大学排名数据 网站简介爬虫方法概述使用工具爬虫概述 第一部分导入需要用到的python包设置selenium控制浏览器打开网页控制鼠标操作定位节点 提取数据滚轮翻页构建循环自动爬取数据数据储存 第二部分导入需要用到的python包获取网页设置请求头读取链接获取网页信息…

TIM-定时器——STM32

TIM-定时器——STM32 TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包…

K8S第二讲 Kubernetes集群简易版搭建步骤

Kubernetes集群搭建步骤 1:准备物理或虚拟机器 为Kubernetes集群准备物理或虚拟机器。至少需要一个控制节点(Master Node)和一个工作节点(Worker Node),建议使用Linux操作系统。 2: 安装Dock…

1987-2021年全国各省进出口总额数据含进口总额和出口总额

1987-2021年全国各省进出口总额数据含进口和出口 1、时间:1987-2021年 2、范围:包括全国30个省不含西藏 3、指标:进出口总额、进口总额、出口总额 4、单位:万美元 5、来源:各省NJ、JIN rong统计NJ 6、缺失情况说…

递归算法及经典例题详解

大部分人在学习编程时接触的第一个算法应该就是递归了,递归的思想其实很好理解,就是将一个问题拆分为若干个与本身相似的子问题,通过不断调用自身来求解。 但很多新手在实际操作中却很难正确使用到递归,有时面对问题还会有种无从…

win7下java环境搭建以及jdk环境变量配置

很多人在搭建页游、手游时候经常遇到JAVA闪退,基本都是环境变量或者路径错误导致的。本章节主要讲解在win7系统环境下,java环境变量配置方法,java环境配置正确,才可以对apk程序进行反编译运行页游手游。其他操作系统环境变量大同小异参考下就会了。 安装教程: 1、直接运…

让语言学习更简单的 WordFlow

作为一个英语并不是那么特别好的计算机专业学生,长期积累英语的学习对个人发展还是有意义的。简单来说,我在语言上最大的两个问题,一个自己「不理解」,另一个是自己「不会表达」。 上述两个问题主要体现在口语层面,而…

1997-2021年全国30省技术市场成交额(亿元)

1997-2021年全国30省技术市场成交额 1、时间:1997-2021年 2、范围:30省不含西藏 3、来源:国家统计J 4、指标:技术市场成交额 5、缺失情况说明:无缺失 6、指标解释及用途: 技术市场成交额是一个客观、…