Newer
Older
MiniTias / docs / 01_GUIDE / GUIDE_07_テスト方針.md

テスト方針 (Testing Strategy)

本ドキュメントでは,MiniTIAS プロジェクトのテスト方針を定義する.

基本方針 (Principles)

  • 初期フェーズではカメラ・ストレージ等のハードウェア依存が大きいため,実機での手動確認を主体 とする
  • ハードウェアに依存しないロジック(ファイル命名,重複回避等)には Unit テスト を書く
  • テストは flutter test で実行できる状態を維持する

テストの種類と対象 (Test Types)

種類対象実施方法
Unit テストService 層のロジック(ファイル命名,重複回避等)flutter test
Widget テスト画面の基本的な UI 構成(ボタンの存在等)flutter test
手動確認カメラプレビュー,撮影,保存,削除の E2E 動作実機(AQUOS sense3)

※ Integration テスト(flutter drive)は初期フェーズでは導入しない.

Unit テスト

対象

  • FileService — ファイル名生成ロジック,重複回避ロジック
  • PermissionService — パーミッション状態の判定ロジック(モック使用)

ファイル配置

test/
├── services/
│   ├── file_service_test.dart
│   └── permission_service_test.dart
└── providers/
    └── gallery_provider_test.dart

命名規則

  • テストファイル名: {対象ファイル名}_test.dart
  • テストグループ: group('クラス名',) でクラス単位にまとめる
  • テスト名: 日本語で「〜の場合,〜する」形式
group('FileService', () {
  test('同秒のファイルが存在しない場合,サフィックスなしのファイル名を返す', () {
    // ...
  });

  test('同秒のファイルが存在する場合,連番サフィックスを付与する', () {
    // ...
  });
});

Widget テスト

対象

  • 画面に必要な UI 要素が存在すること(シャッターボタン,ナビゲーションバー等)
  • ボタンタップ時に Provider のメソッドが呼ばれること(モック使用)

方針

  • カメラプレビューはモック化する(camera パッケージのウィジェットは Widget テストで動作しない)
  • Provider は ChangeNotifierProvider.value でモックを注入する

手動確認 (Manual Testing)

確認項目

実装完了時に以下を実機で確認する.

  •  カメラプレビューが正しく表示される(180° 回転)
  •  シャッターボタンで撮影できる
  •  撮影画像が Pictures/MiniTIAS/ に PNG で保存される
  •  ファイル名が命名規則に従っている
  •  連続撮影が正常に動作する
  •  一覧画面にサムネイルが表示される
  •  サムネイルタップで拡大表示される
  •  画像の削除ができる
  •  パーミッション拒否時に適切なメッセージが表示される
  •  アプリをバックグラウンド→復帰してもカメラが正常に動作する

テスト実行タイミング (When to Test)

タイミング実施内容
機能実装完了時対応する Unit / Widget テストを作成・実行
コミット前flutter test を実行し全テストが通ることを確認
PR 作成前手動確認項目のうち関連するものを実機で確認