22章受け入れテスト
開発者はコードベースに直接関わるテスト、すなわちユニットテスト、結合テスト、UIテストなどに注目しがちだ。これらのテストはコードが意図した通りの動作かどうかを検証するものであり、回帰を防ぐために役に立つ。しかし、顧客が期待するものを構築するためには全く役に立たない代物である。
開発者はコードを完全に把握した上でテストを作成するので、テストは開発者の期待に沿う方向にバイアスがかかる。しかし、テストを経て保証された動作が本当に顧客が望むものである保証はない。
次のユニットテストについて考える。
def test_chili_has_correct_ingredients(): assert make_chili().ingredients() == [ "牛ひき肉", "ミックススパイス", "たまねぎ", ..., "トマト", "いんげん豆" ]
このテストは通るしコードで生じた回帰も検出する。一見完璧だ。しかし、これを顧客に見せると「これは違う。私はテキサスチリが必要なんだ」と言われるかもしれない。ユニットテストは間違ったものを作ることを防げない。
ここで登場するのが受け入れテストである。受け入れテストは正しいプロダクトを作っているかを検査する。ユニットテストや結合テストは検証(verification)であり、受け入れテストは確認(validation)である。受け入れテストは、作っているものがユーザの期待通りのものであることを確認する。
この章ではPythonにおける受け入れテストについて学ぶ。今回はGherkin言語を用いて全く新しい方法で要件を定義するbehave
フレームワークを使う†1。ユーザとの対話を明確にするために振る舞い駆動開発(Behavior-Driven ...
Get ロバストPython ―クリーンで保守しやすいコードを書く now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.