The Google Test Automation Conference (GTAC)を聞いてみて(on YouTube)

テスト界隈ならご存知の方も多いと思いますが、2014年10月19日に、以下のようにGoogleが主催するテスト自動化カンファレンスがありました。
The Google Test Automation Conference (GTAC)

同カンファレンスの付随情報

GTAC自体の訳に関しては先のレポートやその訳にお任せしようと思います。以下はかいつまんんで。

全体な話し

Real Devices vs. Emulators

私も、実機が良いというのは疑いようがないと思います。UXに関してだったり、ハードウェアによる制約(チップセットやメモリなど)、OSバージョンのようなプラッフォトームやそのカスタマイズ、ネットワークなどの環境など、実機でないと検証しきれない箇所が多々あるためです。ぱっと思い浮かばない方はTestdroidのBest Practice #3: Rely only on Real – Emulators vs. Devicesを見てみるのも良いかもしれません。

いっぽう、Emulatorでも十分にカバーできる範囲もあるのも事実です。また、現実問題としてすべて実機を使うことは多くの企業では難しいでしょう。Testdroidや国内だとScirocco Cloudなどの外部サービスを使うにしても、実機をその場で使って検証する用途では使えません。

なので、実機ですべき箇所、Emulatorによる確認で十分な箇所を切り分けて、テスト戦略のいっかんとして計画を作って実施すると良いだろうな、と思います。

New frameworks – Appium!

Appiumの話しが散見されたようです。Appiumのうまいところは、UIAutomationやuiautomatorのようにOSが備える機能を経由して、リリースビルドをテストできる点でしょう。あとはAppium自体が単なるproxyサーバである点が、ツールを組み合わせやすくできる良い点だと思います。

なお、Googleでは、iOSのテストではKIF、Androidはuiautomator, Espressoが使われるようです。こちらも検討してみた過去はありますが、KIFは今はSwiftで使えないし、Androidはuiautomator使うならAndroidのみに対応する、という人以外はAppiumのほうが無難そう。

Flaky tests

こういう用語あったのですね。成功したり、失敗したり、結果が不安定なテスト。こういうテストが増えると、テスト結果に対する信頼性が低くなってなんとも言えなくなる…

Hermetic tests

モバイルアプリの文脈でいうと、これはモックサーバを用意したクライアント完結型のテストです。なので、これは一般的にいわれるE2Eのテストではないです。E2Eはシステム全体をテスト対象とするのに対して、ここのHermetic testsはクライアントに集中します。

事例

How Facebook uses bots to manage tests

Facebookのテストに関する話しです。面白かったのは、テストコードの品質管理をBotが行うというところ。いわゆる、不安定なテストコードをBotが覚えておき、それらに対するテストを再実行したりわかるようにすることで、Flack testsによるテストの失敗を減らしていこうというものですね。

例えば、非同期処理が絡んでいるところなど、時間によって不安定なテストになるなどでよくありますね。過去のクックパッド開発者ブログ「CI で稀に失敗してしまうテストへの対処方法」にもあるように、多くのJSに関するテスト書いているWeb系企業だと多くが既に実施してそうな気がします。

補足

Mockフレームワーク

やってみよう

WireMockはすごくお手軽そう。前々からモバイルアプリに関して段階的にテストを充実させて不具合を埋め込まないようにと動いてきたのだけれど、E2Eが少し回ってきだしたのでこういうHermetic testsと言われている状態のやつも作り始めよう。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中