Appiumでテストを実行していると複数台の計算機でテストを並列して実行したい、と思う方もいるでしょう。
Appium自体はサーバなので、1台の計算機上で複数起動させ、テストを並列して実行させることができます。これを行えば、独立したテストケースを分散させて、それぞれのテストを実行、結果を収集するという簡単なテストケースの実行並列化もできます。Selenium Gridよりもかなり手軽にテストを実行できる環境になるでしょう。
設定する点は以下
- Appiumサーバに必要な引数を与えて起動する
- テストケース側のcapabilityに対象となるAppiumサーバの待ち受けポートを指定する
例えば、appium_libを使っている人だとcapabilitiesのportに値を設定する必要があります。
例
Appiumサーバの起動
$ appium -p 4723 -bp 4724
※appiumコマンド箇所は、適切にnode .などに置き換えてください
capabilityの指定
例えば、appium_libを使っていると、appium.textの[appium_lib]にportを指定する方法があったり( ★ )、以下のように直接メソッドに値を与えるならserver_capsに対して要素を指定する方法があります。
server_caps = {
server_url: 'http://127.0.0.1:4725/wd/hub'
}
caps = { caps: desired_capabilities, appium_lib: server_caps }
Appium::Driver.new(caps).start_driver
いずれにせよ、これによりシナリオをAppiumサーバに渡すことができるようになります。
並列実行
Step1
$ appium -p 4723 -bp 4724 $ appium -p 4725 -bp 4726
Step2
以下2種類でそれぞれ起動
server_caps = {
server_url: "http://127.0.0.1:4723/wd/hub"
}
server_caps = {
server_url: "http://127.0.0.1:4725/wd/hub"
}
注意点
iOSではiOS Simulatorの制限上、複数Simulatorを同時に起動させることができません。そのため、iOSは並列実行するには物理的に複数のMacマシンが必要です。
ref: https://github.com/appium/appium/blob/master/docs/en/appium-setup/parallel_tests.md
ref: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/server-args.md