14、系统测试、监控与可观测性的全面解析

系统测试、监控与可观测性的全面解析

1. 基于属性的测试

在软件开发中,对业务逻辑进行多场景测试的能力对于增强系统信心至关重要。基于属性的测试是一种强大的方法,可用于验证系统相对于暴露的 GraphQL 接口的行为。

1.1 多场景模拟

以发票管理系统为例,可能存在以下几种操作:
- 创建发票
- 提交发票以供审批
- 批准发票
- 拒绝发票
- 存档发票

发票创建后可被批准或拒绝,被拒绝的发票可重新批准,且只有被拒绝的发票才能存档。基于属性的测试不仅要生成创建发票的输入,还要生成一系列操作步骤。这种方法能模拟用户在系统工作流中可能采取的各种路径,发现一些难以通过示例测试发现的边缘情况。

1.2 状态测试预言机

为了支持一系列操作的测试,基于属性的测试需要一个有状态的测试预言机。当执行一个操作时,突变会同时发送到系统和测试预言机。预言机可预测 GraphQL 查询和订阅中应出现的变化。

1.3 确定性要求

编写基于属性的测试及其相关预言机时,所有操作必须是确定性的,这样在测试期望失败时可以重现测试场景。例如,使用 Java 的 HashMap 存储测试预言机状态可能会导致问题,因为它不保证内容的迭代顺序。可以使用 LinkedHashMap 来解决这个问题。

系统本身也需要是确定性的。在设计中,突变由命令生成器处理,最终将命令追加到命令日志中,命令的处理顺序由命令日志中的顺序决定。不过,命令生成器中涉及外部系统的工作可能不是确定性的,需要根据具体情况解决,例如将外部系统的响应作为操作的额外输入。 </

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值