SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
開発プロセスと RT コンポーネントのデ
バッグ・テスト手法
国立研究開発法人 産業技術総合研究所
ロボットイノベーション研究センター
ロボットプラットフォーム研究チーム
黒瀬 竜一
1
目次
開発プロセスについて
RTC のテスト方法
デバッグ・テストツール紹介
まとめ
2
開発プロセス 3
いきなりですが
開発プロセス
という言葉をご存知ですか?
製品の開発
製品開発に関する予備知識
製品のフロー
企画 → 開発 → 製造 → 運用・保守
その他にも、研究や販売なども必要
製品の品質
不具合の発生は、訴訟が発生するなどの可能性
理想的な環境で1回動けば良いという研究レベルでは駄目
製品開発はどれくらいの人数がかかるのか
数十人~数百人 (組み込み開発の例)
製品開発の期間はどれくらいかかるのか
半年~2年くらい (組み込み開発の例)
4
開発で求められるもの
製品に求められるもの
魅力的な機能
高品質
低価格 (開発費を安く、製造費を安く)
早期の発売 (開発期間を短く)
プロジェクトリーダーに求められるもの
PLの仕事は無限にあります
5
開発全体の計画
計画に対する進捗管理
他部署や顧客との折衝
開発環境の調達・整備
開発者のフォロー
開発者として開発
契約処理、納品処理
・・・
製品開発は何が難しいか 6
さて、あなたは製品開発のために、
30名規模のプロジェクトリーダー
を任されました。
どんな課題が発生するでしょうか?
こんな事件が発生します
製品発売後に、変なメッセージがネットワークに出力さ
れると言われる
開発者が便利と思ってデバッグ用メッセージを垂れ流し
先週の確認では遅れ0日なのに、今週は10日遅れ
1週間だから、遅れは最大5日じゃないの?
7
原因はプロジェクトのメンバーが、開発全体の流れ
と自身の役割 (成果物) を正しく認識していないこと
開発プロセスの概要
開発プロセスとは、
開発の工程を構造化したもの
開発工程の基本
V字開発
うれしいこと
開発全体の流れを共有できる
各工程の成果が明確になる
開発者間で会話できる
工程ごとに品質を確保できる
計画がしやすい
進捗が確認しやすい
8
システム
要求分析
システム
要求分析
システム
アーキ設計
システム
アーキ設計
ソフトウェア
要求分析
ソフトウェア
要求分析
ソフトウェア
アーキ設計
ソフトウェア
アーキ設計
ソフトウェア
詳細設計
ソフトウェア
詳細設計
ソフトウェア
実装
ソフトウェア
実装
ソフトウェア
単体テスト
ソフトウェア
単体テスト
ソフトウェア
結合テスト
ソフトウェア
結合テスト
ソフトウェア
(統合)テスト
ソフトウェア
(統合)テスト
システム
結合テスト
システム
結合テスト
システム
(統合)テスト
システム
(統合)テスト
V字開発の概要 9
システム
要求分析
システム
要求分析
システム
アーキ設計
システム
アーキ設計
ソフトウェア
要求分析
ソフトウェア
要求分析
ソフトウェア
アーキ設計
ソフトウェア
アーキ設計
ソフトウェア
詳細設計
ソフトウェア
詳細設計
ソフトウェア
実装
ソフトウェア
実装
ソフトウェア
単体テスト
ソフトウェア
単体テスト
ソフトウェア
結合テスト
ソフトウェア
結合テスト
ソフトウェア
(統合)テスト
ソフトウェア
(統合)テスト
システム
結合テスト
システム
結合テスト
システム
(統合)テスト
システム
(統合)テスト
シ
ス
テ
ム
開
発
ソ
フ
ト
ウ
ェ
ア
開
発
設計フェーズ テストフェーズ
V字開発の概要 10
システム
要求分析
システム
要求分析
システム
アーキ設計
システム
アーキ設計
ソフトウェア
要求分析
ソフトウェア
要求分析
ソフトウェア
アーキ設計
ソフトウェア
アーキ設計
ソフトウェア
詳細設計
ソフトウェア
詳細設計
ソフトウェア
実装
ソフトウェア
実装
ソフトウェア
単体テスト
ソフトウェア
単体テスト
ソフトウェア
結合テスト
ソフトウェア
結合テスト
ソフトウェア
(統合)テスト
ソフトウェア
(統合)テスト
システム
結合テスト
システム
結合テスト
システム
(統合)テスト
システム
(統合)テスト
シ
ス
テ
ム
開
発
ソ
フ
ト
ウ
ェ
ア
開
発
設計フェーズ テストフェーズ
開発プロセスに従うことは必須です。
OpenRTM を用いた開発に於いて、
ソフトのテスト工程はどうなるでしょうか。
次ページ以降で解説します。
RTC のテスト方法 (1/2)
テスト手順を守る
手順
1. テスト対象を決定
2. テスト入力と期待値を決定
3. テストを実行
4. 実行結果と期待値を比較
テスト対象を順に広げる
最初は中身をテスト
次は RTC をテスト
最後は全体でテスト
11
テスト対象テスト入力
期待値
実行結果
比較
期待値を事前に用意しておくこと
RTC のテスト方法 (2/2)
RTC の入出力をすべて考慮する
InPort/OutPort
コンソール
ファイル
デバイス (ロボット)
Ether, bluetooth,…
テストを効果的に実行する
テストをしやすい設計をする
テストをツールで自動化する
不具合の解析にツールの力を借りる
12
RTC の入出力は Port だけでない!!
以降では、これらの手法を紹介します
サマーキャンプ向けの戦略
作った RTC のみテスト
有り物 RTC は動くと信じる
RTC 単体のテストのみ行う
テスト項目を作りすぎない
RTCの仕様から考える
モード毎に1件くらいの粒度
論理部を分離する設計
論理部と I/O部を別 RTCへ
テスト簡易化を狙い、論理
部 RTC の I/O はPort のみ
13
テストしない
テストしない テストする
ロボット
駄目な例:
良い例:
ロボット駆動 RTC
軌道計算
RTC
ロボットRTC
HWSW
コンソール
画面出力RTC
ロボット
コンソール
ツール紹介 14
テスト
(動作を評価する)
rtshell
ExcelRTC
RTStorage
デバッグ
(不具合を解析する)
標準ログ出力機能
rtshell
RTコンポーネントデバッガ
☆おすすめ
☆おすすめ
☆おすすめ
rtshell (1/3) 15
ツールの概要
もう知ってますよね。ジェフさんの資料を見よう!!
https://github.com/gbiggs/rtshell
インストール方法
Windows: インストール不要
Linux: sudo pip install rtshell
メリット
インストール不要・簡単
コマンド処理可能
RTC のテストに最適
デメリット
高速なログ出力はできない
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を作る。
rtshell (3/3) 17
おすすめの使い方2: ログ保存 & ログ再生
コマンド rtlog の機能
ポートの出力をファイルに保存
ファイルに保存した内容をポートに入力
保存した内容の表示
前ページのコマンドたちを rtlog に置き換えることもできる
複雑な入力 (例えばゲームパッドの操作) などの記録にも使える
rtlog -p rtlog
rtinject rtprint
ExcelRTC (1/2) 18
ツールの概要
もうしってますね。宮本さん資料をみよう!!
インストール方法
宮本さん配布の USB を使うだけ
メリット
インストール不要・簡単
GUIのみで操作
RTC のテストに最適
デメリット
Windows 限定
テスト完全自動化できない
ExcelRTC (2/2) 19
おすすめの使い方: テストの自動化
お気づきの通り、ExcelRTC を入出力ツールに使用可能
rtshell と違い、GUI で操作できるのでわかりやすい
RTCの起動などは、rtshellと違い、システムエディターでや
る必要あり (ワンボタンでテスト自動化まではできない)
ExcelRTC ExcelRTC
rtinject rtprint
RTStorage (1/2) 20
ツールの概要
GUIからポートの出力データ保存ができます
GUIから保存したデータをポートに入力できます
使い方
1. RtStorage.exe を実行
2. 実行中の RTC が表示されるので記録したいポートのペアを選択し,追加ボタンを押下
3. レコード一覧に表示されたボタンで,ログの記録,一時停止,停止操作ができる
4. 上部のタブを切り替えることで,ログの再生や解析が可能 ④ タブの切替でログ再
生や解析が可能
③ ログの記録ボタン
② ポート登録追加ボタン
RTStorage (2/2) 21
インストール方法
https://github.com/zoetrope/RtStorage
インストーラはあると書かれているが実際はない
Visual Studio でビルドし、使用する
おすすめの使い方: テストの自動化
メリット
インストール不要・簡単
GUIのみで操作
デメリット
Windows 限定
テスト完全自動化できない
RTStorage RTStorage
rtinject rtprint
OpenRTM-aist 標準ログ機能 (1/3) 22
ツールの概要
便利機能
ログレベルに応じた出力
ファイルにも出力可能
1.ソースコードに出力処理を埋め込む 2.実行中にコンソールで出力を確認できる
ログレベル 想定される用途
FATAL 動作継続不可能な異常
ERROR 動作に影響のある異常
WARN 動作に影響の無い異常
INFO 処理上の重要な情報
NORMAL 処理上の情報
DEBUG デバッグ用の情報
TRACE デバッグ用の処理箇所特定情報
VERBOSE デバッグ用の冗⾧な情報
OpenRTM-aist 標準ログ機能 (2/3)
インストール方法
インストール不要
使い方
1. ソースコードにログ出力コードを書く
例 C++の場合: RTC_ERR((“エラーが発生しました”))
例 Pythonの場合: self.log.RTC_ERR(“エラーが発生しました”)
2. ログレベルを設定して実行する
rtc.conf を変更する
または、起動時にオプションをつける
23
rtc.conf
OpenRTM-aist 標準ログ機能 (3/3)
メリット
RTC 内部の状態を出力可能
ソースコード通りの出力
デメリット
出力処理は軽くない
ソースコードが汚れる
24
おすすめの使い方
ケース1: 適切な箇所に ERROR レベルの出力を出す
未実装部分の処理
エラー処理 (普段実行されない例外処理など)
設計上は動くはずがない処理 (default: など)
ケース2: ファイルに出しながら、リアルタイムにも見る
bash 上で tailf –f xxx.log を使う
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/
RTコンポーネントデバッガ (1/2) 26
使い方 (※ 多彩な機能は同梱マニュアル参照)
1. OpenRTP 起動
2. メニュータブ:”ウィンドウ”→”パースペクティブを開く”→”その他”
→”RTC Debugger” を選択
3. 画面左上の NameServerView から RTC を 左下のAttach View にドラッグ&
ドロップする
RTCの状態などを表示
ポート間のデータの
記録やデータの再生
画像プレビューやデー
タをプロットしたグラフ
を出力
③
NameServerView
から RTC を
Attach View にド
ラッグ&ドロップ
まとめ
作成した RTC はテストしましょう
サマーキャンプは短期間なので、自作部分に限定しましょう
テストしやすい形に設計しましょう
RTC のテストは手順に従いましょう
サマーキャンプは短期間なので、テスト項目を絞りましょう
RTC のテストはツールを十分活用して行いましょう
ソースコード修正するたびにテストできるように、テストは
(半)自動化しましょう
デバッグもツールを十分活用して行いましょう
27

