プロパティベーステスト
どんな入力でも成り立つはずの不変条件(プロパティ)を書くと、ライブラリが何百ものランダムな入力を生成して、それを破ろうとするテスト手法。
1999 年に Haskell 向けの QuickCheck(Claessen & Hughes)で生まれた。典型例は reverse(reverse(xs)) == xs、sort(xs).length == xs.length、encode(decode(x)) == x。失敗すると、シュリンキングによって入力が最小の再現ケースまで縮められる。
代表的なライブラリは Hypothesis(Python)、fast-check(JS)、proptest(Rust)、ScalaCheck、jqwik。空リスト、負数、Unicode といった境界ケースなど、手書きの単体テストが見逃すバグを見つける。例示ベースのテストの代わりではなく、補完である。