概要: 最新のホワイト ボックス テストでは、洗練された自動化ツールを使用して、開発者が適切なテストを設計し、有意義な方法でコード カバレッジを測定できるようにしています。広く使用されている (初歩的な場合) 例には、Cobertura、EMMA、EclEmma 、 JaCoCo などがあります。
Java アプリケーションのホワイト ボックス テストはどのように行われますか?
従来、ブラックボックス テストとは、別のチーム (開発者ではない) がソフトウェアのテストを担当することを意味し、テスト中にソース コードを確認することはありませんでした。
単体テストに移行しても、テストを設計するための一般的なアプローチは、多かれ少なかれブラックボックスの入力ドメインの特徴付けを使用することです。つまり、境界条件といくつかの任意の「通常の」入力値をテストするだけです。
ただし、明らかに、このアプローチでは関数の一部のブランチを実行できない場合があります。優れた開発者はコードを開いて、「そのブランチを実行するには、入力を追加する必要があります」と言うでしょう。
最新のホワイトボックス テストでは、プロセスを自動化することでこの考え方をさらに一歩進め、次のような出力を生成して、たとえば JUnit (NetBeans プラグインTikiOneから)によってメソッドのどの部分がまだ実行されていないかを示します。
ホワイトボックステストはどのように行うべきですか?
概要に記載されているコード カバレッジ ツールは、コードのすべての行または分岐を確実に実行するプロセスを自動化しようとします。Jenkinsのような継続的インテグレーション環境に統合すると、チームは、テストが合格するかどうかだけでなく、カバレッジの目標 (NetBeans プラグインTikiOneから)を満たしているかどうかを常に監視できます。
ソフトウェア エンジニアリングの研究では、ホワイト ボックス テストは、行数を数えるよりもはるかに洗練されたものになる可能性があります。テストに与える入力がコードのすべての可能な動作を適切にカバーすることを確認するのに役立つ、さまざまなツールと数学的手法が開発されています。
たとえば、複雑なブール述語を使用する飛行機の自動操縦システムの警告システムでは、形式論理に基づいたホワイトボックス テスト基準を使用して、コントローラーを介して論理的に可能なすべてのパスを確実にカバーすることができます。
最も一般的な基準であるラインおよびブランチ カバレッジの分析は、制御フロー グラフやデータ フロー ダイアグラムなどのソフトウェアのグラフ表現を使用する特殊なケースです。優れたツールはコードを読み取ってグラフを生成し、さまざまなグラフ カバレッジ基準から選択して、テストの目標を達成するために実行する必要があるメソッドの制御ロジック (分岐) を通る一連のパスを自動的に推奨できます。
線と枝は、最も単純で最も使用される (制御) グラフ カバレッジ基準です (ノードとエッジをカバーすることに対応します)。一部のツールでは、エッジ ペアやプライム パスなどのより完全な (そして満たすのが難しい) メトリックを使用できます。これらは、「各ブランチのすべての選択肢を少なくとも 1 回行ったか」だけでなく、「そこにたどり着くことができたすべての方法ですべてのブランチを通過したか」を尋ねます。
これらのパスを実行するための一連の入力を見つけ、より完全な基準で適切なカバレッジを得るために必要なテストの数が指数関数的に爆発しないように、コードを十分に小さくシンプルに設計することは、依然としてプログラマーの責任です。しかし、今では、A) 何をテストする必要があるかを伝え、B) プロジェクトをどれだけうまくテストしたかを伝える、正式で定量的な方法があります。
クラスごとにテストする必要があるということですか?
ホワイトボックステストは、テストを設計するための方法です。単体テスト、統合テスト、システム テストなど、すべてのテスト レベルに適用できます。
テスト カバレッジ基準の詳細については、次を参照してください。
- バイザー、ボリス。ソフトウェアのテスト手法。ドリームテック プレス、2003 年。
またはより最新のものを見る
- Ammann、Paul、および Jeff Offutt。ソフトウェア テストの概要。ケンブリッジ大学出版局、2008 年。