実行時メモリエラー検出
アプリケーション実行時にメモリ関連エラー検出とカバレッジを計測
C/C++testは、メモリ破壊、メモリリーク、ポインターエラーといったC言語/C++言語特有の検出困難なエラーを、単体テスト時アプリケーション実行時に自動的に検出します。
実行時に実際に起きたエラーをレポートするため、誤検出がありません。メモリアドレス、メモリブロックサイズ、変数名などの情報とともにメモリの問題が起こった原因やソースコード中の場所を分かりやすく表示します。
また、アプリケーション実行時のカバレッジを計測します。
実行時に実際に起きたエラーをレポートするため、誤検出がありません。メモリアドレス、メモリブロックサイズ、変数名などの情報とともにメモリの問題が起こった原因やソースコード中の場所を分かりやすく表示します。
また、アプリケーション実行時のカバレッジを計測します。
アプリケーション実行時のカバレッジ計測イメージ
アプリケーション実行時に発生したエラーを自動検出
C/C++testでは、単体テストやアプリケーション実行時に以下のようなメモリエラーを自動検出し、デバッグに役立つ情報をレポートします。検出できるメモリエラーの種類
- 不正メモリアクセス
- メモリリーク
- 未初期化メモリの参照
- NULLポインター参照
- メモリ破壊
メモリエラー検出
C/C++testのメモリエラー検出には以下の2つのモードがあります。通常の単体テストや機能テストを行いながら、効率的にメモリの問題を検出できます。
- 単体テストモード
単体テストの実行中にメモリの使用状況をモニターし、メモリエラーやカバレッジをレポートします。単体テストと同時にメモリエラーの検出が行えるため、開発の早い段階から潜在的なメモリの問題を検出できます。
- アプリケーションモード
実際にアプリケーションを動作させる環境で、アプリケーションを実行 し、メモリエラーを検出できます。ユニットが結合され、完成に近い段階でメモリエラーを検証するので、運用後に発生する可能性がある重大なエラーを発見、修正できます。
ホスト、シミュレーター、ターゲット環境で実行可能
実行時メモリエラー検出機能は、単体テストモードとアプリケーションモードの両方のテストを、ホスト、シミュレーター、実機(ターゲット機)環境で実施できます。C/C++testをインストールできないターゲット環境でも実行時メモリエラー検出機能を利用できるので、実機(ターゲット機)上でのメモリエラーの有無を確認できます。また、アプリケーション実行時のカバレッジを計測することもできるので、テストの漏れを防止できます。
ホスト環境でのメモリエラー検出
ホスト環境での単体テストやアプリケーションテストにおいて、メモリリークやメモリ破壊といったメモリに関連した問題を検出できます。ホスト環境で単体テストという開発工程の早い段階で問題の発見とデバッグが実施できるので、少ない工数で修正できます。また、カバレッジ情報も計測されるので、メモリエラー検出の網羅性や妥当性を確認できます。シミュレーターまたは実機(ターゲット機)環境でのメモリエラー検出
シミュレーターまたは実機(ターゲット機)環境での単体テストやアプリケーションテストにおいて、メモリリークやメモリ破壊といったメモリに関連した問題を検出できます。ターゲット環境において、現実的なシナリオを実行しながらメモリエラーを検出できるので、実機でなければ発生しないメモリの問題など、ハードウェアに組み込んだ後に発生する可能性の高い重大な問題をテストの段階で発見できます。
ターゲット環境でメモリエラー検出を行なう利点
メモリエラー検出機能は、実行中のアプリケーションをモニターしてエラーを検出するので、メモリエラーの発生した場所や原因を正確にレポートできます。ターゲット環境でのメモリエラー検出は、とくに実機でなければ発生しないメモリの問題を、テストの段階で発見できるという利点があります。 ターゲット環境で 単体テストと同時にメモリエラー検出を実行すると、さまざまな入力値を使用してクラスの幅広い機能をテストしながら、潜在的なメモリの問題を明らかにできます。 ターゲット環境でアプリケーションを操作しながらメモリエラー検出を行うと、テストケースの作成などの追加の作業なしに、現実的なユースケースを実行したときにメモリの問題が発生しないかを検証できます。
メモリエラー検出機能は、実行中のアプリケーションをモニターしてエラーを検出するので、メモリエラーの発生した場所や原因を正確にレポートできます。ターゲット環境でのメモリエラー検出は、とくに実機でなければ発生しないメモリの問題を、テストの段階で発見できるという利点があります。 ターゲット環境で 単体テストと同時にメモリエラー検出を実行すると、さまざまな入力値を使用してクラスの幅広い機能をテストしながら、潜在的なメモリの問題を明らかにできます。 ターゲット環境でアプリケーションを操作しながらメモリエラー検出を行うと、テストケースの作成などの追加の作業なしに、現実的なユースケースを実行したときにメモリの問題が発生しないかを検証できます。
軽量なテストモジュール
従来も、アプリケーション実行時にメモリチェックを行うツールはありましたが、実行時に大きなメモリが必要だったり、実行動作が遅い、対応する環境が限られているといった制限により、組込みシステムには適用できないものがほとんどでした。C/C++testの実行時メモリエラー検出機能は、組込みシステムにも適用できるように、非常に軽量に作られています。そのため、メモリの少ないターゲットボード上でも実行できます。また、C/C++testの単体テスト機能と同様に、マルチスレッドを使用するプログラムにも対応しています。
従来も、アプリケーション実行時にメモリチェックを行うツールはありましたが、実行時に大きなメモリが必要だったり、実行動作が遅い、対応する環境が限られているといった制限により、組込みシステムには適用できないものがほとんどでした。C/C++testの実行時メモリエラー検出機能は、組込みシステムにも適用できるように、非常に軽量に作られています。そのため、メモリの少ないターゲットボード上でも実行できます。また、C/C++testの単体テスト機能と同様に、マルチスレッドを使用するプログラムにも対応しています。
同時にカバレッジの取得も可能
メモリエラー検出は、アプリケーションの実行を監視してエラーを検出するので、テスト時に広い範囲のコードがカバーされている場合、より効果が高まります。メモリエラー検出と同時にカバレッジも取得すると、テストでカバーされていないコードブロックがないかどうか確認できるので、テストシナリオが十分な条件を網羅しているかという妥当性の評価や、追加のテストケースを作成する際の判断に役立ちます。※C/C++testがサポートするクロスコンパイラについては、稼動環境でご確認ください。
PICK UP
イベント・セミナー
ニュース・キャンペーン
静的解析ツール・単体テストツール C/C++testに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp