このセクションでは、ADS 1.2 CodeWarrior プロジェクトをインポートして C++test でテストする方法について説明します。
このセクションの内容:
前提条件
- C++test スタンドアロン版の場合、mcp2make ユーティリティをダウンロードしてインストールする必要があります。mcp2make ユーティリティは ARM によって提供されており、ARM のサポート ダウンロード ページから入手可能です。
- 複数の異なる ARM 開発環境 (またはデバッガー/エミュレーター) がある場合、ARM Suite Switcher ユーティリティを使って環境を適切に設定する必要があります (ADS 1.2/AXD 1.2.1)。
C++testスタンドアロン版での ADS 1.2 プロジェクトのテスト
CodeWarrior ベースのプロジェクトを C++test スタンドアロン版を使ってテストするには、次の操作を行います。
- CodeWarrior のプロジェクトのエクスポート機能 ( [File] > [Export Project] ) を使って、プロジェクト定義ファイルを XML ファイルとして保存します。デフォルトでは、オリジナル ファイル (.mcp ファイル) と同じディレクトリに XML ファイルが保存されます。
- mcp2make ユーティリティを使って、 .xml ファイルを適切な Makefile に変換します。この Makefile も同じディレクトリに作成されます。
cpptestscan
を使って Makefile をスキャンし、C++test のためにオプションを抽出します。詳細については「既存のビルド システムを使った C++test プロジェクト」 を参照してください。- 生成された .bdf ファイル (ビルド データ ファイル) を C++test にインポートします。GUI からでもコマンドラインからでもインポートできます。詳細については「既存のビルド システムを使った C++test プロジェクト」を参照してください。
ARM (RVDS) 対応 C++test プラグイン版での ADS 1.2 プロジェクトのテスト
ARM (RVDS) 対応 C++test プラグイン版を使って CodeWarrior ベースのプロジェクトをテストするには、次の操作を行います。
- CodeWarrior のプロジェクトのエクスポート機能 ( [File] > [Export Project] ) を使って、プロジェクト定義ファイルを XML ファイルとして保存します。デフォルトでは、オリジナル ファイル (.mcp ファイル) と同じディレクトリに XML ファイルが保存されます。
- RVDS Eclipse IDE を使って XML ファイルをインポートし、ワークスペースに新規プロジェクトを作成します。 それには、ARM Eclipse IDE を起動し、[File] メニューの [インポート] をクリックして [C/C++] > [CodeWarrior Project exported as XML] を選択します。
この後、ユーザーは通常と同じようにテストを継続できます。
なお、プロジェクトの設定または構造が変わるたびに上記のプロセスを繰り返す必要があります。この点は、将来のバージョンの C++test で改善される予定です。
ADS 1.2 テスト コンフィギュレーション
C++test には、ADS プロジェクトに特化した Run ADS 1.2 Tests というテスト コンフィギュレーションが用意されています。このテスト コンフィギュレーションは、以前にビルドされたテスト用実行モジュールを AXD Debugger で実行して実行結果を収集します。テスト実行フローの中核は次のようになります。
[Run ADS 1.2 Tests] テスト コンフィギュレーションは [ビルトイン] > [Embedded Systems] > [ARM] の下にあります。
テスト実行フローによるテスト コンフィギュレーションのカスタマイズ
組込み開発者にとって、単体テスト プロセスの流れを知ること、そしてソース コードに C++test が適用する一連のツールを知ることは重要です。テスト実行フローの多くの部分は、環境が異なっても同じであり、ほとんどの場合、フロー ステップの順序とパラメーターは変更するべきではありません。ただし特定の状況では、一部の重要なフロー ステップを調整する必要があります。C++test では、 XML に似たファイルを利用してフロー ステップを調整することができます。この XML ファイルには、定義済みセットから取得されたエンティティ/タグが記述されており、それぞれが 1 つのステップを表します。必須および任意のステップ パラメーターは、属性を使って提供されます。
テスト実行フローをカスタマイズするには、次の操作を行います。
- [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。
- テスト実行に使用するユーザー定義テスト コンフィギュレーションを選択します。
- [実行] タブの [全般] タブをクリックします。
- [テスト実行フロー] ドロップダウンから [カスタム フロー (ライセンスが必要です)] を選択して [編集] ボタンをクリックします。
- 変更したテスト実行フローを入力します。
- 既存のテスト実行フローを利用したい場合は、その既存のテスト実行フローを [利用可能な組込みテスト実行フロー] から選択して [XML を再現] ボタンをクリックします。選択したテスト実行フローの XML ファイルが表示され、ユーザーは必要に応じて編集できます。たとえば、ADS 1.2 のテストの場合、変更のベースとして [Run Unit Tests on AXD Debugger] を選択できます。
- [OK] をクリックしてファイルを保存します。XML 文書が検証されます。検証中に問題が発見された場合、問題がレポートされます。
組込みテストに合わせて一部のステップのカスタマイズが必要な場合があります。通常、ターゲット デバイスにテスト用実行モジュールを転送する方法およびテスト結果を C++test に戻す方法を制御するステップです。現在、2 つのオプションがあります。ファイル通信とソケット通信です。最後に、C++test がログを読むことができるよう、テスト結果は実行時ログ ファイルの形式でホスト マシンに必ず存在しなければなりません。ファイル通信では、テスト オブジェクト自体がログを生成します。ソケット通信では、テスト オブジェクトからストリームされるデータを取得および保持するため、ホスト マシンでリスナーが実行中でなければなりません。
ファイル通信では、次のステップをレビューおよび調整します。
- TestRunnerGenerationStep - 実行時ログ ファイルのパス (ターゲットのビュー)、属性:
testLogFile, covLogFile
- ReadTestLogStep - テスト ログ ファイルへのパス (ホスト)、属性:
testLogFile
- ReadDynamicCoverageStep - カバレッジ ログ ファイルへのパス (ホスト)、属性:
covLogFile
ソケット通信では、次のステップをレビューおよび調整します。
- TestRunnerWithSocketsGenerationStep - ホストへの接続パラメーター、属性:
resultsHost, testLogPort, covLogPort
- リスナーの設定
- ReadTestLogStep - テスト ログ ファイルへのパス (ホスト)、属性:
testLogFile
- ReadDynamicCoverageStep - カバレッジ ログ ファイルへのパス (ホスト)、属性:
covLogFile
以下において、主要な ADS の構成ステップについて説明します。主要なステップを理解していると、テスト実行フローを調整するときに役立ちます。
パート 1
このタグは、テスト実行プロセスの一部として次のステートメントを処理することを C++test に通知します。
<ExecuteTestsExecution>
パート 2
次の 2 つのタグは、前回のテストで作成されたあらゆる結果ファイルを削除します。
<RemoveFileStep file="${cpptest:testware_loc}/cpptest_results.tlog" /> <RemoveFileStep file="${cpptest:testware_loc}/cpptest_results.clog" />
パート 3
このステップは、Tja という C++test の内部スクリプト ユーティリティを実行します。Tja は、生成されたテスト用実行モジュール (run_tests.scr) を実行するために、ADS Debugger 用の実行スクリプトを作成します。標準出力からスクリプト ファイルに結果をリダイレクトするために BASH を使用している点に注意してください。このプロセスが円滑に進むには、BASH を PATH システム変数に設定する必要があります。
<CustomStep id="run_test" label="Preparing Debugger's Script..." commandLine="bash -c "\"${cpptest:cfg_dir}/../ bin/tja\" \"${cpptest:cfg_dir}/templates/for_recipes/ ads_test.tja\" > \"${cpptest:testware_loc}\run_tests.scr\""" workingDir="${cpptest:testware_loc}" result="${cpptest:testware_loc}/cpptest_results.tlog" />
パート 4
このステップは、ADS Debugger を起動して run_tests.scr バッチ ファイルの引数を渡します。適切なターゲットをロードし、実行ファイルを開き、.tlog
および .clog
結果ファイルを生成するために ADS Debugger が必要とする情報が ADS Debugger に渡されます。
<CustomStep id="run_test" label="Running Test Executable..." commandLine="axd -nologo -script ${cpptest:testware_loc}\run_tests.scr ${cpptest:testware_loc}/ ${project_name}Test.axf --start-after=${cpptestproperty: test_case_start_number}" workingDir="${cpptest:testware_loc}" result="${cpptest:testware_loc}/cpptest_results.tlog" />
パート 5
次の 2 つのステップは、結果を読み取って、GUI および最終レポートに表示します。
<ReadTestLogStep testLogFile="${cpptest:testware_loc}/cpptest_results.tlog" timeoutInfoProperty="test_exec_timeouted" /> <ReadDynamicCoverageStep covLogFile="${cpptest:testware_loc}/cpptest_results.clog" />
パート 6
次のタグは、実行セクションを終了します。
</ExecuteTestsExecution>
テスト実行フローの詳細については 「テスト実行フローのカスタマイズ」を参照してください。
トラブルシューティング
次のようなエラー メッセージは、ファイル サイズが大き過ぎたために ADS 1.2 コンパイラがファイルを処理できなかったことを表します。
--------------------------------------------------------------------------- --------------- line 9: Fatal error: Internal fault: 0x5e0c in 'TestSuite_KZ2dL_c_fa6c0755_test_main_4' Please contact your supplier. Process exited with code: 1 (error). ------------------------------------------------
このエラーが発生した場合、次の回避方法を試してください。
- ファイル中のテスト ケースの数を削減してください。
- たとえばカバレッジ インストゥルメントを無効にするなど、インストゥルメント後のファイルのサイズがより小さくなるよう、インストゥルメント モードを変更します。テスト コンフィギュレーションの [実行] > [全般] タブで、[インストゥルメント モード] から [カバレッジ計測なし (スタブあり)] を選択します。