開会の辞
Sonal Shah(Google)
開会の基調講演 - 速く動かして障害を起こさない
Ankit Mehta(Google)
ウェブを進化させる自動化
James Graham(Mozilla)
ウェブは世界で最も人気のあるアプリケーション プラットフォームですが、ブラウザの相互運用性の低さは、ウェブ デベロッパーの間でよくある不満や不満の原因となっています。この状況を改善するために、W3C はオープンウェブ向けのウェブブラウザ テストを継続的に更新し、ブラウザをまたいで継続的にテストスイートを構築するコミュニティの取り組みを促進しています。このセッションでは James がウェブ プラットフォーム テストを紹介し、さまざまなデスクトップ ブラウザや Firefox OS 搭載のモバイル デバイス上でテストの自動化を促進するために作成したツールについて説明します。彼は、Mozilla の継続的インテグレーション システムで、外部から頻繁に更新されるテストスイートを 1 日に数百件の commit で実行するという課題に対応するために、このソフトウェアがどのように設計されているかを説明します。
Chrome を最適なモバイル ブラウザにする
Karin Lundberg(Google)
Chrome が成功を収めた理由の一つは、スピード、安定性、シンプルさ、セキュリティの基本原則(4 つの S)でした。Android 版と iOS 版の Chrome をリリースしたとき、ブラウザ自体だけでなく、自動テストやテストの種類にも 4 つの S を適用していました。
- 速度は、パフォーマンス テストや高速テストに使用します。
- 安定性とは、安定性テストと安定テストのことです。
- シンプルさは、Chrome のユーザー エクスペリエンスをシンプルにするためのテストであり、テストの追加と実行をシンプルにするためのものです。
- セキュリティはセキュリティ テストに適しています。
動作モデルのテスト自動化言語
Nan Li(Medidata Solutions)
モデルベースのテスターは、グラフ内のパスなど、モデルの観点から抽象テストを設計します。次に、抽象テストを、実装の観点から定義する具象テストに変換する必要があります。抽象テストから具体的なテストへの変換は自動化する必要があります。行動モデルに対する既存のモデルベースのテスト手法では、クラスの図やテスト変換や生成のユースケース図などの追加図も多数使用します。要件が頻繁に変更される場合でも、関連するすべての図を整合させておく必要があるため、実際の使用は非常に複雑です。
この講演では、テスターがステートマシンの図などの 1 つの行動モデルのみを使用してテストを生成できる、テスト自動化言語を紹介します。対処法は、(1)モデルから実行可能なテストコードへのマッピングの作成、テスト値の生成、(2)グラフの変換とカバレッジ基準を使用したテストパスの生成、(3)制約の解決と具体的なテストの生成です。
Google でのテスト範囲
Andrei Chirila(Google)
Google でのテストについて、テストに役立つツールは何ですか?また、テスト カバレッジを測定してそれにどのように対処していますか? Google での開発プロセスについて簡単に説明してから、コード カバレッジ測定の使用方法と、コード カバレッジを使用してコードの品質とエンジニアリングの生産性を向上させる方法に焦点を当てます。最後に、100,000 件を超える commit に関する膨大な量のカバレッジ データを収集し、これまでに集計したいくつかの適用可能な結論を紹介します。
CATJS: 自身をテストするアプリケーション
Ran Snir(HP)と Lior Reuven(HP)
この数年間で、コンピューティングの世界に対する考え方は変わりました。3D プリンタは、3D プリンタを印刷するものや、自ら考えて作るロボット、catjs などがあります。
catjs は、モバイルウェブ アプリがテストできる機能を追加するオープンソース フレームワークです。HTML5 コードのシンプルなアノテーションは、アプリケーションのライフサイクル内で埋め込みテスト スクリプトに変換されます。これらのモバイルウェブ テストは、どのデバイス、オペレーティング システム、ブラウザでも実行できます。catjs を使用すると、アプリケーションのテストフローをすばやく簡単に処理できます。
スケーラブルな継続的インテグレーション - オープンソースの使用
Vishal Arora(Dropbox)
継続的インテグレーション(CI)には、多くのオープンソース ツールを使用できます。大規模な環境でもうまく動作するケースはごくわずかです。分散環境でスケーリングできるように構築されたものはほとんどありません。CI を大規模に実装する課題と、オープンソースのスケーラブルな部分を組み合わせて、分散型でスケーラブルな独自の CI システムを迅速に構築する方法をご紹介します。
テストはあまり行いませんが、本番環境でテストします
Gareth Bowles(Netflix)
Netflix では、日々コンテンツを視聴しているユーザーが増え、クライアント デバイスでの利用が増えています。また、常に優れたカスタマー エクスペリエンスを提供できるよう革新を続けています。このように急速に変化する環境でのテストは、非常に大きな課題です。Google は、本番環境でテストを実行するのが、その変更を検証する最も効率的な方法であることが多いと結論付けています。このトークでは、本番環境で使用する 3 つのテスト方法について説明します。Simian Army によるあらゆるサービス停止のシミュレーション、カナリアを使用した回帰の探索、本番環境でのコード カバレッジ分析によるテストの効果の測定を行います。
実際のモバイル デバイスと仮想モバイル デバイスでの自動テストの重要性
Jay Srinivasan(Google)、Manish Lachwani(Google)
ウェブの世界と比べると、モバイルテストは地雷原のようなものです。さまざまなデバイス、オペレーティング システム、ネットワーク、ロケーションから、デベロッパーが考慮しなければならない変数は無限に思えます。この教育セッションでは、モバイルアプリのパフォーマンスと品質の最適化に伴う独自の課題と、それに対処するための戦略(自動化の必要性、実際のデバイス、実際のユーザーの状況など)について説明します。
無料のテストは無料のバナナより優れている: データ マイニングと機械学習を使用したリアルタイムの本番環境モニタリングの自動化
Celal Ziftci(Google)
ソフトウェア システムの分析、メンテナンス、テストには、データ マイニングと機械学習の手法を活用することへの関心が高まっています。このセッションでは、Celal がどのようにしてシステム不変を自動的にマイニングし、それらの不変性をシステムをリアルタイムでモニタリングして、エンジニアに本番環境の問題を潜在的に警告するのか、そのテクニックを説明します。
このセッションでは、社内で使用する 2 つのツールと、それらをほぼリアルタイムで Google のエンジニアにリアルタイムでモニタリングする方法を紹介します。
- システムの不変性をマイニングできるツール。
- 本番環境システムをモニタリングして、最初のツールを使用するロジックの一部を自動的に生成し、潜在的な問題をリアルタイムで特定するツール。
赤外線セットトップ ボックスで自動化をテストする
Olivier Etienne(オレンジ)
この講演では、TV アプリのコンテキストとは何か、および自動化作業を行う際に発生する可能性がある問題の種類について説明します。これまでの失敗や、そのアプローチ、そして自動テストツールの開発において重要な点について説明していきます。時間があれば、実装の詳細について深く掘り下げます。
はんだ付けと数行のコードで、ウェブテストの豊富なサービスをセットトップ ボックスとして開いた理由を聞いてみましょう。
クラウド プロバイダを公正に比較する課題と Google が行っていること
Anthony Voellm(Google)
メインフレームからクラウドまで、さまざまなベンチマークを取り上げます。目標は、ベンチマークを開始した場所と、ベンチマークをこれまでの状況に合わせ、基盤を構築することです。クラウドのベンチマークに関する今後の予定と、Google がクラウドを実際に実施する方法をご説明します。
人間が機械の仕事を行うことはない: Facebook が bot を使ってテストを管理する方法
Roy Williams(Facebook)
Facebook にはテスト組織がなく、デベロッパーはコードの記述からテスト、本番環境への移行まで、あらゆるものを用意しています。これは、Google がテストしないという意味ではありません。このようにスケールしたのは、テストのライフサイクルを自動化し、信号を高く、ノイズを少なくすることでした。新しいテストは信頼できないとみなされ、不安定さはすぐに木から流出します。テストで効果的だった点と、信頼を築かなかった点について説明します。
Espresso、Spoon、Wiremock、(または、心配をなくし、Android のテストが大好きなことを学んだ)
Michael Bailey(American Express)
高速で信頼性の高い自動 Android UI テストの作成と実行について学習します。ツールには Espresso、Spoon、Wiremock、Jenkins などがあります。Android と Java の開発に関する基本的な知識があることを前提としています。
Google BigQuery 分析
Brian Vance(Google)
BigQuery は、Google Cloud のインタラクティブなビッグデータ サービスです。ユーザーは、SQL のようなクエリを使用してテラバイト規模のデータを数秒で分析できます。Google のテスターが社内で何年も使用している Dremel 上に構築されています。いくつか例を挙げて、BigQuery の使い方をご紹介します。
セレンドロイド - Selenium for Android
Dominik Dary(Adobe)
Selendroid は、Android のネイティブ アプリケーションやハイブリッド アプリとモバイルウェブの UI を駆動する、オープンソースのテスト自動化フレームワークです。テストは Selenium 2 クライアント API を使用して記述されます。テストの場合、テスト中のアプリを自動化するためにアプリに変更を加える必要はありません。
このプレゼンテーションは、モバイル テストの自動化がいかに容易であるかを視聴者に示します。Selendroid を使用してネイティブ アプリとハイブリッド Android アプリをテストし、Senenium Grid を使用して複数のデバイスで並列テストを行う方法を紹介します。Selendroid のランタイム時の拡張やクロス プラットフォーム テストなど、高度な内容についても取り上げます。
ハイパーメディアの世界で衛生を維持
Amit Easow(Comcast)
Comcast がケーブル会社からメディアおよびテクノロジーのリーダーへと進化するにつれ、エンジニアリング チームもスマートになってきています。Amit は 2006 年に Comcast Interactive Media(CIM)に参加したとき、手動テストショップでした。2007 年に最初のウェブサイトを出荷した後、UI テスト インフラストラクチャの自動化のためのプロトタイプ作成に着手しました。GTAC 2008 で Selenium に紹介された後、Comcast に戻って Selenium Grid、Hudson、Subversion による自動テスト インフラストラクチャを構築しました。現在は、平日に本番環境にデプロイされる API テストに取り組んでいます。これを可能にするのが、Python、Git、Gerrit、Anthal です。
MSL でもっと早くやっていこう
Bryan Robbins(FINRA)と Daniel Koo(FINRA)
品質を損なうことなくソフトウェアを高速化することは、簡単なことではありません。私たちは、テストを早期に開発し、最小限のメンテナンス フットプリントでテストをより迅速に実行することで、迅速に行動したいと考えています。FINRA では、アジャイル チームが MVC のような階層型アーキテクチャを活用して UI コードをより迅速かつ迅速にテストできるように、MSL(「Missile」と発音)を開発しました。
MSL は、Node.js サーバーにローカルでデプロイし、いずれかのクライアント(Java、JavaScript、Node.js)を使用してテストコードから疑似 HTTP レスポンスを構成することで、UI コード(JavaScript、HTML、CSS など)の統合テストをサポートします。この講演では、MSL の主な機能をいくつかの例を挙げて紹介します。
テスト ユーザー エクスペリエンス
Alex Eagle(Google)
Google のプロダクトは頻繁にリリースされるため、大規模な自動テストと「ビルドコピー」が必要です。現在、Google Cloud Platform の一部としてテスト インフラストラクチャを提供できるよう取り組んでいます。この講演では、Google が自社のビルドを環境に配慮して Google のプロダクトに欠陥を持たせるために Google が行っている手法の一部を紹介し、このプロダクトが世界にどのように公開されるかをご紹介します。
円卓会議 1 - モバイルクロス プラットフォーム テスト
円卓会議 2 - ドキュメント自動化のカバレッジ
コミュニティ構造による SAT ソルバーのパフォーマンスへの影響
Zack Newsham(ウォータールー大学)
最新の CDCL SAT ソルバーは、大規模な産業用 SAT インスタンスを比較的短時間で定期的に解決します。これらのソルバーがなんらかの方法で実際のインスタンスの構造を利用していることは明らかです。しかし、これまでのところ、この構造を正確に示す結果はほとんどありませんでした。本書では、コミュニティ構造が CDCL SAT ソルバーの実行時間と相関関係があるという証拠を提供します。SAT 実世界のインスタンスとして、グラフとして見られているものには、自然のコミュニティが存在することが知られています。コミュニティは SAT インスタンスのグラフのサブグラフです。このサブグラフには、他のグラフに送信される内部エッジよりも多くの内部エッジがあります。多くの場合、グラフのコミュニティ構造は Q と呼ばれる品質指標によって特徴付けられます。直感的に、高品質のコミュニティ構造(高 Q)のグラフは、小さなコミュニティに簡単に分離できますが、Q が低いグラフには区別できません。現実的な産業インスタンスのコミュニティ構造は、変数や句などの他の一般的に考慮される要素よりも CDCL ソルバーの実行時間を予測する役割を実証する、実証的なデータに基づく 3 つの結果を提供します。まず、血糖値ソルバー内の句削除ポリシーで使用される Q+ 値とリテラル ブロック距離指標の指標との間に、強い相関関係があることが示されました。次に、回帰分析を使用して、実数 SAT インスタンスのグラフとコミュニティ数および Q 値が、変数や句などの従来の指標よりも CDCL ソルバーの実行時間を予測する最後に、0.05 ≤ Q 0.13 以下のランダムに生成された SAT インスタンスは、CDCL ソルバーに対する解決が他の方法よりもはるかに困難であることを示しています。
カバレッジを超えたテストスイートの特性
Patrick Lam(ウォータールー大学)
誰もが「より良い」テストスイートを求めています。しかし、優れたテストスイートを実現するにはどうしたらよいでしょうか。確かに、テストスイートは少なくともステートメントのカバレッジ レベルで、適切なカバレッジを目指すべきです。テストスイートを適切なタイミングで実行して、フィードバックを迅速に受け取れるようにすると便利です。
このセッションでは、テストスイートを評価するさまざまなディメンションについて調査します。この講演では、より優れたテストスイートの方が、保守性や使いやすさに優れている、(実行速度が上がる、リソースの使用が減少など)、不当な失敗が少ないと主張しています。このトークでは、10 種類のオープンソース テストスイート(8,000 ~ 246,000 行)に関する事実をまとめ、それらをまとめて評価します。
環境への配慮: 有害なモバイル環境のクリーンアップ
Thomas Knych(Google)、Stefan Ramsauer(Google)、Valera Zakharov(Google)、Vishal Sethia(Google)
インタラクティブ開発と継続的インテグレーション モードで Android テストを実行するための高速で安定した密閉型のテスト環境を作成するためのツールと手法を紹介します。これは、前回の GTAC でお話ししたハイレベルな説明に基づいています。