如何分析性能测试需求?

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 为了避免某个可用区由于网络硬盘等原因损坏导致服务不可用,跨可用区的服务部署是一种常见的容灾手段。

昨天帮星球一位同学做了面试求职分析,沟通过程中我问了他一个问题:如何分析性能需求?得到的回答在我看来是存在一些不足的,考虑的不够完善。


和很多测试同学交流时,发现大家对性能测试基础的知识比较欠缺,导致在实际的工作实践中遇到了很多不好理解的难题。因此重新分享这篇老文,略作修改。


这篇文章,以一个案例说明,如何分析性能测试需求。


有同学在微信群问了一个问题:为什么800并发压测,服务器还没有报错?当时群里其他同学提了很多观点,比如:


  • 并发不够,加并发!
  • 要不要考虑首页进来多少人?
  • 是不是有限流,流量都被拦截了?
  • 我看CPU都打满了,压测要关注硬件指标!
  • 是不是你压测机配置比较低,无法发起这么多并发。


林林总总感觉说了很多,又感觉都没说到位。正好之前工作中遇到一个性能需求,说来也蛮有意思的,需求大致是这样:


网关要验证在跨可用区情况下,支撑20W的TPS。就这一句话,我当时有点诧异(以我对公司目前业务及架构的理解,根本不需要20W的TPS)。


那么问题来了:如果是你,听到这样“一句话需求”,你会如何分析,然后制定压测方案呢?


下面我会从十个部分来围绕性能需求分析展开描述。


1、需求评估分析


先来聊聊如何分析这个性能需求,关于性能需求分析,我总结下面几点roadmap:


640.png


接下来,按照上述思维导图,我会通过几个不同问题的解答,来描述我的分析思路。


谁提的需求,目的是什么?


研发同学提了一个性能测试需求:网关要验证在跨可用区情况下,支撑20W的TPS。


关键字提取:流量网关、跨可用区、20W的TPS


2、什么是流量网关?


简单来说,流量网关就是所有请求的流量入口,承载了所有用户请求。如下图所示:


640.png


3、如何理解跨可用区?


一般来说,云服务的可用区,可以理解为同一个机房的不同虚拟机集群。


为了避免某个可用区由于网络硬盘等原因损坏导致服务不可用,跨可用区的服务部署是一种常见的容灾手段。


4、流量网关有什么特点?


负载均衡:跨多个服务的动态负载均衡;


身份验证:即用户的身份鉴权,登录态、黑白名单等;


限流限速:基于速率、请求数、并发等维度进行流控;


其他特点:加解密、A/B测试、灰度发布、监控告警、服务治理等功能;


5、压测流量网关有什么难点?


网关是用户请求流量的入口,因此访问压力会很大,即我们常说的QPS很高。那么在压测时,要考虑下面几点:


  • 需要能支撑发起很多并发请求的工具;
  • 网关服务的应用需要部署集群,来应对高并发;
  • 由于只是跨可用区,一般云服务可控制在0.5ms以内;


6、在什么场景下为谁提供服务?


上面介绍了流量网关的特点,这里的场景指的是业务场景或者说测试场景,即:验证网关的哪些功能场景下的性能表现。上述的网关特点中,一般需要压测验证的场景有鉴权、加解密、身份验证。


7、目前系统架构调用关系是怎样的?


做性能测试,最怕的是不了解系统架构就开始无脑高并发!


了解系统架构及服务间的调用关系,才能设计合理的压测场景,准备对应的脚本和数据。


8、如何搭建满足需求的性能测试环境?


根据上面的分析,跨可用区的网关应用集群,在搭建环境时,需要考虑的有下述几点:


  • 集群均匀分布在不同可用区;
  • 网关应用的单机配置(比如8C16G);
  • 虚拟机型保持一致(内核版本、计算型/IO型);
  • 需要绑定专门的域名,SLB和带宽需要大于预期的指标;
  • 压测工具需要尽可能的支撑更高的并发流量发起(比如Wrk);
  • 因为涉及到鉴权和身份验证,需要提前预热相关的auth、token数据到缓存;


9、如何评估性能需求的技术指标是否合理?


上面提到了性能指标是20W的TPS,那这个指标是否合理呢?首先,性能需求的技术指标是否合理,要结合实际的业务场景和目前峰值流量及未来增长趋势来综合评估


