测试

测试可以有效的发现程序存在的缺陷,但是它却无法证明程序不存在缺陷 - Edsger W. Dijkstra, "The Humble Programmer"

对于程序开发而言,测试可以说是至关重要的一环,虽然它无法完全消除所有的 Bug,但是依然可以在某种程度上保证程序的正确性。

Rust 语言本身就非常关注安全性,但是语言级别的安全性并不能保证代码逻辑上的正确性,因为后者其实是一个相当复杂的问题。也许 Rust 的类型系统可以提供一些帮助,但是依然远远不够。

例如,假设我们有一个函数 add_two 用于将两个整数进行相加并返回一个整数结果。没错,Rust 的类型系统可以通过函数签名确保我们的输入和输出类型都是正确的,譬如你无法传入一个字符串作为输入,但是 Rust 无法保证函数中代码逻辑的正确性:明明目标是相加操作,却给整成了 x - y

好在,写测试可以解决类似的问题。但也不要迷信测试,文章开头的那句话说明一切。