このセクションの内容:

概要

以下のセクションでは、Windows Mobile を使ってコンパイル/ビルドすることを目的としたコードに対して、静的解析と単体テストを実行する方法について説明します。

Visual Studio 対応 C++test は、Window Mobile 5 および 6 の Mobile SDK を直接サポートします。その他のインストールは必要ありません。

Microsoft eMbedded Visual C++ 4.0 プロジェクトのテストには、Eclipse 対応の C++test スタンドアロン版を使用してください。

プロジェクトの作成と構成

このセクションでは、Windows Mobile 用 Visual Studio プロジェクトを C++test でテストするために構成する方法について説明します。

Windows Mobile/Windows CE 用に正しく構成された Visual Studio プロジェクトでは、C++test 静的解析のための特別な設定は必要ありません。

単体テストの場合、ランタイム ライブラリが必要です。ランタイム ライブラリは、C++test で自動的にビルドすることも、Visual Studio IDE または Makefile から手動でビルドすることもできます。デフォルトは自動ビルドです。ランタイム ライブラリの詳細については 「 C++test ランタイム ライブラリのビルド」を参照してください。

プロジェクトの設定が正しいかどうかを検証するには、次の操作を行います。

  1. ソリューション エクスプローラーで、設定を変更するプロジェクトのノードを右クリックし、ショートカット メニューの [Parasoft] > [プロパティ] をクリックします。  
  2. 適切なコンパイラの種類が指定されていることを確認します。この場合は [Microsoft Visual C++ x.x for Windows Mobile] です。  
    • ほとんどの場合、[自動検出] ボタンをクリックして、適切なコンパイラ構成を自動的に選択できます。別のコンパイラのバイナリを使用する必要がある場合は、[プロジェクト設定と同期化] チェックボックスをオフにし、適切な場所を手動で指定してください。  
  3. 例えば Debug や Release など、代わりとなるプロジェクト構成を使用したい場合、[コンフィギュレーション] ドロップダウン リストから選択します。  

C++test プロジェクトのプロパティの詳細については、「オプション設定の参照と変更 」を参照してください。

静的解析

このセクションでは、Windows Mobile を使ってコンパイル/ビルドすることを目的としたコードに対して静的解析を実行する方法について説明します。

静的解析はピュア コードに対してのみ実行されるため、テスト オブジェクトのリンクと実行に関連する設定は、静的解析では必要ありません。ただし、コンパイラ設定はすべて適切にセットする必要があります。

静的解析を実行するには、次の操作を行います。

  1. ソリューション エクスプローラーで、テストするリソースのノードを選択します。1 つのファイル、複数のファイル、またはプロジェクト全体を選択できます。  
  2. 次のいずれかの操作を行って、解析を開始します。  
    • ツールバーの [テスト] ボタンの右側のプルダウン ボタンをクリックして適切なテスト コンフィギュレーションを選択します。  
    • [Parasoft] メニューの [テスト] をポイントし、適切なテスト コンフィギュレーションを選択します。

 

解析が開始すると、C++test は解析オプションを収集して解析スコープを計算した後、静的解析を開始します。解析が終了すると、サマリ ダイアログが表示され、C++test の出力パネルに静的解析の結果が表示されます。この時点で、結果をレビューして問題に対処するだけでなく、静的解析についてのレポートを生成することもできます。詳細については次のセクションを参照してください。

詳細情報

静的解析の実行に関する全般的な情報については 「静的コード解析」 および 「フロー解析」を参照してください。

実行時テスト

このセクションでは、実行時テストを構成して実行する方法について説明します。

このセクションの内容:

環境固有の構成

Microsoft ActiveSync を使って単体テストを自動化する

単体テストの最中に通信チャネルとして Microsoft ActiveSync を使用するのを簡単にするために、ASconnector コマンドライン ツールが用意されています。 ASconnector は次のタスクを自動化します。

  • ターゲットまたはエミュレーターにテスト用実行モジュールをコピーします。  
  • テスト用実行モジュールをリモートで開始します。  
  • 単体テストの終了を検出します。  
  • ターゲットまたはエミュレーターからホストにログ ファイルをコピーします。  
  • 指定のエミュレーターを起動します。  

ASconnector の詳細については 「ASconnector を使って単体テストを実行する」を参照してください。

"Build and run test executable for Windows Mobile/CE using ActiveSync" テスト フローは、 通信チャネルとして ActiveSync を使用する単体テストの設定を容易にするために特に設計されたものです。ASconnector はこのフローの CustomStep で起動されます。CustomStep をさらにカスタマイズしてテスト環境に合わせることができます。

このテスト フローは、実際のターゲット デバイスだけでなくエミュレーターを使った単体テストもサポートします。

