两个案例全面阐述全链路测试怎么做

首先我们先针对全链路功能测试部分进行一下讲解。去年的时候,有一家电商公司可能知道我一直在帮银行做相关的测试,就请我帮他们去做一些规划。这个平台有虚拟订单,也有实体订单,方式不太一样。

还涉及到分账分佣以及跟银行的对接,如个人通过微信朋友圈也可以进行推销,有上下级关系,不同的层级中也涉及相应的分账。整个测试过程中涉及到资金的交互以及商品是否能买卖等情况。

我们在测试的过程中发现小金额订单的结算过程中,会出现无法正常扣钱、正常退款等情况,如1毛钱、1分钱。同时在分摊分账的过程中计算出来也有一些问题。

整个过程中我们通过模拟准生产环境去跟第三方平台进行业务交互,模拟各种业务交易的场景是否能够正常处理。这个过程需要测试人员用真实的、不同的银行卡账户去买东西,用真实的手机号去注册。除了提货这个环节,其他的环节全部都是真实的。

全链路的测试过程中会涉及到不同系统的业务交互关系,我们在测试的过程中一定要将业务场景梳理出来,去进行测试,以上这部分就是全链路测试的功能性测试。

接下来我们讲一下全链路测试的非功能性的测试。前段时间我帮一个银行做的一个项目,他们是做了系统的重构,已经上线了十几天了。数据量非常大,几千万的数据量。在这基础上去做测试。

在这个系统中我不是测试人员,我是负责SQL调优的。我通过全链路的监控方式把比较慢、耗时比较高的语法定位出来,定位出来之后进行调优。

在这个系统中测试工作是由甲方的测试人员自己去做,我只是负责调优。所以在测试过程中覆盖度的高低情况我并没有去参与。

我只负责在开发和测试人员在测试、开发的过程中,通过第三方监控工具把交易耗时的时间和交易码等与相对应的语法定位出来,定位出来之后,针对SQL进行调优。是否第三方有交互我就不负责了。


全链路压测就是预判上线之后是否会出现故障,同时也是降低运维成本。如果上线之后问题比较多,开发人员和运维人员就会每天忙于运维,而没有时间去做新的功能的开发。这也是性能测试人员和全链路测试人员在企业存在的重要性和价值。

大家将来上升到测试管理人员或者性能测试管理人员的时候,如果老板对你们的价值产生质疑,那我们可以回应他,如果没有做性能测试,如果出现意外事件,你要多购买多少台硬件。

开发人员和运维人员要定位问题、还要请人去复测,这个时候成本就更高了。另外客户的体验也会很差,一个系统经常出问题,客户还会继续跟你合作吗?

我们当时在测试这个系统的时候,出现的问题是上线后第三方的外呼太多了。上线之前我们内部的系统我已经调优过了,几乎都是在毫秒级以内了。

但是在业务过程中,交易调度了三四十次。如果每次1秒,那就是三四十秒了,但是我们内部语法是毫秒级的。这里的问题就是架构设计的问题。

如果我们在全链路压测中遇到这类问题,排除SQL没问题,我们就要看看转换SQL是否有问题,就会发现是for循环一直调用,导致问题出现,这样就可以把问题定位出来了。

刚才我们讲到了性能测试中响应时间慢的问题,但是我们的全链路测试不能只靠这个指标。我们作为性能测试专家也好、性能测试支持人员也好、我们要了解业务的拆分和流量的预估。

流量的预估指的是QPS到这台服务器的流量是多少,可能每秒钟要写入100万笔,另一台服务器是1000万笔,那我们前端的并发要设置多少,均摊到不同的数据库才可以达到每秒钟我们需要的数量。这一块内容后面我们也会进行详细讲解。

在全链路测试的过程中,如果出现软、硬件不够用的情况,我们要考虑是否需要扩容集群来满足相应的指标,或者并发量少的时候要递减。

