首页 > 其他分享 >性能测试的理解误区

性能测试的理解误区

时间:2023-07-12 12:23:00浏览次数:48  
标签:压测 性能 业务 功能测试 误区 测试 链路

有同学私信我,说想付费让我教他学习性能测试,问我能不能三个月内把性能测试包括全链路压测都熟练掌握,老实说,这要求把我难住了。

和他聊了聊关于性能测试的一些话题,发现他对性能测试的理解走入了一些误区。在一些技术交流群,同样遇到过很多同学由于对性能测试理解上的误区导致的各种问题,比如:

  • 注册用户数=并发数,然后服务直接被打崩了;
  • 直接在生产环境压测:生产服务挂了,客户投诉;

当然,这些都是比较基础的问题,刚入门的同学可能会犯这种错。如果有一定的项目实践经验,就会了解性能测试比我们想象的要复杂得多。

除了对技术的广度和深度有一定要求之外,对业务的熟悉程度,对需求和场景的分析理解能力,甚至在压测实施过程中的沟通和协调能力,也有一定要的要求。

这篇文章,聊聊和性能测试相关的话题,它的实施目的、在不同场景下的侧重点以及一些被大家忽视的点。

 

性能测试的目的

首先要认识到一点,抛开性能测试涉及到的技术栈,其实性能测试的本质和功能测试没什么区别。

同样需要需求分析、场景设计、准备测试用例和测试数据。功能测试是手动执行用例,观察结果,性能测试则大多是借助工具或者脚本来执行测试用例观察结果。

功能测试的目的是验证产品设计的功能正确性,找到功能上和设计不符的bug;性能测试则是找到应用服务处理能力存在的瓶颈,然后针对性的优化,为线上的容量规划和服务稳定性提供支撑

那么问题来了:如何定义所谓的处理能力瓶颈?这就需要锚定业务价值了。

性能测试的需求基本来自业务,比如用户反馈APP响应太慢、财务或成本部门反映IT的硬件成本太高,或者运营活动由于系统挂了导致业务目标未达成。这些问题归类来说,都是用户和业务的痛点诉求:

  • APP响应太慢:提升处理速度——降低响应时间(RT);
  • 硬件成本太高:降低硬件成本——提升单位资源的处理能力(TPS);
  • 业务目标未达成:提升系统稳定性——提高业务成功率(99%-99.99%);

总结一下就是:降低成本、提升用户体验、保障业务目标达成,这就是所谓的业务价值

性能测试的最终目的和功能测试本质上没区别,就是为用户提供正确稳定的服务和良好的用户体验,保障业务目标达成。为了满足用户和业务的诉求而采用的一系列技术方案,都是为了达成这个目的的手段而已。

 

不同项目侧重点

聊完了性能测试的目的,接着回到具体的项目实践中。日常工作中最常见的项目类型,大概可以分为如下几种:

版本迭代

版本迭代算是软件工程师的工作日常了,这种类型的项目中,性能测试主要的侧重点聚焦在系统的处理能力方面。

即验证系统是否由于需求迭代&新的代码引入而导致了系统处理能力下降,主要关注的指标是TPS&99RT&请求成功率等方面。从体系建设的角度来说,可以通过建立性能基线来评估系统长期的性能质量。

配置变更

我们都知道很多的线上故障是变更引起的,但其实很多时候性能的变化,可能就是一个小小的参数变更导致的。

细分的话性能测试场景中有一项叫做配置测试,就是为了验证由于系统各项参数或者服务配置的变化而带来的性能变化。常见的有下面两种:

  • 软件参数变更:比如线程池连接数、超时时间等;
  • 硬件配置变更:比如服务器升配降配带来的性能变化对比;

这种配置变更带来的性能变化,更关注的是中间件和基础服务层面,因为这种变更往往容易被忽略,但这种变更又会对线上服务的性能和稳定性带来很大的影响。

新服务上线

在日常的版本迭代之外,还比较常见的是新服务上线这种项目。比如技术改造、服务拆分、引入新的服务供应商等,一般都需要进行性能测试来验证是否会对已有系统造成影响。

新服务上线进行性能测试的主要目的是验证系统的健壮性,即发现一些较为明显的性能问题,比如:内存泄漏、业务超卖、死锁、慢SQL等情况。

稳定性保障

大部分的性能测试都是在线下环境开展的,但性能测试的结果一定要对线上的容量规划和稳定性保障提供支撑,否则性能测试没有太多价值。

虽然已经2023年了,生产全链路压测提出到现在也快11年了,但截至目前大多数公司还是不具备在生产环境进行性能测试的能力,其中原因很多。

比如生产环境开展压测成本高风险大,比如大部分公司并没有很高的并发访问量,比如技术建设和储备不够深,究其根本原因,其实就是投入和产出的平衡问题。

当然,技术如何创造业务价值是一个很复杂的问题,但有一个关于全链路压测的误区,也是很多人忽视的。

生产全链路压测只适合某一部分具有特定业务需求的公司,能否实施取决于是否有合适的组织管理能力和对应的技术架构。

