このセクションでは、C++test に付属のビルトイン テスト コンフィギュレーションについて説明 します。

 C++test には、最も一般的に使用されるテスト シナリオを表したビルトイン テスト コンフィギュ レーションが用意されています。ビルトイン テスト コンフィギュレーションをコピーして変更する か、新規にユーザー定義テスト コンフィギュレーションを作成することによって、ニーズに合わせ てテスト コンフィギュレーションをカスタマイズできます。ユーザー定義テスト コンフィギュレー ションは、[ ユーザー定義] または [ チーム] カテゴリに保管できます。ローカル マシンに保存され たユーザー定義テスト コンフィギュレーションは、ローカルの C++test で実行されるすべてのテ ストで利用可能です。チームの Team Server に格納されたチーム テスト コンフィギュレーション にはチーム メンバー全員がアクセスできます。

Static Analysis グループ

テスト コンフィギュレーション 説明
Flow Analysis Standard

テスト ケースやアプリケーションの実行を必要とすることなく、複 雑な実行時エラーを検出します。検出する欠陥には、未初期化メモ リ、不正なメモリ、null ポインターの間接参照、配列とバッファー のオーバーフロー、ゼロによる除算、メモリ リーク、リソース リー ク、デッド コードが含まれます。フロー解析テスト コンフィ ギュレーションの詳細については 「フロー解析ビルトイン テスト コンフィギュレーション」を参照してください。

Flow Analysis Fast 解析の深さとして「最も浅い」を使用するため、 Standard や Aggressive よりも迅速に実行します。 適度な量の問題を発見し、違反の数が爆発的に増加するのを防止します。フロー解析テスト コンフィギュレーションの詳細については「フロー解析ビルトイン テスト コンフィギュレーション」を参照してくださ い。
Flow Analysis  Aggressiveあらゆる疑わしいコードを違反として検出します。フロー解析テスト コンフィギュレーションの詳細については 「フロー解析ビルトイン テスト コンフィギュレーション」を参照し てください。
CERT C Coding StandardCERT C Secure コーディング スタンダードのルールをチェックし ます。このコーディング スタンダードは、セキュア コーディングの ためのガイドラインを提供します。その目的は ( たとえば未定義の プログラム動作や悪用可能な脆弱性をもたらしかねない未定義の動 作を排除することによって) 安全で信頼でき、セキュアなシステム の開発を容易にすることです。
CRulesC 言語に適用されるルールをチェックします。
CWE-SANS Top 25 Most Dangerous Programming Errors

