TDD
#テスト
from:
単体テストの考え方/使い方#644210b58660300000877940
色々書いてたら
コネクティングドット
した
koushisa.icon
TDD
の意義
自然と責務分割とインタフェース設計に意識が向く
自己完結するフィードバックで設計をインクリメンタルに改善できる
ビジネス要求
に答えるうちに
アーキテクチャ
の変化の
フィードバックループ
の起点となる
1.
テストケース
を考えたい
2. 取りうる状態ごとに対して望ましい振る舞いをケースに起こす
3. テストケースに起こすために
ビジネス要求
の
問題空間
から取りうる状態を洗い出す
4. ビジネスとそれ以外を分ける
DDD
っぽい
レイヤードアーキテクチャ
になる
5.
CRUD
以外のビジネス要求に対し
アーキテクチャ
がスケールしなくなる
6.
State-Action-Model (SAM)パターン
で
モデリング
しはじめる
#フロントエンドでMV*フレームワークを使わない理由
7. ビジネス要求の
モデリング
と
メンタルモデル
を一致させようと
ドメインイベント(Domain Event )
を用いる
8.
CQRS
に近い構成になる
9.
ビジネス要求
をそのまま
アーキテクチャ
に反映させる準備が整う
10. ループ
ホワイトボックステスト
が必要な場合は可能な限り
Finite State Machine(FSM)
とか
Model-based testing
に落とし込む
テストラスト開発