ガイドライン: 単体テスト
トピック
単体テストは、ソフトウェア中でテスト可能な最小要素 (単位) の検証を目的として実装されるもので、論理フローやデータ フローなどを含む内部構造、単体の機能や観測可能な振る舞いなども検証します。単体の内部構造に焦点を絞ったテストの設計と実装には、単体の実装 (ホワイトボックスの手法) についての知識が不可欠です。単体の観測可能な振る舞いや機能の検証を目的としたテストの設計と実装には、単体の実装についての知識は不要なので、ブラックボックス手法と呼ばれます。
これらの手法はそれぞれ、単体を正常かつ完全にテストするために必要な、タイプの異なるテスト (「 概念: テストの種類」を参照) の設計と実装に用いられます。
単体テストのテスト ケースは、「ガイドライン: テスト ケース」を参照してください。
ホワイトボックス テストは、単体の内部構造のテストに使用されます。理論的には、コードを経由する可能なパスをすべてテストするべきですが、実際にそれが可能なのは単体が非常にシンプルな場合に限られます。最低でも、すべての決定と決定の間のパス (DD パス) を最低一度は検査する必要があります。その後、すべての文を最低一度は実行する必要があるからです。通常、決定は IF 文であり、DD パスは 2 つの決定を結ぶパスです。
このレベルのテスト カバレージを得るには、すべての決定を可能な限りの方法で評価されるようにテスト データを選択するようにします。
コード カバレージ ツールを使用し、ホワイトボックス テストでテストされないコードを特定できます。信頼性テストは、ホワイトボックス テストと並行して実行する必要があります。
「ガイドライン: テスト ケース」を参照してください。
ブラックボックス テストの目的は、単体の機能と振る舞いの実装方法についての知識がなくても、単体の指定の機能と、観測可能な振る舞いを検査可能にすることです。ブラックボックス テストは、単体の入力と出力に焦点を当て、それらに依存して実行されます。
ブラックボックスの手法に基づく単体テストでは、単体の操作の入力と出力の引数または出力状態 (またはその両方) を使用して評価できます。たとえば、操作はアルゴリズム (入力として 2 つの値、出力として第 3 の値を要する) を含む場合もあれば、データベース レコードの追加や削除などのように、オブジェクトやコンポーネントの状態を変更する場合もあります。いずれの場合も、完全にテストを行なう必要があります。操作をテストするには、以下を検証するためのテスト ケースを必要かつ十分に得る必要があります。
- 入力された有効な値それぞれに対し、操作から適切な値が返されているか。
- 入力された無効な値それぞれに対し、操作から適切な値だけが返されているか。
- 有効な入力状態それぞれに対し、適切な出力状態が出現しているか。
- 無効な入力状態それぞれに対し、適切な出力状態が出現しているか。
コード カバレージ ツールを使用し、ホワイトボックス テストでテストされないコードを特定できます。信頼性テストを、ブラックボックス テストと並行して実行できます。
「ガイドライン: テスト ケース」を参照してください。
|