聊聊性能测试环境搭建

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

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进行规格选择与性能压测。
相关文章
|
2天前
|
架构师 测试技术 网络性能优化
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
dpdk课程学习之练习笔记七(vpp环境搭建及plugin demo测试)
209 0
|
2天前
|
Ubuntu 测试技术 Linux
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
dpdk测试环境搭建(vmware下ubuntu环境参考上文汇总流程)
127 0
|
2天前
|
应用服务中间件 测试技术 nginx
dpdk环境搭建及运行helloworld测试
dpdk环境搭建及运行helloworld测试
100 0
|
7月前
|
存储 Oracle 关系型数据库
HBase集群环境搭建与测试(上)
HBase集群环境搭建与测试
138 0
|
2天前
|
分布式计算 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 举例】
38 3
|
2天前
|
JavaScript Java 测试技术
『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium
『App自动化测试之Appium基础篇』| 从定义、原理、环境搭建、安装问题排查等深入了解Appium
913 0
|
2天前
|
IDE Java 测试技术
【如何学习Python自动化测试】—— 自动化测试环境搭建
【如何学习Python自动化测试】—— 自动化测试环境搭建
3 0
|
2天前
|
分布式计算 Hadoop Scala
Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
【4月更文挑战第13天】Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
35 0
|
2天前
|
Java 测试技术 Maven
《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
【2月更文挑战第11天】《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程) 是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。由于现在企业和公司中Java的大部分项目都是基于Maven, 因此宏哥为了照顾到企业或者公司用的java项目中用到maven的童鞋或者小伙伴们,这里也简单的介绍和分享一下。在Maven项目中使用Selenium. 非常简单。
81 3
|
2天前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(一)-java+ selenium自动化测试-环境搭建(上)(详细教程)
【2月更文挑战第10天】《手把手教你》系列基础篇之(一)-java+ selenium自动化测试-环境搭建(上)(详细教程) jmeter系列的文章结束,本来想趁热打铁顺别将Jmeter和接口测试介绍一下,但是感觉Jmeter时间太长了怕大家吃腻了,还有一个原因就是许多小伙伴们或者童鞋们私信问宏哥什么时候可以有java版的selenium,因为不会Python,或者现在大多数企业和公司还是把java奉在神坛上,所以宏哥打算就换个口味,介绍一下java+ selenium自动化测试。大致和前边的python+selenium自动化测试差不多。基于java和selenium做自动化测试.
62 0

热门文章

最新文章