之前我帮一家公司做问卷调查,一个全国性的学生就业情况调查。当时他们担心会有问题,让我们帮忙测试调优。流量一直正常开着,成本会很大。

给他们建议,在高并发的时候通过弹性的方式无限扩容,来增加流量,提高网络的访问量,当这个问卷调查做完后,就把流量降到最低,通过这种方式来降低成本。

财务系统这类系统会涉及到跨年度的大量数据结算。之前我遇到一个系统,涉及十几年共计好几千万笔数据,好多表都通过填表的方式去核算、计算。他们问我,这个能不能帮忙调优,我说我只能部署到能正常展现出来,不让它很慢,但是没办法达到结果秒级反馈。

他们需要多少毫秒之内能出来,我说没办法,这么大的数据量,最多只能到几秒以内。十几年的数据都要去计算,建议通过跑批的方式结算出来,不能实时结算,这样才能提高效率。

我们在全链路测试的过程中,要把容量的规划也要考虑进去,才能知道有没有问题。这个系统存在问题已经十多年了,到了我这里才把这个问题处理掉。

之前他们也有做测试,在测试的过程中只是开发人员帮助测试人员构造数据,构造完成之后,就按照比例扣减,在某种环境下去压测。

我们当时很大胆地要求他们在硬盘空间充足的情况下,把原来的客户数据脱敏导出来,模拟大量计算的过程中有没有问题。出了问题之后,我们再去做调优。

全链路测试我们要把交易流、场景流、容量、硬件设施设备都要大胆的提出来,扩展进去,做不到的提出来。在测试方案提出之后,让老板知道我能做这些事情,做不到不是我能力的问题,是资源的问题。

接下来的文章会继续为大家介绍全链路测试的场景分析以及技术方法,欢迎大家继续关注。

