首页 > 其他分享 >性能测试链路分析核心能力的应用

性能测试链路分析核心能力的应用

时间:2024-11-13 11:16:24浏览次数:3  
标签:调用 测试 性能 层级 应用 链路 拓扑

目录

实时链路拓扑图构建

一、应用层级拓扑

二、实例展级拓扑

三、接口层级拓扑


实时链路拓扑图构建

负载集群阶段SOA阶段、微服务架构阶段的模式下,可以利用前期推送所描述的链路标识透传字节码增强等技术,将应用之间的调用逻辑关系以及调用方、被调用方进行完整呈现,甚至对调用次数、调用耗时等数据进行呈现。

如下图所示,这是一个简单的登录业务逻辑。用户请求通过互联网进行一次登录接口访问(/login)进入防火墙后,会依次经过网关应用、用户中心、应用A、应用B,同时会在Redis和MySQL中进行数据查询,最后返回一个登录成功或失败状态的结果。

图片

在这样的业务场景下。使用链路分析技术,可以自动构建出对应的链路拓扑图。在日常使用过程中,一般会构建3个层级的拓扑图:应用层级拓扑、实例层级拓扑和接口层级拓扑。

不同层级的拓扑所展示的内容及可分析的颗拉度各不相同。接下来以上文描述的登录业务为案例,对性能测试环节中的数据量规进行详细说明。

一、应用层级拓扑

主要关注在某个时间段内被测业务中应用的调用关系、调用耗时以及调用次数等信息、假设在前文介绍的登曼业务中。1分钟内有60个登录请求发起,那么链路分析系统则会自动构建如下图所示的应用拓扑。

图片

应用层级拓扑主要呈现如下两个方面内容。

1)调用关系。如上图所示,这60个请求的入口端为网关应用,网关应用处理完成后会调用用户中心其中用户中心根据不同的业务参数或逻辑会进行10次Redis调用和50次MYSQL调用。它后续会调用应用A,而应用A调用应用B进行最终处理。待应用B处理完成,且各节点均无异常后,则正常进行响应。

当然,在实际系统中调用关系更为复杂,这里仅展示了同步调用,系统中还会存在大量的异步训用场,但所展示的逻辅及内容大致类似,通过探针等技术自动化构建并可视化展示。通过调用关系的展示,测试工程师能快速了解被测事务的入口及相关应用的关系。

一方面,通过应用节点信息(例如应用名称、IP地址),性能测试工程师能够进行范围确认,确保本次压测的内容与范围是符合预期的。另一方面,通过拓扑图直观地了解系统内部的处理逻辑,测试工程师可以梳理应用之间的调用关系。在实际的性能分析过程中,尤其是在执行混合场景压测时,被测事务宴杂,后端应用节点繁多,展示调用关系对测试工程师来说至关重要。

2)性能指标。除了链路调用关系外,性能指标也是非常重要的分析数据,如上图所示,在示例测试场景下,以网关应用为入口进行分析,经过自身代码处理后,网关应用往下游用户中心也同步发起60个请求,平均每个请求的响应时间为900毫秒,若从压力发起端看平均响应时间为1000毫秒,那么可以初步判断关应用本身代码耗时约为100毫秒,整体性能表现相对健康,剩余的900毫秒需要按调用拓扑往下游进行分析,即查看用户中心的表现及其下游调用情况。

以用户中心为核心,通过拓扑链路的性能指标,初步分析如下:用户中心内部逻辑会触发50次MySQL调用及10次Redis调用,其中Redls调用平均耗时10毫秒,表现良好;数据语句执行平均耗时100毫秒,表现良好。应用自身代码执行平均耗时为900-10-100-600=190秒,表现良好。大量时间花费在下游应用A的调用上,因此需要继续针对应用A进行分析。

以此类推,通过层层分析,可以初步判断当前耗时较长的过程为应用B的代码执行,平均为500毫秒,导致整体响应时间为1000毫秒。需要针对应用B进行深度的代码级分析。

以上分析是基于同步调用模式下的链路进行的。在实际业务中会存在步调用的情况,但是分析思路一致,即通过上下游的性能指标层层下钻分析。

