Calabashでテスト自動化してみた(3)

ヒューマンクレスト矢野です。

今回は、Calabash-androidでできること、できなかったこと、
アプリケーションの部品情報の調査について書きたいと思います。

★Calabash-androidでできること
アプリケーションでの各操作
・ボタンをタップする
・入力欄に文字を入力する
・画面をスクロールする
・画面をスワイプする
・選択をする(リスト、ラジオボタン、チェックボックスなど)
・画面ショットを撮る

★Calabash-androidでできなかったこと
・同じ動作を延々と繰り返す
・途中位置までのスワイプ
・スクロール、スワイプが必要な画面での、画面ショット
・同じ箇所に動的に値をセットする
・WebViewでの操作
・他アプリ(カメラアプリなど)に制御が行った時の操作

自動化すると有効なデグレ確認のための回帰テストについては、
結構なメンテナンスが必要だったなぁ。というのが正直な印象です。
最終的な形が決まっているきちんとしたストーリーの受け入れテストに向く感じがします。

★テストを書くために、アプリケーションの画面やボタンを調査する
※Calabashのバージョンは、0.4.0.pre2以降であることが条件です。
cmdを起動して、以下を入力してください。
「calabash-android console apkの場所」
※前回のアプリを例にすると、calabash-android console bin\AppNavHomeActivity.apk

実行すると、コマンド入力となりますので、
「start_test_server_in_background」を入力します。

アプリケーションが起動しますので、調査したい画面で、
queryを記載すると、知りたい情報が表示されます。

ボタンの情報が知りたければ、該当画面まで遷移し、
「query(“button”)」と入力すると以下のような情報が表示されます。

[{“id”=>”login_button”,
“enabled”=>true,
“contentDescription”=>nil,
“text”=>”Login”,
“qualified_class”=>”android.widget.Button”,
“frame”=>{“y”=>322, “height”=>73, “width”=>84, “x”=>135},
“description”=>”android.widget.Button@40584908”,
“class”=>”Button”},
{“id”=>”login_button_slow”,
“enabled”=>true,
“contentDescription”=>nil,
“text”=>”Login (slow)”,
“qualified_class”=>”android.widget.Button”,
“frame”=>{“y”=>322, “height”=>73, “width”=>143, “x”=>234},
“description”=>”android.widget.Button@40585390”,
“class”=>”Button”}]

ここで、ボタンに「ログイン」などと記載されていない場合だと、
idを指定してタップすることができますので、
“login_button”がそれにあたるのだな。ということがわかります。
例はボタンになりますが、そのほかに、入力領域だとか、画面にあるものについては、
情報を知ることができます。

なお、アプリケーションで別のアプリ(カメラ)などを起動したりすると、
queryを入力しても情報は出ませんので、ご注意ください。

ソースコードを提供してもらっているので、設定ファイルをみることで
テストコードを書くこともできますが、
そのような知識がない場合は、この方法をとって作業を進めることもできます。

詳細については、以下を参照してください。

https://github.com/calabash/calabash-android/wiki/05-Query-Syntax

https://github.com/calabash/calabash-android/wiki/06-WebView-Support

以上で、Calabash-androidについての話を終わりにしたいと思います。
導入に関して、何らかの情報提供が出来たとしたなら幸いです。

1件のコメント

ただいまコメントは受け付けていません。