ここでは、ターゲット デバイス (またはエミュレーター) がホストに適切に接続していて、単体テストの実行前に ActiveSync が起動しているものとします。この接続は ASconnector によって使用されます。

次のコードはCustomStep の例であり、このシナリオで使用することができます。

<CustomStep
	id="run_test"
	label="Running test executable..." 
	commandLine="&quot;ASconnector.exe&quot; 
		&quot;--
	te=${cpptest:testware_loc}\${project_name}Test.exe&quot;
		&quot;--ta=arm&quot; 
		--testExecutableCmd 
		--start-after=${cpptestproperty:test_case_start_number}" 
		workingDir="${cpptest:testware_loc}"
/>


ASconnector を使って単体テストを実行する

ASconnector を使用すると、Microsoft ActiveSync を通信チャネルとして使ってターゲット デバイスまたはエミュレーターでの単体テストを自動化することができます。

ASconnector は次のオプションを使ってカスタマイズすることができます。

ASconnector [options]... [--ExecutableCmd ...]

 

オプションと書式

短縮系

説明

--testExecutable=<path>

--te

ホストでのターゲットの実行モジュールへのパスをホスト マシンで指定します。

このオプションは必須です。

--logFile=<target_path>

--lf

ターゲット デバイスでのログ ファイルへのパスを指定します。ログ ファイルは、テスト用実行モジュールの実行が完了した後にホストにダウンロードされます。デフォルトでは、ログ ファイルはホストの作業ディレクトリにダウンロードされます。ダウンロードされる場所は  --logDir オプションで変更できます。カンマで区切ったファイルのリストを発行できます。このオプションを指定しない場合、標準のログ ファイルである cpptest_results.tlog および cpptest_results.clog が処理されます。

--logDir=<path>

--ld

ActiveSync の接続を ASconnector が待機する時間を指定します。単位はミリ秒です。

0 に設定した場合、タイムアウトは起こりません。

デフォルトは 8000 ミリ秒です。

--targetArch=<arch>

--ta

ターゲット プラットフォームのアーキテクチャ。次のいずれかを指定できます。

arm mips sh x86 emu  (エミュレーター)

--printHelp

--help

オプションについての説明が表示されます。

--testExecutableCmd <...>

N/A

このオプションの後、残りのコマンドラインは直接ターゲット実行モジュールに渡されます。

プログラム フローは次のステップから構成されます。

  1. ターゲット実行モジュールがホストからターゲットにコピーされます。  
  2. 同じバージョンのターゲット実行モジュールがすでにコピーされていることをプログラムが検出した場合 (例えば以前のテスト フローの実行でコピー済みである場合など)、ターゲット実行モジュールはコピーされません。同じバージョンかどうかを調べるために、ターゲット実行モジュールのタイムスタンプがチェックされます。  
  3. ターゲット実行モジュールが起動し、テストが開始します。  
  4. テストが完了すると、ログ ファイルがターゲット システムからホストにコピーされます。  
  5. 一時ログ ファイルが削除されます。  

単体テスト

次のテスト コンフィギュレーションは、Windows Mobile/Windows CE アプリケーションでの利用に特化したものです。

  • Build and Run Test Executable for Windows Mobile or Windows CE Using ActiveSync Windows Mobile/Windows CE のアプリケーションをビルドし、エミュレーターにデプロイして実行します。通信チャネルとして ActiveSync が使用されます。このフローを使用するには、ホスト マシンとターゲット マシンの両方が ActiveSync をサポートする必要があります。ActiveSync がサポートする方法で接続された実際のデバイスか、またはエミュレーターがターゲットになることができます。 詳細については 「アプリケーション監視」を参照してください。  
  • Build Test Executable for Windows Mobile Windows Mobile/Windows CE のアプリケーションをビルドします。このテスト用実行モジュールは、ユーザーが手動でターゲット デバイスに移動して実行する必要があります。ファイル通信を使用します。デフォルトでは ./Storage Card/cpptest_results.tlog および ./Storage Card/cpptest_results.clog にそれぞれテスト結果とカバレッジ結果が格納されます。  
  • Build and Run Test Executable for Pocket PC Windows Mobile Pocket PC のためのテスト用実行モジュールをビルドして実行します。エミュレーターで Storage Card としてホスト ディレクトリを共有し、ファイル通信を使用します。デフォルトでは ./Storage Card/cpptest_results.tlog および ./Storage Card/cpptest_results.clog にそれぞれテスト結果とカバレッジ結果が格納されます。 システム ブート後の自動スタートを容易にするために、テスト用実行モジュールは "2577" というサブディレクトリに生成されます。Windows Mobile SDK の PPC_USA.BIN イメージが使用されます。実行が終了してエミュレーターが閉じると、テスト結果が C++test に読み込まれて表示されます。  
  • Build and Run Test Executable for Smartphone Windows Mobile Smartphone のテスト用実行モジュールをビルドして実行します。エミュレーターで Storage Card としてホスト ディレクトリを共有し、ファイル通信を使用します。デフォルトでは ./Storage Card/cpptest_results.tlog および ./Storage Card/cpptest_results.clog にそれぞれテスト結果とカバレッジ結果が格納されます。 システム ブート後の自動スタートを容易にするために、テスト用実行モジュールは "2577" というサブディレクトリに生成されます。Windows Mobile SDK の SP_USA_GSM_QVGA_VR.BIN イメージが使用されます。実行が終了してエミュレーターが閉じると、テスト結果が C++test に読み込まれて表示されます。  