Más contenido relacionado

La actualidad más candente

Rtmコンテスト必勝法
Rtmコンテスト必勝法Rtmコンテスト必勝法
Rtmコンテスト必勝法
openrtm
 
2013 summercamp 06
2013 summercamp 062013 summercamp 06
2013 summercamp 06
openrtm
 
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
openrtm
 

La actualidad más candente (20)

190605 01
190605 01190605 01
190605 01
 
RTミドルウェア強化月間2017 in 東京都立産業技術研究センター・RTミドルウェア講習会
RTミドルウェア強化月間2017 in 東京都立産業技術研究センター・RTミドルウェア講習会RTミドルウェア強化月間2017 in 東京都立産業技術研究センター・RTミドルウェア講習会
RTミドルウェア強化月間2017 in 東京都立産業技術研究センター・RTミドルウェア講習会
 
Rtshell 2017
Rtshell 2017Rtshell 2017
Rtshell 2017
 
2017 summercamp 04
2017 summercamp 042017 summercamp 04
2017 summercamp 04
 
ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部
 
Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料Rtミドルウェア講習会 第1部資料
Rtミドルウェア講習会 第1部資料
 
NEDO講座 MoveIt! チュートリアル 第1部
NEDO講座 MoveIt! チュートリアル 第1部NEDO講座 MoveIt! チュートリアル 第1部
NEDO講座 MoveIt! チュートリアル 第1部
 
