テストで Web を進化させよう

現在、各ブラウザーが搭載する HTML5 エンジンの質や正確性にはまだ大きなばらつきがあります。そうした中私たちは、Web プラットフォームの相互運用性とマークアップ共通化という目標に向け、W3C 主導によるテスト スイート開発への貢献を続けています。私たちがこれまでに提出したテストは合計 7573 件に達しており、これらは IE Testing Center でご覧いただけます。各ブラウザーにおけるマークアップ共通化のサポートが充実することは、HTML5 の目指す世界が実現されていくことを意味します。

今回のブログ記事のタイトルは、6 月 15 日と 16 日の週末に Adobe が同社サンフランシスコ オフィスで開催したイベント (英語) の名前 ("Test the Web Forward") です。多数のボランティア参加者、W3C のエキスパート、そして Adobe、Google、Mozilla、Apple、HP、Microsoft の社員が集結した同イベントでは、Web 標準のテスト、CSS と SVG に関するテストの開発方法、役に立つバグの記録方法、テスト スイート管理に使えるツールなどについて有意義な議論を聞くことができました。

また、フリー フード、フリー ドリンクの 'ハッカソン' が全日イベントとして開催されました。ボランティア参加者からはこの土曜日 1 日だけで CSS OM (英語)、変換 (英語)、背景とボーダー (英語)、除外 (英語)、SVG (英語) その他のモジュール用のテスト ケースが提示され、優秀な参加者への各賞による表彰 (英語) も行われました。

Web 標準のテスト

Adobe の Alan Stearns 氏からは、W3C におけるテストの一般原則と、仕様の完成度を高めるにあたってのテストの役割がプレゼンテーション (英語) されました。特に重要と思われた点は、特定の仕様項目に対して各ブラウザーの個別のパス率を上げることが W3C テスト スイートの目標ではない、ということです。特定の仕様が W3C 勧告に認定されるには、ワーキング グループはその仕様の実装可能性を証明する必要があります。具体的には以下が求められます。

  • 仕様に含まれる (規範的参照とされる) 各要件に沿ったテスト ケースを作成する
  • 各テストで少なくとも 2 つの異なる実装が合格することを確認する

'少なくとも 2 つのブラウザーがテスト スイート全体に合格しなければならない' と、'少なくとも 2 つのブラウザーがテスト スイート内の各テストに合格しなければならない' の違いに注意してください。通常、ブラウザーのテスト担当者は、このフェーズを ‘仕様のテスト’ 段階と呼びます。

このテスト プロセスの重要なもう 1 つの役割は、すべてのブラウザーの開発とテストの目標となる、相互運用性に関する共通の基準を確立することです。テスト スイートをとおして、すべてのブラウザーにかかわるバグの発見や、仕様に関する問題の特定を実現できます。

CSS と SVG のテストの開発

テストには以下の 3 種類があります。

  • スタンドアロンのテスト: 視覚上の確認を中心とするテストです。エラー状態の場合は赤いコンテンツが表示されます (英語)。
  • 参照テスト: テスト対象の機能を使っていない参照用ビジュアル (英語) との比較テスト (英語) です。テストには、比較対象となる参照用テストへのリンクが記載されている点に注意してください。
  • CSS オブジェクト モデルのテスト: JavaScript テスト ハーネスを使用して、静的スタイル シートが指定する内容がオブジェクト モデルに反映されているかどうかを検証します。例としてこの CSS メディア クエリのテスト (英語) があります。

このテーマでは、W3C の Doug Schepers 氏から SVG テスト (英語) に関するプレゼンテーションが行われ、Adobe の Rebecca Hauck および Jacob Goldstein 両氏からはテスト開発におけるチュートリアル (英語) に関する発表が行われました。CSS ワーキング グループの共同議長を務める Peter Linss 氏からは、テスト スイートのビルド システムや管理ツールを含む、CSS のテスト フレームワーク (英語) に関する詳しい説明を聞くことができました。

役に立つバグの記録

Mozilla の Elika Etemad 氏からは、優れたブラウザー バグ レポート (英語) の条件として以下の項目が挙げられました。

  • 問題が具体的かつ再現可能であること
  • ビルドとプラットフォームが特定されていること
  • 重複がチェック済みであること
  • 問題の再現手順があること
  • 期待される結果と実際の結果が記載されていること
  • 問題が切り分けられて最小構成で説明されていること (可能な場合)。たとえば、問題の再現とは関係のないすべての HTML、JavaScript、CSS が、問題のページとバグに添付のリマインダーから削除されていること

テスト スイートの開発

テスト スイートには非常に大きな労力が必要です。CSS2.1 が勧告段階に進むのに非常に長い時間がかかった理由の 1 つは、仕様の規模が大きく、テスト対象の要件の数が多かったことでした。テスト スイートの最新バージョン (英語) でも、テストの数は 9,422 件に達します。

Microsoft はこれらのうち 7,000 件以上のテストに貢献 (英語) しているだけでなく、その他の標準仕様のテストにも幅広く貢献 (英語) しています。

私たちは IE10 で、CSS、HTML、SVG、DOM を対象とする、新しい標準に対する充実したサポートを実現しました。これらの新機能に関するテスト ケースの一部は、IE Testing Center に公開されています。テスト ケースは、IE10 Release Preview でプレフィックスなし対応が実現された機能に関するものを中心に、これからも提出される予定です。

ぜひご参加ください

Web の相互運用性向上に取り組むコミュニティにかかわれることは、私たちにとってとても誇らしいことです。この Web の進化をサポートする気持ちがあれば、相互運用性の促進にどなたでも参加していただくことができます。テストに貢献する方法 (英語) や既存テストのレビュー方法 (英語) をぜひチェックしてみてください。詳しくは、CSS WG の Wiki (英語) またはイベントのページ (英語) をご確認ください。

今後もさまざまなイベントを紹介していきます。どうぞお楽しみに。

—Internet Explorer 担当グループ プログラム マネージャー Sylvain Galineau、および
—Internet Explorer 担当グループ テスト リード John Jansen