テスト駆動開発|情報処理安全確保支援士 令和3年 春期午前Ⅱ試験 問23

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

テスト駆動開発は、プログラム本体を書く前に、先にテストコードを作成する開発手法です。

まず期待する動作をテストとして定義し、そのテストに合格するように最小限のプログラムを書きます。その後、必要に応じて設計やコードを改善していく流れになります。

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

❌他選択肢が誤りの理由
ア:最初のテストで,なるべく多くのバグを摘出する。
⇒テスト駆動開発は、最初のテストで大量のバグを見つけることを目的とする手法ではありません。先にテストを書き、そのテストを満たすように実装することで、仕様を明確にしながら開発を進める点が特徴です。
イ:テストケースの改善を繰り返す。
⇒テストケースの見直しは開発中に行われることがありますが、テスト駆動開発の特徴を最も端的に表す説明ではありません。テスト駆動開発では、実装前にテストコードを書く点が重要です。
ウ:テストでのカバレージを高めることを目的とする。
⇒テストカバレージを高めることは品質向上に役立ちますが、テスト駆動開発の主目的そのものではありません。テスト駆動開発は、先にテストを書いてから実装し、テストを満たす形で設計とコードを育てていく開発手法です。
TSUNAGARU-ADVICE

まず押さえたいこと

テスト駆動開発は、プログラムを書く前にテストコードを先に記述し、そのテストを満たすように実装を進める開発方法です。XPのプラクティスの一つで、先にテストを書き、後から実装する点が特徴です。

迷ったときの判断軸

最初のテストで多くのバグを見つけることや、カバレージを高めることだけが目的ではありません。また、テストケースの改善を繰り返すことも重要ですが、テスト駆動開発の最も特徴的な点は、実装前にテストを書くという順番にあります。

科目Bにつなげるために

テスト駆動開発そのものは、支援士試験の科目Bで中心的に問われる可能性は高くありません。科目Aでは、実装より先にテストコードを作成するというTDDの基本的な流れを押さえておきましょう。科目B対策では、セキュアコーディング・コードレビュー・脆弱性検査・セキュリティテストなど、開発工程へセキュリティを組み込む取組を優先しましょう。