Test Automation

テスト自動化とか品質とか勉強会とかやってるエンジニア(Automation Architect)のブログです。

Google Test Automation Conference 2015に行ってきた

 2015年11月10~11日にかけてボストンで開催されたGoogle Test Automation Conference 2015に参加してきました。 このブログエントリでは、カンファレンスの雰囲気や講演内容の感想についてレポートします。

f:id:kokotatata:20151114064048p:plain

GTAC 2015  |  Google Test Automation Conference  |  Google Developers

参加の背景

 ある日、上司に「何か海外カンファレンス参加しないの?」と聞かれて、そういえば先日モバイル系のテスト自動化をしている同僚から「俺、Google Test Automation Conference申し込んだけども、お前も申し込まない?」と誘われてた事を思い出して申し込みました。

 僕は運良く抽選にあたり、同僚は運悪く抽選に外れてしまったのですが、、、。正確な数字は公表されてなかったと思いますが、1000人くらいの申し込みに対して100~200人が抽選に当たったようです。他の参加者からは「うちの会社は100人くらい申し込んで、3人だけ参加できた」との話も聞いたので、参加できた事自体かなりラッキーでした。

 会社の業務では海外のテストエンジニアと関わる事も多い、というか、80%くらいのコミュニケーションは外国籍のエンジニアとなんですが、海外のエンジニアコミュニティとの関わりは多くないので、海外のトップエンジニアの話が聞ける機会として大きな期待を持って参加しました。

全体的な印象

 全体的な印象として、スマートフォンやChrome Castのような物理的なデバイスを扱うテストの話の比率が多かったなという印象を受けました。発表タイトルで言うとこの辺りですね。

  • Robot Assisted Test Automation
  • Mobile Game Test Automation Using Real Devices
  • Using Robots for Android App Testing
  • Nest Automation Infrastructure
  • Effective Testing of a GPS Monitoring Station Receiver
  • Automation on Wearable Devices

やっぱりGoogleさんとしても、これからのIoT時代のテストを意識しているという事でしょうか。他の発表は以下のようにカテゴライズできると思います。

  1. Fearless Change系
  2. Testability改善のためのアプリケーションや自動テストシステムの設計
  3. テストデータの生成・管理
  4. テストの品質評価

以下、それぞれのカテゴリについて感想を書きます。

講演を聞いての感想

1.Fearless Change系

 KeynoteであったJürgen Allgayerさんの講演が、YouTubeにおけるテスト自動化のFearless Changeの発表で本当に素晴らしかったです。

 解くべき課題として、複数のサービスやコンポーネント間での結合、システムテストの問題が挙げられていました。このあたりはどこの開発・運用でも一緒なんですね。

で、その課題を5年くらいかけて解いていくFearless Chageが紹介されてました。最初の数年で、自動化プラットフォームの構築をして、その後チーム作りをし、今は文化作りをしているそうです。

 チーム作りの部分で

  • Metricsやレポートの自動化、見える化、透明化
  • Metricsにもとづいたチーム主導でのプロダクト、運用、テストの品質改善
  • 自動化!!
  • 自動化とインフラのスキルのチームミックス

が紹介されていて、すごいなと思うとともに、今のチームが進んでいる方向と段階も間違っていないなwと思いました。

2. Testability改善のためのアプリケーションや自動テストシステムの設計

 Testabilityの設計改善系では「Flaky(なテスト)」という言葉が使われていました。日本のコミュニティでは「自動テストの信頼性」として取り扱われている分野ですね(*1 *2)。印象的だったのは、

  • デバッグモードでしか動作しないテスト用の機能をアプリケーションに埋め込んでおく
  • テストのコントローラーにGod Classのようなものを作るのではなく、各デバイスやコンポーネント間で協調動作するようなメッセージ機能をアプリケーションに埋め込んでおく

のような、Testabilityに関するアプリケーション設計へのフィードバックが当たり前のように行われていることでした。

 後は、モックを使うことはいいことなのか?Microserviceな世界でのモックの在り方とかが今後の議論になりそうだと感じました。

3. テストデータの生成・管理

 テストデータの生成にはみなさん苦労していますね(笑)。カンファレンスでは、"Statistical Data Sampling"という発表の中で確率論的なアプローチ、"Event Generators"で、決定論的なアプローチが紹介されていました。どちらもアルゴリズムの詳細な説明がなかった事が残念でしたが。

 "Statistical Data Sampling"が非常に面白く、ソフトウェアテストではテストデータの統計的な分布の情報よりもEdgeケースの方が重要という点を指摘した上で、その解決方法のアプローチを簡単に紹介していました。詳細は語られていないので分からないのですが、機械学習のクラスタリングを緩く適用することで、テストデータの"Representative Point"を炙り出しているようです。

4.テストの品質評価

 テストの品質評価のために、自動テストのリファクタリングの必要な部分を見つけ出すアルゴリズム(発表タイトルは"Test Suites and Program Analysis")と、テストのカバレッジは直接的にはテストの品質には関係ない(発表タイトルは"Coverage is Not Strongly Correlated with Test Suite Effectiveness")という話が紹介されていました。

 特にテストの品質の方では、「バグの検出能力とコードカバレッジには相関関係はあるけども因果関係はない」といった趣旨の話がされており、個人的にはうーんどうなんだろうとも思いつつ、この辺りの議論が将来盛り上がると面白くなりそうですね。

おまけ

 11月21日に私の所属している会社で、楽天テクノロジーカンファレンスが開催されます。

tech.rakuten.co.jp

 Microsoft牛尾さんとのセッション内でGTAC 2015の内容も少しフィードバックしようと考えてますので、ご興味のある方はぜひご参加ください。

rakutentechnologyconference2015.sched.org

リンク

GTAC 2015のビデオ

参考文献