Windows Embedded CE のテスト環境と活用
マイクロソフト Windows Embedded Partner（株）サムシングプレシャス
代表取締役社長 古賀信哉

はじめにz

普段の開発の立ち位置− ミドルウェア層の開発が主（DLNA関連など）− 必要に応じてデバイスドライバ（カーネルモジュール）

特定ターゲット向けのBSPもz

概要− 開発環境及び開発環境を用いた動作確認・テスト− 利用可能なユニットテスト用フレームワーク− 場合に応じたフレームワークの使い分け

Windows CE 6.0の開発環境z

IDEとクロスコンパイラ
Visual Studio .net 2005
ARM, SH-4, MIPS, x86z

リモートツールz

ターゲットコントロールz

カーネルデバッガ
ターゲットとホストのKITL接続による多彩な遠隔操作z

ARMベースのデバイスエミュレータ

Windows CE 6.0の開発環境
z

リファレンスはMSDNのWebサイトで公開− “Windows Embedded CE 6.0 Product

Documentation”
http://msdn.microsoft.com/en-us/library/bb159115.aspx− “Windows Embedded CE”
http://msdn.microsoft.com/en-us/library/bb847932.aspx− “Diagnostics and Debugging for Mobile andEmbedded Development”
http://msdn.microsoft.com/en-us/library/aa933834.aspx

Windows CEの開発環境を利用
z

実機での動作確認・テスト− 開発中のテスト・デバッグ作業を主にサポート− デバッグポートが必要− 実機の入手可能台数における制約z

デバイスエミュレータを用いた動作確認・テスト− 開発機（ホスト）の数だけテスト環境を構築可能− 作業場所を選ばない（開発機だけで作業可能）− 実機に依存した部分は検証困難

Windows CEの開発環境を利用
z

実機での動作確認・テスト− KITLによるターゲットとホストの接続− ターゲットコントロールを用いた操作− カーネルデバッガ

Windows CEの開発環境を利用
z

デバイスエミュレータを用いた動作確認・テスト− ARMエミュレータ− 周辺機器のエミュレータ（ネットワークカード）− 実機に依存しない部分の単体動作確認− デバイスドライバやAPIのダミー実装を用いてテスト

テスト用フレームワークの利用z

オープンソースのUnitTestフレームワーク− cppunit-x− CUnitz

Windows CE標準付属のテスト環境− CETKcppunit-xz

オープンソースのUnitTestフレームワーク（１）

入手先− http://sourceforge.jp/projects/cppunit-xz

ライセンス− LGPL v2z

特徴− 一括実行型のテスト向けに絞った、シンプルな構成− Test suiteをC++のクラスとして実装

cppunit-xz

オープンソースのUnitTestフレームワーク（１）

主な機能− 登録したテストケース群の一括実行− 専用マクロによる違反／エラーチェックと検出通知− 違反／エラー検出時の例外送出

z

利用の実例
− デバイスドライバの単体テスト

個人レベルの開発など、比較的小規模向け
z 省リソース環境でのテスト実施zCunit オープンソースのUnitTestフレームワーク（２）z

入手先− http://sourceforge.net/projects/cunit/z

ライセンス− LGPLz特徴− 一括実行に加え、対話実行が可能− 実行結果をXMLで出力可能− テストケースの名前と関数の配列を登録

Cunit オープンソースのUnitTestフレームワーク（２）z

主な機能− 一括実行と対話的実行（cppunit-xよりも機能豊富）− テスト結果のXML出力− Test suiteの階層付けに関連付けた対話的実行

z

利用の実例
− ミドルウェアの各モジュール単体テスト

チーム開発向け（専任者によるテストケース作成など）
z テスト結果のXMLファイルを納品文書にz

CETK Windows CE標準付属のテスト環境z

特徴− Windows CEの開発環境との統合− 標準のテストケースが多数付属− ホスト側モジュールとターゲット側モジュールで構成
z

遠隔操作用のUI
CETest.exez

テスト実行エンジンとログ収集・記録モジュール
Clientside.exe（CETest.exeとのインタフェース）
Tux.exe
Kato.exeCETK Windows CE標準付属のテスト環境z特徴− テスト実行エンジン（Tux.exe）の単体動作も可能

http://msdn.microsoft.com/en-us/library/aa934065.aspx
Clientside.exe

Logs

CETest.exe

Kato.exe
Tux.exe
Test DLLs

Host (Development Machine)

Target Device

CETK Windows CE標準付属のテスト環境z

主な機能（CUnitよりも機能豊富）− ターゲットデバイスのシステム構成に応じた、test suite群の自動選択− ホスト側UIによる対話的実行− 複数台のターゲットとの同時接続z

利用例− ターゲットデバイスに対する全体的なテスト− 複数台のターゲットに対する半自動テスト

フレームワーク／ツールの使い分け
z

適用対象範囲− システム全体 vs 個別モジュール− 既存デバイス向け、アプリケーション層向けz

開発規模と体制− 個人レベル開発とチーム開発− テストケース作成の担当者

フレームワーク／ツールの使い分けz

テストケースの作りやすさの違い− 単一アプリケーションかDLLか− 開発環境との統合（ウィザードの有無）

z

テストコードの可搬性の違い− 他OS（WinXP/Vista, Linux）用プロジェクトとの共用

z

単体利用のしやすさ vs 高機能さ

WinCEならではの利点など
z

テスト用バイナリのオンデマンドローディング− ホスト上のビルドディレクトリからローディング− リブート無しでテストとデバッグ（修正）を繰り返し可能z

充実したデバッグ環境− 強力なカーネルデバッガ− デバッグとテスト作業を支援するリモートツール群

まとめzWindows CEの開発環境

z

開発環境を用いた動作確認・テスト

zz

利用可能なユニットテスト用フレームワークとCETK
フレームワーク／ツールの使い分けを考察

Q&A

補足
z

追加の質問など− koga@stprec.co.jp までz

Windows Embedded CEの技術情報（日本語）− Windows Embedded CE 6.0 組み込みOS構築技法入門

http://itpro.nikkeibp.co.jp/article/COLUMN/20080212/293563− Windows Embeddedディベロッパセンター

http://www.microsoft.com/japan/windows/embedded/developercenter/default.mspx#jump03