OpenRTM-aist入門
OpenRTM-aist入門OpenRTM-aist入門
OpenRTM-aist入門
 
Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料Rtミドルウェア講習会 第2部資料
Rtミドルウェア講習会 第2部資料
 
2019 summercamp 03
2019 summercamp 032019 summercamp 03
2019 summercamp 03
 
2016 summercamp rtshell入門
2016 summercamp rtshell入門2016 summercamp rtshell入門
2016 summercamp rtshell入門
 
RTミドルウェア応用実習
RTミドルウェア応用実習RTミドルウェア応用実習
RTミドルウェア応用実習
 
Rtmコンテスト必勝法
Rtmコンテスト必勝法Rtmコンテスト必勝法
Rtmコンテスト必勝法
 
Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部Japan Robot Week 2016 RTM講習会 第1部
Japan Robot Week 2016 RTM講習会 第1部
 
190605 04
190605 04190605 04
190605 04
 
2013 summercamp 06
2013 summercamp 062013 summercamp 06
2013 summercamp 06
 
Robomec2015講習会 150517 01
Robomec2015講習会 150517 01Robomec2015講習会 150517 01
Robomec2015講習会 150517 01
 
200923 01jp
200923 01jp200923 01jp
200923 01jp
 
ROBOMECH2017 RTM講習会 第1部・その1
ROBOMECH2017 RTM講習会 第1部・その1ROBOMECH2017 RTM講習会 第1部・その1
ROBOMECH2017 RTM講習会 第1部・その1
 
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
Rtミドルウェアサマーキャンプ資料2021_菅佑樹Rtミドルウェアサマーキャンプ資料2021_菅佑樹
Rtミドルウェアサマーキャンプ資料2021_菅佑樹
 

