C++test -C/C++対応自動テストツール-
C++test が行うテストの種類 - フロー解析
フロー解析とは
フロー解析というと、データフロー解析を思い浮かべる方が多いのではないでしょうか?C++testのフロー解析は、全パス解析といったほうが良いかもしれません。C++testでは、ソースコードに存在するパスの処理を解析し、メモリリークや未初期化メモリ、配列の範囲外のアクセスなどの処理フローに依存したエラーを検出します。通常は、このようなエラーは、コーディング規約に則っているかを検証する静的解析では検出することが難しく、結合テストなどの動的テストで検出されます。しかし、動的テストの場合、すべてのパスをテストするには、膨大な時間と人的リソースが必要となり、実際に実施するのは現実的ではありません。また、結合テスト以降で検出されたエラーは、原因箇所を突き止めるのが難しく、デバッグ作業に多くの時間を取られることも少なくありません。
C++testのフロー解析は、全パスに対して、処理フローを解析し、メモリリークや未初期化メモリ、配列の範囲外のアクセスなどの問題点を検出します。コーディング時に実施できるので、結合テストまでに、問題点を取り除くことが可能になります。
C++testのフロー解析は、全パスに対して、処理フローを解析し、メモリリークや未初期化メモリ、配列の範囲外のアクセスなどの問題点を検出します。コーディング時に実施できるので、結合テストまでに、問題点を取り除くことが可能になります。
C++testのフロー解析
C++testのフロー解析は『バグ探偵』といいます。『バグ探偵』は、ソースコードに存在するパスの処理フローを解析し、メモリリークや、ゼロ除算、未初期化メモリ、配列の範囲外のアクセスといった重大な問題の引き金となるコードを検出します。処理フローが複数のプログラムに渡った複雑なパスも検証可能なので、プログラム単位で実施する静的解析や単体テストでは発見することが難しい実行パスとデータの組み合わせによって発生するメモリリークやリソースリーク、ゼロ除算、未初期化メモリの使用、 NULLポインタの間接参照などを正確に検出します。ソフトウェアを実行しなければ検出することが難しい問題を静的に検証できるため、人手によるテストに比べて、網羅率の高い検証が可能となります。さらに、問題を引き起こすコードと処理フローがレポートされるので、テスト/デバッグ時間を大幅に短縮することが可能になります。
『バグ探偵』が検出する問題点
- メモリリーク
- リソースリーク
- ゼロ除算
- 未初期化メモリの使用
- NULL ポインタの間接参照
- 配列の範囲外のアクセス
- バッファオーバーフロー
- セキュリティ関連のルール










