2020-01-30 M5Stack福岡ユーザーミーティング vol.1 https://m5stack.connpass.com/event/161887/
UnitTest on M5StickC2019/01/30 M5Stack福岡ユーザーミーティング vol.1株式会社Fusic 岡嵜雄平
View Slide
⾃⼰紹介岡嵜 雄平(@Y_uuu)2017年まで関⻄で組込みソフトウェア開発を経験2018年にJターン転職&Webの世界へ転職前はETロボコンの選⼿→実⾏委員を経験⾃⼰紹介
⾃⼰紹介⾃⼰紹介↓これが私のTwitterアカウントです
mockmock最近のお仕事• IoTサーバへデバイスの代わりにデータ送信• さまざまな⽅法でテストデータを⾃動⽣成• 各種クラウドサービス(AWS, GCP, Azure)やSORACOMと連携IoTのテストを⽀援するhttps://bit.ly/37tA9bfで検索
今⽇話すことデバイス(組込みソフトウェア)のユニットテストユニットテストどうする︖
デバイスとWebシステムの違い• ⾼級⾔語、オブジェクト指向⾔語で開発• クラス間が疎結合なのでユニットテストもしやすい• CPUやOSレベルではプラットフォームが統⼀化• OOSのツールやライブラリ多数Webシステム : ユニットテストしやすい
デバイスとWebシステムの違い• CまたはC++で実装するケースが多い• 密結合になりがちでユニットテストしにくい• プラットフォームの統⼀化が進んでいない• OSSのツールやライブラリもそう多くないデバイス : ユニットテストしにくい
デバイスにおけるユニットテストのバイブル• テスト駆動開発の⼀連の流れを解説• 組込みソフトウェアに特化• Mockの導⼊やレガシーコード対策についても⾔及テスト駆動開発による組み込みプログラミング
軽量テストフレームワーク Unityhttp://www.throwtheswitch.org/unity
M5StickC上でユニットテストを実⾏• メリット• 本番により近い環境(CPU、IO)でテストできる• 各種ライブラリ(M5Stick.hなど)のMockを作らなくて良い• デメリット• 実施に時間がかかる• CIを回すのが困難• Mockを使わないのでIOが絡む境界値テストが難しい
-FUbTUSZ
クロスコンパイル• Unityの3つのソースコードをスケッチに追加
クロスコンパイル• 標準出⼒に使う関数を定義
クロスコンパイル• 改⾏時の挙動を変更
テスト対象• 温度センサから温度を取得
テストコード• 取得した温度が0〜100度であることをテスト
実⾏結果
ςετޭ
まとめ• デバイスのテスト難しい• M5StickC上でもユニットテストが実⾏できた• Mockの活⽤やCIは今後の課題
Thank you!Fusicは技術が好きなエンジニアを募集しています