Similar a RTミドルウェアサマーキャンプ2018「開発プロセスと RT コンポーネントのデバッグ・テスト手法」

ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
SIGSTJ
 
Rsj2013 sekiyama 3
Rsj2013 sekiyama 3Rsj2013 sekiyama 3
Rsj2013 sekiyama 3
openrtm
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS Conference
Keiju Anada
 
言語差異によるTDDプロセスへの影響度の解析
言語差異によるTDDプロセスへの影響度の解析言語差異によるTDDプロセスへの影響度の解析
言語差異によるTDDプロセスへの影響度の解析
pocketberserker
 

Similar a RTミドルウェアサマーキャンプ2018「開発プロセスと RT コンポーネントのデバッグ・テスト手法」 (20)

[NEDO特別講座] OSS活用のためのライセンス解説コース
[NEDO特別講座] OSS活用のためのライセンス解説コース[NEDO特別講座] OSS活用のためのライセンス解説コース
[NEDO特別講座] OSS活用のためのライセンス解説コース
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
 
200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論
 
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
 
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0
 
Rsj2013 sekiyama 3
Rsj2013 sekiyama 3Rsj2013 sekiyama 3
Rsj2013 sekiyama 3
 
チケット駆動開発を用いたソフトウェア品質改善事例
チケット駆動開発を用いたソフトウェア品質改善事例チケット駆動開発を用いたソフトウェア品質改善事例
チケット駆動開発を用いたソフトウェア品質改善事例
 
160608 02
160608 02160608 02
160608 02
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS Conference
 
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
[3rd 長崎QDG] チームで、長期間で、たくさんのソフトウェアを快適に開発し、価値を生み続けるためのエンジニアリング
 
Agile overview
Agile overviewAgile overview
Agile overview
 
