0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アジャイル開発における3つの駆動開発の概要

Posted at

この記事は何か?

本記事ではアジャイル開発で実践される駆動開発の3つのアプローチ(TDD、BDD、ATDD)について、それぞれの基本的な概要をQAエンジニア目線で解説します。

目次

1. アジャイル開発における位置づけ

ウォーターフォール開発が「設計→実装→テスト」と段階的に進むのに対し、アジャイルでは小さな単位で設計・実装・テストを反復的に行います。

テスト駆動開発(Test-Driven Development:TDD)、振る舞い駆動開発(Behavior-Driven Development:BDD)、受け入れテスト駆動開発(Acceptance Test-Driven Development:ATDD)の3つの手法は、異なる粒度でテストファーストを実践するための具体的な手法です。

2. テスト駆動開発(Test-Driven Development:TDD)

主にユニットレベルでコードを書く前にテストを書く開発手法です。
TDDは主に開発者によって実践され、Red-Green-Refactorと呼ばれるサイクルで実践します。

  1. 失敗する単体テストを書く(Red)
  2. テストが通る最小限のコードを書く(Green)
  3. コードをリファクタリングする(Refactor)

3. 振る舞い駆動開発(Behavior-Driven Development:BDD)

ユーザー視点での機能の振る舞いをステークホルダー全員が理解できる形で記述し、それを基に開発を進める手法です。
スプリント初期から開発者、QA、プロダクトオーナーが協働してシナリオを作成します。

  1. Discovery:関係者全員でユースケースを洗い出し、具体的なシナリオを作成する
  2. Formulation:Given-When-Then形式で振る舞いを記述する
    (例: Given ユーザーがログインしている When 商品をカートに追加する Then カート内に商品が表示される
  3. 自動化:振る舞いを自動テストとして実装する

BDDにおいてQAエンジニアはスプリント計画時のふるまいの定義、シナリオ作成、自動化実装などに関与します。

4. 受け入れテスト駆動開発(Acceptance Test-Driven Development:ATDD)

開発前に顧客と合意した受け入れ基準を定義し、開発を進める手法です。
スプリント初期から開発者、QA、プロダクトオーナーが協働して受け入れ基準を具体的なテストケースとして作成します。

  1. 受け入れ基準の定義:ユーザーストーリーごとに受け入れ条件を明確化する
  2. テストケースの作成:受け入れ基準を具体的なテストケースに落とし込む
  3. 自動化:テストケースを自動テストとして実装する

ATDDにおいてQAエンジニアは受け入れ基準の定義、テストケース作成、自動化実装などに関与します。

5. 3つの手法の比較

観点 TDD BDD ATDD
主なスコープ 関数やクラス 機能の振る舞い 受け入れ基準の充足
主な実施者 開発者 プロダクトオーナー・開発者・QA プロダクトオーナー・開発者・QA
記述 プログラミング言語 自然言語に近い記法 自然言語

これらの手法は組み合わせて使用できます。
TDDで単体テスト、BDDで機能テスト、ATDDで受け入れテストと、異なる粒度でテストファーストを実践できます。

6. TDD・BDD・ATDDでカバーできない領域

アジャイルQAの基本方針は「自動化できるものは自動化し、人間にしかできないテストに注力する」です。
主に人間の判断が必要なテストは別途実施が必要です。

  • 探索的テスト: 仕様化されていない問題の発見、想定外のパターンの検証など
  • 非機能要件の一部: ユーザビリティテスト、アクセシビリティテストなど主に人間の判断が必要なテスト
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?