アジャイル開発におけるテストケースの書き方

アジャイル開発でテストケースは必要か?

アジャイル開発では文書化は最小限しか行われないとされています。テストケースを書く必要はあるのでしょうか?

私は書く必要があると思います。

なぜテストケースを書くのか?理由はいくつかあります。

理由の一つはアジャイル開発と探索的テストでも述べたようにステークホルダーや開発者に検証内容のレビューをしてもらうためです。

もう一つの理由はテストケースを再利用する可能性があるからです。次のスプリント(イテレーション)時に同様の検証を行う必要がある場合があります。繰り返し改善を行う場合、一度作ったテストケースを新しい仕様変更に追従した形に修正して再利用することが考えられます。

また別の理由はテストの再現性を担保するためです。テストの再現性とは別の担当者が同じ検証をして同じ結果を得ることができることです。アジャイル開発といえどもテスト担当者が1人であるとは限りませんし、欠陥を報告してその再現確認を欠陥の修正担当者が行う必要があります。

具体的テストケースと抽象的テストケースのどちらが良いか?

具体的(低位レベル)テストケースとは、入力データと期待結果が具体的(実装レベル)なテストケースのことを言います。抽象的(高位レベル)テストケースとは、具体的な(実行レベルの)入力データや期待結果を使わないテストケースのことを言います。

例えば以前書いたソフトウェアテスト技法をラーメン屋さんの事例で説明してみる(同値分割法・境界値分析)の例で言えば、3月10日から3月21日まで期間限定商品(菜の花ラーメン)を出すという場合、具体的テストケースであれば「3月10日に菜の花ラーメンを注文できる」という書き方をするのに対して、抽象的テストケースであれば「対象期間に期間限定商品を注文できる」という風になります。

私見

アジャイル開発の新機能開発について、要件が柔軟に変更する可能性か高いので抽象的テストケースが望ましいと思います。上の例で言えば、キャンペーン開始日を3月10日から3月13日に変更したり期間限定商品を違う食材を使用したものにしたりというのが直前で変更される可能性があります。そのたびにテストケースを修正するのは非効率です。

具体的テストケースはテスト担当者の経験が浅い場合や外部検証を依頼する場合に有効な方法です。

しかし、アジャイル開発ではテスト担当者にそのチームの開発する機能についての一定以上の知識(ドメインナレッジ)が要求されると思います。そうでなければ事案に迅速に対応することもできませんし、プロジェクトの比較的初期段階のスペックレビュー等から参加する意味もありません。

また、外部検証を依頼するとしても、アジャイル開発の現場ではテストケースが出来上がってから依頼をするのではなく、スペックレビューからフィードバックまで開発プロセス全体に関わってもらうことが望ましいと思われます。

いただいたサポートは生活費にあてます