としっぴーず

旅行やミュージカル、Wordpress等のITネタ中心のブログ

○○駆動開発まとめ

   

TDDやBDD、DDDなんかは聞いたことありますし、業務で取り入れた経験もあります。最近、チケット駆動開発やらユースケース駆動開発やら色々目にしたので、いったいどれだけあるんだろうと調べてみました。

テスト駆動開発(TDD)

概要

テスト駆動開発とは、アプリケーションの各機能についてまずテストコードを書いて、テストが成功するようにテスト対象コードを短い間隔でリファクタリングしていく方法です。テストコード、テスト対象コードはまず失敗するように作成します。テストコード実行後、成功するようにテストテスト対象コードを修正します。一つのテストケースが成功したら、新たに失敗するテストコードを追加し、テスト対象コードもそれに成功するよう修正する。これを繰り返しながら、テスト対象コードが汚くならないよう適宜リファクタリングもしていく流れです。

メリット

コードに無駄がなく、綺麗に書けます。また、テストは自動で実行されますのでテスト工数を減らせ、手戻り工数の減少も期待できます。使用できるツールやフレームワークも豊富です。

デメリット

やはり初期の実装工数は増加する傾向があります。

向いてる開発スタイル

なんでも

ビヘイビア駆動開発(BDD)

概要

振る舞い(Behavior)をテストしながら開発を進める方法です。振る舞いとは、コンポーネントの振る舞いと外部仕様としての振る舞いと2種類あります。前者は、コードレベルでのテストを行うためTDDの一種と言えます。後者は、文字を入力やボタンの押下といったユーザー要求、外部仕様レベルでのテストを行います。一般的には、後者をBDDと位置づけたほうがわかりやすいです。アジャイル開発における「イテレーション」などの大きな単位でテストサイクルを回していき、TDDをユニットテストとすると、BDDは機能テストや結合テストにあたると言えます。

メリット

RSpecやSpecFlowなどのツールを使用し、機能テストレベルのテストを記述できる。

デメリット

やはり初期の実装工数は増加する傾向があります。リッチなwebアプリやネイティブアプリなどでは全ての画面操作を記載できるとは限らない。

向いてる開発スタイル

なんでも

ドメイン駆動開発(DDD)

作成中

チケット駆動開発(TDD)

作成中

ユースケース駆動開発(UDD)

作成中

ユーザー駆動開発

作成中

証明書駆動開発

作成中

締め切り駆動開発

作成中

 - 開発手法