このページでは、社内環境などの、インターネットからアクセスできない環境に対して「MagicConnect」というクライアントソフトを使ってテストを実施する方法について説明します。
はじめに
- プライベート環境のテストに関するより一般的な情報は「プライベート環境に対するテスト」をご覧ください。
- MagicConnectを使ったテストはエンタープライズプラン向けのものであり、さらに現在は対象組織を限定した機能となっております。既にエンタープライズプランをご利用済みで、この機能を使ってみたいという場合には、サポートチームへお問い合わせください。
目次
MagicConnectを用いたテストの概要
大まかな仕組み
MagicConnectは、MagicPodのクラウド環境でテストを作成・実行する際に社内環境へのアクセスを可能にする機能です。ローカルPC環境および外部クラウド環境とは関連がありませんのでご注意ください。
基本的な仕組みとしては、社内環境にアクセス可能なマシン上で「MagicConnect」というクライアントソフトを起動してMagicPodに接続することで双方向の接続を確立し、クラウド端末(ブラウザ含む)からの通信を受け付けます。この仕組みにより、インターネットから接続できないテスト環境にも接続できるようになります。
この機能を使うメリット
MagicConnectを使わない場合、社内環境へのテストでは基本的に「ローカルPC」環境を選択することになりますが、MagicConnectを使うと「クラウド」環境が利用可能になります。クラウド環境を使うメリットは主に2点です。
- セットアップの簡易さ:ローカルPC環境でiOS・Androidのテストを行うにはMagicPodのアカウント以外にもローカルで設定しなければならないツールが多く、それなりに管理コストもかかります。クラウド環境を使えば、ユーザ側のPCではMagicPodにアクセスするためのブラウザさえあれば良いので非常に簡単にテスト作成を始められます。
- テスト作成の利便性向上:さらに、クラウド環境ではリアルタイム簡単テスト作成の機能を使うこともできますので、ローカルで1枚1枚画面のキャプチャを撮ってMagicPodの編集画面に戻る方法に比べてスムーズにテストを作成できます。
サポート環境
- テスト実行環境:クラウド環境で動作する全プラットフォームをサポートしています。
- iOS(シミュレータ)
- Android(エミュレータ)
- ブラウザ(Chrome、Edge、Firefox)
- クライアント(MagicConnectを起動する環境):以下の主要なOSをサポートしています。
- Windows
- macOS
- Linux
利用条件
- プラン:エンタープライズのみ
- 接続を共有できる範囲:プロジェクト内のみ。同じ組織の中でも、違うプロジェクトの接続を使うことはできません。同じプロジェクト内であれば、1つの接続でたとえばテスト作成1端末・一括実行3端末のように同時に使うことは可能です。ただし、負荷を考慮すると1接続5端末程度までに抑えることを推奨しています。
- 接続数の制限:ありません。クラウド端末と組み合わせて使う形になるので、実質的にはクラウド端末の数の上限がMagicConnectの接続数の上限となります。
- 接続先の制限:社内環境含め、MagicConnectが起動しているマシンからアクセス可能な場所にはすべて接続できます。ただし、システム上の制約により「localhost」「127.0.0.1」には接続できません。ローカルマシン上のサーバにアクセスしたい場合には、「192.168.1.10」のようなローカルのIPアドレスを使用してください。
利用方法
MagicConnectのダウンロード
最新版のMagicConnectはこちらのページよりダウンロードいただけます。Mac、Windows、Linux用の中からお使いのOSに応じたzipファイルをダウンロードした後、解凍してお使いください。
MagicConnectの起動
ダウンロード・解凍したMagicConnectをコマンドラインから実行します。どのOSでも基本的に同じですが、ここではLinuxでのコマンド例を示します。起動時には、組織名・プロジェクト名・ユーザのAPIトークンを最低限指定する必要があります。これらはパラメータとして指定しても良いですし、環境変数としても指定することができます。<>の部分はお使いの環境に合わせて書き換えてください。
- パラメータで指定する場合
./MagicConnect -o <ORGANIZATION_NAME> -p <PROJECT_NAME> -t <API_TOKEN>
- 環境変数で指定する場合
export MAGICPOD_ORGANIZATION=<ORGANIZATION_NAME>
export MAGICPOD_PROJECT=<PROJECT_NAME>
export MAGICPOD_API_TOKEN=<API_TOKEN>
./MagicConnect
起動後、以下のように確立した接続情報が表示されればOKです。「00ea1067-c980-44fd-b4cd-fb5ae2edca97」の部分が接続のID(MagicConnect ID)となります。
[xxxx-xx-xx xx:xx:xx.xxx - INFO] Started MagicConenct (MagicConnect ID=00ea1067-c980-44fd-b4cd-fb5ae2edca97) for <ORGANIZATION_NAME>/<PROJECT_NAME>
上の例ではMagicConnect IDを自動生成にしましたが、自分で指定することもできます。
- パラメータで指定する場合
./MagicConnect -o <ORGANIZATION_NAME> -p <PROJECT_NAME> -t <API_TOKEN> -i <MAGICCONNECT_ID>
- 環境変数で指定する場合
export MAGICPOD_ORGANIZATION=<ORGANIZATION_NAME>
export MAGICPOD_PROJECT=<PROJECT_NAME>
export MAGICPOD_API_TOKEN=<API_TOKEN>
export MAGICCONNECT_ID=<MAGICCONNECT_ID>
./MagicConnect
テスト作成・実行
MagicConnectを使ってテスト作成や実行を行うには、テスト設定パネルの詳細タブで以下のように設定を行います。
- MagicConnect:自分で起動したものを利用
- MagicConnect ID:<上で自動された、もしくは指定したMagicConnect IDを指定>
プロジェクトに対して1つしかMagicConnectが起動していない場合は、MagicConnect IDを指定しなくても起動済みの接続を使うことができます。ただ、知らないうちに他のユーザが別の接続を起動してしまう、もしくは既存の接続を知らずに使ってしまうこともありますので、基本的には何らかの値を指定して使うほうが良いでしょう。(プロジェクトに対して「テストケース更新」権限のあるユーザしかMagicConnectの接続を起動したり使ったりすることはできないので、権限のないユーザに勝手に使われてしまうということはありません。)
設定が済んだら、テスト作成の場合は「起動」ボタン、一括実行の場合は「テストを一括実行」ボタンでそれぞれ端末を起動します。
Androidのテストの場合、端末の再起動が必要になるため起動までに2-3分待ち時間がかかります。また、Androidについては他にも制約事項があるため、MagicConnectの詳細オプションのセクションも合わせてご確認ください。
プロキシ環境下での利用
MagicConnectを利用するマシンからインターネットへ接続する際にプロキシを使う場合、別途設定が必要です。現在は以下の2種類にのみ対応しています。
- 認証なしのプロキシ
- Basic認証を必要とするプロキシ
プロキシの設定は、他の設定と同様パラメータもしくは環境変数で設定できます。以下はBasic認証を使う場合の例です。認証なしの場合は--proxy-server-urlのみを指定してください。
- パラメータで指定する場合
./MagicConnect <その他の必須オプション> \
--proxy-server-url=<PROXY_SERVER_URL> \
--proxy-server-auth-type=basic \
--proxy-server-auth-user=<USER> \
--proxy-server-auth-password=<PASSWORD>
- 環境変数で指定する場合
export MAGICCONNECT_PROXY_SERVER_URL=<PROXY_SERVER_URL>
export MAGICCONNECT_PROXY_SERVER_AUTH_TYPE=basic
export MAGICCONNECT_PROXY_SERVER_AUTH_USER=<USER>
export MAGICCONNECT_PROXY_SERVER_AUTH_PASSWORD=<PASSWORD>
./MagicConnect
MagicConnectの詳細オプション
MagicConnectに指定可能なパラメータの一覧は以下のコマンドで確認できます。
./MagicConnect -h
NAME:
MagicConnect - Enables MagicPod testing within local testing environment
USAGE:
flags [global options] command [command options] [arguments...]
VERSION:
0.99.30.1
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--organization value, -o value Organization name. (Not "organization display name", be careful!) [$MAGICPOD_ORGANIZATION]
--project value, -p value Project name. (Not "project display name", be careful!) [$MAGICPOD_PROJECT]
--token value, -t value API token. You can get the value from https://app.magicpod.com/accounts/api-token/ [$MAGICPOD_API_TOKEN]
--id value, -i value (Optional) MagicConnect ID. When you launch multiple connections, you can identify them by this ID. [$MAGICCONNECT_ID]
--proxy-server-url value (Optional) Proxy server URL. [$MAGICCONNECT_PROXY_SERVER_URL]
--proxy-server-auth-type value (Optional) Authentication type of the proxy server, used with proxy-server-url. Supported values are none/basic. When not specified, regarded as none. [$MAGICCONNECT_PROXY_SERVER_AUTH_TYPE]
--proxy-server-auth-user value (Optional) User name when authenticating to the proxy. Effective only when proxy-server-auth-type is basic. [$MAGICCONNECT_PROXY_SERVER_AUTH_USER]
--proxy-server-auth-password value (Optional) Password when authenticating to the proxy. Effective only when proxy-server-auth-type is basic. [$MAGICCONNECT_PROXY_SERVER_AUTH_PASSWORD]
--android-dns-server 192.168.1.1, -d 192.168.1.1 (Optional) DNS server for the internal network. You can specify like 192.168.1.1 or `192.168.1.1:53`. If the port is not specified, it's regarded as 53. This option is effective only for Android cloud devices. [$MAGICCONNECT_DNS_SERVER]
--log-level value, -l value (Optional) Log level. Supported values are trace/debug/info/notice/warning/error/critical. (default: "info")
--force-create, -f (Optional) Delete the existing tunnel and create a new one when the Tunnel ID is already in use.
--help, -h show help
--version, -v print the version
ここでは、必須パラメータ以外のいくつかのパラメータについてご説明します。
--android-dns-server, -d
AndroidのテストでMagicConnectを使う場合の制約事項として、社内用のドメイン(test.example.localのような形式)でテストをするためには社内用のDNSサーバのIPアドレスをこのパラメータで指定する必要があります。
--log-level, -l
MagicConnectのログレベルを指定します。初期値は"info"で接続開始や終了などの最低限のログを出力します。レベルを"debug"にすると、接続先のドメインもしくはIPの情報がリクエスト毎に出力されます。ログの量は増えてしまいますが、どの接続が来ているかを確認したい場合には有効な情報となります。
--force-create, -f
同名のMagicConnectの接続が既に確立されている場合、強制的に削除して新しい接続を確立できます。基本的にMagicConnectの接続はMagicConnectのプロセスが終了したときに削除されますが、予期せぬエラーで終了して接続が残ってしまった場合にはこの機能で再接続が可能です。