生产全链路压测并不是银弹,也不单单只是一种测试的技术手段,如果将生产全链路压测看作一种促进生产服务稳定性的技术实践,那它有很多可以挖掘的价值点。

但在实际落地过程中,只能说对技术的理解和对业务价值的认知,大家都好像走入了误区。

 

场景建模的误区

经常有同学问:我能不能一个用户的数据拿来重复压测,反正也是并发请求的。

在功能测试中,我们会根据要测试的场景和测试用例,准备对应的符合场景的测试数据,为什么性能测试的时候反而忽视了呢?这其实也是一个认知误区:性能测试就是模拟高并发给系统发请求。

正确的做法是和功能测试类似的,建立业务模型&流量模型&数据模型之间的映射关系,准备对应的符合测试场景的测试数据,并且要保证数据量足够测试使用。

如何建立这三者的模型对应关系,详见:《构建三大模型》。

 

标签:压测,性能,业务,功能测试,误区,测试,链路
From: https://www.cnblogs.com/imyalost/p/17547183.html

相关文章

  • Linux -磁盘性能指标
    linux-磁盘IO性能监测手段Linux存储系统I/O栈由文件系统层(filesystemlayer)、通用块层(generalblocklayer)和设备层(devicelayer)构成。其中,通用块层是Linux磁盘I/O的核心。向上,它为访问文件系统和应用程序的块设备提供了标准接口;向下,它将各种异构磁盘设备抽象为一个......
  • 一张图告诉你如何提高 API 性能
    API性能是指一个API在执行其功能时的效率和性能表现,通常用于衡量API的响应时间、吞吐量、可伸缩性和稳定性等方面的表现。API性能的指标包括:响应时间:API的响应时间是指从发出请求到接收到响应所需的时间。较低的响应时间通常表示更高的性能。吞吐量:API的吞吐量......
  • 为什么更推荐测试人员使用「测试平台」RunnerGo
    互联网行业的发展至今,越来越多的公司注重工作效率和团队协作。同时,产品也趋于平台化,这有助于提高团队效率。代码管理、持续构建和持续部署等工具的发展相当先进,它们明显地支持团队协作并提高工作效率。然而,与之相比,测试工具的发展显得滞后。传统的测试工具(如jmeter和loadrunner)......
  • 从TPT看汽车测试术语(下)
    前言  上篇我们介绍了被测对象、动态测试和测试用例的概念,还提出了如何省时省力评估自动生成的测试用例的话题。事实上TPT能够实现测试用例和评估解耦,为每条用例/多条用例创建符合其场景的测试评估:可以通过GUI界面来进行信号对比、事件查询、信号边界检查、信号序列的正确性......
  • 推荐Selenium 自动化测试实战
    你将获得深入Selenium源码、原理、封装、技巧;unittest、pytest、DDT、POM迭代测试方法;大型项目分布式测试解决方案;Jenkins持续集成和交付。演示地址:www.runruncode.com/portal/article/index/id/19451/cid/85.html 课程介绍Selenium凭着免费、开源、无操作系统/浏览器......
  • 一个高性能、低内存文件上传流.Net组件
    推荐一个用于轻松实现文件上传功能的组件。项目简介一个基于.NET平台的开源项目,提供了一个简单易用的API,可以在Web应用程序中快速集成文件上传功能。优化多部分流式文件上传性能:减少25%的CPU使用量、50%内存。项目特点1、简单易用的API: 提供了简单的API,可以轻松地集成......
  • 常用性能监测工具介绍
    1常用工具介绍系统监控是一种向用户提供有关系统实际计时行为的数据的有用方法。用户可以使用这些监视器提供的数据执行进一步的分析。系统监控的目标之一是确定当前执行是否满足指定的技术要求。这些监视工具检索通常查看的信息,可以通过命令行或图形用户界面(由系统管理员确定)......
  • 20230711巴蜀暑期集训测试总结
    T1考场上咋都理不清楚,太钻牛角尖了。先或再除和先除再或是一样的,相当于要构造一个序列\(d\),使\(\sum\frac1{2^{d_i}}\ge1\)。求\(\lfloor\frac{a_i}{2^{d_1}}\rfloor|\lfloor\frac{a_i}{2^{d_2}}\rfloor|\dots|\lfloor\frac{a_i}{2^{d_n}}\rfloor\)的最小值。考虑从高位到......
  • 这里有8种专坑同事的SQL写法,保证性能降低100倍,想来试试吗?
    今天给大家分享几个SQL常见的“坏毛病”及优化技巧。SQL语句的执行顺序:1、LIMIT语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般DBA想到的办法是在type,name,create_time字段上加组合索引。这样条件排序都能有效的利用到索引,性......
  • pytest生成测试报告无数据
    1、排除用pytest生成的数据是没有问题的可以通过pytest--alluredir=report检查2、了解使用的语句:alluregeneratereport(用report文件夹中的数据,生成allure打开的图形界面的)我操作的失误在第二点,直接进入到report文件夹执行。导致生成的项目的时候,数据没有被读取。解决方案:......