テクマトリックス、実環境に近い動的解析に対応した「C++test 7.3」
![]() |
システムエンジニアリング事業部 ソフトウェアエンジニアリング営業部 ソフトウェアエンジニアリング営業第一課の岩淵敏之氏 |
テクマトリックス株式会社は3月15日、C/C++対応自動テストツール「Parasoft C++test 7.3」を発表した。日本国内での販売、マーケティング、日本語化、ユーザーサポートのほか、ISO 26262(自動車分野)、ISO 61508(電気・電子分野)、ISO 62304(医療分野)などの機能安全に関するサービスを展開する。出荷は3月30日より。
C++testは、C/C++ソフト開発の単体テストと静的検証を自動化するテストツール。
静的解析テストでは、1400種以上のコーディングルールを使って、あるいはカスタマイズしてコーディング規約違反をチェックできる。加えて、複数のファイルや関数にまたがるすべてのパスフローを解析してエラーを検出する「バグ探偵機能」も搭載。ソースコードにおけるすべての分岐の組み合わせを検証し、メモリリークやメモリ破壊、ゼロ除算、バッファオーバーフローといった問題点を検出できる。
動的単体テストでは、テストケースやスタブ関数を自動生成し、効率的なホワイト/ブラック/回帰テストを実現。テストカバレッジ情報も自動で収集するため、未テスト個所も容易に把握できる。Excel/CSVファイルをインポートしてユーザー定義テストケースを作成することも可能。さらにホスト環境上のC++testを使って、実機(シミュレータ環境やターゲット環境)でテスト可能なオプション機能「クロスプラットフォームエディション」も備える。ホスト環境でクロスコンパイルした実行ファイルをC++testがインストールできない実機上で稼働させ、ホスト環境で結果を確認可能。この一連の流れを設定すればワンクリックで実行できる便利な機能だ。
![]() | ![]() | ![]() |
静的解析の概要 | バグ探偵機能の概要 | クロスプラットフォームエディションの概要 |
新版では、「実行時メモリエラー検出機能」を搭載。実行時エラーを検出するためのコードを含んだ実行ファイルを作成し、アプリケーションが実際に実行している最中にメモリエラーを監視する機能。静的解析よりも実環境に近いテストが実施できる。なお、同社には実行時メモリエラー検出に特化した「Insure++」もあるが、C++test 7.3では単体テストと統合されているほか、実機テストに対応するため、Insure++より負荷を抑えるなどの工夫が凝らしてある。
同機能では「単体テストモード」と「アプリケーションモード」の2種類を用意。前者は単体テスト実行時にメモリエラーも検出するもので、「開発早期のタイミングで実行時メモリエラーが検出できるほか、異常がないと実行されない例外処理についても、異常をシミュレートすることでテストできるのがメリット」(システムエンジニアリング事業部 ソフトウェアエンジニアリング営業部 ソフトウェアエンジニアリング営業第一課の岩淵敏之氏)。
後者は、実際にアプリケーションが動作する環境で、メモリエラーを検出できる。ユニットが結合され、より完成に近い段階でテスト可能なので、運用後に発生する可能性がある重大なエラーを発見・修正できる。
岩淵氏によると「従来のバグ探偵機能でもメモリエラーを発見することが可能だが、こちらは静的解析なため、実行環境を影響を考慮した検証は行えない。その分、網羅性の高い検証を行えるのがメリットだが、実行時メモリエラー検出機能なら、スレッドをまたがって発生するエラーも発見でき、かつ実行時の検出のため問題のあるエラーをほぼ100%検出できる」とのこと。
![]() | ![]() |
実行時メモリエラー検出機能の概要 | 2種類のモードを用意 |
このほか、「ファクトリ関数機能」も搭載。これはテストケースを生成する前に必要な、グローバル変数やオブジェクトの初期値の際に返す型を設定できるもの。「従来テストケースの生成では、各ユニットの開発者が個別に初期化処理などを定義する必要があったが、開発者ごとにスキルの違いがあると、統一された条件でのテストは困難だった。そこでファクトリ関数機能を使うと、基となる設定から、すべてのテストケースを生成可能なため、より現実的な状況下で単体テストが可能となる」(同氏)。
パフォーマンス面では、マルチコアの対応により解析速度を向上。前版と比べて、デュアルコアの場合で36%、クアッドコアの場合で65%、テスト時間が短縮されている。また、バグ探偵機能でインクリメンタル解析(キャッシュ機能)をサポート。前回解析時の情報を自動保存し、2回目以降の解析では変更されたパスのみ検証することで、86%の時間短縮を実現している。
価格は、テストケース・スタブの自動生成・編集、テストの自動実行、静的解析の自動実行、カバレッジ情報レポート、実行時メモリエラー検出機能、ファクトリ関数機能に対応した「Professional Edition」が49万8000円(税別)/ライセンス、これに加え、静的解析コーディングルールの生成・編集も可能な「Architect Edition」が59万8000円(同)/ライセンス、これに加え、バグ探偵機能、コマンドラインを使用したテストのバッチ実行も可能な「Server Edition」が210万円(税別)/ライセンス。これらはマシン固定ライセンスとなるが、別途、マシンを固定しないフローティングライセンスも提供する。
![]() | ![]() |
C++testトップ画面。Eclipseなどのプラグインとして動作する | テストコンフィグレーション画面 |
![]() | ![]() |
単体テスト設定画面 | 実行時メモリエラー検出の結果画面 |
2010/3/15 16:02