プロパティベーステストとは?
プロパティベーステストは、コードが常に満たすべき一般的なプロパティを述べ、それを反証しようとフレームワークに多数のランダムな入力を生成させます。add(2, 3) == 5をテストする代わりに、生成されたすべての整数ペアに対して加算が可換であることをアサーションするかもしれません。失敗するケースを見つけると、それを最小の反例へと縮小(shrink)します。
なぜ重要か
手で書いた例は、開発者が思いついたケースしかテストせず、コードを壊すエッジケースを見逃します。プロパティベーステストは膨大な入力空間を自動的に探索し、意外なfailureを表面化させます。shrinkingは、乱雑な失敗入力を最小の再現へと変えます。ツールにはQuickCheck、Hypothesis、fast-checkがあります。
関連する概念
- プロパティを反証するため多数の入力を生成する
- shrinkingが失敗する反例を最小化する
- fuzzingはセキュリティ寄りの関連する近縁
関連ガイド
What Is Fuzzing?Fuzzing feeds a program large volumes of random or malformed input to uncover crashes, hangs, and security vu…
What Is a Test Double?A test double is a stand-in for a real dependency in a test, such as a mock, stub, fake, or spy, used to isol…
What Is a Snapshot Test?A snapshot test records a serialized output on first run and fails later runs when the output changes, catchi…