俺的カンニングペーパー

Web技術のカンニングペーパーを作ることを目的に発信していきます

テストコードを書くに当たって大切にすること

テストコードの大切さ

テストコードはとても大切です。テストコードを書かなければ、プログラムは想定していなかった動きを見せる可能性が高くなります。
あらゆるケースを想定し、「バグがないことを確かめてから」本番に適用するようにするのがテストコードを書く意義です。

テストを書くメリット

基本的に、ひとつのプロダクションコードに対してはひとつのテストコードが必要です。
例えばRuby on Railsにおいては、モデルクラスやコントローラークラスひとつにつきひとつのテストコードを書かなければいけません。これは面倒に感じるかもしれませんが、それを補いなお余るほどのメリットも存在します。それは、主に以下の2つです。

1.仕様漏れを減らすことができる

テストをするにあたっては、対象のメソッドがどのような目的で作成されどんな挙動をしなければいけないのかということを全て洗い出します。結果的に仕様を良く確認することになり、バグを引き起こす仕様漏れを少なくすることができます。

2.リファクタリングや機能追加をしやすくなる

リファクタリングとは、コードをより綺麗なかたちに修正する作業のことです。一度テストを通過してしまえば、最終的な結果を維持しリファクタリングをするのが簡単になります。また、新たな機能を追加する際も、従来の箇所は間違いなく動いていることを確認できているので、その結果を崩さないようにするだけで安全に実装することができます。

テストコードを書く際の心がけ

1. スピードは求めない

コードを書く量が増えるので、開発スピードが遅くなることは許容しましょう。

2. DRYを意識し過ぎない

DRYとは、Don't Repeat Yourselfの頭文字をとったもので、「同じような記述はなるべくまとめられないか考える」というプログラミングの原則です。
しかし、テストコードを書く際はわかりやすさ優先です。DRYを意識し過ぎるとわかりづらくなることがあるので注意しましょう。

テストの種類

テストと偏に言っても様々な種類があります。

1. 単体テスト

ひとつのプログラムのまとまりに関して、それ単体が正常に動くか確かめるテストのことを単体テストと呼びます。例えばRailsであれば、モデルクラスひとつ、コントローラークラスひとつにつきそれぞれテストコードを書きます。

2. 統合テスト

複数のプログラムが連動して行われる処理が意図した通りに行われるかを確かめるテストのことを統合テストと呼びます。例えばRailsであれば、ユーザーの新規登録における一連の処理をテストすることが考えられます。ユーザーの新規登録用画面から値を入力、送信して、データベースにレコードが追加されるまでの一連の流れをシミュレートするテストコードを書きます。