単体テストとは
単体テストとは
単体テストとは、ユニットテスト(UT)、コンポーネントテストとも呼ばれ、ソフトウェア開発の最初されるテストです。
テスト工程として、
- システムテスト
- 結合テスト
- 単体テスト
が定義されており、単体テストについて「詳細設計」に対して行われるテストとなっています。
一般的に、コンポーネントやモジュール単位でテスト実施します。
ドライバー
ドライバーとは、テスト対象を呼び出す役割を持つ、上位モジュールの大替品です。
スタブ
スタブとは、テスト対象が動作した際に呼び出す先の下位モジュールの大替品です。
単体テストのメリット・デメリット
メリット
- コンポーネント単位でテストを行うため、原因の特定と修正が容易的になります。
- 開発の早い段階で不具合を発見・修正することができて、
デメリット
- 作成した開発者自身が単体テストを実施することが多く、開発工程に負担がかかります。
単体テストの手法
ホワイトボックステストとは
データフローテストについて
制御フローテストが処理経路に着目したテスト手法であるのに対して、データフローテストではデータの流れに着目するようになっております。
プログラム内で使用されるデータには、
- 定義
- 使用
- 消滅
というサイクルがあり、これをデータフローと呼びます。
制御フローテストについて
テスト対象となるプログラムのソースコードには、分岐条件が含まれることが多い。
制御フローテストとは、その分岐条件に特定データを設定することで、設計通りの動作を確認する手法です。
一般的に、テスト対象は複数の分岐条件えお持つため、全てのパターンをテストしようと思えば膨大なテストを行わなくてはいけないので、すべての処理経路を一度は通るように、可能な限り多くのテストパターンを設定することになります。
ブラックボックステスト
ブラックボックステストとは、ホワイトテストとは逆にソースコードが不明な状態で行うテスト手法になります。
テスト対象に期待する動作を検証するもので、モジュール内でデータがどのように処理するかは着目せずに入力と出力の生合成のみについて着目をします。
単体テストの自動化
単体テストは、自動化することでより高い効果を期待です。自動化することで、多数のテストケースを漏れなく確実に実行できます。単体テストの自動実行を可能にするテストフレームワークと呼ばれるものがあります。テストフレームワークには、以下のものがあります。
- Java ・・・JUnit
- C/C++ ・・・CopUnit
- .NET ・・・NUnit
基本的には、テストケースの生成機能はなく、テストケースを作成する必要があります。
まとめ
動作保証や品質保証を行うためにも、単体テストを適宜実施することが重要です。単体テストは、準備や実施の負担が大きいため、十分なテストを行うためには効率化・自動化を意識して余力を生み出すことが重要なポイントとなります。
Discussion