ぺーぺーSEのブログ

備忘録・メモ用サイト。

JavaScriptをテスト

JavaScriptスティングフレームワークの種類は2つ。

ブラウザベースのテスティングフレームワーク

WebブラウザにテストのフィクスチャとなるHTMLをロードし、そのテストフィクスチャファイルからテスト対象のファイル、ライブラリ、実行するテストをロードすることで、Webブラウザ上のテストランナーがテストを実行。

メリット
  1. 本来実行されるWebブラウザを利用するので、本番に近い環境でテストを実行できる
  2. テストランナーの実行状態やテストの実行結果をWebブラウザ上で分かりやすく表示できる
デメリット
  1. CIのように実装作業中に何度もテストを流す状況では、都度Webブラウザを立ち上げなければならないなど完全自動化に難あり

ヘッドレス型のテスティングフレームワーク

「ヘッドレス」は「ユーザーとの対話的なインターフェイスとなる部分がない」という意味で、クライアントサイドのJavaScriptの場合は、Webブラウザの画面を使わないということを意味する。Webブラウザ上でテストを実行する代わりに単体で動作するJavaScriptエンジンを利用し、フレームワークはWebブラウザをエミュレートすることでテストランナーがテストを実行できる。

メリット
  1. コマンドラインから実行できるのでCIに適用しやすい
デメリット
  1. テスト実行時に利用するJavaScriptエンジンが、実際の利用時のWebブラウザに組み込まれているエンジンと異なる場合、その実行結果が一致するかの保証ができない
  2. エミュレーションの結果が実際の利用環境と同等かどうかの保証はできない

個人的結論

CIとかクロスブラウザとか難しいこと考えないなら「QUnit」ピンがお手軽。
Java屋だったらJUnitと書きっぷり似てるし、とっつきやすいんじゃないかな。