产品测试:除了性能跑分,还能测个啥

75 阅读1分钟

Jepsen 是一个开源的分布式一致性验证框架,专门用来测试分布式存储系统,比如分布式数据库、分布式键值系统和分布式消息队列等等。

混沌工程是在分布式系统上进行实验的学科, 旨在提升系统的容错性,建立对系统抵御生产环境中发生不可预知问题的信心。

形式化验证(Formal Verification),就是用数学方法去证明我们的系统是无 Bug 的,具体就是用数学工具进行定义、开发和验证(Specification, Development and Verification)。从一个更高阶的视角来看,不论硬件还是软件,归根结底是在解决数学问题。形式化验证的逻辑就是,如果能够按照严格的数学方法描述设计,那么结果的正确性就也是可以被证明。

那么,形式化方法如何在软件工程落地呢?方法就是 Leslie Lamport 提出的 TLA(Temporal Logical of Actions,行为时态逻辑),对又是这位大神。TLA 就是使用数理逻辑来描述系统的时序状态,并验证程序的正确性。

实际工程中也不可能将所有的代码都转换为 PlusCal 或 TLA+ 来做全面的验证。更多情况下,只是 TLA 来验证关键设计逻辑,剩余的多数代码还是要靠测试来发现问题。总之,测试是不能被验证替代的。


此文章为6月Day26学习笔记,内容来源于极客时间《分布式数据库30讲》