Property based testing
「システムのあるべき挙動を満たす条件」を満たすであろう入力をランダムに自動生成し実行することで、想定していない挙動をしないかどうか検証する手法 メリット (Example based testingとの比較) テストケースの取りこぼしが発生しにくい
ファジングとプロパティベースドテスティングが異なる特性を持っているように感じられるからです。プロパティベースドテスティングでは、プログラムがどのように振る舞うべきかについての推論が必要ですが、ファジングはプログラムの振る舞いを深く理解することなく任意のプログラムに適用できます
プロパティベースドテスティングとは、テストがファジングされた際に、そのテストの失敗がシステムの問題を明らかにするようなテストの構築です。特に、これらの問題はシステムの直接的なファジングでは明らかにならないものです。
コードの正しさ検証する既存手法。右上に隙間がある
https://scrapbox.io/files/65fda899d10cf700250ed0e4.webp
It is also important to note that it does not — by any means — replace unit testing. It only provides an additional layer of tests that might prove very efficient to reduce some boilerplate tests.
既存テストを置き換えるものではなく、効率的なテストを追加する層
Rubyでの実績は?
RustとHaskellの比較
各言語の対応状況
これが元祖という説がある
PropEr