一致性与共识算法测试

共 18 题
#

1. 如何设计测试验证 Raft 集群在 Leader 切换时的线性一致性(Linearizability)?请说明测试用例构造方法和验证逻辑。

A 只需验证 Leader 切换完成后能正常读写
B 线性一致性无需验证并发操作
C 需并发读写并注入 Leader 切换,用线性化检查器验证操作历史 ✓ 正确答案
D Leader 切换后已提交的写可以丢失
#

2. Jepsen 测试框架的核心方法论是什么?如何构造网络分区(Network Partition)故障来检验分布式系统的一致性协议?

A Jepsen 无法验证一致性协议
B Jepsen 只做功能测试,不注入故障
C 网络分区无需构造,随机即可
D 用并发操作+故障注入收集历史,再用检查器验证一致性 ✓ 正确答案
#

3. CAP 定理在测试设计中如何指导取舍?如何验证一个系统在网络分区下的行为符合其一致性声明?

A 分区恢复后无需验证收敛
B CAP 系统分区时无需取舍
C 应明确系统声明(CP/AP),再验证分区行为与该声明一致 ✓ 正确答案
D 所有系统分区时都应保持可用
#

4. 消息队列(Kafka/RocketMQ)的 Exactly-Once 与消息顺序性如何测试,重复消费、乱序与事务边界

A 消息顺序性无法测试
B 事务边界允许部分提交
C Exactly-Once 只需保证无重复,无需幂等
D 应验证重复消费被幂等拦截、同 key 消息按序消费、事务原子 ✓ 正确答案
#

5. 分布式快照(Chandy-Lamport 算法)在测试/验证中如何应用?如何验证全局状态的一致性?

A 用 Chandy-Lamport 快照获取一致全局状态并对比副本数据 ✓ 正确答案
B 快照无需包含在途消息
C 快照只能用于网络故障,无法验证一致性
D 分布式快照需要全局时钟
#

6. 线性一致性与顺序一致性(Sequential Consistency)、因果一致性(Causal Consistency)的测试验证方法有何不同?

A 顺序一致性不要求全局顺序
B 三种一致性验证方法完全相同
C 线性一致性验证最严格,因果一致性只要求因果序 ✓ 正确答案
D 因果一致性需要验证实时顺序
#

7. 共识算法测试中如何模拟拜占庭故障(Byzantine Fault)?与崩溃故障(Crash Fault)测试的差异?

A 拜占庭容错无需限定恶意节点数
B 拜占庭故障模拟节点发送错误/矛盾消息,崩溃故障是节点停止响应 ✓ 正确答案
C 拜占庭故障与崩溃故障完全等价
D 崩溃故障测试需验证恶意节点下的结果正确性
#

8. 分布式系统测试中的'确定性模拟(Deterministic Simulation)'方法及其优势?

A 确定性模拟每次运行结果都不同
B 确定性模拟无法定位 Bug 触发条件
C 通过控制网络、时钟、调度使测试可复现、可穷举 ✓ 正确答案
D 确定性模拟无法控制故障注入
#

9. 分布式锁的故障场景测试,租约过期、锁被误删、脑裂与重入如何构造并验证

A 分布式锁可以用无条件 DEL 释放
B 脑裂时两侧可以同时持锁
C 分布式锁无需验证互斥性
D 应验证租约过期后条件删除防止误删新持有者的锁 ✓ 正确答案
#

10. 最终一致性系统的对账测试,异步复制延迟下的读写一致性验证与补偿机制测试

A 最终一致性系统读操作必须立即读到最新值
B 应验证异步延迟下最终收敛、对账发现差异、补偿机制触发 ✓ 正确答案
C 对账无需对比副本数据
D 最终一致性无需验证收敛时间
#

11. 缓存与数据库一致性(双写、延迟双删、Binlog 订阅)的测试方法,如何构造并发读写场景验证最终一致?

A 并发读写场景无需构造
B 应构造并发读写验证最终一致与不一致窗口可控 ✓ 正确答案
C 缓存与数据库可长期不一致
D 延迟双删无法缩小不一致窗口
#

12. 时钟与一致性,逻辑时钟与混合逻辑时钟在一致性判断中的作用,时钟回拨如何影响一致性测试结果?

A 混合逻辑时钟完全不受物理时钟影响
B 时钟回拨无需测试
C 物理时钟回拨不影响一致性
D 逻辑时钟不依赖物理时钟用于因果排序,物理时钟回拨可能破坏时间戳排序 ✓ 正确答案
#

13. 分布式 ID 的一致性测试,全局唯一 ID 生成在时钟回拨、并发与节点重启场景下的唯一性与单调性如何验证?

A 时钟回拨不影响雪花 ID 唯一性
B 节点重启后 ID 可以重复
C 分布式 ID 无需验证单调性
D 应验证并发/重启/时钟回拨下 ID 唯一且单调 ✓ 正确答案
#

14. 分布式事务(2PC/3PC/Saga)的测试策略,如何验证在各种故障点下的事务原子性和一致性?

A 应注入协调者/参与者/网络故障,验证 2PC 原子性与 Saga 补偿 ✓ 正确答案
B 2PC 允许部分提交
C Saga 无需验证补偿操作
D 分布式事务测试无需故障注入
#

15. 一致性测试的边界,业务可接受?

A 一致性测试无需考虑业务容忍度
B 一致性测试应匹配业务需求,验证不一致窗口在可接受范围 ✓ 正确答案
C 所有系统都需强一致
D 最终一致业务也需严格线性一致
#

16. 一致性测试的报告,如何呈现与决策?

A 一致性测试报告无需定位违规点
B 报告无法判断系统是否满足业务需求
C 报告应呈现违规证据、场景覆盖与收敛时间,驱动上线决策 ✓ 正确答案
D 报告只需给出通过/失败结论
#

17. 注册中心/配置中心的分布式一致性测试,服务发现延迟、配置推送丢失与节点故障的用例设计?

A 应验证服务发现延迟、配置推送不丢失、节点故障高可用 ✓ 正确答案
B 节点故障时服务发现必须中断
C 服务发现延迟无需验证
D 配置推送可以丢失
#

18. 会话级一致性测试,读己之写、单调读与因果读等客户端可见性保证如何设计多会话用例验证?

A 会话级一致性与副本延迟无关
B 会话读可以读到更旧的值
C 读己之写无需验证
D 应验证读己之写、单调读、因果读等会话内可见性保证 ✓ 正确答案