0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Robot Framework] Androidモバイルアプリのテスト自動化を構築からスクリプティングまでやってみる Windows環境

Last updated at Posted at 2024-12-24

はじめに

Androidモバイルアプリケーションをテスト自動化するとき、よく使うフレームワークとしてAppiumがある。
ただ、Appium + Pythonといったプログラミング言語を用いると、初めての人にとってハードルが高い。
そこで、ある程度簡単に実装できるようにした、キーワード駆動の Robot Frameworkがある。
Robot Frameworkはテストケースを自然言語に近いキーワードを用いて記述するもので、非エンジニアにとっても読みやすく、保守しやすいものになっています。

今回、windows 環境に robot frameworkの環境構築から、モバイルアプリケーションのログイン処理の作成、実行までを初心者でもできるようにドキュメント化した

セットアップ

Node.js

appiumのinstallや実行につかうツール。

基本的に最新版をダウンロードし、デフォルトの設定でインストーラーを進めれば、使えるようになる。

最後に動作確認をコマンドプロンプトで行う

node -v

image.png

Java Development Kit (JDK)

Androidの機能を有効にするために、JDKが必要になる。

JDKのサイトより、JDK Development Kit windows版のinstaller最新版をダウンロードする
デフォルトの設定でインストーラーを進めれば、使えるようになる。

環境変数設定

使うにあたって、環境変数の設定が必要となる。

image.png

「システム環境変数の編集」を起動し、「環境変数」を選び、追加・編集を行う。

追加する環境変数

変数名 意味
JAVA_HOME Java install先 C:\Program Files\Java\jdk-21

image.png

編集・追加する環境変数

変数名 意味
Path 実行パス %JAVA_HOME%\bin

最後に動作確認をコマンドプロンプトで行う

java -version

image.png

Android Studio

Androidのアプリケーション操作などを行うために使う。

Android Studioのサイトより、最新版をダウンロードする
デフォルトの設定でインストーラーを進めれば、使えるようになる。

パスの取得・設定 (インストール後)

インストールが終わり、Android Studioを起動する。
最初、Android開発のwizardが出てきますが、そのままNextを押し続けて、Studioを起動する

image.png

起動後、左上のハンバーガーメニューをクリックすると、ヘッダーメニューが開きます。
そこから、File → Settings を選ぶ。

image.pngメモります

Settingsのモーダルが立ち上がります。
左のメニューから、 Languages&Frameworks -> Android SDK を選ぶと、Android SDK Locationの情報が表示されます。
そのパスを

image.png

環境変数設定

先ほどと同様に、環境変数設定を行います

追加する環境変数

変数名 意味
ANDROID_HOME Android SDK Location C:\Users\xxx.xxx\AppData\Local\Android\Sdk

編集・追加する環境変数

変数名 意味
Path 実行パス %ANDROID_HOME%\platform-tools
Path 実行パス %ANDROID_HOME%\emulator

環境変数設定後に、コマンドプロンプトを起動し、以下2つのコマンドを実行し、動くことを確認する

adb

image.png

emulator

image.png

appium

モバイルを操作するツールになります

npmコマンド(node.jsをインストールすると、使えるようになる)を用いてインストールする

npm install -g appium

image.png

最後に、コマンドプロンプトで以下コマンドを実行し、確認します

appium -v

image.png

driver install

Android を操作するためのdriverをinstallします

appium driver install uiautomator2

image.png

appium 起動

appiumを常駐させます

コマンドプロンプトで以下コマンドを実行します

appium --allow-insecure chromedriver_autodownload

image.png

Appium Inspector

モバイルアプリケーションのlocatorを取得するツールになります

ここから最新のversion 「Appium-Inspector-YYYY.MM.DD-win-x64.exe」をダウントードして、インストールする。

appium inspectorを実行すると、以下のアプリケーションが立ち上がる。(動作確認後、閉じてよいです)

image.png

Python

Pythonサイトから、Stable Releasesのバージョンをダウンロードする

image.png

「Add python.exe to PATH」のチェックを入れて、どこからでも実行できるようにする。
その後、「Install Now」をクリックし、インストールを完了させる。

任意の場所でコマンドプロンプトを開き、以下コマンドを実施し、動作確認をする

python --version

image.png

robot framework

robotframeworkでWEBアプリケーションのテストを行うライブラリをインストールする

pip install robotframework

次に、robotコマンドを実行する

robot

image.png

※なお、環境やログインユーザーによって、上記 robotのPATHが正しく通ってなく、動かない可能性がある。
その場合、 pipでインストールしたライブラリが、個人のpython folderにインストールされているからです。
その場合、そのfolderもPATHに追加する必要がある

その時、環境変数のpathに追加するfolderは以下のとおりである。

%UserProfile%\AppData\Roaming\Python\Python312\Scripts

まず、exploreで対象folderが存在することを確認する。
その後、exploreで開いたパスを環境変数のpathに追加設定する
追加後に、改めてコマンドプロンプトを開き、実行できるかを確認する

image.png

robotframework appium library

次に、モバイルアプリのテストを行うライブラリ appium libraryをインストールする

pip install robotframework-appiumlibrary

テストデバイスとアプリ

Android Studioのvertual 端末、もしくは実機どちらでも使うことができる。

実機を使う場合

以下記事を参考に、端末の設定で、「開発者向けオプション」→「USBデバッグ」を有効にする

Vertual端末

