単体テスト
単体テストではソフトウェアを構成する最小単位である関数やメソッドに対して、設計書で要求された機能を満たしているかどうかを検証します。
単体テストのテスト対象は個別のプログラム(ソースコード)そのものとなります。
ですので、命令文や条件判定を行っている「if-else文」などの各コードが実行されるようにテストケースを考えます。
ドライバとスタブ
テスト対象のプログラムを呼び出すためのプログラムや、テスト対象のプログラムが利用しているプログラムがまだ使えない場合に「ドライバ」や「スタブ」といった代替するプログラムが必要になります。
ドライバ
テスト対象のプログラムを呼び出すためのプログラムです。
スタブ
テスト対象のプログラムが呼び出しているプログラムを代替するプログラムです。
呼び出し先のプログラムがまだ作成されていない場合などに使用します。
単体テストの種類
単体テストは大きくホワイトボックステストとブラックボックステストに分類できます。
ホワイトボックステストとは、テスト対象の関数またはメソッドの内部構造に着目し、基本的にはプログラム内の全ての命令、全てのルーチンが最低一回は実行されるように検証します。
一方、ブラックボックステストは、テスト対象関数またはメソッドの外から見た機能(入出力)に着目しますので、システム内部でどういった処理が行われているかは一切問題としません。
単体テストツール
単体テストは専用のツールを使って自動化することで、より効率的に進めることができます。
単体テストツールは多数のテストケースを漏れなく確実に検証することができます。
それだけでなく、指定された時間にすべてのテストケースを自動的に実行することで、ソースコードの変更によるテスト済みのソースコードの動作にエラーが起きていないかといった、デグレードが発生していないかどうかも確認できます。
単体テストの自動実行を可能にするツール(テストフレームワーク)と呼ばれるものがあります。
よく知られているのは、Java言語用のJUnitですが、他のさまざまな言語用にもフレームワークが存在します。
言語 | 単体テストツール |
---|---|
Java | JUnit |
C/C++ | CppUnit |
.NET | NUnit |
これらの単体テスト自動実行ツールを総称してxUnitと呼びます。
xUnitフレームワークは、テストの実行および結果の検証機能を提供します。
テストケースはすべてコードとして作成されるので、もちろん自動実行が可能です。
ただし、基本的にはテストケースの生成機能は提供しないため、テストケースは自分で作成する必要があります。
■次の記事
結合テスト
PR