通过性能指标数据,测试工程师能直观地了解当前应用的性能表现。通过调用次数,测试工程师可以初步判断是否存在架构级问题,如60个用户请求可能会触发上千次MYSQL调用,那么可以初步判断数据库调用可能会成为业务瓶颈,需要反馈给开发工程师进行业务代码修改,减少调用次数。类似这样的异常频繁调用问题,就可以通过性能指标和拓扑图快速发现和定位。

通过平均响应时间,测试工程师可以快速判断性能瓶强在哪个应用或组件中。以上图为例,测试工程师可以快速从6个节点中判断瓶颈在应用B中,减少了针对单个节点逐步分析的成本投入,其排查效率大幅提升,测试工程师则可以将更多的时间分配在丰富测试场景的工作中。

二、实例展级拓扑

实例层级拓扑在展示界面和性能指标上与应用层级拓扑类似,其核心区别在于应用节点展示的颗拉度不同。这种场景主要出现在负载集群中,某个业务节点有两个实例进行支撑,通过Nginx进行负载量分发,应用层级拓扑会将两个实例进行整体统计,测试工程师如果希望看到单个实例的性能,则建议以实例层级拓扑呈现。如下图所示。

图片

在上图中,应用B实际为两个实例来支撑业务,通过拓扑图及性能指标可以发现,应用A发出的90%的请求调用被负载均衡设备转发至应用B1节点进行处理,而应用B2节点仅处理10%的业务请求,其量压力较小,因此响应也较快。

对于分析人员来说,此时的调优建议可能不是对业务代码进行修改,而是需要针对负都逻辅进行检查和优化,平均分配流量至各个实例,充分利用每个实例的计算资源,降低用户的平均响应时间,提升性能表现。

除了以上负载问题,单实例的资源配置问题也可以通过这样的方式进行发现。例如,在流量相同的情况下应用B节点的平均处理耗时较长,若排除代码发布版本问题,那么其实例资源配置可能存在异常,导致应用B节点的处理能力较差。

类似的性能缺陷还有很多,实例级别拓扑通过更细颗粒维度的数据呈现方式,将性能指标可视化地呈现给测试工程师,从而能快速地进行分析及调优。

三、接口层级拓扑

以上介绍了颗粒度更小的实例展级拓扑,那么是否有更细颗粒度展级呢?的确,在实例层级拓扑下,还可以细化至接口层级拓扑。

接口层级拓扑主要展示的是各个节点实际在接口层的互相调用关系。还是以登录场最为例,用户访问的是网关应用,对外基露接口为xx/login,网关应用经过内部代码辑处理后,请用下游用户中心的xx/user报口,用户中心调用的是应用A的xA接口。通过报口层级的调用信息,自动构建如下图所示的拓扑结构。

图片

在上图中,标准情况下一个应用存在大量对外暴漏接口,而测试工程师仅能知道入口的接口信息。接口的调用关系主要依赖于开发方提供的接口文档,可能存在时效性、准确性等方面问题,需要测试工程师进行多次验证才能得出准确、有效的结果。通过接口层级的拓扑,性能测试工程师可以快速进行接口调用关系的梳理,针对遗漏的调用关系进行补充,针对出错的调用关系进行修订,减少无效的测试执行、从而达到提升测试效率的目标。

同时,针对性能测试过程中出现的异常,测试工程师也可通过接口层级拓扑快速发现缺陷,性能测试工程师与开发工程师进行沟通的时候,可通过接口层级拓扑提供完整的接口调用路径,提升开发工程师定位问题的效率,加快缺陷修复的速度,让性能测试的执行更为顺畅。

以上介绍了3种链路拓扑,读者在日常工作中可能会接触其他类型的拓扑,在性能测试阶段常见的还有系统拓扑。

系统拓扑和链路拓扑的最大区别在于构建单位,系统拓扑主要是以操作系统为单位进行构建的,链路拓扑主要是以系统实例为单位进行构建的。尤其在性能测试环境下,由于资源相对短缺,可能会在一个Linux操作系统上部署多个Java应用进行测试,那么在系统拓扑上只会显示单个Linux操作系统图标而链路拓则会构建出多个Java应用图标。并生成调用关系,方便测试工程师进行更细颗粒度的分析。因此链路拓扑可以理解为系统拓扑的补充,也是提升性能测试分析效率的一个重要方法。

