Property-Based Testing。入力の例ではなく「どんな入力でも成り立つルール」を書くテスト。入力はツールが何百通りも自動で作る。
# 例ベース: 自分で選んだ 1 ケースだけ確認
assert sort([3, 1, 2]) == [1, 2, 3]
# PBT: どんなリストでも「ソート後は小さい順」が成り立つか確認
@given(st.lists(st.integers()))
def test_sort(xs):
ys = sort(xs)
assert all(a <= b for a, b in zip(ys, ys[1:]))
例ベースだと、自分が思いつかない入力(空リスト、負数、重複)は試されない。PBT はそこを自動で突く。