システムテスト自動化の基礎知識とMonkeyTalkの使い方:スマホ向け無料システムテスト自動化ツール(1)(2/4 ページ)
本連載では、スマートフォン(Android/iOS)アプリ開発における、システムテストを自動化するツールを紹介していきます。初回はシステムテスト自動化の基礎知識とMonkeyTalkについて。
サンプル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']) }
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.+' } }
次に、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>
最後に、ダウンロードした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」タブを開き、以下の設定を行います。
- 「Link Binary With Libraries」を展開して「+」をクリックし、ライブラリ追加ウィンドウ左下の「Add Other...」をクリック。先ほどダウンロードしたMonkeyTalkのagents/ios/libMonkeyTalk-2.0.5.aを追加
- 同様に、検索バーを利用して以下を追加
- libstdc++.6.0.9.dylib
- libsqlite3.dylib
- CFNetwork.framework
- QuartzCore.framework
- 「Build Settings」の「Other Linker Flags」に、「-all_load」を追加
以上で、エージェントをバンドルしたアプリを起動できるはずです。初めてiOSシミュレーターで実行するとき、「ネットワーク受信許可」を確認するダイアログが出る場合(お使いのOSによります)、「許可」をクリックしてください。デモアプリとMonkeyTalkが通信するための許可が必要です。
Copyright © ITmedia, Inc. All Rights Reserved.