最後の 3 つのフローは、Microsoft Device Emulator での使用を目的としています。Windows Mobile/Windows CE テスト フロー定義で使用される次のプロパティをカスタマイズして、特定の環境に合ったフロー定義にすることができます。

  • emulator_path エミュレーターの実行ファイルへのパス。デフォルトでは "C:\Program Files\Microsoft Device Emulator\1.0\DeviceEmulator.exe" に設定されます。  
  • platform_dir 実行ファイルが生成されるサブディレクトリの名前。デフォルトでは "2577" に設定されます。  
  • Image_path  エミュレーターの Windows CE イメージ ファイルへのパス。Pocket PC の場合、デフォルトでは "C:\Program Files\Windows Mobile 5.0 SDK R2\PocketPC\DeviceEmulation\0409\PPC_USA.BIN" に設定されます。  
  • Additional_parameters  エミュレーターの付加コマンドライン パラメーター。Pocket PC の場合、"/VMID {d1a7b239-28d5-4485-9b8c-5764e3dc79b6} /memsize 128" に設定されます。  
  • skin スキン XML ファイルへのパス。Pocket PC の場合、デフォルトでは "C:\Program Files\Windows Mobile 5.0 SDK R2\PocketPC\DeviceEmulation\Pocket_PC\Pocket_PC.xml" に設定されます。  

詳細情報

 C++test を使って単体テスト ケースを生成して実行する方法の詳細については 「テストの作成と実行」を参照してください。  

アプリケーション監視

次のテスト コンフィギュレーションは、アプリケーション監視モードでの Windows Mobile/Windows CE の使用に特化したものです。

  • Build and Run Application with Memory Monitoring for Windows Mobile or Windows CE Using ActiveSync Windows Mobile/Windows CE のアプリケーションをビルドして実行します。通信チャネルとして ActiveSync が使用されます。このフローを使用するには、ホスト マシンとターゲット マシンの両方が ActiveSync をサポートする必要があります。ActiveSync がサポートする方法で接続された実際のデバイスか、またはエミュレーターがターゲットになることができます。 詳細については 「アプリケーション監視」を参照してください。  
  • Build and Run Application with Memory Monitoring for Pocket PC Windows Mobile Pocket PC のアプリケーションをビルドして実行します。エミュレーターで Storage Card としてホスト ディレクトリを共有し、ファイル通信を使用します。デフォルトでは ./Storage Card/cpptest_results.tlog および ./Storage Card/cpptest_results.clog にそれぞれテスト結果とカバレッジ結果が格納されます。 システム ブート後の自動スタートを容易にするために、テスト用実行モジュールは "2577" というサブディレクトリに生成されます。Windows Mobile SDK の PPC_USA.BIN イメージが使用されます。アプリケーションのテストを終了してエミュレーターを閉じると、テスト結果が C++test に読み込まれて表示されます。  
  • Build and Run Application with Memory Monitoring for Smartphone Windows Mobile Smartphone のテスト用実行モジュールをビルドして実行します。エミュレーターで Storage Card としてホスト ディレクトリを共有し、ファイル通信を使用します。デフォルトでは ./Storage Card/cpptest_results.tlog および ./Storage Card/cpptest_results.clog にそれぞれテスト結果とカバレッジ結果が格納されます。 システム ブート後の自動スタートを容易にするために、テスト用実行モジュールは "2577" というサブディレクトリに生成されます。Windows Mobile SDK の SP_USA_GSM_QVGA_VR.BIN イメージが使用されます。アプリケーションのテストを終了してエミュレーターを閉じると、テスト結果が C++test に読み込まれて表示されます。  

最後の 2 つのフローは Microsoft Device Emulator での使用を目的としたものです。ほかの単体テスト フローと同じようにカスタマイズすることができます。

詳細情報

アプリケーション監視および実行時エラー検出の実行に関する全般的な情報については 「実行時エラー検出」を参照してください。

  • No labels