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
350
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
AWSのIoTサービスをおさらいしよう
yuuu
0
40
mrubyを1300円のボードで動かそう
yuuu
0
240
社内をIoT化していくための施策集📔
yuuu
0
650
アクアシャッターf IoT異常通報システム開発記 〜 AWSとSORACOMとmockmock
yuuu
0
300
AWS SAM + Rubyのすゝめ
yuuu
0
280
現代版・ポケベルを支える技術 - SORACOM UG Explorer 2020 LT
yuuu
0
180
AWS AmplifyとmockmockでIoTバックエンドをスピーディに構築する
yuuu
2
650
そのIoTシステム、デバイスが1000台になっても大丈夫ですか?
yuuu
2
1k
元・組込みエンジニアが教えるAWSを使ったIoTシステムのバックエンド構築手順(第2部) - SWEST 22 セッションs2c
yuuu
0
260
Other Decks in Programming
See All in Programming
それ全部エラーメッセージに書いてあるよ!〜独学でPHPプログラミングが上達するたった一つの方法〜
77web
1
150
2022年のモダンCSS改
tonkotsuboy_com
24
16k
アジャイルで不確実性に向き合うための開発タスクの切り方
tanden
4
1.1k
ふんわり理解するcontext
rukiadia
1
180
Recap CDN, Edge, WebAssembly | ワインと鍋.js#1
sadnessojisan
2
1.2k
ECサイトの脆弱性診断をいい感じにやりたい/OWASPKansaiNight_LT1_220727
owaspkansai
0
290
AWS Config Custom Rule、ノーコードでできるかな?
watany
0
250
Scaling Productivity- How we have improved our dev experience
sockeqwe
1
120
パスワードに関する最近の動向
kenchan0130
1
320
Lookerとdbtの共存
ttccddtoki
0
630
Pluggable Storage in PostgreSQL
sira
1
190
Google IO 2022 社内LT会 / What's new in Android development tools
shingo_kobayashi
0
400
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.4k
Three Pipe Problems
jasonvnalue
89
8.7k
YesSQL, Process and Tooling at Scale
rocio
157
12k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
The Language of Interfaces
destraynor
148
21k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Navigating Team Friction
lara
175
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
239
11k
Support Driven Design
roundedbygravity
87
8.6k
Producing Creativity
orderedlist
PRO
334
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は技術が好きなエンジニアを 募集しています