テスト駆動開発がしたいので簡単な流れを知りたいです。
- テストを書く
- 手っ取り早くテストに通るコードを書く
- コードをよりよく書き換える
というのをひたすらやるらしいとはおぼろげに聞いてはいますが、よくわかってないので、Google先生に「テスト駆動開発」と
*1
したら出てきた
[動画で解説]和田卓人の“テスト駆動開発”講座:第2回 「テスト駆動開発」とは何か?|gihyo.jp … 技術評論社
を見てみました。かなり古い記事ですが最初のほうに出てくるあたり参考になりそうです。曰く、テスト駆動開発の3ステップとは、
テスト駆動開発の3ステップ
ステップ1:これから書く機能に対するテストを1つ書き,テストが失敗することを確認する(レッド)
ステップ2:ステップ1のテストを通す最低限のコードを実装する(グリーン)
ステップ3:リファクタリングを行う(リファクタリング)
ということだそうです。これをテンポよくやっていくといい感じになるらしいですね。
ステップ1:これから書く機能に対するテストを1つ書き、テストが失敗することを確認する(レッド)
では最初から見て行きましょう。あくまでこれ雑記帳なのでそのつもりで
テスト駆動開発では,まず1ステップ目として,これから書く機能のテストを1つ書きます。「テストを書く」と簡単に言っていますが,ここでの「テスト」とは,開発者が自分で書く,プログラムの形で書かれたテスト(テストコード)のことです。
( ゚д゚)えらい簡単に言ってくれるじゃないですか…これどう書くかわかってなかったから手が出せなかったのに…このへんは後述してくれることとか、ぱぱっと参考になるものが見つかることを期待して読み進めましょう。
テスト駆動開発では,テストは一気にたくさん書くのではなく,1つのテストを書き,そのテストを成功させる過程でコードをより良くしていくことを主眼に置いています。
少しずつ作っていくのがポイントなんですねー…今まで受けてきたテストといえば、だいたいはすでに何問か(時には何十何百問もの)問題が用意されててるものだったので、目新しいといえば目新しいですね。
ステップ1の最後に,テストが失敗することを確認します。これは重要です。ステップ1ではこれから作成する機能のテストを書くのですから,テストが成功するはずはありません。
問題が正しいか確認してステップ1は終了、だそうです。確かに白紙のはずなのに正解しているのはおかしいですよね。私が受けてきたテストも、回答中に問題におかしいところが見つかったので修正してくださいねっていうのはたびたびあったので、この過程があるのもうなずけます。
ステップ2:ステップ1のテストを通す最低限のコードを実装する(グリーン)
というわけでこれからテストに回答していく流れを見てみましょうか…
ここで注目すべき点は,テストを通すための最もシンプルな手段を採るということです。最低限の実装とは,テストを通すために最短ルートを通ってよいということで,ステップ2の時点でコードの再利用性や設計の美醜などを考える必要はありません。
ハードコーディングしようがコピペしまくりだろうが、あらゆるあくどい手を使ってでも最短ルートでテストを突破しろ、ということでしょうね。ぶっちゃけるとこの手の考え方はあまり好かない人です私自身、性格の修正もちょっと必要かもです…
ステップ3:リファクタリングを行う(リファクタリング)
ステップ3では,テストが通るままで,つまり,外部から見た振る舞いを変えないままで,コード内部の設計をより良くしていきます。これを「リファクタリング」といいます。
これもえらく簡単に言ってくれてますが難しいですよね…(~_~)でも、冒頭のサイクルを見る限り、設計がまずいと気づいた時にはておくれになっていた…ということにならないように、この作業はまめにやれということですね。
記事では改善の具体例として、「重複をなくす」というのが挙げられていました。これをやらなかったばっかりに大変なことになっているシステムとかありますしね…最近の例だと、これとか。
改修が手間なのは「スイカのシステムは一部のプログラムに消費税をそのまま書き込んでいるため」と関係者は明かす。例えば「値段=製品価格×5%」といった具合だ。膨大な本数のプログラムから消費税関連の記述を見つけ出し、適切な値に直すだけで大変な時間と労力が必要だ。
消費増税法案が衆院可決、JR東のスイカ、IC乗車券、改修に1年。
| NFC & Smart WORLD
何にせよ、習慣づけるのが大変そうです…