titanium/UIをテストする(iPhone編)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2011/08/17からのアクセス回数 &counter;
** Automation [#m2bfd6fd]
[[titanium/単体テスト(QUnit)を試す]]では、データベース廻...
今回は、XCodeに付属するAutomationを使ったUIのテスト方法に...
*** 起動方法 [#g31fd2f1]
Automationは、XCodeのInstrumentsのライブラリとして提供さ...
- /Developer/Applications以下のInstrumentsを起動します
- Chooseダイアログが表示されますので、Automationを選択し...
&ref(choose_dialog.png);
- Choose Targetメニューから「Choose Target...」でターゲッ...
&ref(choose_target.png);
- デフォルトでは、iPad - Simulator- iOS 3.2となっているの...
((Automationは、iOS4以降でないと使えません))
&ref(lunch_option.png);
** UIのテスト [#i56ad3a6]
*** テストスクリプトの設定 [#cf18d39d]
Automationのテストは、javascriptで記述したスクリプトに沿...
Scriptのタグで使用するスクリプトをセットします。ここではa...
*** 最初のスクリプト [#zcfbb59f]
最初に、ログの出力と部品の構成を出力するスクリプトを実行...
#pre{{
UIALogger.logStart("Starting Test");
UIALogger.logStart("Logging Tab1 element tree …");
UIATarget.localTarget().logElementTree();
UIALogger.logPass();
}}
- UIALogger.logStartでロググループの開始をログ出力
- logElementTreeで部品の構成を表示
- UIALogger.logPassでグループの処理の成功をログ出力
しています。スクリプトの実行は、Recordボタンを押した後にS...
((Run on Recordを選択すると、StartScriptボタンを押さなく...
テストの画面は、
&ref(iPhone.png);
出力結果は、
&ref(log1.png);
これでは、良く分からないので、このログの階層構造を示すと...
&ref(UI階層.png);
*** 部品へのアクセス [#v544fccd]
[[Automation Reference Collection>http://developer.apple....
に各部品へのアクセス方法が載っています。
すべてのUI部品が、UIAElementクラスのサブクラスとなってい...
logElementTreeで正確な画面の構成が取得できるので、これを...
最初のスクリプトにタブバーのTab 1ボタンの名前を出力してみ...
#pre{{
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());
}}
- 最初にtarget, app, main, navi, tabにターゲット、アプリ...
- tab.buttons()[0].name()でタブバーのボタン配列の1個目の...
実行結果は、以下の通りです。
&ref(log2.png);
*** 画面遷移 [#j2d4d042]
次に画面遷移ですが、通常の操作通り、部品をタップ(tap関数...
Tab 2のWebViewのFoodLogサイト画面に遷移してみます。
Webページの表示に時間がかかるので、delay関数ですこし待ち...
#pre{{
tab.buttons()["Tab 2"].tap();
target.delay(3.0);
UIALogger.logStart("Logging Tab2 element tree …");
main.logElementTree();
UIALogger.logPass();
}}
&ref(FoodLog.png);
ログの結果、WeViewの中身の要素も通常の要素と同じように表...
((WebViewの画面遷移もAutomationから操作できるので、この結...
&ref(log3.png);
また、tapの直後はmain.logElementTreeが正しく表示されませ...
置くのを忘れないようしてください。
*** テストシナリオの実行 [#k201d2a0]
画面の切り替えができたので、テストシナリオに沿った動作を...
- 初期画面
- FoodLog画面切り替え
- 記録の追加
- グラフの表示
以上の処理をスクリプトにすると記録の追加は、
#pre{{
// 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);
}}
となり、グラフ表示は、
#pre{{
// グラフを表示
navi.buttons()["Graph"].tap();
target.delay(1.0);
}}
となります。
** テスト動画 [#g9fda2a8]
実際にiPhoneシミュレータで実行している動画をアップします。
#youtube(Gw81mf1GaWE);
上記デモに使ったテストスクリプト
- &ref(automation_test.js);
** コメント [#ybfa47f3]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2011/08/17からのアクセス回数 &counter;
** Automation [#m2bfd6fd]
[[titanium/単体テスト(QUnit)を試す]]では、データベース廻...
今回は、XCodeに付属するAutomationを使ったUIのテスト方法に...
*** 起動方法 [#g31fd2f1]
Automationは、XCodeのInstrumentsのライブラリとして提供さ...
- /Developer/Applications以下のInstrumentsを起動します
- Chooseダイアログが表示されますので、Automationを選択し...
&ref(choose_dialog.png);
- Choose Targetメニューから「Choose Target...」でターゲッ...
&ref(choose_target.png);
- デフォルトでは、iPad - Simulator- iOS 3.2となっているの...
((Automationは、iOS4以降でないと使えません))
&ref(lunch_option.png);
** UIのテスト [#i56ad3a6]
*** テストスクリプトの設定 [#cf18d39d]
Automationのテストは、javascriptで記述したスクリプトに沿...
Scriptのタグで使用するスクリプトをセットします。ここではa...
*** 最初のスクリプト [#zcfbb59f]
最初に、ログの出力と部品の構成を出力するスクリプトを実行...
#pre{{
UIALogger.logStart("Starting Test");
UIALogger.logStart("Logging Tab1 element tree …");
UIATarget.localTarget().logElementTree();
UIALogger.logPass();
}}
- UIALogger.logStartでロググループの開始をログ出力
- logElementTreeで部品の構成を表示
- UIALogger.logPassでグループの処理の成功をログ出力
しています。スクリプトの実行は、Recordボタンを押した後にS...
((Run on Recordを選択すると、StartScriptボタンを押さなく...
テストの画面は、
&ref(iPhone.png);
出力結果は、
&ref(log1.png);
これでは、良く分からないので、このログの階層構造を示すと...
&ref(UI階層.png);
*** 部品へのアクセス [#v544fccd]
[[Automation Reference Collection>http://developer.apple....
に各部品へのアクセス方法が載っています。
すべてのUI部品が、UIAElementクラスのサブクラスとなってい...
logElementTreeで正確な画面の構成が取得できるので、これを...
最初のスクリプトにタブバーのTab 1ボタンの名前を出力してみ...
#pre{{
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());
}}
- 最初にtarget, app, main, navi, tabにターゲット、アプリ...
- tab.buttons()[0].name()でタブバーのボタン配列の1個目の...
実行結果は、以下の通りです。
&ref(log2.png);
*** 画面遷移 [#j2d4d042]
次に画面遷移ですが、通常の操作通り、部品をタップ(tap関数...
Tab 2のWebViewのFoodLogサイト画面に遷移してみます。
Webページの表示に時間がかかるので、delay関数ですこし待ち...
#pre{{
tab.buttons()["Tab 2"].tap();
target.delay(3.0);
UIALogger.logStart("Logging Tab2 element tree …");
main.logElementTree();
UIALogger.logPass();
}}
&ref(FoodLog.png);
ログの結果、WeViewの中身の要素も通常の要素と同じように表...
((WebViewの画面遷移もAutomationから操作できるので、この結...
&ref(log3.png);
また、tapの直後はmain.logElementTreeが正しく表示されませ...
置くのを忘れないようしてください。
*** テストシナリオの実行 [#k201d2a0]
画面の切り替えができたので、テストシナリオに沿った動作を...
- 初期画面
- FoodLog画面切り替え
- 記録の追加
- グラフの表示
以上の処理をスクリプトにすると記録の追加は、
#pre{{
// 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);
}}
となり、グラフ表示は、
#pre{{
// グラフを表示
navi.buttons()["Graph"].tap();
target.delay(1.0);
}}
となります。
** テスト動画 [#g9fda2a8]
実際にiPhoneシミュレータで実行している動画をアップします。
#youtube(Gw81mf1GaWE);
上記デモに使ったテストスクリプト
- &ref(automation_test.js);
** コメント [#ybfa47f3]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc