FrontPage

2011/08/17からのアクセス回数 8099

Automation

titanium/単体テスト(QUnit)を試すでは、データベース廻りの単体テストを紹介しましたが、 今回は、XCodeに付属するAutomationを使ったUIのテスト方法について説明します。

起動方法

Automationは、XCodeのInstrumentsのライブラリとして提供されています。

choose_dialog.png

choose_target.png

lunch_option.png

UIのテスト

テストスクリプトの設定

Automationのテストは、javascriptで記述したスクリプトに沿って行われます。

Scriptのタグで使用するスクリプトをセットします。ここではautomation_test.jsをセットします。

最初のスクリプト

最初に、ログの出力と部品の構成を出力するスクリプトを実行します。

UIALogger.logStart("Starting Test");

UIALogger.logStart("Logging Tab1 element tree …");
UIATarget.localTarget().logElementTree();
UIALogger.logPass();

しています。スクリプトの実行は、Recordボタンを押した後にStart Scriptボタンを押します。 *2

テストの画面は、

iPhone.png

出力結果は、

log1.png

これでは、良く分からないので、このログの階層構造を示すと以下のようになります。

UI階層.png

部品へのアクセス

Automation Reference Collection*3 に各部品へのアクセス方法が載っています。

すべてのUI部品が、UIAElementクラスのサブクラスとなっているので、部品が含む要素は、buttons()等のように部品要素単位で取得することができます。

logElementTreeで正確な画面の構成が取得できるので、これを元に部品にアクセスします。

最初のスクリプトにタブバーのTab 1ボタンの名前を出力してみます。

var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();
var navi = main.navigationBar();
var tab = main.tabBar();

UIALogger.logDebug(tab.buttons()[0].name());

実行結果は、以下の通りです。

log2.png

画面遷移

次に画面遷移ですが、通常の操作通り、部品をタップ(tap関数)して画面を遷移します。

Tab 2のWebViewのFoodLogサイト画面に遷移してみます。 Webページの表示に時間がかかるので、delay関数ですこし待ちます。

tab.buttons()["Tab 2"].tap();
target.delay(3.0);

UIALogger.logStart("Logging Tab2 element tree …");
main.logElementTree();
UIALogger.logPass();

FoodLog.png

ログの結果、WeViewの中身の要素も通常の要素と同じように表示されていることが分かります。 *4

log3.png

また、tapの直後はmain.logElementTreeが正しく表示されませんので、delay関数で少し時間を 置くのを忘れないようしてください。

テストシナリオの実行

画面の切り替えができたので、テストシナリオに沿った動作をさせてみましょう。

以上の処理をスクリプトにすると記録の追加は、

// Tab 1に戻り
tab.buttons()["Tab 1"].tap();
target.delay(2.0);
// 追加ボタンを押す
navi.buttons()["Add"].tap();
target.delay(0.5);
// 体重を入力
main.textFields()[1].setValue("63.5");
target.delay(1.0);
main.buttons()["この値で保存する"].tap();
target.delay(1.0);

となり、グラフ表示は、

// グラフを表示
navi.buttons()["Graph"].tap();
target.delay(1.0);

となります。

テスト動画

実際にiPhoneシミュレータで実行している動画をアップします。

上記デモに使ったテストスクリプト

コメント

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

*1 Automationは、iOS4以降でないと使えません
*2 Run on Recordを選択すると、StartScriptボタンを押さなくても自動的にスクリプトが実行されます
*3 GoogleでUIAutomationRefとするとでてきます
*4 WebViewの画面遷移もAutomationから操作できるので、この結果はとても重要なことです

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc