Upgrade to Pro — share decks privately, control downloads, hide ads and more …

組込み向けテスト実行フレームワーク のご紹介

misawa-san
December 11, 2021

組込み向けテスト実行フレームワーク のご紹介

STAC2021資料

misawa-san

December 11, 2021
Tweet

More Decks by misawa-san

Other Decks in Programming

Transcript

  1. 組込みCI研究WG
    presents
    「組込み向けテスト実行フレームワーク
    のご紹介」
    組込みCI研究WG 見澤 広志
    1
    © 2021 組込みCI研究WG All rights reserved
    2021/12/11

    View Slide

  2. 2
    ・見澤 広志
    ・大阪府の出身。
    ・半導体部品メーカを経て、
    今は自動車関連会社で
    ソフト開発に従事。
    ・JaSST Tokai実行委員
    ・組込みCI研究WG
    ・最近の興味
    AWS、Docker、CI
    ・趣味
    子どもに動くおもちゃ作り
    リングフィットアドベンチャー(Lv 330)
    © 2021 組込みCI研究WG All rights reserved
    2021/12/11
    自己紹介

    View Slide

  3. 3
    © 2021 組込みCI研究WG All rights reserved
    2021/12/11
    課題1 ハードと統合した状態でテストが必要。
    コーディング
    Sys要件定義
    SW要件定義
    SWアーキテクチャ設計
    SW詳細設計
    Sysアーキテクチャ設計
    SW単体テスト
    SW結合テスト
    SW総合テスト
    Sys結合テスト
    Sys総合テスト
    組込み製品のテストの課題
    ②ソフトウェアのみ
    ①ハードと統合


    課題2 ソフトウェアの機能確認を先行して不具合を潰しこみたいが、
    汎用ツールが揃っていない。

    View Slide

  4. 4
    © 2021 組込みCI研究WG All rights reserved
    2021/12/11
    課題3 ソフトウェアだけのテスト環境を作ったとしても、
    入出力が異なる為、テストケースを再利用しずらい。
    組込みのテスト前倒しの課題
    テスト対象
    テスト環境
    (SILS)
    センサ アクチュエータ
    マイコン
    Software
    テスト環境
    (HILS)
    テスト対象
    (ハードと統合)
    センサ アクチュエータ
    テスト対象
    (ソフトウェアのみ)
    テスト環境
    (PILS/S-PILS)
    センサ アクチュエータ
    実物 模擬
    【凡例】
    テスト環境② テスト環境①
    テスト環境②
    入出力=ハードの入出力
    (ピン1=2.5Vなど)
    入出力=ソフトの入出力
    (変数1=250など)
    入出力=ソフトの入出力
    (変数1=250など)

    View Slide

  5. 課題と対策
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 5
    《課題》
    ・ ハードと統合した状態でテストが必要。
    ・ ソフトウェアの機能確認を先行して不具合を潰しこみたいが、汎用ツールが揃っていない。
    ・ テスト環境毎に入出力が異なる為、テストケースを再利用しずらい。
    《対策》
    ・ SILS環境をオープンソースを活用して作成する。
    ・ シナリオレベルのテストケースをテスト環境で共通化する。
    ・ テスト環境の違いは実装側(ライブラリ)で吸収する。

    View Slide

  6. 外部照明システム
    外部照明システム
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 6
    環境光
    ENGIN
    START
    イグニッション
    状態
    ECU A ECU B
    電圧
    テスト対象
    ①夜間、駐車灯ON状態
    ②エンジンON
    ③駐車灯から通過灯に切り替わること
    《テストのシナリオ》
    フォトセンサ

    駐車灯
    通過灯


    通信
    (I2C)


    View Slide

  7. 外部照明システム
    7
    2021/12/11 7
    © 2021 組込みCI研究WG All rights reserved
    外部照明
    ECU
    外部照明システムのテスト環境(HIL)
    © 2021 組込みCI研究WG All rights reserved
    フロントスポット
    ライトECU
    通信(I2C)
    フォトセンサ
    実物 実物
    実物
    模擬
    環境光
    イグニッション状態
    模擬
    駐車灯
    実物
    通過灯
    実物
    フォトセンサ
    フォトセンサ

    電圧


    電圧
    電圧
    PWM
    PWM
    模擬(人)
    模擬(人)
    実物

    ロボットフレームワーク
    HIL装置
    テストケース(シナリオ)
    ライブラリ(HILS用)

    View Slide

  8. 1
    1
    外部照明システム
    2021/12/11
    8
    外部照明ECU
    外部照明システムのテスト環境(SIL)
    © 2021 組込みCI研究WG All rights reserved
    フロントスポットライトECU
    ROSの
    TCP/IP
    フォトセンサ
    模擬
    環境光
    イグニッション状態
    模擬
    駐車灯
    通過灯
    フォトセンサ
    フォトセンサ
    数値
    (光)
    数値
    (電圧)
    数値
    (光)
    電圧
    (数値)
    模擬(人)
    模擬(人)
    ライブラリ
    ライブ
    ラリ 模擬
    ライブ
    ラリ
    模擬
    スタブ ソフト
    実物 模擬
    スタブ
    模擬
    模擬
    スタブ
    実物 模擬
    スタブ
    ライブ
    ラリ
    ライブ
    ラリ
    模擬
    模擬
    数値
    (光)
    ライブ
    ラリ
    ライブ
    ラリ
    電圧
    (数値)
    ソフト
    PWM(数値)
    docker on Amazon Web Service
    ラッパーコード ラッパーコード
    ロボットフレームワーク
    テストケース(シナリオ)
    ライブラリ(SILS用)
    PWM(数値)
    SIL装置

    View Slide

  9. ラッパーコードの補足
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 9
    テスト対象
    ラッパーコード
    ラッパーコード

    View Slide

  10. ラッパーコードの補足 ~続き~
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 10
    ECU実行制御サーバ
    Flask
    (Webサーバ)
    Python
    SILS用
    テストケース
    (python)
    ECU実行制御サーバ
    Flask
    (Webサーバ)
    Python
    外部照明
    ECUソフト
    (C言語)
    フロント
    スポットライ
    トECUソフト
    (C言語)
    SharedMemory
    SharedMemory
    ラッパーコード
    ラッパーコード

    View Slide

  11. デモ(HILS環境)
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 11
    https://www.youtube.com/channel/UCMS_fCjRiB2XjakCR5fGLGQ

    View Slide

  12. デモ(SILS環境)
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 12
    https://www.youtube.com/channel/UCMS_fCjRiB2XjakCR5fGLGQ

    View Slide

  13. 本ツールのメリット、デメリット
    《メリット》
    ・ ソースコードがあれば、早期にテストを始めることができる。 (品質)
    ・ 機能的な不具合を実機が無くても、潰すことができる。 (品質)
    ・ ソフトウェアの為、テスト環境を増やすことができる。 (品質)
    ・ シナリオレベルでテストケースを再利用することができる。 (費用)
    ・ オープンソースを使用している為、安価に作成できる。 (費用)
    《デメリット》
    ・ IT系のツールを駆使する為、組込み系の人材には敷居が高い。
    ・ ライブラリのメンテナンスするのが難しい。
    ・ リアルタイム性能の検証に使用できない。
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 13

    View Slide

  14. テスト実行結果レポート(SIL環境)
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 14
    テストケース(HIL、SIL共通)

    View Slide

  15. 2021/12/11 © 2021 組込みCI研究WG All rights reserved 15
    テストケース
    異常系処理の為、
    実行されなかった。
    テスト実行結果レポート(SIL環境)

    View Slide

  16. 入手方法
    SILS/HILS環境で共通テストケースを使用できるか検証するため、
    下記のテスト実行フレームワークを作成しました。
    下記URLから、デモで使用したテストケース付きの、環境一式が入手できます。
    「組込み向けテスト実行フレームワーク」
    https://github.com/misawa-san/ExteriorLightSystem
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 16

    View Slide

  17. 実行方法(SIL環境)
    docker環境で動作させてください。
    ■操作手順
    ①git clone https://github.com/misawa-san/ExteriorLightSystem.git
    ②cd ExteriorLightSystem
    ③sudo chmod -R 777 .
    ④docker-compose -f docker-compose.yml up -d --build
    ⑤docker-compose -f docker-compose.yml up -d --build
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 17

    View Slide

  18. 参考
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 18
    SILS環境の場合
    HILS環境の場合
    キーワードを並べて
    テストケースを作る
    (キーワード駆動
    スクリプティング)
    実装テクニックにより、
    SILS環境とHILS環境のどちらも、
    同じテストケースを使用する。
    テストケース

    View Slide

  19. 組込みCI研究WG参加者募集
    2021/12/11 © 2021 組込みCI研究WG All rights reserved 19
    組込みCI研究WGでは、継続的インテグレーション、継続的テスト
    継続的デプロイなどの研究を実施しております。
    もし、興味がありましたら、ご参加ください。
    遠隔地からはオンラインでの参加もOKです。
    月1度、主に日曜日の13:30~17:00で実施しております。
    最近ではオンラインが主体となってきています。
    以下のメールアドレスまで連絡をお願いします。
    [email protected]

    View Slide

  20. ご清聴ありがとうございました
    20
    © 2021 組込みCI研究WG All rights reserved
    2021/12/11

    View Slide