QAエンジニア|Appiumで複数Androidアプリを切替テストする方法

QAエンジニア

AppiumでAndroidアプリの自動テストを書いたとき、「staging 用のアプリ」「testing 用のアプリ」といった別パッケージのアプリを切り替えて動かしたいと思ったことはありませんか?
でも毎回テストコードを直すのは大変ですし、間違えるとエラーで止まってしまいます。

私も最初は「同じテストを環境違いでどう回せばいいの?」と悩みました。
でも、設定ファイルを工夫すれば、1つのテストコードをそのまま流用しつつ、環境ごとに簡単に切り替えて実行できる ようになります。

この記事では、コードを触らなくてもOKな運用方法として、environments.json と launch.json を使った切替手順を解説します。
テスト初心者のQAエンジニアでも、この通りに設定すれば動きます。


environments.json(環境定義の元帳)

まずは、環境ごとにアプリやログイン情報をまとめる「元帳」を作ります。
これがあることで、テストコードは一切変更せずに済みます。

📌 作成場所:your_project/environments.json

{
  "staging": {
    "serverUrl": "http://localhost:4723/",
    "capabilities": {
      "platformName": "Android",
      "automationName": "UiAutomator2",
      "deviceName": "AndroidDevice",
      "appPackage": "com.example.app.staging",
      "appActivity": "com.example.app.MainActivity",
      "appWaitActivity": "*",
      "noReset": true,
      "autoGrantPermissions": true
    },
    "credentials": {
      "tenant": "your-tenant",
      "email": "user-stg@example.com",
      "password": "********"
    }
  },
  "testing": {
    "serverUrl": "http://localhost:4723/",
    "capabilities": {
      "platformName": "Android",
      "automationName": "UiAutomator2",
      "deviceName": "AndroidDevice",
      "appPackage": "com.example.app.testing",
      "appActivity": "com.example.app.MainActivity",
      "appWaitActivity": "*",
      "noReset": true,
      "autoGrantPermissions": true
    },
    "credentials": {
      "tenant": "your-tenant",
      "email": "user-tst@example.com",
      "password": "********"
    }
  }
}

各設定の意味

  • serverUrl:Appiumサーバの場所。ローカルなら http://localhost:4723。リモートに切り替える場合もここだけ差し替えればOK。
  • platformName / automationName:Android自動化に必須の設定。
  • appPackage(★):起動するアプリを指定。環境ごとに違うので、ここを切り替えるのがポイント。
  • appActivity:アプリ起動時の入り口。共通なら全環境同じでOK。
  • appWaitActivity:起動直後の遷移待ち。"*" にするとスプラッシュや初回画面に強い。
  • noResettrue ならログイン状態や初回設定を保持できる。毎回初期化したいなら false に。
  • autoGrantPermissions:初回権限ダイアログを自動許可。テストが止まらなくなる。
  • credentials:ログイン用のメールやパスワードを環境ごとに管理。コードでは「env.credentials」を読むだけで済む。

👉 切替の主役は appPackage と credentials です。


VS Code の launch.json(環境を選んでF5)

次に、VS Codeから環境を選べるように設定します。
これで、右上のプルダウンから「staging」や「testing」を選ぶだけで実行できます。

📌 作成場所:your_project/.vscode/launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Login Test – staging",
      "type": "debugpy",
      "request": "launch",
      "module": "scripts.login_test",
      "args": ["--env", "staging"],
      "console": "integratedTerminal"
    },
    {
      "name": "Login Test – testing",
      "type": "debugpy",
      "request": "launch",
      "module": "scripts.login_test",
      "args": ["--env", "testing"],
      "console": "integratedTerminal"
    }
  ]
}

この設定のポイント

  • modulescripts.login_test のように指定することで import が安定します。
  • args [“–env”, “staging”]:ここで環境を指定。テストコードは触らなくてOK。
  • 複数設定configurations に環境ごとのプリセットを並べることで、QAメンバー全員が迷わず同じ条件で実行できます。

👉 すでに scripts/.vscode/launch.json を作っている場合は削除し、ルート直下の .vscode/launch.json に統一してください。


実行時の流れ(設定だけで切替運用)

  1. Appiumサーバを起動(別ウィンドウで appium)。
  2. 端末接続を確認(adb devices)。
  3. VS Code右上のプルダウンから「Login Test – staging」などを選択。
  4. F5キーで実行。
  5. 環境を変えたいときは、プルダウンから「Login Test – testing」を選ぶだけ。

👉 テストコードは一切いじらず、設定だけで環境切替ができます。


まとめ

  • 環境定義は environments.json にまとめる。
  • 切替の主役は appPackage と credentials
  • 実行は VS Codeの launch.json で –env を指定して切り替える。
  • 誰でもプルダウンから環境を選んで実行できるので、再現性が高く、チーム運用にも安心。

タイトルとURLをコピーしました