Keep on moving

あんまりまとまってないことを書きますよ

Testing and Debugging(テストとデバッグ)

クロスブラウザと多人数での開発にはテストとデバッグが大事だよ。

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が開発者が使ってるテスト環境のアンケートを取った。

集計結果の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ユニットテストフレームワークは以下の特徴があります:


・ブラウザの振舞い(クリック、キープレスなど)をシミュレートする能力
・テスト(テストをポーズして、再開する)の対話制御
・非同期テストがタイムアウトを扱える
・実行するテストのフィルタリング