受け入れ条件
完成の定義を渡す
前の回では、目的と入出力を書きました。それでもまだ足りないことがあります。どうなったら完成なのかが決まっていないからです。
受け入れ条件とは、これを満たしたら OK と言い切れる条件のことです。要件が「何を作るか」なら、受け入れ条件は「どう確かめるか」です。
プレーンテキスト
要件 予算オーバーを判定する関数がほしい
受入条件 予算3000で支出3000のとき False が返る下の1行があると、境界の扱いが確定します。3000ちょうどはオーバーではないと決まったわけです。
条件は具体例で書く
受け入れ条件を言葉で書くと、また曖昧になります。
プレーンテキスト
悪い 予算を超えたら分かるようにして
悪い 境界値も正しく処理して
良い 予算3000で支出2999なら False、3000なら False、3001なら True3行目は誤解のしようがありません。入力と期待する出力の組を並べると、それ自体がテストの仕様になります。
実務では、この形をそのままテストコードに落とせます。第4章でテストを書かせるときに、この書き方がそのまま効いてきます。
3種類の条件を出す
出す例は、次の3種類を揃えると穴が減ります。
プレーンテキスト
普通 よくある入力
境界 ちょうどの値、0、1件だけ
異常 データが空、想定外の値おこづかい帳で書くとこうなります。
プレーンテキスト
普通 支出が5件で合計4200、予算3000のとき True
境界 合計がちょうど3000のとき False
異常 支出が1件も無いとき False真ん中と下は、言われないと AI が勝手に決める部分です。ここを先に潰すのが受け入れ条件の役目です。
条件は自分の理解も試す
受け入れ条件を書こうとして手が止まったら、それは仕様がまだ決まっていない証拠です。
「ちょうど3000のときはどっちだろう」と自分が迷ったなら、AI はもっと迷います。書けないものは頼めない。 先に自分で決める必要があります。
これは AI 相手だけの話ではありません。人に仕事を頼むときも同じで、受け入れ条件を書く習慣は、そのままチーム開発で使えます。
練習
今回の演習は境界がやや意地悪です。ちょうど予算と同額のときと、支出が1件も無いときの2つを条件として書かないと通りません。頼む前に、自分で答えを決めてください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 予算とちょうど同額のときはオーバーではありません
- 支出が1件も無いときは False です
- 戻り値は True か False の真偽値です