僕がテストについて思うこと

単体テスト好きというよりはモックの素晴らしさを喧伝したくてしょうがない僕ですが、モックいいよ!(それだけか(大好きなんだけどまだうまく伝えられるまでになっていない俺

Twitterで#devsumiおっててちょろりとTDDの話を見かけたときに深く感銘を受けました。そのとおりだ。


僕は全くスキルのないへなちょこプログラマの卵(まだへなちょこにすらなれていない)ですが、そういうひとほどテスト、特に単体テストを書くべきだと思う。理由はとっても簡単で、勉強になるから。副次的な理由でちょう簡単な間違いやバグをいれこまなくて良くなるというのもあるけど、メインは勉強になるからだなぁ。
いまJSTQB(JSQTB?)の資格取るために適当な勉強をしているところなんだけど、テスト(レビュー含む)って教育の意味合いを含んでいるものが少なからずあって、まぁなんでかっつーと人の書いたコードや設計を理解しないとできないからなんだよね。特にレビューはね。レビューをされることで勉強になるだけではなく、することでもわかるようになることはとてもたくさんある。ましてや単体テストは第三者の書いたコードを読み、仕様を読み解き、設計の意図を理解し(隠蔽されててテストできねーとか言いながら)、というのが一気にできるのだ。こりゃなかなかない機会っすよ。僕も別にもう若くはない(職歴は短いが)けど未だに卵な訳で、これから先すーぱーはかーやすーぱーぷろぐらまーになれる予定はないと思うけれども、自分自身を成長させることはできるんだよね。

テストは、一人でも始められる。全く賛同されなくても始められる。いつからでも始められる。ひどいレガシーコードが目の前にあっても修正することはできないかもしれないけれど、テストを書くことはできる。最初から全てを書くことはないのだ。出来るところから手をつけていき、一つ一つ成功するテストケースを書き上げていけば、最後には必ず整然とした動きの理解できるプログラムが出来上がる。それをたった一人で始めることができる。どんなにスキルがなくても、言語に対する知識がなくても、アルゴリズムや設計がわからなくても、レガシーコードはたくさんのことを僕に教えてくれる。こんがらがった醜いコードには数えきれない教訓と学ぶべき事柄が眠っている。
テストを書こう。テストを保守し、プログラムを守ろう。