Code

2014年2月3日月曜日

何で Auto test をやるか

 最近、隣の方になんで Auto test をやるかを聞かれました。。。今の時代はそれは主流だと答えましたが、いまいち彼がわかってないようですので、Test Driven Development からいろいろしゃべりました。
 テストって大事だと、どんなコードでもバグがあるとみんなはわかっているかもしれませんが、実はバグに関してかなり前から面白いエピソドがあります。
 コンピュターの原始時代、いくつかの天才より航空券のブッキングや、科学計算システムが作られました。これらのシステムは結構できてたそうです。(何十年前のことだから、実際使ったことがないから、聞いただけですが。でも、Linux のコードを読むとき、たまに天才がいるなと思いました。)その中、ある顧客が航空券を予約した時、本来人数を入力すべきところを大文字の”P”と間違って入れたそうでした。そうすると、システムが狂って、変な結果になりました。。。
 それから、みんな初めて使用者はエラーを起こすと気づいたそうです。それで、Validation などいろんなロジックをプログラムに追加されて、システム全体がめちゃくちゃ複雑になって行きました。もう一つは、コードが一人で書くものではないので、モジュール化しないと、機能がバラバラになると、もうメンテーできなくなるからです。
 また話を戻って、そのようなエラーとか、全数テストが不可能だから、境界値などのテスト理論が出てきました。人が一つ一つテストすると、時間がかかるし、大変だから、世の中のいいプログラマーはまたこれを軽減しようと、テスト専用のパッケージを作りました。JUnit とか、Jasmine とか、最近の Karmaや、Projector など、言語別、機能別のライブラリが結構出てきました。
 もう一つは Agile の普及より、Continuous Integration が常識になりつつあるから、一つのモジュールが何人か開発して、その後変更しつつ、テストしつつ、システムを完成して行きました。
 じゃ、何でアジャイルを使うかまた説明が必要になりましたけど。それは開発者の弱点が克服できないから、みんな協力して、一つの機能づつ、顧客とも確認しながら、前進して行くのはいい結果に結びつけるからです。
 それで、毎回の Sprint とか、毎回のリリースで、ある一人のテスターが全部テストをやり直すのは不可能ですので、Unit Test や、End to End テストのスクリプトによって、テストするのが速いし、バグもいちはやく発見できます。

 まぁ、ここまで話すと、多分もう理解するだろう。以前自分もあまり気づいてないことがあったりして、一応メモしとこう。

 それでは。

0 件のコメント:

コメントを投稿