fujirukiのブログ

考えたり調べたりしたこと

TDDにjsで入門することにしました

TDD(テスト駆動開発)について改めて調べなおして、JavaScript用のテストフレームワークを選びました。
(この記事では、フレームワークの使い方等には触れません。)

先にまとめ。

  • レッド、グリーン、リファクタリングを繰り返す。(テンポよく!)
  • レッドはパスしないテストを書くこと。グリーンはテストをパスする最低限のコードを書くこと。
  • JS用テストフレームワークとして、Qunit, Jasmine, mocha, Vowが有名ぽい?
  • まず、Qunitで始めます。


TDDの概要と良さは知っていたんですが、テストはライブラリを使わずオレオレ実装でした。恥ずかしい。

やっと、TDDに入門します。少しずつ、最低限使えるようになることを目指します。

TDDとは

※現時点での僕の理解です。間違ってるかも。

テスト駆動開発のこと。レッド、グリーン、リファクタリングをくりかえす。

まずテストを書き(レッド)、そのテストをパスできるよう、プログラムを組みます。すかさずテストをして、パスしたまら(グリーン)、リファクタリングして、コードを良くします。

テストが通ることを確認しながらリファクタリングできるので、「この書き方に直して、ちゃんと動くかな?」という不安を抱えずに済みますね!

各段階での注意点

レッド

テストとして完全なものにしなくて良い。以前は、(TDDしてる人達は、完璧なテストを書けるようなアルゴリズマーとかかな恐ろしい。)とか思ってましたが、これがわかって気持ちが晴れました。TDD自体の思想は好きなんです元から。とゆーか自然とやってたりしますよね。

これで動くかな?とか悩むようなら、ひとまずテストに通します。通しながら考えてもオーケーです。

グリーン

この段階では、マジックナンバーを使うとか処理が冗長だとか、その辺は気にせず、ただただテストをパスすることのみ考えます。いえ、そのくらいの気持ちでいいってだけです。

リファクタリング

ちょこちょこテストを実行しながらのほうが安心できると思います。

今までは気が向いた時にやってたリファクタリング。こうやってワークフローに明記されているのは嬉しいです。

何のフレームワークで入門するか

最近はJSばかり書いているので、それ用のフレームワークを探しました。JSはブラウザさえあればLinux,Win,Mac,iOSでもAndroidでも動く。日曜PGにはうれしくてたまりません。でも自分の書くJSはどんどん汚くなるので、TDDでなにか変わることを期待しています。

Qunit ←採用

シンプル。jQuery開発に使われてる。
ここで取り上げる中では古め?

Jasmine

日本語記事多めかも。
Rails使い向けらしいので選びませんでした。でもとても人気らしい。

mocha

今流行?高機能。
アサーション(テストの判定)を行うライブラリなどの組み合わせを自分で選べる。ということは、mochaを使うからと言って、みんなテストコードの書き方が同じになるわけじゃない。
ということで、初心者の僕は遠慮しました。

次にjsを書くときはQunitも使います

シンプルらしいので、入門には丁度いいのではと思って採用します。jQueryにもっと慣れたい、という気持ちもあって。

早く使ってみたいですが、できても日曜かな。

ちなみに、DDD(ドメイン駆動開発)というものもあると教わりました。調べてみると、これまたとてもいい!僕は賢くないので、いちいち脳内を整理できるワークフローが好物らしい。ただ、ドキュメントをたくさん書いたり修正したりするようです。僕はまだアウトプットに時間がかかるので、これをするとコードを書く時間がぐっと減ってしまいそうで、チャレンジ意欲が湧ききりませんでした。もう少し調べます。。。