テストの目的
なぜテストを行うのか
・プログラムの正しい動作を確認するため。
・作成したプログラムの正しくない動作を発見するため。
テストのやり方
テストケースの設計
・プログラムが正しく動くか検証するための、前提条件・データ・操作・結果を抽出する。
ホワイトボックステスト
・モジュールの内部構造に着目するテスト。仕様を知らないとできないテスト。
ブラックボックステスト
・モジュールの内部構造を見ないテスト。仕様を知らなくてもできるテスト。
ユニットテスト(単体テスト)
・モジュール単位で行うテスト。設計書をもとにして、テストコード、ドライバ、スタブを作成する。
・個々の機能ユニット(関数)に対するテストで、最も粒度が細かい。
ユニットテストのメリット
・開発の早期にバグを発見でき、修正コストが下げることができる
・開発者がコードの内容を理解するのを助け、迅速に後の変更や拡張開発に役に立つ
・テストの実行速度が速い
などが挙げられます。
ソフトウェア結合テスト
・作成したユニットを結合して行うテスト。
→結合したユニットによる、インターフェースのエラー、結合したことで発生したエラーを検出する
テスト技法
テスト技法については、主に4つあります。
・トップダウン
・ボトムアップ
・ビックバン
・サンドイッチ
今回は、よく使用される「トップダウン」と「ボトムアップ」について簡単に説明します。
○トップダウン
上位のモジュールから順にテストする技法。システムの全体像が見えやすいことがメリットとして挙げられます。
○ボトムアップ
下位のモジュールから順にテストする技法。テスト条件が見えやすいことがメリットです。
バグ管理について
テストで大切になるバグ管理についてです。
バグ管理ではこちらの図を使用することが多いです。
この図は、テスト項目の消化とともに、起こったバグの数を表にしたものです。
上の図が理想的な図の形で、テストをして発生したバグを回収していく中で、少しずつバグの回数が減っていき、システムの品質が高まっていくことが見て取れます。
以下の図のように、変曲線がオレンジのような形になるとダメな形です。
テストの自動化
自動化のメリットは以下の通りです。
・テスト工数の削減
・ヒューマンエラーの排除
が挙げられます。
デバック手法
バグの回収の際に行う、良いアプローチとダメなアプローチは以下の通りです。
悪いアプローチ
・すぐにソースファイルを開く
・「原因ジャンプ」をしてしまう。
・やみくもにソースコードファイルを修正する。⇦これが特にダメ!
良いアプローチ
・問題の明確化
・仮説を立てる
・仮説に基づいて検証を行う。
まとめ
テストには様々な方法がありますが、経験を積んで、システムの品質を上げられるようなテストをしていきたいなと思います。