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