Mobile Factory Tech Blog

技術好きな方へ!モバイルファクトリーのエンジニアたちが楽しい技術話をお届けします!

AppiumでAndroidアプリの自動テストをPerlで書いてみた

こんにちは、モバイルファクトリー 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のエミュレーターを使って、起動した時の画像です。

Hello World アプリ

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サーバー経由でエミュレーター上に対象アプリを起動させる
  • 対象アプリが起動できたら、返り値の$appiumdefined になる
  • テストの最後に $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 さんが担当します。楽しみにしてます!