8.

受入テスト (UAT) / 運用テスト完全ガイド

編集
この記事の要点
  • 受入テスト (UAT) = エンドユーザーが業務シナリオで「使えるか」検証する最終テスト
  • 運用テスト = 本番運用想定 (バックアップ/監視/災対/障害対応) の検証
  • SIT (System Integration Test) との違い: SIT は技術検証、UAT は業務検証
  • α テスト = 社内、β テスト = 限定された外部ユーザー。E2E 自動化は Cypress / Playwright
  • 本番リリース判定の Go/No-Go 会議 で合否を決定。不具合は重要度別に判断

受入テスト (UAT) とは

受入テスト (User Acceptance Test, UAT) は、ソフトウェアテストの最終フェーズで、エンドユーザーまたは発注者が業務シナリオに沿ってシステムを検証する段階です。「技術的に動くか」ではなく「業務に使えるか」を判断します。合格すれば本番リリース、不合格なら開発フェーズへ差し戻しになります。

テスト工程全体の位置づけ

テスト誰が何を環境
単体 (UT)開発者関数・クラス単位ローカル
結合 (IT)開発者モジュール間連携開発環境
システム (ST)QA機能全体STG
システム結合 (SIT)QA外部連携も含むSTG
受入 (UAT)エンドユーザー業務シナリオUAT / 本番相当
運用テスト運用チーム本番運用想定本番相当

UAT と SIT の違い

項目SIT (System Integration Test)UAT (User Acceptance Test)
視点技術視点業務視点
実施者開発側 QA発注者・ユーザー
目的システム連携が技術的に動くか業務遂行に使えるか
判断基準仕様書通りに動く業務を完遂できる
合否の影響開発側で修正リリース判定

運用テストの観点

UAT が「機能の業務利用」を見るのに対し、運用テストは本番運用が滞りなく回るかを検証します。

分類テスト項目
バックアップ / リストア日次バックアップ、ポイントインタイムリカバリ、リストア所要時間
監視 / アラートCPU/メモリ閾値超過アラート、ログ集約、Slack/PagerDuty 通知
パフォーマンスピーク負荷時の応答時間、CPU、DB コネクション
セキュリティWAF、SQL インジェクション、XSS、認証突破
災害対策 (DR)リージョン障害想定の Failover、RTO/RPO 達成
障害復旧サーバ停止 → 自動再起動、DB プライマリ切替
定期メンテパッチ適用手順、再起動時のサービス停止時間
ログローテーションディスク満杯にならない

テスト計画書の構成

1. テスト概要
  1.1 テスト目的
  1.2 対象システム / 範囲
  1.3 前提条件

2. テスト体制
  2.1 ロール (発注者代表 / 業務責任者 / 開発側支援)
  2.2 連絡フロー / エスカレーション

3. テスト環境
  3.1 ハード / ソフト構成
  3.2 テストデータ
  3.3 外部連携先 (本番接続 / モック)

4. テストスケジュール
  4.1 開始日 / 終了日
  4.2 マイルストーン

5. テスト範囲
  5.1 実施するシナリオ一覧
  5.2 除外項目

6. テストシナリオ / ケース
  6.1 業務フローごと
  6.2 異常系 / 例外系

7. 合否判定基準
  7.1 Critical 不具合 0 件
  7.2 重要度別の許容件数

8. 不具合管理
  8.1 起票プロセス (Jira / Redmine)
  8.2 重要度分類 (S/A/B/C)

9. 終了条件 / 報告

テストケースの書き方

[テストケース ID: UAT-ORDER-001]
名前       : 顧客が商品を注文できる
前提条件   : 会員登録済み、商品Aの在庫が5個
手順:
  1. ログイン (user@example.com / pass)
  2. 商品Aを 2 個カートに入れる
  3. レジへ進む
  4. クレジットカード情報を入力 (テストカード番号)
  5. 「注文を確定する」を押下
期待結果:
  - 注文完了画面に注文番号が表示される
  - 確認メールが届く (件名: 注文ありがとうございます)
  - 管理画面で「未発送」ステータスで注文確認できる
  - 在庫が 5 → 3 に減少
実施者     : 業務担当 田中
実施日     : 2024-12-15
結果       : OK / NG
備考       :

α テスト / β テスト

テスト場所参加者目的
α (Alpha)開発側社内社員・QA機能網羅、致命バグ排除
β (Beta)限定外部ユーザー選定モニター / クローズドベータ実利用環境でのフィードバック
受入 (UAT)発注者側発注者・業務担当本番投入判定

E2E テスト自動化

UAT を支援するため、繰り返し検証する基本シナリオを自動化しておくと効率的です。

// Cypress 例: ログイン → 注文 → 確認のシナリオ
describe('注文フロー', () => {
  it('顧客が商品Aを注文できる', () => {
    cy.visit('/login');
    cy.get('#email').type('user@example.com');
    cy.get('#password').type('pass1234');
    cy.get('form').submit();

    cy.contains('商品A').click();
    cy.get('#add-to-cart').click();

    cy.visit('/cart');
    cy.contains('レジへ進む').click();

    cy.get('#card-number').type('4242424242424242');
    cy.get('#expiry').type('12/29');
    cy.get('#cvc').type('123');
    cy.contains('注文を確定する').click();

    cy.contains('注文ありがとうございます').should('be.visible');
    cy.contains(/注文番号: ORD-\d+/).should('be.visible');
  });
});

主要 E2E 自動化ツール:

  • Cypress: 開発者フレンドリー、JavaScript、ブラウザ内実行
  • Playwright: Microsoft 製、複数ブラウザ並列実行、CI 統合容易
  • Selenium: 古参、多言語対応、レガシー案件で多用
  • Autify / mabl: AI による自己修復、ノーコード

不具合の重要度分類

レベル対応
S (Critical)業務停止、データ破壊、セキュリティ脆弱性即時修正、リリース延期
A (High)主要機能の動作不良、回避策困難リリース前に修正必須
B (Medium)非主要機能の不具合、回避策ありリリース後の優先修正
C (Low)表示崩れ、軽微な UX次バージョンで対応

Go/No-Go 会議

本番リリース判定のための最終会議。以下を確認します:

  • S/A レベルの未解決不具合がゼロ
  • UAT 合格率 (例: 95% 以上)
  • 運用テスト全項目クリア
  • ロールバック手順の準備完了
  • 監視 / アラート設定済
  • 運用チームへの引継ぎ完了
  • サポート体制 (リリース直後の張り付き)

承認者: 業務責任者・IT 責任者・開発リーダー・運用責任者の全員サインオフ。

FAQ

Q: UAT で大量の不具合が出たらリリースを止めるべき?
A: S/A 級が出たら止めるべき。B/C 級はサポート対応や次リリース修正で許容することが多い。「UAT で問題ゼロ」を目指すと永遠にリリースできない。

Q: UAT に開発者が参加してよい?
A: 支援役としては OK だが、テスト実施者にはなれない。開発者は自分のコードを甘く見がちなのと、業務知識が浅いため、業務ユーザーが主役。

Q: 運用テストは本番でやってよい?
A: バックアップ / リストア / 監視は本番相当環境で実施推奨。災害対策は本番でやるとリスク。Game Day (計画的に本番擬似障害を起こす演習) はある程度成熟したチームのみ。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 要件定義
  2. 基本設計
  3. 詳細設計
  4. 製造
  5. 単体テスト
  6. 結合テスト
  7. 総合テスト
  8. 受入テスト/運用テスト

最近更新/作成されたページ