Pro Yearly is on sale from $80 to $50! »

UnitTest on M5StickC

9ec05c5a1b9b0ce9cd53ec3a63838b9a?s=47 Y_uuu
January 30, 2020

UnitTest on M5StickC

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

9ec05c5a1b9b0ce9cd53ec3a63838b9a?s=128

Y_uuu

January 30, 2020
Tweet

Transcript

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

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

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

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

     IoTのテストを⽀援する https://bit.ly/37tA9bf で検索
  5. 今⽇話すこと  デバイス(組込みソフトウェア)のユニットテスト ユニットテスト どうする︖

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

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

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

  9. 軽量テストフレームワーク Unity  http://www.throwtheswitch.org/unity

  10. M5StickC上でユニットテストを実⾏  • メリット • 本番により近い環境(CPU、IO)でテストできる • 各種ライブラリ(M5Stick.hなど)のMockを作らなくて良い • デメリット

    • 実施に時間がかかる • CIを回すのが困難 • Mockを使わないのでIOが絡む境界値テストが難しい
  11. -FUbTUSZ 

  12. クロスコンパイル  • Unityの3つのソースコードを スケッチに追加

  13. クロスコンパイル  • 標準出⼒に使う関数を定義

  14. クロスコンパイル  • 標準出⼒に使う関数を定義

  15. クロスコンパイル  • 改⾏時の挙動を変更

  16. テスト対象  • 温度センサから温度を取得

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

  18. 実⾏結果 

  19. ςετ੒ޭ 

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

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