Más contenido relacionado
La actualidad más candente (20)
Similar a RTミドルウェアサマーキャンプ2018「開発プロセスと RT コンポーネントのデバッグ・テスト手法」 (20)
RTミドルウェアサマーキャンプ2018「開発プロセスと RT コンポーネントのデバッグ・テスト手法」
- 4. 製品の開発
製品開発に関する予備知識
製品のフロー
企画 → 開発 → 製造 → 運用・保守
その他にも、研究や販売なども必要
製品の品質
不具合の発生は、訴訟が発生するなどの可能性
理想的な環境で1回動けば良いという研究レベルでは駄目
製品開発はどれくらいの人数がかかるのか
数十人~数百人 (組み込み開発の例)
製品開発の期間はどれくらいかかるのか
半年~2年くらい (組み込み開発の例)
4
- 11. RTC のテスト方法 (1/2)
テスト手順を守る
手順
1. テスト対象を決定
2. テスト入力と期待値を決定
3. テストを実行
4. 実行結果と期待値を比較
テスト対象を順に広げる
最初は中身をテスト
次は RTC をテスト
最後は全体でテスト
11
テスト対象テスト入力
期待値
実行結果
比較
期待値を事前に用意しておくこと
- 12. RTC のテスト方法 (2/2)
RTC の入出力をすべて考慮する
InPort/OutPort
コンソール
ファイル
デバイス (ロボット)
Ether, bluetooth,…
テストを効果的に実行する
テストをしやすい設計をする
テストをツールで自動化する
不具合の解析にツールの力を借りる
12
RTC の入出力は Port だけでない!!
以降では、これらの手法を紹介します
- 13. サマーキャンプ向けの戦略
作った RTC のみテスト
有り物 RTC は動くと信じる
RTC 単体のテストのみ行う
テスト項目を作りすぎない
RTCの仕様から考える
モード毎に1件くらいの粒度
論理部を分離する設計
論理部と I/O部を別 RTCへ
テスト簡易化を狙い、論理
部 RTC の I/O はPort のみ
13
テストしない
テストしない テストする
ロボット
駄目な例:
良い例:
ロボット駆動 RTC
軌道計算
RTC
ロボットRTC
HWSW
コンソール
画面出力RTC
ロボット
コンソール
- 16. rtshell (2/3) 16
おすすめの使い方1: スクリプトによる自動化
テスト入力を rtijnect
結果の取得をrtpirnt
テストをスクリプトで自動化する
1. test.sh を作成
2. chmod +x test.sh
3. ./test.sh で実行
4. test.log を確認
rtinject rtprint
#! /bin/sh
# コンポーネントの有効化
rtact localhost/Controller0
# RTC にテスト入力 (10)
rtinject localhost/Controller.rtc:in –c ‘RTC.TimedLong({time}, 10)’
# RTC から10秒間の結果を取得し、test.log に保存
rtprint localhost/Controller.rtc:out -t 10 > test.log
このサンプルは Linux 用のもの。
Windows で行う場合は、.sh
の代わりに.batを作る。
- 17. rtshell (3/3) 17
おすすめの使い方2: ログ保存 & ログ再生
コマンド rtlog の機能
ポートの出力をファイルに保存
ファイルに保存した内容をポートに入力
保存した内容の表示
前ページのコマンドたちを rtlog に置き換えることもできる
複雑な入力 (例えばゲームパッドの操作) などの記録にも使える
rtlog -p rtlog
rtinject rtprint
- 19. ExcelRTC (2/2) 19
おすすめの使い方: テストの自動化
お気づきの通り、ExcelRTC を入出力ツールに使用可能
rtshell と違い、GUI で操作できるのでわかりやすい
RTCの起動などは、rtshellと違い、システムエディターでや
る必要あり (ワンボタンでテスト自動化まではできない)
ExcelRTC ExcelRTC
rtinject rtprint
- 22. OpenRTM-aist 標準ログ機能 (1/3) 22
ツールの概要
便利機能
ログレベルに応じた出力
ファイルにも出力可能
1.ソースコードに出力処理を埋め込む 2.実行中にコンソールで出力を確認できる
ログレベル 想定される用途
FATAL 動作継続不可能な異常
ERROR 動作に影響のある異常
WARN 動作に影響の無い異常
INFO 処理上の重要な情報
NORMAL 処理上の情報
DEBUG デバッグ用の情報
TRACE デバッグ用の処理箇所特定情報
VERBOSE デバッグ用の冗⾧な情報
- 24. OpenRTM-aist 標準ログ機能 (3/3)
メリット
RTC 内部の状態を出力可能
ソースコード通りの出力
デメリット
出力処理は軽くない
ソースコードが汚れる
24
おすすめの使い方
ケース1: 適切な箇所に ERROR レベルの出力を出す
未実装部分の処理
エラー処理 (普段実行されない例外処理など)
設計上は動くはずがない処理 (default: など)
ケース2: ファイルに出しながら、リアルタイムにも見る
bash 上で tailf –f xxx.log を使う
- 25. RTコンポーネントデバッガ (1/2) 25
ツールの概要
GUIでツールのポートの入出力監視、値の変更ができる
グラフ表示など解析しやすい
インストール
以下URLからアーカイブをダウンロード
http://www.sec.co.jp/robot/download_tool.html
解凍したフォルダ内でスクリプトを実行
【Windows】 コマンドプロンプトで下記を実行
install_1.1.0.20120522.bat
【Linux】 シェルで下記を実行
chmod a+x install_1.1.0.20120522.sh && ./install_1.1.0.20120522.sh
生成されたフォルダ一式(org.openrtp.debugger_1.x.x.yyyymmdd)をOpenRTPのインストールされた
フォルダの plugins 以下にコピー
【Windows】 (例) C:¥Program Files¥OpenRTM-aist¥1.1.2¥utils¥OpenRTP¥plugins
【Linux】 (例) /usr/share/openrtm-1.1/eclipse/plugins/
- 26. RTコンポーネントデバッガ (1/2) 26
使い方 (※ 多彩な機能は同梱マニュアル参照)
1. OpenRTP 起動
2. メニュータブ:”ウィンドウ”→”パースペクティブを開く”→”その他”
→”RTC Debugger” を選択
3. 画面左上の NameServerView から RTC を 左下のAttach View にドラッグ&
ドロップする
RTCの状態などを表示
ポート間のデータの
記録やデータの再生
画像プレビューやデー
タをプロットしたグラフ
を出力
③
NameServerView
から RTC を
Attach View にド
ラッグ&ドロップ