Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UnitTest on M5StickC
Search
Y_uuu
January 30, 2020
Programming
1
500
UnitTest on M5StickC
2020-01-30
M5Stack福岡ユーザーミーティング vol.1
https://m5stack.connpass.com/event/161887/
Y_uuu
January 30, 2020
Tweet
Share
More Decks by Y_uuu
See All by Y_uuu
あの重機は今どこにある?- 重機管理IoTプロダクトのバックエンドをAWSで構築した話 -
yuuu
0
550
mruby-esp32におけるペリフェラルAPIの実装検討
yuuu
1
440
育成力 - エンジニアの才能を引き出す環境とチューターの立ち回り -
yuuu
4
4.3k
committee-railsとOpenAPI Generatorでスキーマ駆動なAPI開発をする
yuuu
0
630
mrubyでマイコンの世界に足を踏み入れる
yuuu
2
1.6k
mruby on IoT devices.
yuuu
4
2.1k
SORACOM ArcでオフィスのIoT化を進行中です⭐
yuuu
1
920
AWSのIoTサービスをおさらいしよう
yuuu
1
230
mrubyを1300円のボードで動かそう
yuuu
0
530
Other Decks in Programming
See All in Programming
詳解UIWindow
natmark
3
2.2k
仮想ファイルシステムを導入して開発環境のストレージ課題を解消する
segadevtech
2
430
LangChainの現在とv0.3にむけて
os1ma
3
740
BasicBasic認証
sadnessojisan
5
3.1k
ドメイン駆動設計を実践するために必要なもの
bikisuke
3
300
フロントエンドカンファレンス北海道2024 『小規模サイトでも使えるVite 〜HTMLコーディングをよりスマートに〜』長谷川広武(ハム)
h2ham
1
2.5k
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
190
New Order in Cascade Sorting Order
mugi_uno
3
2.5k
複雑さに立ち向かうための ソフトウェア開発入門
shiz
3
640
開発を加速する共有Swift Package実践
elmetal
PRO
0
350
Why Prism?
kddnewton
4
1.3k
快適な開発と高セキュリティを実現するCryptoKitを活用したCoreDataのデータ暗号化術
grandbig
1
310
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
88
16k
The Mythical Team-Month
searls
218
43k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Facilitating Awesome Meetings
lara
49
5.9k
The World Runs on Bad Software
bkeepers
PRO
64
11k
Atom: Resistance is Futile
akmur
261
25k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
230
17k
Into the Great Unknown - MozCon
thekraken
28
1.4k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
27
7.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
123
18k
Build The Right Thing And Hit Your Dates
maggiecrowley
30
2.2k
Transcript
UnitTest on M5StickC 2019/01/30 M5Stack福岡ユーザーミーティング vol.1 株式会社Fusic 岡嵜雄平
⾃⼰紹介 岡嵜 雄平(@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の導⼊やレガシーコード対策に ついても⾔及 テスト駆動開発による組み込みプログラミング
軽量テストフレームワーク Unity http://www.throwtheswitch.org/unity
M5StickC上でユニットテストを実⾏ • メリット • 本番により近い環境(CPU、IO)でテストできる • 各種ライブラリ(M5Stick.hなど)のMockを作らなくて良い • デメリット
• 実施に時間がかかる • CIを回すのが困難 • Mockを使わないのでIOが絡む境界値テストが難しい
-FUbTUSZ
クロスコンパイル • Unityの3つのソースコードを スケッチに追加
クロスコンパイル • 標準出⼒に使う関数を定義
クロスコンパイル • 標準出⼒に使う関数を定義
クロスコンパイル • 改⾏時の挙動を変更
テスト対象 • 温度センサから温度を取得
テストコード • 取得した温度が0〜100度 であることをテスト
実⾏結果
ςετޭ
まとめ • デバイスのテスト難しい • M5StickC上でもユニットテストが実⾏できた • Mockの活⽤やCIは今後の課題
Thank you! Fusicは技術が好きなエンジニアを 募集しています