連載
» 2014年07月16日 18時00分 公開

スマホ向け無料システムテスト自動化ツール(1):システムテスト自動化の基礎知識とMonkeyTalkの使い方 (2/4)

[長谷川孝二,STAR(テスト自動化研究会)]

サンプルAndroid/iOSアプリのセットアップ

 本連載でテスト対象とするアプリをGitHubで公開しています。ごく単純なMaster-Detail形式のアプリで、顧客の氏名、メールアドレス、性別、年齢を登録することで、その顧客のマーケティング区分(F1層、M2層など)を付加して表示するものです。

 Android/iOSそれぞれ、以下のようにセットアップしてください。

Androidサンプルアプリのセットアップ

 プロジェクトを下記リポジトリからcloneするか、ページ右にある「Download ZIP」ボタンでダウンロードして展開してください。

 本アプリは、Androidの新ビルドシステム(Gradle plugin for Android)で構成されています。アプリのビルドおよび端末・エミュレーターへのインストールは、プロジェクトのルートで下記コマンドで実行できます。

$ ./gradlew installAppDebug

 また、プロジェクトをAndroid Studioにインポートするには、Android Studioのメニューから[File]→[Import Project...]を開き、サンプルコードのディレクトリを選択して[OK]をクリックします。

 GradleおよびAndroid Studioの導入については、以下の記事を参考にしてください。なお、Gradleのバージョンは1.12、Android SDK Build-toolsはr19.1、Android Studioは0.8.2で確認しています。

Androidサンプルアプリへのエージェント組み込み

 続いて、MonkeyTalkのエージェントをアプリにバンドルします。エージェントはGoogle Play Storeにリリースするアプリにはバンドルすべきではありませんので、MonkeyTalkによるテスト実行専用のプロダクトフレーバーを追加します(サンプルアプリでは一通りの設定は終わっています。ダウンロードしたMonkeyTalkエージェントファイルのコピーのみ実施してください)。

 まず、appディレクトリにあるbuild.gradleに以下のように記述を追加します。

apply plugin: 'android'
apply plugin: 'android-aspectj'
 
android {
(snip)
productFlavors {
    (snip)
    monkeytalk {
        applicationId "com.nowsprinting.hellotesting.monkeytalk"
        }
    }
    (snip)
}
 
dependencies {
    (snip)
    monkeytalkCompile fileTree(dir: 'libs-monkeytalk', include: ['*.jar'])
}
app/build.gradle(抜粋)

 2行目は、MonkeyTalkエージェントの動作に必要な「AspectJ」を利用するためのプラグインです。

 9行目では、プロダクトフレーバー「monkeytalk」を宣言し、applicationId(アプリのPackageName)を設定します。

 17行目では、フレーバー「monkeytalk」でのみエージェントのjarファイルをバンドルしています

 続いて、プロジェクトのルートにあるbuild.gradleに以下の記述を追加します。これは2行目のプラグイン「android-aspectj」を利用するための設定です。

buildscript {
    (snip)
    dependencies {
        (snip)
        classpath 'com.uphyca.gradle:gradle-android-aspectj-plugin:0.9.+'
    }
}
build.gradle(抜粋)

 次に、MonkeyTalkエージェントが必要とするパーミッションの設定を、以下のように「app/src/monkeytalk/AndroidManifest.xml」に記述します。このファイルには差分だけ記述することで、ビルド時に「app/src/main/AndroidManifest.xml」の内容とマージされたAndroidManifest.xmlが生成されます。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.GET_TASKS" />
</manifest>
app/src/monkeytalk/AndroidManifest.xml

 最後に、ダウンロードしたMonkeyTalkのzipファイルの中にあるagents/android/monkeytalk-agent-2.0.5.jarを、 app/libs-monkeytalk/にコピーします。

 エージェントをバンドルしたアプリのビルドおよび端末・エミュレーターへのインストールは、プロジェクトのルートで下記コマンドで実行できます。

$ ./gradlew installMonkeytalkDebug

iOSサンプルアプリのセットアップ

 プロジェクトを下記リポジトリからcloneするか、ページ右にある「Download ZIP」ボタンでダウンロードして展開してください。

 ライブラリ管理に「CocoaPods」を使用していますので、下記コマンドで依存ライブラリをインストールしてから、Xcodeで「HelloTesting.xcworkspace」を開いてください。

$ pod install

 CocoaPodsの導入については、以下の記事を参考にしてください。

iOSサンプルアプリへのエージェント組み込み

 続いて、MonkeyTalkのエージェントをアプリにバンドルします。エージェントはApp Storeにリリースするアプリにはバンドルすべきではありませんので、MonkeyTalkによるテスト実行専用のビルドターゲットを追加します(サンプルアプリでは一通りの設定は終わっています。MonkeyTalkエージェントファイルのコピーのみ実施してください)。

 ビルドターゲットは、既存の「HelloTesting」を複製して作成します。Xcodeでプロジェクトを開き、ターゲット「HelloTesting」を右クリックして「Duplicate」を選択します。

ビルドターゲットの複製

 複製したターゲットは名前を「HelloTestingWithMonkeyTalkAgent」に変えておきます。続いて、「Build Phases」タブを開き、以下の設定を行います。

  1. 「Link Binary With Libraries」を展開して「+」をクリックし、ライブラリ追加ウィンドウ左下の「Add Other...」をクリック。先ほどダウンロードしたMonkeyTalkのagents/ios/libMonkeyTalk-2.0.5.aを追加
  2. 同様に、検索バーを利用して以下を追加
    • libstdc++.6.0.9.dylib
    • libsqlite3.dylib
    • CFNetwork.framework
    • QuartzCore.framework
  3. 「Build Settings」の「Other Linker Flags」に、「-all_load」を追加

 以上で、エージェントをバンドルしたアプリを起動できるはずです。初めてiOSシミュレーターで実行するとき、「ネットワーク受信許可」を確認するダイアログが出る場合(お使いのOSによります)、「許可」をクリックしてください。デモアプリとMonkeyTalkが通信するための許可が必要です。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。