13_B_5 Who is a architect?
13_B_5 Who is a architect?13_B_5 Who is a architect?
13_B_5 Who is a architect?
 
20050809
2005080920050809
20050809
 
nikkeibp20131120public
nikkeibp20131120publicnikkeibp20131120public
nikkeibp20131120public
 
Open 棟梁 プロジェクトの、省力・省人・少人化による、コスト削減の全容。
Open 棟梁 プロジェクトの、省力・省人・少人化による、コスト削減の全容。Open 棟梁 プロジェクトの、省力・省人・少人化による、コスト削減の全容。
Open 棟梁 プロジェクトの、省力・省人・少人化による、コスト削減の全容。
 
Presentation oct-2018-tokyo r
Presentation oct-2018-tokyo rPresentation oct-2018-tokyo r
Presentation oct-2018-tokyo r
 
ソフトウェアテストの最新動向
ソフトウェアテストの最新動向ソフトウェアテストの最新動向
ソフトウェアテストの最新動向
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
2015RTミドルウエア講習会
2015RTミドルウエア講習会2015RTミドルウエア講習会
2015RTミドルウエア講習会
 
言語差異によるTDDプロセスへの影響度の解析
言語差異によるTDDプロセスへの影響度の解析言語差異によるTDDプロセスへの影響度の解析
言語差異によるTDDプロセスへの影響度の解析
 

Más de openrtm

Más de openrtm (20)

ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部ROBOMECH2023 RTミドルウェア講習会 第1部
ROBOMECH2023 RTミドルウェア講習会 第1部
 
ピッキングシステム
ピッキングシステムピッキングシステム
ピッキングシステム
 
GNGを使った未知環境における経路計画
GNGを使った未知環境における経路計画GNGを使った未知環境における経路計画
GNGを使った未知環境における経路計画
 
まねっこロボット
まねっこロボットまねっこロボット
まねっこロボット
 
商品自動補充ロボットシステム
商品自動補充ロボットシステム商品自動補充ロボットシステム
商品自動補充ロボットシステム
 
RTサマーキャンプ2022最終発表_都立大.pptx
RTサマーキャンプ2022最終発表_都立大.pptxRTサマーキャンプ2022最終発表_都立大.pptx
RTサマーキャンプ2022最終発表_都立大.pptx
 
SysML実習20220822SC_GA.pdf
SysML実習20220822SC_GA.pdfSysML実習20220822SC_GA.pdf
SysML実習20220822SC_GA.pdf
 
RTミドルウェアサマーキャンプ資料2022.pdf
RTミドルウェアサマーキャンプ資料2022.pdfRTミドルウェアサマーキャンプ資料2022.pdf
RTミドルウェアサマーキャンプ資料2022.pdf
 
5.総合演習(2)
5.総合演習(2)5.総合演習(2)
5.総合演習(2)
 
4.総合演習(1)
4.総合演習(1)4.総合演習(1)
4.総合演習(1)
 
3.RTCプログラミング演習
3.RTCプログラミング演習3.RTCプログラミング演習
3.RTCプログラミング演習
 
2.プログラミングの基礎
2.プログラミングの基礎2.プログラミングの基礎
2.プログラミングの基礎
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
 
Slam実習
Slam実習Slam実習
Slam実習
 
Rtshell入門
Rtshell入門Rtshell入門
Rtshell入門
 
Rtコンポーネント作成入門
Rtコンポーネント作成入門Rtコンポーネント作成入門
Rtコンポーネント作成入門
 
RTミドルウェアサマーキャンプ2021_坂本武志_1
RTミドルウェアサマーキャンプ2021_坂本武志_1RTミドルウェアサマーキャンプ2021_坂本武志_1
RTミドルウェアサマーキャンプ2021_坂本武志_1
 
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
Rtミドルウェアサマーキャンプ資料2021_坂本武志_2
 
201111 05
201111 05201111 05
201111 05
 
201111 04
201111 04201111 04
201111 04
 

RTミドルウェアサマーキャンプ2018「開発プロセスと RT コンポーネントのデバッグ・テスト手法」