Zerobase Dev Blog

コードネームYentry

TDDでUIデザインするタイミング

エンドツーエンドのTDDでは、ユーザーインターフェイスの設計をするタイミングが難しい。

TDDとUI設計を並行して進める。UI(インターフェイス層)の設計が固まるのにあわせて、アプリケーション層やドメインモデル層もそれにあわせて固まっていく。レイヤー間の共進化設計プロセス。

「いつUI設計すべきか」という問いの立て方が適切ではない。

というのが現時点の仮説で、ちょっと試してみようかなと。

UI設計におけるテスト

  • UI設計に自動テストは役立たない。
  • UI実装のバグを検出するのには役立つ。
  • UI設計におけるテストは生身の人間を用いた評価。

分野別テスト手法

  • UIプロトタイピングためにアプリケーションをモックする。
  • アプリケーションの受け入れテストにUIは不要。テストコードがある。
  • ドメインモデルのテストにインフラストラクチャは不要。モックする。

問題意識と作業仮説

UI設計と要件定義は一体のものであって、どちらかが先ということはない、という思想でプロトタイピングするとき、テスト駆動開発はどのように実践できるか。

システムをUIサブシステムとアプリケーションサブシステムに分離して同時に開発することで共進化させる?

BDUF(Big Design Up Front)は避けたいが、ある程度のインタラクションデザイン/UIデザインが進捗してからシステム設計したほうがよい。というのは、フィーチャーやユースケースが定義できなければ、受け入れテストは書けないからだ。モードレスUIにしたいので、フィーチャーやユースケースはインタラクションデザインから決めたい(逆にするとタスク指向のモーダルUIになりやすいはずだから)。メンタルモデルに照らして素性のいいシステムモデルを設計しないといけない。次はDCIを学ぼう。

DCIアーキテクチャ

関連情報