こんにちは、モバイルファクトリー Advent Calendar 2018 - Qiita の19日目担当の id:neshです。 今日の記事は AppiumでAndroidアプリの自動テストをPerlで書いてみた事についてです。
はじめに
この記事では、headless Chromeでお手軽にWebページのE2Eテスト - Mobile Factory Tech Blog で紹介されたE2Eテストを、モバイルアプリで実行する方法を紹介します。 モバイルアプリ向けの自動テストツールは様々あるのですが、Appiumはその中の一つです。
Appiumの公式サイトの紹介記事 に書いてあるように、 Appiumとは、ネイティブ型及びハイブリット型のモバイルアプリ向けに開発されたテスト自動化を実現するためのフレームワークです。 Appiumを使用する事でiOS、Android端末上でテストプログラムを実行し、GUIテストを自動化する事ができます。
今回は、Appiumを使うための準備を紹介し、業務で特によく使うPerlでテストを書いてみたことを紹介します。 この記事で最終的には Androidアプリの起動をPerlで自動テストできるようにします。
事前準備
必要なもののインストール
- Appium のインストール
npm install -g appium
- Appiumを使うためのPerlモジュールのインストール
cpanm Appium
- Appium用の設定が正しく入ってるかをチェックするためのツールも入れる
- Appiumサーバーを起動し、アプリの自動操作を行う時に必要な環境変数などのチェックをしてくれる
- インストール後にチェックさせて、必要な設定を行う
npm install -g appium-doctor
Androidのサンプルアプリを用意
アプリの起動をテストするため、今回は簡単なテキストを表示するだけのアプリを用意します。 以下のアプリはAndroid Studioのエミュレーターを使って、起動した時の画像です。
Appiumでアプリが起動するかをテストする
実際にPerlでテストを書きます。
次のコードは、指定したエミューレーターで該当アプリを起動できるかどうかをチェックします。
use Appium; use Test::More; my %desired_capabilities = ( app => ${ビルドしたapkのファイルパス}, deviceName => 'emulator-5554', # `adb devices` を使って、起動したエミュレータ名を確認する platformName => 'Android', platformVersion => '8.1.0', ); my $appium = Appium->new(desired_capabilities => { %desired_capabilities }); ok $appium, 'アプリを起動できる'; $appium->quit; done_testing();
%desired_capabilities
でテスト対象のアプリとエミュレーターの情報を設定するAppium->new()
でAppiumサーバー経由でエミュレーター上に対象アプリを起動させる- 対象アプリが起動できたら、返り値の
$appium
がdefined
になる - テストの最後に
$appium->quit
でテストアプリへの接続を切り、アプリを終了させる
上記のコードをappium.pl
で保存し、次のようにテストを実行します。
- Android Studio のエミュレータを起動する
$ adb devices List of devices attached emulator-5554 device
- Appiumサーバーを起動する
$ appium [Appium] Welcome to Appium v1.10.0 [Appium] Appium REST http interface listener started on 0.0.0.0:4723
- テストファイルを実行する
- この時、エミュレーターの様子を確認しながらテストを実行すると、アプリが自動で起動できたことが見れます。
$ perl appium.pl ok 1 - アプリを起動できる 1..1
まとめ
ここまで、Androidアプリの自動テストをPerlで書く時の方法を簡単に紹介しました。 iOSアプリ用の自動テストも書けますが、別の機会で試したいと思います。
明日は @PikkamanV さんが担当します。楽しみにしてます!