テストの心得 〜備忘録〜


初心者プログラマーはとりあえずテストを任せられることがよくあります。
やる気溢るる初心者プログラマーにとっては、「実装じゃなくてテストかよ〜」と落胆してしまうことも少なくないかと思います。(←私がそうでした)
そういう人たちにテストの重要性を説いても、正直あまり響かないんですよね。
だってテスターじゃなくてプログラマになりたいとしか思っていないから。
声を大にして言いたい、凄腕プログラマーが作成するテストは素晴らしいんです!
周りの凄腕プログラマーが実際にそうだから。

今回はテストの考え方、作り方について、自分の備忘録もかねて記録します。

テストの考え方

テストの種類って、いろんな分け方ができます。
ブラックボックス・ホワイトボックスとか、単体テスト・結合テストとか、この分け方はよくネットに転がっていると思います。
あまり記事でクローズアップされない分け方として、
システムの動きが正しいかを確認するためのテスト・バグを発見するためのテスト、という分け方もあります。
これはテストの目的によって分けており、目的によって検証項目も異なってきます。

テストケースの作り方

1. 仕様書を把握する

正直ここがキモになります。
仕様書から、このシステムのあるべき姿を理解した上で、テストケースを作っていきます。
あるべき姿を勘違いしていると、せっかく作るテストケースも意味のないものになってしまいます。

2. 実際にざっくりシステムを動かしてみる

テストケースを作成する前に、システムの「感じ」を掴むためにざっくり触ってみます。
仕様書での把握だけではなく実際に触ってみることで、よりユーザー目線でのテストケースを作成できるようになります。

3. 対応端末、対応ブラウザを確認

このシステムがスマホ対応なのか(このご時世スマホ対応は当たり前かと思いますが・・・)、ChromeやIEでもレイアウトが崩れないか、等はテストケースとして必要です。

4. システムが利用されるフローを列挙する

つまり業務フローです。
このシステムが利用される時のフローを整理して、そのフローの中で、各手順が正しく動くかのテストケースを作成するためのネタを集められるようにします。

5. ブラックボックステストを作成

4.で作成したフローを手順として分けて、各手順の中でブラックボックステストを作成します。

1.同値分割

有効値と無効値でそれぞれテストケースを作成。
たとえば1~30が有効値だとすると、無効値は31とか-1とか0とか1.5の場合で作成してみると良いでしょう。
文字なら、半角・全角、特殊文字、html(<h1>とか) も良いですね。

2. 境界値分析

範囲の境界の値でテストケースを作成。
たとえば、1~30が有効値だとすると、31・30・1・0が境界値です。

3. 画像やcsvファイル等のバリデーション

拡張子チェックや容量、csvファイルのフォーマットでテストケースを作成します。

6. ホワイトボックステストを作成

1. ブラックボックステストで作成したテストケースの、ホワイトボックス版を作成

ホワイトボックステストなので、実際にコードを見ながら作成します。

2. 例外の実装箇所を確認

ユーザーが、開発者の意図とは異なるオペレーションをすることはざらにあります。
というかあるのが普通です。
そういった場合の例外処理が実装されているかと思いますが、
例外実装が甘かったりすると、画面にシステムエラーが表示されたりします。

3. トランザクション

複数ユーザーが利用するシステムの場合、ちゃんとトランザクション処理が実装されているのか確認する必要があります。
実際に複数端末で操作してみましょう。

かなりざっくりではありますが、テストケースの作り方について記録しました。
テストは実行幅がピンキリなので、ここに記述した内容だけでは不十分なことももちろんあります。
この備忘録が、誰かの役に少しでもたてば幸いです。