自動テストがテスト対象の出力(間接出力、副作用 含む)を観測しやすい エラー認識手段の充実、適切なログ設計、十分な副作用 対策(ステートレスなど)、観測用デバッグ機能 制御容易性 自動テストがテスト対象の入力(間接入力含む)を操 作しやすい 使いやすいAPI、間接入力の制御手段(Stubなど)、デバッ ガサポート、環境仮想化 分解容易性 対象から自動テスト可能なテスト対象を切り出しや すい。自動テストの障害を分離しやすい 接合部(DI、Dependency lookup、Link Seam)、 適切な結合性設計、モジューラアーキテクチャ 単純性 テスト対象の仕様や構造、実行方法が単純 冗長性の少ない仕様 安定性 自動テストの支障となるテスト対象のバグや不安定 さ(変更が頻繁など)が少ない バグの少ないコンポーネント、変更の少ない仕様・ IF 理解容易性 テスト対象の仕様や構造、実行方法が分かりやすい 理解しやすい仕様やコード、適切なドキュメンテーション 経験的に多いテスト自動化失敗要因:テスタビリティ不足 ※品質特性定義:James Bach