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

UnitTest on M5StickC

Y_uuu
January 30, 2020

UnitTest on M5StickC

2020-01-30
M5Stack福岡ユーザーミーティング vol.1
https://m5stack.connpass.com/event/161887/

Y_uuu

January 30, 2020
Tweet

More Decks by Y_uuu

Other Decks in Programming

Transcript

  1. UnitTest on M5StickC
    2019/01/30 M5Stack福岡ユーザーミーティング vol.1
    株式会社Fusic 岡嵜雄平

    View full-size slide

  2. ⾃⼰紹介
    岡嵜 雄平(@Y_uuu)
    2017年まで関⻄で組込みソフトウェア開発を経験
    2018年にJターン転職&Webの世界へ
    転職前はETロボコンの選⼿→実⾏委員を経験

    ⾃⼰紹介

    View full-size slide

  3. ⾃⼰紹介

    ⾃⼰紹介
    ↓これが私のTwitterアカウントです

    View full-size slide

  4. mockmock
    最近のお仕事
    • IoTサーバへデバイスの代わりにデータ送信
    • さまざまな⽅法でテストデータを⾃動⽣成
    • 各種クラウドサービス(AWS, GCP, Azure)やSORACOMと連携

    IoTのテストを⽀援する
    https://bit.ly/37tA9bf
    で検索

    View full-size slide

  5. 今⽇話すこと

    デバイス(組込みソフトウェア)のユニットテスト
    ユニットテスト
    どうする︖

    View full-size slide

  6. デバイスとWebシステムの違い

    • ⾼級⾔語、オブジェクト指向⾔語で開発
    • クラス間が疎結合なのでユニットテストもしやすい
    • CPUやOSレベルではプラットフォームが統⼀化
    • OOSのツールやライブラリ多数
    Webシステム : ユニットテストしやすい

    View full-size slide

  7. デバイスとWebシステムの違い

    • CまたはC++で実装するケースが多い
    • 密結合になりがちでユニットテストしにくい
    • プラットフォームの統⼀化が進んでいない
    • OSSのツールやライブラリもそう多くない
    デバイス : ユニットテストしにくい

    View full-size slide

  8. デバイスにおけるユニットテストのバイブル
    • テスト駆動開発の⼀連の流れを解説
    • 組込みソフトウェアに特化
    • Mockの導⼊やレガシーコード対策に
    ついても⾔及

    テスト駆動開発による組み込みプログラミング

    View full-size slide

  9. 軽量テストフレームワーク Unity

    http://www.throwtheswitch.org/unity

    View full-size slide

  10. M5StickC上でユニットテストを実⾏

    • メリット
    • 本番により近い環境(CPU、IO)でテストできる
    • 各種ライブラリ(M5Stick.hなど)のMockを作らなくて良い
    • デメリット
    • 実施に時間がかかる
    • CIを回すのが困難
    • Mockを使わないのでIOが絡む境界値テストが難しい

    View full-size slide

  11. クロスコンパイル

    • Unityの3つのソースコードを
    スケッチに追加

    View full-size slide

  12. クロスコンパイル

    • 標準出⼒に使う関数を定義

    View full-size slide

  13. クロスコンパイル

    • 標準出⼒に使う関数を定義

    View full-size slide

  14. クロスコンパイル

    • 改⾏時の挙動を変更

    View full-size slide

  15. テスト対象

    • 温度センサから温度を取得

    View full-size slide

  16. テストコード

    • 取得した温度が0〜100度
    であることをテスト

    View full-size slide

  17. 実⾏結果

    View full-size slide

  18. まとめ

    • デバイスのテスト難しい
    • M5StickC上でもユニットテストが実⾏できた
    • Mockの活⽤やCIは今後の課題

    View full-size slide

  19. Thank you!
    Fusicは技術が好きなエンジニアを
    募集しています

    View full-size slide