1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

作ったバグはすぐに潰す!テスト駆動開発のスタイルを学ぶ

Pocket

はじめに

バグの修正に苦労したことはありませんか?

バグは、作ってしまってから時間が経つと記憶が薄れ、どんどん修正しにくくなっていきます。
また、修正箇所に関連する部分が増えると、影響範囲が大きくなって、修正コストが高くついてしまうこともあるでしょう。

バグは、早く潰すのが最善です。

この記事では、良い開発手法を探しているエンジニアの方のために、テスト駆動開発についてお伝えしていきます。

ぜひご一読して、開発の方法を見直してみましょう。

テスト駆動開発ってなに?

テスト駆動開発(TDD)は、プログラミング開発手法のひとつです。

特徴は、実装コードよりもテストコードを先に書く(テストファースト)ことで、テストと実装を繰り返しながら徐々にコードを成長させていきます。
一般的な開発方法とは手順が逆なので、初めて実践する方は少しやりにくく感じるかもしれませんね。

イメージとしては、テストコードで設計図を作って、実装コードで設計通りに実装するといった感じです。

なぜ先にテストを書くのか?

テストファーストでは、まず仕様をテストコードにします。
このため、最初の段階で仕様についてよく考えるタイミングができ、仕様をより深く理解できるようになります。
また、先にテストを書いておけば、時間がなくなってテストを書けなかったということもなくなります。

実装コードを書いたときにはテストコードが書かれているため、すぐにテストを実行できます。
テストする実装コードは直前に書いたものなので、記憶も鮮明で、もしバグが見つかっても比較的容易に修正できるでしょう。

テストコードは資産になる

プログラムは、一般的に開発期間よりも運用・保守期間のほうが長くなります。
つまり、運用中に何度もプログラムが修正される可能性があるということです。

テスト駆動開発では、ほとんどの実装コードにテストがありますので、プログラムを修正した後にリグレッション(回帰)テストができます。
これは、修正した部分以外に壊してしまった部分がないか確認するためのテストです。
リグレッションバグはよくあることなのでこれは重要です。

テスト駆動開発のやり方

1:テストコードを書く

まず、仕様を元にテストコードを書いて下さい。

たとえば、メソッドMが引数Xで呼び出されたら、返り値Rを返すなどといった具合です。
このとき、実装コードの内部実装には依存しないようにしましょう。
優れたテストコードは、内部実装の変更の影響を受けません。
なお、テストにはテストツールやライブラリを使用します。

2:テストを失敗させる

次に、実装コードを書く前にテストを実行して、テストが失敗することを確かめます。
なぜかというと、そもそもテストコード自体が誤っている可能性があるためです。
決して失敗しないテストに意味はありません。
空のメソッドを用意して、確実にテストが失敗することを確かめて下さい。

3:実装コードを書く

次に、テストコードで定義した仕様どおりに動作する実装コードを書きます。

書けたら即座にテストを実行し、テストをパス(合格)するか確かめましょう。
なお、ここで完璧なコードを書く必要はありません。
ひとまずテストを通過できるコードであればOKです。

4:リファクタリングする

次に、実装コードのリファクタリングをします。

リファクタリングとは、同等の動作を保ったまま、コードを読みやすくキレイにすることです。

実装を壊していないかテストで確認しつつ、コードを磨き上げましょう。
もちろん、テストコード自体もキレイなほうが良いのはいうまでもありませんね。

5:1~4を繰り返す

テスト駆動開発では、一気に機能を実装する必要はありません。
ひとつのテストが肥大化しすぎないように、小さく実装を繰り返していきましょう。

テスト→実装→リファクタリングをテンポよく繰り返すことがTDDを成功させるコツです。

まとめ

バグを早期に発見して修正すれば、ソフトウェアの品質が改善されますし、修正コストを低減させることができます。

テスト駆動開発は慣れないとしっくりこないかもしれませんが、TDDのリズムがつかめてくるとテンポよく開発を進められるでしょう。

あなたはどんな開発手法を使っていますか?

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る