Experts.jp日本に、もっとエキスパートを。html5jテスト部の部長を務めています矢倉です。#1」について報告します。ついて説明しないといけませんね。Forwardとは、HTMLやCSSなどW3Cが策定している仕様のテストケースを、参加者で一緒に書こうというコミュニティイベントです。W3Cの仕様が勧告されるには、仕様の実装が必要なのですが、その実装が正しいかを確かめるテストケースも必要です。近年、これまでにないペースで数多くの仕様が公開され、また機能も複雑化していることから、テストが大きな課題となっています。Forwardが誕生しました。来られなくても参加できる方法TestTWFは世界各国で開催されており、今年の6月には東京でも開催されました。東京のイベントでは最終的に700を超えるテストが提出され、大成功を収めました。html5jのテスト部が主催するイベントです。6月のTestTWF後にhtml5jスタッフ内で「1回きりじゃもったいないから、継続開催していこう!」という話が発端となり、テスト部が立ち上がりました。その際に筆者がテスト部の部長となったのですが、自分はW3CやWeb標準について少し知っているだけで、とくにテストについて明るいわけではありません。テスト部のスタッフにもテスト未経験者がいます。「じゃあまず、スタッフでテストの勉強会をしよう」という話になりました。日程を調整して一段落したとき、TestTWFがW3Cの公式アクティビティとして取り込まれたことを知りました。これまでのコミュニティ活動が標準化団体にも認められたのです。素晴らしいことですね。(仮)」と名前を変え、開催することに。Meetup」があったので、「(仮)」とつけた上で使わせていただきました。#1レポートTestTWFについて簡単に説明するつもりが、だいぶ長くなってしまいました......。#1」のレポートになります。今回のイベントは、告知が開催1週間前になるなど急ごしらえ感の否めないものでしたが、20名近くの方に集まっていただきました。説明、その後、どのようなフローでテストケースが取り込まれるのかなどを説明しました。Requestを送ることでテストを提出できます。テストのレビューは、レビュアーがいればその場でしてもらえます。Requestを投げて、レビューを待ちます。Requestを投げることをゴールとしました。それではテストが取り込まれませんので「帰ってからもTestTWF」になります。Experts.jpコントリビューターの中島直博さんに、CSSのテストケースのひとつ「リファレンステスト(reftest)」について説明していただきました。2.1など)で再現した「リファレンス」、ふたつのHTMLドキュメントを書くというテストの形式です。test)という仕組みも存在していますが、機械的にも比べられる点からreftestが好まれているようです。Experts.js編集長の白石さんによる、仕様のテスト用フレームワークtestharness.jsの説明です。APIをテストする際に使用する、仕様のテストに特化したフレームワークです。「仕様のテストに特化」と書きましたが、QUnitなどJavaScriptのテストフレームワークに馴染みのある方にはそこまで難しくないと思います。白石さんも、なんと前日夜にスライドやコードを読んで話してくれました!リンクしたtestharness.jsのスライドは作者本人による紹介スライドの翻訳なのですが、実際の仕様書の記述からテストに落としこむかたちで関数の使い方が説明されており、仕様書の読み方を知るとてもよい資料でもあります。リファレンスとしては、using-testharness.jsという文書が便利です(現在翻訳中です)。ひと通り説明が終わったところで、お昼の時間に。午後からテストを書くので、CSS、API、HTML5とテストを書きたい対象ごとにグループになってもらい、そのグループでお昼ごはんを食べることになりました。午後はテスト書き...探すのが難しい!午後からいよいよテストケースを書きます。CSS、API、HTML5と大きなグループに分かれたので、テストしたい仕様書や機能を選んでテストを書いてもらいます。...ここからが厄介でした。Forwardでは、仕様書のEditorやテストのレビュアーが数多く参加してくれるため、その人達が関わる仕様書のテストを書けばとてもスムーズですが、今回はそうではないので自分たちでテスト対象を決める必要がありました。自分が馴染みのある仕様を選べるという点は自由でよいのですが、すでにテストが書かれている場合もあります。これを調べるには仕様書のテストカバレッジを見ればよいのですが、仕様書のどの箇所に対してテストされているのか記載がなく、テストケースを見るしかありませんでした。HTML5仕様の目次を取り出し、テストのカバレッジや実装状況を大まかに色分けした上で表示したものテストを書く時間もそこそこかかるのですが、今回いちばん難航したのが、このテスト対象を探すことだったように感じています。Request!テストの解説もテストを書き始めて3、4時間。Requestをしました。Requestで提出されました。それぞれのグループごとに分かれて作業していたため、最後に参加者のみなさんが書いたテストのコードについて、どういったテストなのかを説明させていただきました。Request」という目標を立てていましたが、残念ながら達成できませんでした。カバレッジの調査や仕様の選定についてもう少し力を入れるべきだったと反省しています。次回は仕様を絞ったイベントとする、レビュアーの方に協力してもらうことなどを検討しています。運営としては反省点が多かったのですが、イベントとしてはとても良いことがありました。Requestなどを助けてもらったことです。みんなで作り上げるというコミュニティイベントとして、これほど理想的なかたちはありません。参加者のみなさん、会議室をお貸しいただいたジープラ株式会社さま、本当にありがとうございました。Hauckさんには、TestTWFやテスト全般について多くのことを教えていただきました。ありがとうございました。スタッフの皆さんも、おつかれさまでした。Requestがひとつマージされました。レビューされていないテストがほとんどですので、これからも動向を追いかけていくつもりです。Forward自体もまた日本で開催したいという野望があります。