Android StudioのメニューからTools → Device Manager を選ぶ
Device Managerのメニューより「Add a new device → Create Virtual Device」を選ぶ

そこから、任意の端末を選択する。

image.png

※Resolutionが高い端末を選ぶと、メモリ不足により不安定になります

コマンドプロンプトで起動

Android StudioのDevice Managerから起動することができます。
その場合、メモリを多く消費します。
そのため、Android Studioなしで仮想端末を立ち上げることをおすすめします。

まず、仮想端末のリスを表示する

emulator -list-avds

image.png

このように、登録した仮想端末の一覧(Pixel6, Pixel_7_API_35)が表示される

次に、実際に起動するとき一覧のデバイス名を用いて、以下コマンドを実施する

emulator -avd  ${端末名}

image.png

このように、仮想端末のみ立ち上がる。

Android端末の認識

adbコマンドを使って、Androidの操作、操作できる端末をリストアップする
コマンドプロンプトで以下コマンドを実行する

adb devices

image.png

このように、端末のUDIDとステータスが表示される。
この例では現在2台のAndroid(仮想端末)が接続されています
device : 利用可能
offline : 利用不可能

状態はこの通りです。

deviceの状態になるように、再接続などを行う必要がある。
実機の場合、先ほどの記事に記載した通り、接続許可設定を行うと、deviceの状態になります。

尚、デバイスを特定する必要があるため、UDIDの情報(ex emulator-5554)をメモっておく必要がある

テスト自動化練習用デモアプリインストール

以下に、テスト自動化の練習用Androidデモアプリがある
こちらのapkファイルをダウンロードする

コマンドプロンプトで以下コマンドを実行して、apkファイルをUDIDで指定した端末にアンドロイドアプリケーションをインストールする

adb -s ${端末UDID} install ${apkファイル}

image.png

image.png

テスト対象

テスト自動化練習デモアプリを用いる。
こちらで、以下ユーザーでログインできることを確認するテストを作成する

項目
メールアドレス alice@example.com
パスワード password
名前 山田アリス

image.png

ロケーター情報取得 by Appium inspector

Appium inspectorはモバイルアプリのロケーター情報を取得するツールです。
まず、Appium inspectorからモバイルに接続します

接続するときCapabilitiesを知る必要がある。
Capabilitiesは、接続するモバイル・アプリを特定するものです。

image.png

今回、最低限の項目として、以下情報をCapabilitiesと設定し、「Start Session」します。

項目 意味 入力内容
platformName 接続するプラットフォーム Android
automationName appiumのdriver名 UiAutomator2
udid 接続する端末のUDID (adbで取得した情報) emulator-5554
appPackage 起動するアプリケーション com.valtes.demo.login
appActivity 起動するアプリの画面 .MainActivity

Capabilitiesの各項目の詳細はこちら

appium inspectorで、モバイルの表示内容がミラーされます。
その情報を選択すると、その要素のxpathなどのlocator情報をとることができます

image.png

テストコード実装

スクリプトを記述するに用いるキーワードはこちらになります。

以下が、今回のテストコードになります(コピーしてそのまま実行できると思います)

*** Settings ***
Library  AppiumLibrary

*** Variables ***
${TIME_FOR_STABLE}  2s
${EMAIL}            alice@example.com
${PASSWORD}         password
${USERNAME}         山田アリス

${APPIUM_SERVER}              http://localhost:4723
${AUTOMATION_NAME}            UiAutomator2
${PLATFORM_NAME}              Android
${UDID}                       emulator-5554
${APPPACKAGE}                 com.valtes.demo.login
${APPACTIVITY}                .MainActivity




*** Keywords ***
Open Android APP
  [Documentation]     To open android browser and go to provided URL
  [Arguments]         
  Open Application    ${APPIUM_SERVER}  
    ...    platformName=${PLATFORM_NAME}
    ...    automationName=${AUTOMATION_NAME}
    ...    udid=${UDID}
    ...    appPackage=${APPPACKAGE}
    ...    appActivity=${APPACTIVITY}
    ...    autoAcceptAlerts=false
    ...    autoGrantPermissions=true
    ...    autoWebView=true
    ...    shouldTerminateApp=true
    Sleep  ${TIME_FOR_STABLE}

Close_APP
    Close Application

Capture ScreenShot
	[Arguments]  ${filename}
	Capture Page Screenshot  ${filename}


*** Test Cases ***

SetUp
	Open Android APP

Login Test
	Click Element  //android.widget.ImageView[@content-desc="その他のオプション"]
	Click Element  //android.widget.TextView[@resource-id="com.valtes.demo.login:id/title" and @text="Login"]
	Input Text  //android.widget.EditText[@resource-id="com.valtes.demo.login:id/etEmail"]  alice@example.com
	Input Text  //android.widget.EditText[@resource-id="com.valtes.demo.login:id/etPassword"]  password
	Click Element  //android.widget.Button[@resource-id="com.valtes.demo.login:id/btLogin"]
	Wait Until Element Is Visible  //android.widget.TextView[@resource-id="com.valtes.demo.login:id/tvName"]  10
	Element Text Should Be  //android.widget.TextView[@resource-id="com.valtes.demo.login:id/tvName"]  山田アリス

ScreenShot
	Capture Page Screenshot  screen.png

TearDown
	Close_APP

実行

robot  xxx.robot    <- 実行するrobotのファイル名

image.png

image.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?