(本系列文章根据《优品软件培育计划》公益直播内容整理,可以私信我获取直播回放链接。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

计算机网络基础(1)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络基础 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 计算机网…

简易CPU设计入门:验证取指令模块【未完成】

项目代码下载 还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后&#xff…

MySQL详细学习攻略 MySQL基础非常全面教程 MySQL安装教程

MySQL安装教程 章节目录 一、MySQL简介与安装前准备 二、Windows系统下MySQL的安装 三、Linux系统下MySQL的安装 四、MySQL安装后的基本配置 五、MySQL服务的启动与停止 六、MySQL客户端工具的使用 七、MySQL安装常见问题与解决方案 一、MySQL简介与安装前准备 重点内容知识…

Flythings学习(四)串口通信

文章目录 1 串口编程基本步骤1.1 打开串口1.2 配置串口 1.3 读串口1.4 发送串口1.5 关闭串口 2 综合使用3 如何在软件上保证串口稳定通信4 flythings中的串口通讯5 协议接收部分使用和修改方法6 通讯协议数据怎么和UI控件对接 1 串口编程基本步骤 串口通信有5个步骤 1.打开串口…

YOLOv11模型改进-注意力机制-引入自适应稀疏自注意力ASSA

随着目标检测领域的快速发展,YOLO系列模型凭借其端到端、高效的检测性能逐渐成为工业界和学术界的标杆。然而,如何进一步优化YOLOv11的特征提取能力,减少冗余信息并提升模型对复杂场景的适应性,仍是一个值得深入探讨的问题。为此&…

Android:记录一个打包发布版的release包以后闪退的问题

个人感觉其实release闪退的问题挺难排查的,因为release包运行起来as捕获不到相应的应用程序进程,从而不易查看到日志,也是我玩得不溜,大家有不同的方法可以评论区探讨,我也定期回复一些评论一起讨论。以下是我遇到的情…

【数据结构】宜宾大学-计院-实验三

线性表的应用——实现两多项式的相加 课前准备:实验学时:2实验目的:实验内容:实验结果:实验报告:(及时撰写实验报告)实验测试结果:代码实现:(C/C)…

安宝特方案 | AR技术在轨交行业的应用优势

随着轨道交通行业不断向智能化和数字化转型,传统巡检方式的局限性日益凸显。而安宝特AR眼镜以其独特的佩戴方式和轻便设计,为轨道交通巡检领域注入了创新活力,提供了全新的解决方案。 01 多样化佩戴方法,完美适应户外环境 安宝特…

访问控制列表(课内实验)

实验2:访问控制列表 实验目的及要求: 通过实验,进一步的理解标准ACL与扩展ACL的工作原理及执行过程。理解通配符的概念,熟练掌握标准ACL与扩展ACL的配置指令,掌握将访问控制列表应用VTY线路上,并且能够判断…

鸿蒙开发 四十五 鸿蒙状态管理(嵌套对象界面更新)

当运行时的状态变量变化,UI重新渲染,在ArkUI中称为状态管理机制,前提是变量必须被装饰器修饰。不是状态变量的所有更改都会引起刷新,只有可以被框架观测到的更改才会引起UI刷新。其中boolen、string、number类型,可观察…

Oracle漏洞修复 19.3 补丁包 升级为19.22

1.场景描述 上周末2024-10-12日,服务器扫出漏洞,希望及时修复。其中,oracle的漏洞清单如下,总结了下,基本都是 Oracle Database Server 的 19.3 版本到 19.20 版本和 21.3 版本到 21.11 版本存在安全漏洞,即版本问题。如: Oracle Database Server 安全漏洞(CVE-2023-22…

Spring AI Java程序员的AI之Spring AI(一)

SpringAI 基础使用 前言Spring AIChatClientImageClientOpenAiAudioTranscriptionClientEmbeddingClient 总结 前言 Spring AI,听着名字就感觉很好使用,快速上手,虽然功能没有太完善,但是社区活跃度很高,可以看看源码…

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统,具有自己的特点,主要有两个方面: 1. 系统规模大,目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现,大部分页面具有类似的功能&…

Docker新手必看:快速安装和配置BookStack在线文档系统

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动BookStack容器4. 登录与简单使用5. 公网远程访问本地BookStack5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定公网地址远程访问 前言 本文主要介绍如何在Linux系统使用Docker本地部署在线文档管理…

【c++篇】:初识c++--编程新手的快速入门之道(二)

文章目录 前言一.引用1.引用的概念2.引用的特性3.引用的使用场景4.常引用5.引用和指针的区别 二.内联函数1.C语言的宏函数2.内联函数的概念3.内联函数的特性 三.auto关键字1.auto的定义2.auto的使用规则3.auto不能推导的场景 四.基于范围的for循环1.范围for的语法2.范围for的使…

时间序列预测(七)——梯度消失(Vanishing Gradient)与梯度爆炸(Exploding Gradient)

目录 一、定义 二、产生原因 三、解决方法: 梯度消失与梯度爆炸是深度学习中常见的训练问题,它们主要发生在神经网络的反向传播过程中,使得模型难以有效学习。 一、定义 1、梯度消失(Vanishing Gradient)&#xf…

PCL 点云配准-改进的RANSAC算法(粗配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 计算FPFH特征 2.1.2 RANSAC配准 2.1.3 可视化点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总&#xff0…

FlinkCDC 实现 MySQL 数据变更实时同步

文章目录 1、基本介绍2、代码实战2.1、数据源准备2.2、代码实战2.3、数据格式 1、基本介绍 Flink CDC 是 Apache Flink 提供的一个功能强大的组件,用于实时捕获和处理数据库中的数据变更。可以实时地从各种数据库(如MySQL、PostgreSQL、Oracle、MongoDB…

【图论】(一)图论理论基础与岛屿问题

图论理论基础与岛屿问题 图论理论基础深度搜索(dfs)广度搜索(bfs)岛屿问题概述 岛屿数量岛屿数量-深搜版岛屿数量-广搜版 岛屿的最大面积孤岛的总面积沉没孤岛建造最大人工岛水流问题岛屿的周长 图论理论基础 这里仅对图论相关核…