2011 CWE/SANS Top 25 Most Dangerous Software Errors を チェックします。これは、ソフトウェアの深刻な脆弱性につながる 可能性がある、最も蔓延していて重大なエラーのリストです。 多く の場合、それらは発見しやすく、悪用しやすいエラーです。高い頻 度で、これらのエラーは攻撃者がソフトウェアを完全に乗っ取った り、データを盗んだり、ソフトウェアを動作不能にすることを可能 にします。

 (http://cwe.mitre.org/top25/index.html)

詳細については「2011 CWE/SANS Top 25 Most Dangerous Software Errors Mapping」を参照してくださ い。

DISA-STIG Coding StandardDISA STIG のルールをチェックします。これらのルールは、セ キュア開発のためのアメリカ合衆国国防総省のガイドラインです。 
Effective C++Scott Meyers の『Effective C++』に基づいたルールをチェック します。C++ プログラムの効率性をチェックします。
Effective STLScott Meyers の『Effective STL』に基づいたルールをチェックし ます。
EllemtelEllemtel Telecom Systems の C++ スタイル ガイドに基づいた ルールをチェックします。この C++ スタイル ガイドは電気通信業 界で広く使用されています。
Find Duplicated Code重複する関数、コード フラグメント、文字列リテラル、および #include ディレクティブを検出します。.
HIS Source Code MetricsHerstellerinitiative Software (HIS) グループによって要求される メトリクスをチェックします。
ISO 26262 Recommended RulesISO 26262 規格によって推奨されるルールをチェックします。
Joint Strike FighterJoint Strike Fighter (JSF) プログラム コーディング規約を推進す るルールをチェックします。
Metricsメトリクスの統計をレポートし、許容範囲を超えるメソッド値を検 出します。
MISRA CMISRA C コーディング規約を推進するルールをチェックします。
MISRA C 2004MISRA C 2004 コーディング規約を推進するルールをチェックしま す。
MISRA C++ 2008MISRA C++ 2008 コーディング規約を推進するルールをチェック します。
MISRA C 2012MISRA C 2012 コーディング規約を推進するルールをチェックしま す。
OWASP Top 10 Security Vulnerabilities

OWASP Top 10 Security Vulnerabilities (http:// www.owasp.org/index.php/Top_10_2007) にあるセキュリティ の問題をチェックします。

Payment Card Industry Data Security Standard

Payment Card Industry Data Security Standard (PCI DSS) の セクション 6 にあるセキュリティの問題をチェックします。

 (https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml)

検出される問題には、クロス サイト スクリプティング、インジェク ション フロー、悪意のあるファイル実行などを防止するための入力 の検証、および適切なエラー処理の検証が含まれます。

Parasoft’s Recommended Rules重大な構造の結果を特定する可能性が高いルールをチェックします。 アプリケーションの問題を引き起こす構造の欠陥としては、低パ フォーマンス、メモリ リーク、セキュリティ脆弱性などがありま す。 
Parasoft's Recommended FDA C++ Phase 1「FDA General Principles for Software Validation」に準拠するた めに推奨されるルールの中で、主要なルールをチェックします。
Parasoft's Recommended FDA C++ Phase 2「FDA General Principles for Software Validation」に準拠するた めに推奨されるルールをチェックします。すでにフェーズ 1 のルー ル セットを実装している組織に推奨します。
Parasoft's Recommended FDA C++ Phase 3「FDA General Principles for Software Validation」に準拠するた めに推奨されるルールをチェックします。すでにフェーズ 2 のルー ル セットを実装している組織に推奨します。
SAMATE Annex A Source Code WeaknessesNIST Software Assurance Metrics and Tool Evaluation (SAMATE) プロジェクト (http://samate.nist.gov) の Annex A に記載されたコードの脆弱性をチェックします。
SecurityRulesセキュリティの脆弱性を防止または特定するルールをチェックしま す。
Sutter-AlexandrescuHerb Sutter と Andrei Alexandrescu の『C++ Coding Standards』に基づいたルールをチェックします。
The Power of TenGerard J. Holzmann の記事「The Power of Ten - Rules for Developing Safety Critical Code」 (http://spinroot.com/gerard/pdf/Power_of_Ten.pdf) に基づいたルールをチェックしま す

Unit Testing グループ

テスト コンフィギュレーション説明
File Scope> Build Test Executable (File Scope)

トライアル ビルドのためのテスト用実行モジュールをビルドします。
選択したファイルだけがインストゥルメントされます。

File Scope> Collect Stub Information (File Scope)

[ スタブ] ビューに表示するスタブ情報を収集します。
選択したファイルだけがインストゥルメントされます。

File Scope> Debug Unit Tests (File Scope)

デバッガー下で単体テストを実行します。
選択したファイルだけがインストゥルメントされます。

File Scope> Generate Stubs (File Scope)

見つからない関数定義と変数定義のためのスタブを生成します。
選択したファイルだけがインストゥルメントされます。

File Scope> Run Unit Tests 

利用可能なテスト ケースを実行します。
選択したファイルだけがインストゥルメントされます。

Build Test Executable 

トライアル ビルドのためのテスト用実行モジュールをビルドします。
すべてのプロジェクト ファイルをインストゥルメントします。

Collect Stub Information 

シンボル データを収集して [ スタブ] ビューに表示します。
すべてのプロジェクト ファイルをインストゥルメントします。

Debug Unit Tests 

デバッガー下で単体テストを実行します。
すべてのプロジェクト ファイルをインストゥルメントします。

Generate Regression Base

プロジェクト コードの現在の機能をキャプチャしたベースライン テスト スイートを生成します。このベースラインからの変更を検出するには、定期的にこのテスト スイートを使ってコード ベースをテストします。
結果は自動的に検証済みにされます。

Generate Stubs

見つからない関数定義と変数定義のためのスタブを生成します。
すべてのプロジェクト ファイルをインストゥルメントします。

Generate Test Suites選択したリソースのテスト スイートを生成します。テスト ケースは生成しません。
Generate Unit Tests選択したリソースの単体テストを生成します。
Run Unit Tests

利用可能なテスト ケースを実行します。
すべてのプロジェクト ファイルをインストゥルメントします。

Run Unit Tests with Memory Monitoring

利用可能なテスト ケースを実行し、メモリの問題についての情報を収集します。
すべてのプロジェクト ファイルをインストゥルメントします。

Application Monitoring グループ

テスト コンフィギュレーション説明
Build Application with Coverage Monitoringカバレッジ計測が有効な状態で、テスト対象アプリケーションをビルドします。
Build Application with Full Monitoringカバレッジ計測とメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドします。
Build Application with Memory Monitoringメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドします。
Build and Run Application with Coverage Monitoringカバレッジ計測が有効な状態で、テスト対象アプリケーションをビルドして実行します。
Build and Run Application with Full Monitoringカバレッジ計測とメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドして実行します。
Build and Run Application with Memory Monitoringメモリ エラー検出が有効な状態で、テスト対象アプリケーションをビルドして実行します。

Embedded Systems グループ

 

Test Configuration Description
Window Mobile> Build Test Executable for Windows Mobileターゲットデバイスに手動で送って実行する必要があるテスト用実行モジュールをビルドします。このテストコンフィギュレーションは [Build Test Executable] テストコンフィギュレーションに非常に似ています。唯一の違いは、実行後の成果物 ( カバレッジと結果) を生成するために外部ストレージカードを使用するよう構成されている点です。詳細については「Windows Mobile のサポート」を参照してください。
Window Mobile> Build and Run  Test Executable for Pocket PCテスト用実行モジュールをビルドし、エミュレーターにデプロイして実行します。実行が完了したら、C++test にテスト結果を読み込んで表示するために、ユーザーがエミュレーターを閉じる必要があります。詳細については「Windows Mobile のサポート」を参照してください。
Window Mobile> Build and Run Test Executable for Smartphoneテスト用実行モジュールをビルドし、エミュレーターにデプロイして実行します。実行が完了したら、C++test にテスト結果を読み込んで表示するために、ユーザーがエミュレーターを閉じる必要があ
ります。詳細については「Windows Mobile のサポート」を参照してください。
Window Mobile> Build and Run Test Executable for Windows Mobile or Windows CE Using ActiveSyncテスト用実行モジュールをビルドし、エミュレーターにデプロイして実行します。通信チャネルとして ActiveSync が使用されます。このフローを使用するには、ホストマシンとターゲットマシンの両
方が ActiveSync をサポートしていなければなりません。ターゲットとして、ActiveSync がサポートする方法で接続された実際のデバイスまたはエミュレーターを使用できます。詳細については「Windows Mobile のサポート」を参照してください。

 

Utilities グループ

テスト コンフィギュレーション説明
Load Test Results (File)

ファイル チャネルを介してテスト結果を収集します。デフォルトでは、このテスト コンフィギュレーションは ${cpptest:testware_loc} 中にログがあると想定します。必要に応じて、この場所は、C++test GUI からアクセスできるファイル システム上の任意の場所に変更できます。

Load Test Results (Sockets)

TCP/IP ソケットを介して送られるテスト結果を収集します。 このテスト コンフィギュレーションは Java ユーティリティ プログラムを起動してテスト結果をリッスンしキャプチャします。テスト結果とカバレッジ結果のポート番号はカスタマイズ可能です。ポート番号はresults_port および coverage_port プロパティで定義されます。

Extract Library Symbols

外部ライブラリ ( またはオブジェクト ファイル) からシンボル リストを抽出します。バイナリからシンボル情報を収集するための C++test の標準アルゴリズムが十分ではない場合は常にこのテスト コンフィギュレーションを使用するべきです。たとえば、Wind River DKM タイプのプロジェクトを使用している場合、この方法で収集された VxWorks イメージからすべてのシンボルを抽出します。通常、シンボルを抽出するバイナリの場所を入力するほか、ライブラリ/ オブジェクト ファイルのコンテンツをダンプするのに使用できる nm に似たユーティリティの名前も入力する必要があります。

Generate Stubs Using External Library Symbols[Extract Library Symbols] テスト コンフィギュレーションを実行した後に、スタブを生成するために使用されます。このテスト コンフィギュレーションは、外部ライブラリからのシンボル リストのファイルがプロジェクトの一時データ中に格納されているものと想定します。
Load Insure++ CoverageInsure++ カバレッジをロードします。

Code Review グループ

名前スコープコード レビュー
Pre-Commit ローカルで追加または変更されたファイルのみ

ソース管理システムにコミットする「前」にコードをレビューしたいチームに適しています。

このテスト コンフィギュレーションを使用するには、コード レビューの設定で [ スキャナー実行中にユーザー補助を表示] チェックボックスをオンにし、適切なレビューアーを作成者が指名できるようにしなければなりません。詳細については「コード レビュー」を参照してください。

Post-Commit  (Template)前日に変更されたすべてのプロジェクト ファイル

ソース管理システムにコミットした「後」にコードをレビューしたいチームに適しています。

このテスト コンフィギュレーションは、複製してカスタマイズしてから使用しなければなりません ( たとえば作成者とレビューアーのマッピングなど)。詳細については「コード レビュー」を参照してください。

Post-Commit

(Assign All)

前日に変更されたすべてのプロジェクト ファイル

ソース管理システムにコミットした「後」にコードをレビューしたいチームに適しています。

このテスト コンフィギュレーションは、カスタマイズせずに使用できます。ローカル コード レビューユーザーのマッピングを含みます。( あらゆる作成者について) スコープで発見されたすべてのリビジョン
を現行ユーザーに割り当てます。

プロジェクトやチームの優先順位に合わせてユーザー定義テスト コンフィギュレーションを作成する方法については、「テストコンフィギュレーションとルールの設定」を参照してください。

2011 CWE/SANS Top 25 Most Dangerous Software Errors とのマッピング

CWE IDCWE 脆弱性Parasoft IDParasoft ルール名
CWE-89SQL コマンドで使用される特殊要素の不適切な無効化 (SQL インジェクション)BD-SECURITY-TDSQLSQL インジェクションから防御する
CWE-78OS コマンドで使用される特殊要素の不適切な無効化 (OS コマンド インジェクション)BD-SECURITY-TDCMDコマンド インジェクションから防御する
CWE-120 入力のサイズをチェックしないバッファー コピー ( 古典的バッファオーバーフロー)BD-PB-OVERFFM不正な書式指定子によるバッファー オーバーフローを避ける
BD-PB-OVERFNZT ゼロで終わっていない文字列の読み込みによるオーバーフローを避ける
BD-PB-OVERFWRバッファー書き込み時のオーバーフローを避ける
BD-SECURITY-OVERFWR 汚染されたデータによるバッファー書き込み時のオーバーフローを避ける
CWE-22制限されたディレクトリへのパス名に対する不適切な制限 (パス トラバーサル)BD-SECURITY-TDFNAMES ファイル名インジェクションから防御する
CWE-676危険な可能性がある関数の使用PB-37 <cstring> ライブラリの無制限の関数を使用してはならない
SECURITY-11shell メタ文字に影響される可能性があるため安全でない shell 関数は使用しない
SECURITY-12バッファ オーバーフローの原因になる可能性があるため、安全ではない文字列関数を使用しないようにする
SECURITY-13 範囲をチェックしないため安全ではない文字列関数を使用しないようにする
SECURITY-14書式文字列で変数サイズを指定せずに scanf または fscanf 関数を使用しない
SECURITY-16 gets() を使用しない
SECURITY-22mbstowcs() 関数を使用しない
SECURITY-30プログラム コードで getpw 関数を使用しないようにする
SECURITY-31cuserid 関数を使用しない
CWE-327不具合のある、または危険な暗号アルゴリズムSECURITY-02C ライブラリの乱数を使用する関数は使用しないようにする
SECURITY-28 セキュリティ上の理由で乱数が必要な場合に、標準の乱数ジェネレータを使用してはならない
SECURITY-37弱い暗号化関数を使用してはならない
CWE-131 バッファー サイズの不正な計算BD-PB-ARRAY配列の境界を超えてアクセスしてはならない
BD-PB-OVERFRD バッファー読み込み時のオーバーフローを避ける
BD-SECURITY-ARRAY 汚染されたデータを配列添え字として使用しない
MRM-45 sizeof 演算子をポインタ型に使用して、malloc、calloc、realloc 関数で割り当てるメモリのサイズを指定してはならない
CWE-134 制御されない書式文字列SECURITY-05 printf/wprintf 関数を変数パラメータ 1 個だけで使用しないようにする
SECURITY-08 2 番目のパラメータが変数である場合に、fprintf/fwprintf 関数をパラメータ 2 個だけで使用してはいけない
CWE-190整数のオーバーフローまたはラップアラウンドBD-SECURITY-INTOVERF 汚染されたデータによる整数オーバーフロー/アンダーフローを防ぐ
MISRA-051 符号なし整数定数式の評価は結果の型にはまるべきである


 

  • No labels