阅读完成后若有收获,你的关注,点赞,转发我都喜欢!!!

标签:调用,测试,性能,层级,应用,链路,拓扑
From: https://blog.csdn.net/qd_lifeng/article/details/143674198

相关文章

  • burp无法抓app包的原因以及如何测试
    绪论如果各位师傅觉得有用的话,可以给我点个关注~~如果师傅们有什么好的建议也欢迎联系我~~感谢各位师傅的支持~~正文部分在这个手机时代,越来越多的人的焦点放在手机上,所以很多程序也从原来的web程序转变为了app程序,所以对于web渗透工程师,只会web的抓包测试是不够的,......
  • selenium测试的一些语法
    元素定位语法通过ID定位:使用find_element_by_id方法,传入元素的ID属性值作为参数。例如,定位一个ID为username的输入框:element=driver.find_element_by_id("username")通过名称定位:使用find_element_by_name方法,根据元素的名称属性来定位。比如定位一个名称为password......
  • 继电器测试的优势和特点与其他测试方法有何区别?
    继电器作为电路控制的关键组件,其可靠性直接影响整个系统的性能。继电器测试是确保其正常工作的重要步骤。下面,我将为您概述继电器测试的优势和特点,以及它与其他测试方法的区别。继电器测试的优势和特点高效性继电器测试能够快速发现继电器在实际工作状态下的性能和故障,从而提......
  • Freesql、SqlSugar测试有感
    突然心血来潮测试了一下Freesql和SqlSugar的批量插入和批量更新性能,一搜测评一大堆,但是没找到自己想要的结果,自己动手测试一下基本的批量插入和批量更新性能。废话不多说直接贴代码1usingFreeSql;2usingFreeSql.DataAnnotations;3usingSqlSugar;45namesp......
  • AllPairs工具助力正交表测试用例设计
    AllPairs工具助力正交表测试用例设计正交表法是一种高效的测试方法,特别适用于软件测试中需要处理多个控件及其多种取值组合的情况。以下是对正交表法的详细解释:一、正交表法概述正交表法是一种利用正交表来设计测试用例的方法,旨在通过较少的测试次数达到较高的测试覆盖率。正交......
  • MethodImpl优化性能
    参数解释MethodImplOptions.AggressiveInlining:请求编译器在可能的情况下对方法进行内联。MethodImpl:这是一个属性,允许开发者为方法指定特定的实现行为,比如请求内联、忽略栈追踪等。内联的作用内联的主要作用是提升性能,特别是在如下情况下:消除方法调用开销:通常方法调用需要进......
  • Alpha阶段测试报告
    数字电路模拟游戏团队Alpha阶段测试报告一、Version1.0BugList序号Bug类型描述严重性状态1前端显示拖动逻辑门元件时出现不流畅,拖拽路径偶尔卡顿中已记录2功能异常电路的输出不能连接到电路的输入,不然会死循环高待修复3功能异常元件旋转功能在S......
  • 【大数据测试 Hive数据库--保姆级教程】
    大数据测试Hive数据库详细教程一、环境准备二、Hive数据库功能测试1.创建表2.插入数据3.查询数据4.使用条件过滤查询5.删除数据三、Hive数据库性能测试1.查询响应时间2.大数据量查询测试3.分区表性能测试4.并发查询性能四、Hive数据完整性测试1.数据加......
  • 服务器测试基础知识---网卡篇
    bios基本输入输出系统,介于硬件和软件之间bmc用来检测和管理服务器计算机启动步骤加电自检,系统自举,加载引导程序,进入操作系统进入系统的步骤加载引导分区加载内核运行init进程初始化程序OS的启动顺序1,加电自检2,bios启动3,加载引导程序(硬件初始化,设备检测等)4,加载系......
  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:优化数据加载的实战技巧(下)(16/30)
           ......