テスト駆動開発の説明|情報処理安全確保支援士 平成30年 春期午前Ⅱ試験 問23

出典:平成30年春期 午前Ⅱ 問23 分野:ソフトウェア開発管理技術 / 開発プロセス・ 手法
エクストリームプログラミング(XP:eXtreme Programming)における"テスト駆動開発"の説明はどれか。
  • ア:最初のテストで,なるべく多くのバグを摘出する。
  • イ:テストケースの改善を繰り返す。
  • ウ:テストでのカバレージを高めることを重視する。
  • エ:プログラムを書く前にテストケースを作成する。
解説

テスト駆動開発では、実装するプログラムを書く前に、その機能が満たすべき条件をテストケースとして作成します。

最初にテストを実行して失敗することを確認し、そのテストに合格する最小限のプログラムを実装します。その後、テストに合格する状態を保ちながらコードを改善していきます。

したがって、が適切です。

❌他選択肢が誤りの理由
ア:最初のテストで,なるべく多くのバグを摘出する。
⇒テスト駆動開発は、最初のテストで多くのバグを見つけることを目的とする手法ではありません。小さな機能単位で、テスト作成と実装を短い周期で繰り返します。
イ:テストケースの改善を繰り返す。
⇒テストケースを見直すことはありますが、テスト駆動開発の中心的な特徴は、プログラムの実装前にテストケースを作成することです。
ウ:テストでのカバレージを高めることを重視する。
⇒カバレージはテストの網羅性を示す指標ですが、テスト駆動開発そのものの定義ではありません。高いカバレージだけで、テストの妥当性や品質が保証されるわけでもありません。
TSUNAGARU-ADVICE

まず押さえたいこと

エクストリームプログラミング(XP)におけるテスト駆動開発(TDD)は、プログラムを書く前にテストケースを作成し、そのテストに通るように実装を進める開発手法です。先に期待する動作をテストとして明確にすることで、必要な機能を確認しながら小さく実装する点が特徴です。

迷ったときの判断軸

最初のテストで多くのバグを摘出することや、単にテストケースの改善を繰り返すこと、カバレージを高めることだけが主目的ではありません。TDDは、テストを後からまとめて行うのではなく、テストを先に書き、その後にプログラムを書くと判断しましょう。

科目Bにつなげるために

科目Bでは、アジャイル開発・XP・リファクタリング・継続的インテグレーション・品質確保などと絡めて問われることがあります。TDDでは、テスト作成、実装、リファクタリングを小さく繰り返すため、仕様の確認と品質確保を開発サイクルに組み込む視点を持ちましょう。

※開発関連試験向け。