sumioの技術メモ

Androidについての記事が多くなると思います。

DroidKaigi 2017で登壇しました #DroidKaigi

DroidKaigi 2017で、「変更に強いEspressoテストコードを効率良く書こう」という内容で発表しました。

続きを読む

DroidKaigi 2017でEspressoについて発表します #DroidKaigi

本日より2日間開催されるDroidKaigi 2017で、 「変更に強いEspressoテストコードを効率良く書こう」という内容で発表します。

続きを読む

Android Testing Bootcamp 3に、チューターとして参加しました #Android_Testing_BC

2016年9月9日(金)に開催された、Android Testing Bootcamp #3に、参加してきました。

今回のAndroid Testing Bootcampは、Androidアプリに対するテストの書き方をハンズオン形式で身に付ける、という内容だったので、自分でも役に立てるのではないかと思い、チューター枠で参加させていただきました。

続きを読む

Android Testing Bootcamp #1で、Appiumの適用事例について発表しました #Android_Testing_BC

2016年3月23日(水)に開催された、Android Testing Bootcamp #1で、「受託開発プロジェクトでAppiumによるテスト自動化を試す」というタイトルで発表しました。以下が発表資料です。

続きを読む

DroidKaigi 2016で、UI Automator2について講演しました #DroidKaigi

2016/2/18(水)-19(木)に開催された、DroidKaigi 2016で「生まれ変わったUI Automatorを使いこなす」というタイトルで講演しました。以下が講演資料です。

続きを読む

Roppongi.aar #2で、UI Automator 2について発表しました #roppongi_aar

2015/11/17(火)に開催された、Roppongi.aar #2で「UI Automator Becomes Friendly with Espresso」というタイトルで発表してきました。以下が発表資料です。

新しくなったUI Automator 2では、Espressoと混ぜて使うことができる、という内容です。

Espressoを使ったテストを書いている時に、連携先のアプリを操作したくなることがあると思います。 そういうときに、連携先のアプリに遷移したところだけUI AutomatorAPIを使ってテストを書くことができるのです。

新しいUI AutomatorAndroid Instrumentation Testをベースに書き直されたことによって、このようなことが可能になりました。

具体的な動作例はGitHubにアップロードしましたので、参照してみてください。

UI Automator 2の仕組みについて

ところで、Android Instrumentation Testは、テストコードと同一の開発者署名が施されたアプリケーションしか操作できなかったはずです。 それにもかかわらず、UI Automatorは、異なる署名のアプリを操作できています。これは、どのような経緯によるものなのでしょうか。

UI Automator 2のソースコードを辿っていくと、最終的にInstrumentationUiAutomatorBridgeというクラスからUiAutomationを参照していることが分かります。

このUiAutomationクラスのインスタンスInstrumentation.getUiAutomation()から取得することができますので、Instrumentation Testから呼び出すことができるのです。

UI Automator 2は、UiAutomationが提供しているメソッドを駆使して第三者が署名したアプリの操作を実現している、ということになります。これらのAPIの利用には、特殊な権限はいりません。

アクセシビリティまわりのAPI構造を理解していないとなかなか使いこなすのが難しそうですが、これらのAPIを駆使すればUI Automatorの気に入らない部分だけ自作したり、あるいは新しいテストフレームワーク全体を作ることもできるはずで、色々と夢は広がります!

最後に

今回の勉強会は「英語推奨」ということで、スライドだけはなんとか英語にして本番に臨んだのですが、 喋りについては日本語で発表させていただきました。 海外の参加者も何人かいらっしゃったので、発表も英語でできれば良かったのですが、そこまでは手が回りませんでした。 また発表の機会があったら、次回は頑張りたいと思います。

発表後の懇親会では、Androidのテストについての苦労話を、色々な方から伺うことができました。大変だという思いは皆さん一緒なのだと改めて思いました。Androidのテストについて、色々な方の考えを聴けるのは本当に参考になります!

今回の勉強会を主催してくださった@petitvioletさん、@tomoaki_imaiさん、株式会社メルカリのみなさん、どうもありがとうございました。

Appiumについての記事を@ITに寄稿しました

Android/iOS向けのテスト自動化ツールAppiumについての記事を、@ITさんの連載 「スマホ向け無料システムテスト自動化ツール」 に寄稿しました。

今回の記事ではAppiumのGUIフロントエンドを使ってテストを実行するところまでの手順を説明しています。 すぐに試せるように、Android向けサンプルのソースコードも一緒に公開していますので、興味の有る方はお試しください。

なお、執筆タイミングの関係で、Appiumのバージョン1.3.4を元にした記事になっています。
現在の最新版である1.3.7を動かしてみたところ、いくつかの違いがありましたので、このエントリーで紹介したいと思います。 最新版のAppiumで試すときの参考にしてください。

Windows向けのインストールパッケージについて

Windows向けのAppium 1.3.4.1は、zipファイルを展開するだけでインストール完了だったのですが、最新のAppium 1.3.7.2では、インストーラを実行してインストールするようになっています。

zipファイルの中にappium-installer.exeがありますので、それを実行するとインストールすることができます。

Mac OS X向けの外観について

Mac OS X向けのAppium Desktop Appの外観が少しだけ変わりました。バージョン1.3.4では、記事に掲載した画面スナップショットのように、設定ボタン類は左側に寄っていたのですが、1.3.7では以下のようなレイアウトになりました。

f:id:sumio_tym:20150430004916p:plain

また、悲しいことに、各種設定ダイアログの外観が見にくくなってしまいました。

f:id:sumio_tym:20150430010217p:plain

この見にくいダイアログへの変更は意図されたものではないようで、開発元のIssueとして登録されています。
いずれ改善されるとは思いますが、それまでは眼を凝らして設定項目を見るしかないですね…。