クロスブラウザと多人数での開発にはテストとデバッグが大事だよ。
Debugging Code
各ブラウザ毎にデバッグ環境が存在。Firebugがポピュラーになったお陰でここ2,3年で劇的に進化!
- Firefox - Firebug
- IE8 - IE Developper
- IE6or7 - Developping Toolbar(CommonJSなど)
- Opera - Opera Dragonfly(9.5以降で動作 Mobile版でも動作)
- Safari - Safari Developper Tools(Safari3で発表され、4で劇的に進化!)
- Chrome - Developper Tools
開発にはデバッガーとロギングが必要です。両方とも、ある行で何が起こっているかを見られます。
Test Generation
テストには以下の様なことが大事です。
- テストは再現可能であるべし
何度もテストを実行して、異なった結果を決して受けないようにべきです。
さらに、テストにネットワークやCPU荷重のような外の問題に確実に依存しないようにすべきです。
- テストは出来るだけ簡単にすべし
オリジナルのテストケースを混乱させずにそうすることができるのと同じくらい多くのHTMLマークアップ、CSS、またはJavaScriptを取り外すように努力するべきです。
あなたがさらに取り外すことができれば、テストケースが検出しようとしている正確なバグによって影響を及ぼされるだけであるようにすることは、よりすばらしいです。
- テストは依存しないようにすべし
1つのテストからの結果が別のテストに依存しないようにしてください。
テストにそれらの可能な限り小さい単位(エラーが発生するときあなたがバグの正確な場所を決定するのを助ける)に分解してください。
テストケースのために2つのテクニックを見ましょう:
非構築的テスト
完全なサイトから、余分なマークアップ、CSS、およびJavaScriptを取り外した後に、問題を再現できるまで小さくします。
構築的テスト
小さなケースから始めて、バグを再現できるまで増やします。
Picking a Test Suite
John Resigが開発者が使ってるテスト環境のアンケートを取った。
- Survey: http://ejohn.org/blog/which-unit-testing-framework/
- Raw Results: http://spreadsheets.google.com/pub?key=ry8NZN4-Ktao1Rcwae-9Ljw&output=html
集計結果のTOP4は↓の様なかんじ。
テストフレームワークを書くのは簡単だけど、あらかじめあるものを使いたいでしょうから、
今あるポピュラーなフレームワークを調べることをおすすめします。
Qunit
Qunitは最初jQueryフレームワークをテストするために作られたユニットテストフレームワークでした。
しだいに拡張して、今ではスタンドアロンのユニットテストフレームワークとなりました。
QunitはユニットテストのシンプルなソリューションとAPIを提供するために特にデザインされています。
特徴
Asynchronous testをサポートしています。
YUITest
YUITestはYahoo(release 2008/10)によってビルド、開発されているテストフレームワークです。
2009年に書き換えられ、YUI3としてりりーすされました。
YUITestは特徴の相当数を提供します、そして、確実にケースをテストするどんなユニットもカバーする機能性が、あなたのコードベースが必要です。
特徴
大規模で(包括的)なユニットテスト
Async testのサポート
よりよいイベントシミュレーション
JSUnit
JSUnitはJavaScriptへのJava JUnitテストフレームワークのポートです。
それでも、それはフレームワークをテストする最も人気があるJavaScriptユニットの1つですが、また、JSUnitは最も古い(コードベース時代と品質に関する)ものです。
最近あまりフレームワークをアップデートしていないので、あなたがすべての現代のブラウザで働くために知ったことを探しているなら、別のフレームワークを調査することを勧めます
JavaScriptユニットテストフレームワークは以下の特徴があります:
・ブラウザの振舞い(クリック、キープレスなど)をシミュレートする能力
・テスト(テストをポーズして、再開する)の対話制御
・非同期テストがタイムアウトを扱える
・実行するテストのフィルタリング