假设流量网关被所有业务接入,业务对RT比较敏感,业务请求RT的目标是10ms;目前的线上峰值QPS是5W-QPS,预计未来半年增长到10W的QPS,那这个时候,如何评估技术指标,或者说设定合理的技术指标呢?我们可以结合实际情况讨论,得到下面这样的一个技术指标:


ART&99RT:≤2ms;


安全水位下的QPS:≥10W;


TPS:统计核心业务的核心链路当前吞吐能力,做聚合计算,保持一定上浮;


当然,上述的指标有个前提:业务不接受有损。


如果业务接受有损,那么性能的技术指标无须这么苛刻(因为可以限流降级);


10、性能测试方案


说到了性能测试方案,我偶然翻出了19年6月份画的一个性能测试流程职责说明表,见下图:


640.png


聊到这里,该如何设计性能测试方案呢?答案已经在上述的需求分析里了。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
缓存 监控 算法
软件测试中的性能瓶颈分析与优化策略
【10月更文挑战第6天】 性能测试是确保软件系统在高负载条件下稳定运行的重要手段。本文将深入探讨性能测试的常见瓶颈,包括硬件资源、网络延迟和代码效率等问题。通过具体案例分析,我们将展示如何识别并解决这些问题,从而提升软件的整体性能。最后,文章还将分享一些实用的性能优化技巧,帮助读者在日常开发和测试中更好地应对性能挑战。
95 3
|
3月前
|
监控 测试技术 持续交付
软件测试中的性能瓶颈分析与优化策略
性能瓶颈,如同潜伏于软件深处的隐形障碍,悄然阻碍着系统的流畅运行。本文旨在揭示这些瓶颈的形成机理,剖析其背后的复杂成因,并汇聚一系列针对性的优化策略,为软件开发者提供一套系统性的解决方案。
56 5
|
2月前
|
缓存 监控 测试技术
软件测试中的性能瓶颈分析与优化策略
本文深入探讨了在软件测试过程中,如何有效地识别和解决性能瓶颈问题。通过对性能瓶颈的定义、分类以及常见原因的分析,结合实际案例,提出了一系列针对性的优化策略和方法。这些策略旨在帮助测试人员和开发人员提高软件的性能表现,确保软件在高负载条件下依然能够稳定运行。
|
3月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
81 1
|
3月前
|
监控 算法 测试技术
软件测试中的性能瓶颈分析与优化策略
本文旨在深入探讨软件测试过程中性能瓶颈的识别与优化方法。通过对性能瓶颈的概念、分类及其成因进行分析,结合实际案例,提出一套系统的性能瓶颈诊断流程和针对性的优化策略。文章首先概述了性能瓶颈的基本特征,随后详细介绍了内存泄漏、资源竞争、算法效率低下等常见瓶颈类型,并阐述了如何通过代码审查、性能监测工具以及负载测试等手段有效定位问题。最后,结合最佳实践,讨论了代码级优化、系统配置调整、架构改进等多方面的解决措施,旨在为软件开发和测试人员提供实用的性能优化指导。
78 4
|
4月前
|
前端开发 测试技术 UED
【测试效率对比】深入分析:为何UI自动化测试的投资回报率通常低于接口自动化测试?
这篇文章深入分析了UI自动化测试与接口自动化测试的投资回报率(ROI)问题,指出UI自动化测试在某些情况下的ROI并不低,反驳了没有实施过UI自动化就轻易下结论的观点,并强调了实践的重要性和自动化测试在项目迭代中的作用。
88 1
|
3月前
|
SQL 搜索推荐 测试技术
ChatGPT与测试分析
本产品需求文档(PRD)针对论坛网站的搜索功能优化,旨在提升搜索结果的准确性和速度,增强用户体验。文档涵盖项目背景、目标、功能需求(如搜索结果准确性、搜索速度优化、过滤和排序等)、非功能需求(如兼容性、性能、安全性等)、用户界面设计和技术架构等内容,并制定了详细的测试和上线计划,确保项目顺利实施。
30 0
|
5月前
|
监控 算法 Java
|
5月前
|
监控 算法 Java
压测分析Java内存和CPU暂用
7月更文挑战第7天
70 5
|
6月前
|
存储 缓存 NoSQL
Redis性能测试实操记录与分析
Redis性能测试实操记录与分析
87 3