聊聊性能测试环境搭建

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

640.jpg


昨天知识星球社区的一位同学问了一个问题:性能测试环境必须和生产环境保持1:1配置一致吗?这个问题其实很有意思,因为问题的点开始向工作最基础的部分靠近了。


我们经常听到各种各样性能测试相关的问题,比如高并发/性能优化/各种性能指标以及压测工具等。但作为性能测试活动开展的基础:测试环境,却很少有人提及。


这篇文章,我想聊聊关于性能测试环境如何搭建的一些实践经验以及个人的观点。


本文又名:


  • 搭建性能测试环境,有哪些需要注意的点?
  • 性能测试环境配置,必须和生产保持一致吗?
  • 什么情况下性能测试环境可以和生产保持一致?
  • 如何搭建性能测试环境,才能在成本和价值间保持平衡?

PS:文末有福利!


独立性能环境的重要性


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


  1. 配置不一致,服务的容量无法很好的换算;
  2. 配置不一致,导致压测时候无法模拟太高的并发;
  3. 数据量不一致,导致有些性能问题上量后会暴露出来;


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


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


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


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


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


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


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


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


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


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


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


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

搭建独立性能环境的几点建议


性能测试其实在日常的工作中不是充分必要的需求,大家不要被业内大厂的高并发高可用之类的概念所迷惑。大多数公司,线上峰值流量可能还不到1w并发,均摊到所有服务集群上,可能一些核心接口的QPS都不会超过10。


而且大多业务是只读的,写或者先读再写的复杂业务场景比较少,升配+扩容+缓存,能解决多数性能问题。不在大厂,或者业务高速增长的企业,很少有所谓的高并发性能需求。


痛点有时候是技术假设的,站在业务角度和成本角度,并不是痛点。所谓的高并发,是个伪命题,其实只是你个人所认为的并发高,但其实不高。


当然,搭建独立的性能测试环境,在成本和需求都满足的情况下,可以参考如下几点建议:


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


文末总结


独立性能环境可以支撑服务线上发布前尽可能暴露存在的性能问题并进行修复验证。


线上服务的稳定性保障通过全链路压测/日常巡检/容灾演练/监控告警等手段来保障。


搭建独立的性能测试环境,需要充分评估需求的必须性和硬件成本以及管理维护成本。


性能测试也可以分层,线下环境解决线下的问题,线上稳定性保障用其他手段来解决。


前期的需求评估/技术方案评审就是很好的性能风险评估窗口,性能测试也可以测试左移。


一个很好的学习成长机会


我和CC以及CKL一起创办了知识星球,秉持着长期陪跑的理念,为大家提供测试职业成长+面试专项辅导等服务。


目前加入星球的同学已经超过100人啦,为了满足大家踊跃加入的心情,我特定申请了限时加入的优惠活动。活动截止本月底,想加入的同学不要错过。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
8月前
|
架构师 测试技术 网络性能优化
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
553 0
|
8月前
|
Ubuntu 测试技术 Linux
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
372 0
|
8月前
|
应用服务中间件 测试技术 nginx
dpdk环境搭建及运行helloworld测试
dpdk环境搭建及运行helloworld测试
358 0
|
存储 Oracle 关系型数据库
HBase集群环境搭建与测试(上)
HBase集群环境搭建与测试
275 0
|
8月前
|
JavaScript Java 测试技术
『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium
『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium
3112 0
|
8月前
|
分布式计算 Hadoop 测试技术
Hadoop【环境搭建 05】【hadoop-3.1.3 单机版基准测试 TestDFSIO + mrbench + nnbench + Terasort + sort 举例】
【4月更文挑战第1天】Hadoop【环境搭建 05】【hadoop-3.1.3 单机版基准测试 TestDFSIO + mrbench + nnbench + Terasort + sort 举例】
202 3
|
4月前
|
机器学习/深度学习 人工智能 文字识别
AI计算机视觉笔记二十:PaddleOCR环境搭建及测试
OCR技术广泛应用于日常生活中,与人脸识别一样常见。PaddleOCR是一个基于飞桨的OCR工具库,具有超轻量级中文OCR模型,支持中英文数字组合、竖排及长文本识别。本文档详细介绍了PaddleOCR的学习过程,包括环境搭建、安装、样本标注及测试步骤。使用AutoDL云平台进行环境创建,并提供了详细的命令行操作指南,帮助用户顺利完成PaddleOCR的部署与测试。
|
4月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记十四:YOLOV5环境搭建及测试全过程
本文详细记录了在Windows 10环境下从零开始搭建yolov5环境并进行测试的全过程,涵盖环境配置、依赖安装及模型测试等关键步骤。文章首先介绍了所需环境(Python 3.8、yolov5-5.0),接着详细说明了如何使用Miniconda3创建与激活虚拟环境,并通过具体命令演示了如何下载安装yolov5及相关依赖库。最后,通过一系列命令展示了如何下载预训练模型并对示例图像进行目标检测,同时解决了一些常见错误。适合初学者跟随实践。如需转载,请注明原文出处。
|
5月前
|
Web App开发 测试技术 API
Web自动化测试框架(基础篇)--Selenium WebDriver工作原理和环境搭建
本文详细介绍了Selenium WebDriver的工作原理,包括其架构、通信机制及支持的浏览器,并指导读者如何在Python环境下搭建Selenium WebDriver的测试环境,从安装Python和Selenium库到编写并运行第一个自动化测试脚本。
273 0
|
8月前
|
IDE Java 测试技术
【如何学习Python自动化测试】—— 自动化测试环境搭建
【如何学习Python自动化测试】—— 自动化测试环境搭建