Rust顺序性能与测试
1. 单元测试与属性测试
在评估程序时,我们通常会先考虑程序的正确性,再关注其速度。而证明软件适用性的常用方法是单元测试,Rust 语言本身就内置了进行单元测试的基本设置。编写单元测试时,程序员需要完成两个步骤:
1. 生成能执行软件中某些代码路径的示例数据。
2. 编写额外代码,证明当示例数据应用于被测系统时,系统能展现出理想的属性。
单元测试是一种很好的测试方法,能证明被测系统的正常路径按预期工作。但它的弱点在于第一步,程序员需要绞尽脑汁生成示例数据集,以执行正确的代码路径并展示无边界情况等。人类在这项任务上表现不佳,因为它既繁琐,又容易因个人的主观偏见而无法全面测试。
相比之下,属性测试有不同的工作流程。编写属性测试时,程序员要做到:
1. 生成方法来产生被测系统的有效输入。
2. 编写代码证明对于所有有效输入,系统都具有理想的属性。
属性测试非常擅长发现软件中的极端情况、程序员可能想不到的古怪输入。我们将使用 Andrew Gallant 的 QuickCheck 工具,它借鉴了 Haskell QuickCheck。以下是使用 QuickCheck 进行测试的示例代码:
#[test]
mod test {
extern crate quickcheck;
use super::*;
use quickcheck::*;
#[test]
fn get_what_you_give() {
fn property(k: u32, v: u32) ->
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



