Googleのテスト自動化の進化

https://www.youtube.com/watch?v=6ZvCU0dht50

1 comment | 3 points | by WazanovaNews 1年以上前 edited


Jshiike 1年以上前 edited | ▲upvoteする | link

Google Test Automation Conferenceが今年はSeattleで開催されたようです。その中で興味深いと感じた話題をいくつか拾ってみました。

1) 成長を続けるGoogle

会社の規模が大きくなり、歴史を重ねてくると、何事も非効率になりがちですが、Ankit Mehtaが紹介してくれた数字によると、Googleの開発ペースは依然として右肩あがりのようです。

  • コードのコミットは、1日3万チェックイン。約3秒に1回。グラフを目測した限りでは昨年から約20%増。
  • リリース数もこの1年でほぼ倍増。

2) テストクローラーを利用してのモバイル実機テストの自動化

Googleが7月に買収したAppurifyのFounderであるJay Srinivasanによる、同サービスの紹介。

  • アプリの開発者はテストスクリプトを書く必要がなく、Appurifyが保有する数百モデル数千台の実機の上で、テストクローラーがアプリ上を動的にクリックしながら巡回してくれる。その結果を自動的に録画されたビデオ、ログ、ネットワーク環境情報、クラッシュレポートなどで確認できる。
  • デバイス/OSの組み合わせだけでなく、モバイルキャリア / ネットワーク種別 / ロケーションなどでフィルタリング。
  • 主要なテストフレームワークやJenkinsとの連携も可能。
  • アプリの開発者側が自分たちで実機を使ってテストをしたときも、上記と同様のレポートを取得できる。

3) テストケースの自動生成と本番でのモニタリング

Celal Ziftciは、昨年のGTACのライトニングトークで、結合テストのビルドが失敗したときの犯人探し、つまりチェンジログを怪しい順に容疑者リスト化する取組みを紹介してます。(16分のビデオ

今回は、データマイニングと機械学習を利用してテストケースを自動作成し、本番環境でのリアルタイムモニタリングを自動化する話。

  • テストのアサーションをまとめたフレームワークを本番環境で24/7実行し、継続的に結果を取得する仕組み。
  • ログを解析することで、特定のコンテキストでは常に真になる条件であるインバリアント(不変関係)を探し出し、ステートレスなアサーションを自動生成する。
    • この解析を実現する Daikon は、大量のデータから動的にインバリアントを作成し、フィルタリングする。例えばバナナを解析する場合、「バナナIDが0より大きければ、色はグリーンかイエロー」というインバリアントは採用されるが、タイムスタンプやIDに関する大きな数値は意味のないものと判定され、「バナナIDが71よりも小さければ、バナナIDはツリーIDを3乗して4を加えたものになる。」という真の条件は不採用となる。Daikonのオープンソース化は検討中。
    • 「オムツを買う男性はビールも合わせて買う可能性が高い。」という分析ケースで知られるAssociation Rule Learningも使っている。従来はバッチ処理で利用されるアルゴリズムであったが、Googleは動的な解析に応用。先ほどのバナナの例でいくと、「成熟しているかどううかが trueであれば、バナナの色は yellow になる。」という関係を導きだしている。
    • 同じ仕組みをテストの自動作成だけでなく、他のエリアにも応用している。例えば、本番環境から自動作成されたテストデータと、開発時のテストを比較して、テストカバレッジの足りないところを見つけるために使うとか。

#google #テスト


ワザノバTop200アクセスランキング


Back