本書の前提: 「CI/CD サイクルを捨て、リリース直前 / 月次 / 四半期など 手動トリガーの回帰テスト のみを実行する」運用に最適化したベストプラクティス。
底本:
次世代検証ツール選定案_問1_ネイティブアプリ.md(CI/CD 統合前提) の結論を、回帰テスト前提に書き直したもの。調査日: 2026-06-08
Appium 3.x をコアフレームワークとする方針は維持しつつ、CI proxy 型ツールと固定月額サービスを廃止し、Pay-as-you-go ベースの端末ファームと OSS 視覚検証を主軸とする。実行頻度は週次〜月次の手動トリガーを想定。
| 領域 | iOS / iPadOS | Android | CI/CD 前提版からの変更 |
|---|---|---|---|
| コアフレームワーク | Appium 3.x + XCUITest Driver | Appium 3.x + UiAutomator2 Driver | 変更なし (W3C 準拠と OS 追従はリリース品質に直結) |
| テストランナー | pytest-xdist (ローカル) / Mocha (ローカル) | 同左 | GitHub Actions 廃止。ローカル macOS Mac mini / Mac Studio で直接実行 |
| 通常 UI 自己治癒 | 廃止 ── 手動メンテに切替 | 同左 | Healenium-Appium proxy は CI 連続実行が前提のため不要 |
| Canvas 領域 視覚検証 | OpenCV (OSS) + Apple Vision Framework | OpenCV (OSS) + Android ML Kit | 変更なし (オンデバイス ML はライセンス不要) |
| DRM 領域 視覚検証 | OpenCV ベースライン + 手動目視レビュー | 同左 | Applitools Eyes 廃止 ── 月額固定料金が回帰頻度に見合わない |
| 状態管理・操作制御 | XCUITest ベースの宣言型 YAML シナリオ | Espresso ベースの宣言型 YAML シナリオ | 変更なし |
| 端末ファーム | AWS Device Farm (Pay-as-you-go) を主軸、自社実機 iPhone / iPad で補完 | 同左 | BrowserStack 月額固定廃止。利用回数 × 単価で年額試算が小さくなる |
| マルチモーダル LLM | 本番判定不採用 (デバッグ用途のみ) | 同左 | 変更なし (Anthropic 公式 caveat と整合) |
appium driver install の自動化:
ローカル環境管理を人間が引き受けるCI/CD を捨てても以下は変わらない:
appium driver install xcuitest
のプラグイン管理は手動でも年数回程度の作業Healenium は proxy 経由で broken locator
を自動回復する仕組み であり、hlm-proxy /
hlm-backend / selector-imitator / PostgreSQL
の 4 コンポーネントを常駐させる必要がある。
回帰テストのみの運用では:
| 観点 | Healenium 利用 | Healenium 廃止 |
|---|---|---|
| インフラコスト | Docker Compose 常駐 | 不要 |
| locator 修復 | 自動 (CI で毎日学習) | 手動 (回帰実行時の失敗テストを人間が修正) |
| 修正サイクル | 即時 | 月次回帰のタイミングで集中修正 |
| 学習効果 | 継続実行で精度向上 | 実行回数が少なく学習効果が出ない |
回帰テストの実行頻度では Healenium の学習効果が活きないため、手動メンテに切り替える方が合理的。
Applitools Eyes は月額固定 (数百〜数千ドル) の商用 Visual AI で、CI で毎日数百回のベースライン比較を行うと TCO が安い。しかし:
OpenCV ベースの比較スクリプト例 (概念):
import cv2
import numpy as np
from skimage.metrics import structural_similarity as ssim
def visual_diff(baseline_path, current_path, threshold=0.95):
baseline = cv2.imread(baseline_path, cv2.IMREAD_GRAYSCALE)
current = cv2.imread(current_path, cv2.IMREAD_GRAYSCALE)
score, _ = ssim(baseline, current, full=True)
return score >= threshold, scoreCI/CD 前提では 月額固定 が前提だったが、回帰のみなら 使った分だけ が圧倒的に有利:
| ファーム | CI/CD 前提 (月額) | 回帰テスト前提 (月実行 200 分) |
|---|---|---|
| BrowserStack Automate | 175/月(2,100/年) | $175/月 (使わなくても支払う) |
| BrowserStack Live | 39/月(468/年) | $39/月 (手動探索向け、自動化不可) |
| AWS Device Farm (Pay-as-you-go) | $0.17/device-minute × 必要分 | 34/月(200分実行) * * = **408/年 |
| AWS Device Farm Unmetered | $250/月 (1 端末) × 端末数 | デバイス固定したい場合 |
| 自社実機 iPhone + Mac mini | 初期投資のみ | 端末費 + 電気代のみ |
注: AWS Device Farm の $0.17/device-minute は 2024 年公式情報。2026-06 時点では deep-research で一次価格未確証 (本書の残課題)。
回帰テストのみであれば、AWS Device Farm の Pay-as-you-go プラン + 自社 iPhone / iPad / Pixel / Galaxy の実機補完 が経済的に最も合理的。クラウド端末は OS バージョン網羅 (iOS 17 / 18 / iPadOS 18 / Android 14 / 15 / 16) と機種網羅 (Pixel / Galaxy / 廉価端末) の補完に絞る。
ルールベース state machine の概念は変わらず、以下を維持:
# regression_scenarios/login_to_drm_video.yml
name: ログイン→DRM 動画再生
steps:
- tap: { accessibility_id: "LoginButton" }
- type: { accessibility_id: "EmailField", value: "${TEST_USER}" }
- tap: { accessibility_id: "SubmitButton" }
- wait_for: { accessibility_id: "VideoList" }
- tap: { accessibility_id: "VideoItem_0" }
- assert_video_playing: # <video> プロパティ監視
current_time_after: 5
ready_state_at_least: 4
- visual_diff: # OpenCV 比較
region: { x: 0, y: 100, width: 1170, height: 600 }
threshold: 0.92実行コマンドはシンプル:
# 月次回帰実行 (Mac mini ローカル)
$ appium server --port 4723 --plugins-dir ./node_modules &
$ python -m regression.run --scenario login_to_drm_video --device "iPhone 15 Pro" --os "iOS 18"| 領域 | CI/CD 前提版 | 回帰テスト版 |
|---|---|---|
| 通常 UI | Applitools Eyes (商用) | OpenCV + 手動レビュー |
| Canvas 領域 | OpenCV + Apple Vision / ML Kit | 変更なし |
| DRM 領域 | Applitools Eyes + オンデバイス ML | OpenCV ベースライン + 手動目視レビュー |
| locator 修復 | Healenium-Appium | 手動メンテ (月次) |
オンデバイス ML (Apple Vision / Android ML Kit) は OS 標準 API で無料、回帰テストでも継続採用する。
| 観点 | 必須要件 |
|---|---|
| W3C 準拠 | クライアントは W3C WebDriver 準拠ライブラリ (Appium Python Client 3.x 等) |
| プラグイン管理 | appium driver install を手動運用ドキュメント化 |
| 端末ファーム課金 | Pay-as-you-go 必須。月額固定は不採用 |
| 視覚比較 | OSS (OpenCV / scikit-image) を主軸、商用は不要 |
| シナリオ管理 | 宣言型 YAML で人間が読める形式 |
| DRM 領域 | 手動目視レビューを SOP 化 |
| 番号 | 作業 | 担当 | 想定時間 |
|---|---|---|---|
| 1 | Appium 3.x / driver / プラグインのバージョン確認
(appium driver list) |
QA | 10 分 |
| 2 | YAML シナリオの最新化 (前月の不具合修正で UI が変わった箇所) | QA + Dev | 1-3 時間 |
| 3 | ローカル Mac mini で appium server 起動、自社実機を USB
接続 |
QA | 5 分 |
| 4 | 主要 5 端末 (iPhone 15 Pro / iPhone SE3 / iPad Pro / Pixel 8 / Galaxy S24) で各 50 シナリオ実行 | QA | 4-6 時間 |
| 5 | AWS Device Farm で OS バージョン網羅 (iOS 17/18/26 / Android 14/15/16) | QA | 2-3 時間 (Pay-as-you-go 課金) |
| 6 | OpenCV 比較で差分検出された画面の目視確認 | QA | 1-2 時間 |
| 7 | DRM 領域シナリオの手動目視レビュー | QA | 30 分 |
| 8 | レポート作成、Issue 起票 | QA | 1 時間 |
| 合計 | 約 1 営業日 |
月次回帰 1 回あたり:
CI/CD 前提の BrowserStack Automate Pro $225/月 × 12 = $2,700/年 と比較し、コスト ~85% 削減。
| 対立項目 | CI/CD 前提版の裁定 | 回帰テスト版の裁定 |
|---|---|---|
| Appium 3.x 移行方式 | 即時全面移行 | 変更なし (即時) |
| DRM 領域ツール | Applitools Eyes | OpenCV + 手動目視レビュー に変更 |
| マルチモーダル LLM 代替 | ルールベース state machine | 変更なし |
| コアフレームワーク (Maestro vs Appium) | Appium 3.x | 変更なし |
| 端末ファーム | BrowserStack 固定月額 | AWS Device Farm Pay-as-you-go + 自社実機 に変更 |
| locator self-healing | Healenium-Appium | 廃止 (手動メンテ) |
以下のいずれかが発生した時点で、本書を破棄し CI/CD 前提版
(次世代検証ツール選定案_問1_ネイティブアプリ.md)
への移行を検討する:
本書は底本
次世代検証ツール選定案_問1_ネイティブアプリ.md
の参考文献をすべて引き継ぐ。回帰テスト版固有の追加情報は以下:
structural_similarity): https://scikit-image.org/docs/stable/api/skimage.metrics.html#skimage.metrics.structural_similarity