失败补偿机制测试|学习笔记

简介: 快速学习失败补偿机制测试

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)失败补偿机制测试】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12433


失败补偿机制测试


当把整个消息回退的都做完之后,来做一个消息确认失败的一个测试,看一下现在的失败补偿机制能不能保证现在服务的一个数据的完整系统。

现在先去把数据的状态确认一下,现在的优惠券,依然是没有使用的订单 ID,还有使用时间库存是1000个

image.png

现在把使用记录全部都删掉然后把消费日志表也都去掉,然后订单也全部都删掉,保证数据没有干扰。然后确认一下用户的余额现在是1000余额的一个使用记录,也把它全部删掉

现在这些数据,已经都归位,回到最原始的一个状态现在就来启动我们各个的微幅。让去启动起来,等这几个全部都启动起来之后就来去进行消息的 orderservice 处理。

发送后进行订单的确认,再看是否给 offer services 当中留了一个异常码。现在异常是存在的,然后有了这个消息,发送能不能保证这三个服务的数据这几个现在都已经启动起来然后回到这个地方,现在来测试一下。

代码如下:

@Test

public void confirmOrder(){Long coupouId=345988230098857984L; Long

goodsId=345959443973935104L Long

userId=345963634385633280L

TradeOrder order=new TradeOrder();

order.setGoodsId(goodsId); order.setuserId(userId);

order.setcouponid(coupouId); order.setAddress("北京");

order.setGoodsNumber(1);

order.setGoodsPrice(new BigDecimal(val:1000));

order.setshippingFee(BigDecimalZERO);

order.setorderAmount(new BigDecimal(val:1000))

order.setMoneyPaid(new BigDecimal(val:100));

orderService.confirmOrder(order);

现在注意观察消息日志有没有确认订单,然后这边儿执行完了之后,看是否接收到 consumer 类似的信息。

image.png

回退优惠券成功后,用户服务用到上面,这里接收到消息余额。看一下余额有没有更改,现在没有更改,然后余额之前使用过一次,现在又把它回退了

image.png

接收到消息以后看回馈库存,库存刚刚1000。现在依然是1000.

然后来看一下订单表,订单表订单的状态已经设置,刚才订单状态被改为取消,现在看一下有没有起作用。这个订单可以证明回馈

经过刚刚的分析,订单表的状态应该是0,是这个未确认,那没有改成我们期望的这个已取消

image.png

原因是收到这个消息的消费者还没来得及去执行,测试的方法已经结束了。

结束了之后,这个微服务其实就已经停,所以我们现在要保证让我们当前的这个测试方法不要停止得让们去等待键盘的输入,然后重新执行。

现在重新测试一下,现在的服务正在启动,然后这个微博呢,由于加了等待键盘输入这么一句话,所以这个方法就不会停止,现在这张就是订单接收消息成功,订单状态设置为取消。

image.png

然后由于取消值改变了,数据库有一点不一样,他消息的取消保证了我们当前数据的一致性。

第一个业务业务失败补偿机制就完成了。具体就是回退库存、回退优惠券、回退余额和取消订单四个步骤。

相关文章
|
5月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
153 10
|
5月前
|
JavaScript 测试技术 Python
UI自动化测试中的元素等待机制解析
在UI自动化测试中,元素定位失败常因页面存在iframe或缺乏合理等待机制。本文解析三种等待策略及其应用场景:显式等待可精确控制单个元素等待条件,支持自定义轮询;隐式等待全局生效,适合简单页面加载;强制等待仅用于临时调试,正式脚本慎用。通过对比三者执行精度、资源消耗及适用场景,帮助选择最优策略,提升测试效率与稳定性。
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1110 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
632 2
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
397 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
237 1
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
225 1
|
监控 测试技术 数据库
Python自动化测试之异常处理机制
总体而言,妥善设计的异常处理策略让自动化测试更加稳定和可靠,同时也使得测试结果更加清晰、易于理解和维护。在设计自动化测试脚本时,务必考虑到异常处理机制的实现,以保证测试过程中遇到意外情况时的鲁棒性和信息的有效传达。
271 2
|
NoSQL 算法 测试技术
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
作为大多数图数据库性能测试标配的 LDBC SNB 它是如何保障不同系统环境之间的测评比较公平且基准测试结果可重复的呢?本文从数据和 Schema 生成入手同你讲解它的原理。
531 2
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制

热门文章

最新文章