Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
UnitTest on M5StickC
Y_uuu
January 30, 2020
Programming
1
380
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
SORACOM ArcでオフィスのIoT化を進行中です⭐
yuuu
1
410
AWSのIoTサービスをおさらいしよう
yuuu
0
63
mrubyを1300円のボードで動かそう
yuuu
0
310
社内をIoT化していくための施策集📔
yuuu
0
850
アクアシャッターf IoT異常通報システム開発記 〜 AWSとSORACOMとmockmock
yuuu
0
380
AWS SAM + Rubyのすゝめ
yuuu
0
370
現代版・ポケベルを支える技術 - SORACOM UG Explorer 2020 LT
yuuu
0
230
AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する
yuuu
2
710
そのIoTシステム、デバイスが1000台になっても大丈夫ですか?
yuuu
2
1.2k
Other Decks in Programming
See All in Programming
LIFFで動く割り勘アプリTATEKAをリリースしてみた話
inoue2002
0
230
SHOWROOMの分析目的を意識した伝え方・コミュニケーション
hatapu
0
230
はてなリモートインターンシップ2022 インフラ 講義資料
hatena
4
2.1k
TypeScript 4.9のas const satisfiesが便利
tonkotsuboy_com
9
2.2k
SwiftPMのPlugin入門 / introduction_to_swiftpm_plugin
uhooi
2
100
レガシーフレームワークからの移行
ug
0
110
なぜRubyコミュニティにコミットするのか?
luccafort
0
300
Swift Observation
shiz
3
270
PHPDocにおける配列の型定義を少し知る
shimabox
1
130
OSC大阪 パスワード認証は人類には早すぎる ~ IDaaSを使ったソーシャルログインのすすめ ~
authyasan
6
1.2k
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
42k
23年のJavaトレンドは?Quarkusで理解するコンテナネイティブJava
tatsuya1bm
1
120
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
349
27k
Navigating Team Friction
lara
176
12k
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
182
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
152
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
22
42k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Fireside Chat
paigeccino
16
1.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
254
12k
Why Our Code Smells
bkeepers
PRO
326
55k
The Invisible Customer
myddelton
113
12k
Side Projects
sachag
451
37k
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は技術が好きなエンジニアを 募集しています