在测试过程中引入可观测性平台提升业务质量

作者 观测云 产品技术专家 - 刘跃兰

前言

随着微服务技术的发展,微服务概念已深入人心,越来越多的企业开始使用微服务架构来开发业务应用。业务应用系统的整体架构变得更加复杂,并存在各种各样的不确定性因素,从而对质量保障,以及相应的测试工作带来了巨大挑战。因此,在这样的背景下,测试人员就更需要借助简单易用的工具辅助测试工作。观测云就属于能够协助测试人员获取各类测试结果的有效工具。

本文通过一些常见场景的举例,来介绍观测云是如何辅助测试过程的,希望给予读者一些灵感。

轻松观测测试环境和业务应用状况

测试环境状况检验

在测试环境中,如果安装部署了观测云采集器 DataKit,测试人员就可以通过「基础设施」的基本信息直接获取到测试主机的配置情况,检查测试环境是否满足测试配置要求。效果如下:

在安装 Datakit 采集器基础知识又接入了「应用性能监测」,便可以观测到应用服务调用时对应的主机运行情况,排除硬件环境干扰。效果如下:

多维调用关系梳理

微服务架构下,无形中增加了很多"平行调用关系",它不是最终用户调用的,而是服务内部去调用内部的服务的情况。测试人员可以通过观测云「应用性能监测」的服务拓扑图,清晰明地查看不同环境版本下各服务内部调用情况。根据测试判定标准、自定义区间等,为选择的填充指标自定义服务节点颜色区间范围,划分不同的等级,通过颜色区间快速有效地观测到各服务的请求数、P50 响应时间、P75 响应时间、P99 响应时间和错误数等性能指标测试结果。效果如下:

配置详情可参考《观测云应用性能监测的实现方式》

网络性能异常检测

在微服务架构中,每个服务都是独立的进程,并且通常部署在不同的基础设施,无法简单的使用本地调用的方式,而是需要远程服务调用来实现服务间的通信,那么微服务间的通信就会对网络情况产生高度依赖。测试人员可以通过观测云的「网络监测」模块快速感知,排除因网络不稳定引起的故障干扰。

进入「链路」页面后,可以看到火焰图、存在调用关系的各服务耗时占比情况。将服务调用栈情况与当时的网络运行情况相结合,当发现某个服务耗时较长时,可以以此优先排除网络干扰。效果如下:

配置详情可参考《观测云开启 eBPF 的方式》

观测云在单元测试中的应用

单元测试(unit testing)是对软件中的最小可测试单元进行检查和验证。对于 Java 里单元测试中单元的含义,一般是指一个类。在单元测试时,观测云应用性能监测的 Profile 可协助自动获取应用程序运行过程中下钻到代码行,直观地展示 CPU、内存和 I/O 的使用情况。通过火焰图实时展示每一个方法、类和线程的调用关系和执行效率,帮助测试人员获取代码性能情况,得出测试结果,并协助开发优化代码。

功能详情可参考《观测云 Profile 介绍》

观测云在性能测试中的应用

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。

  • 负载测试可以确定各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
  • 压力测试则是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

在测试过程中,可以利用 Loadrunner、JMeter、PerformanceRunner 等压力测试工具,模拟高并发的客户端,通过协议和报文产生并发压力给服务器,测试整个系统的负载和压力承受能力,实现压力测试、性能测试、配置测试、峰值测试等。

开启观测云应用性能监测(APM)功能后,可在「应用性能监测」--「 服务」列表中,点击所要查看的服务,即可看到该服务的性能测试结果。效果如下:

配置详情可参考《观测云应用性能监测的实现方式》

前端用户访问的性能分析,可通过观测云的「用户访问监测」--「分析看板」 -- 「性能分析」获取 LCP、FID、CLS 和页面访问量排行(TOP 10)等性能测试结果。效果如下:

配置详情可参考《观测云用户访问监测的实现方式》

帮助节省 bug 复现成本

测试人员最为苦恼的事,莫过于在测试过程中出现过的问题,在开发人员 debug 之时却不能时时复现。不仅如此,云原生、容器、跨域等复杂的测试环境,加剧了这种情况出现的频率,导致开发人员无法定位,也就无法及时准确地修复 bug,进而成为后续版本中隐藏的风险。观测云的「快照」、「创建 Issue」 和「会话重放」功能可以非常有效地辅助测试人员减轻这样的烦恼。

快照分享

当测试人员在测试工程中发现 bug 时,可将对应的「链路」-「日志」关联信息保存快照,对应 bug ID,分享给开发人员,并记录到测试记录文档中,方便开发人员快速了解 bug 的前后端链路、日志、主机、JVM 等信息,快速定位 debug,节省传统方式的沟通成本和复现问题所需的时间成本。效果如下:

除此之外,还可以在创建快照时,根据需要选择分享方式(公开分享和加密分享)、快照有效时间(48 小时或永久),以及是否显示顶部栏和水印,满足多样化场景(例如,涉及外部人员参与排障的场景)。效果如下:

创建 Issue

Issue 作为异常追踪功能的最终落地单元,承担了整合当前工作空间中的异常问题来源、描述、相关成员等信息的角色。任何成员均可将在观测云中所观测到的异常现象,定义成一个 Issue,并通知相关成员来追踪处理。效果如下:

功能详情可参考《观测云 创建 Issue 介绍》

会话重放

会话重放可将测试过程中模仿用户访问网站的过程重建演示,通过捕获单击、鼠标移动和页面滚动等内容,生成视频记录,深入了解测试过程中的操作步骤。在前后端出现问题的时候,开发人员可结合用户访问性能数据,帮助进行错误定位、重现和解决问题。

功能详情可参考《观测云会话重放介绍》

  • 若当前 Session 已配置会话重放,则可点击「查看器」-「▶️ 播放按钮」,查看对应 Session 的会话重放。
  • 也可在 Session、View、Error 查看器详情页,点击右上角的「会话重放」,查看当前用户会话的操作重放。

观测云笔记辅助功能

测试团队可以通过观测云的笔记功能,管理测试文档模板,记录测试过程中发现 bug 时相关信息,方便后续根据测试数据比对和跟踪修复情况。笔记支持 21 种图表,可以新建图表,也可将工作空间中已有图表导出到笔记。在主机、容器、日志查看器、应用性能监测查看器、用户访问监测查看器中均有「导出到笔记」的下拉选项。

总结

在测试环境中引入观测云,可方便测试人员快速排除硬件设施、网络等因素的干扰,将更多的精力用在测试案例的优化上,并能准确地将测试产生的实际数据反馈到测试报告,或相关人员,提高整个团队的效率,确保更高效地提供高质量产品。

相关推荐
龚思凯几秒前
Node.js 模块导入语法变革全解析
后端·node.js
天行健的回响3 分钟前
枚举在实际开发中的使用小Tips
后端
wuhunyu8 分钟前
基于 langchain4j 的简易 RAG
后端
techzhi9 分钟前
SeaweedFS S3 Spring Boot Starter
java·spring boot·后端
写bug写bug1 小时前
手把手教你使用JConsole
java·后端·程序员
苏三说技术1 小时前
给你1亿的Redis key,如何高效统计?
后端
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
程序员清风2 小时前
阿里二面:Kafka 消费者消费消息慢(10 多分钟),会对 Kafka 有什么影响?
java·后端·面试
CodeSheep2 小时前
宇树科技,改名了!
前端·后端·程序员
hstar95273 小时前
三十五、面向对象底层逻辑-Spring MVC中AbstractXlsxStreamingView的设计
java·后端·spring·设计模式·架构·mvc