日記帳だ! with Tux on Libserver

二度目の大改造!! 日記帳…か?を継承し、より柔軟でパワフルなBlogに変身しました。

RSSに対応しています。リンク・コメント・トラックバックは自由にしていただいてほぼ問題ありません。
RSS購読方法、僕のリンク・コメント・トラックバックについての考えを読むことをおすすめします。

<< 過去

未来 >>

エミュレータでの単体テストは好調

最近、マイコンのプログラムについて、エミュレータでの単体テストが軌道に乗ってきている。

うちでもユニットテストできるの?

実機の到着はまだ先だけど、ハードウェアに関係ない部分の実装はかなり進んでいて、

実機がなくても、作っては動作確認してということができるのはよい。


設計して、実装して、単体テストで動作確認して、ということをやっていると想定と違うことが出てくる。

特に異常時の挙動で、ここでこっちの状態に遷移するはずとか、このフラグが落ちてるはずとか期待値を書いたら、

実際には想定外の状態遷移をしてたり、禁止操作をしてたり、前の処理の残骸が残ってたり。

それに応じて設計を見直してということをやっていた。

もしかすると、想定と違う部分があっても、実機ではそれなりに動いてしまうような気もするのだが、

単体テストでは厳密に期待値を書くので、少しでも想定と違うところがあると引っかけることができると。


あと、ハードウェア設計中ということもあって、仕様変更も少しある。

その仕様変更に対して、まずテストを変更して、NGになるのを確認して、

それから、設計・実装を変更して、それでOKになるのを確認するという手順を踏めるのは単体テスト環境が揃ってるからこそ。

修正部分がほかの動作に影響しないかの確認も改めて全部のテストをかけなおせばできるし。

以前から論理回路設計のときはこういうやり方でやってたんだけどね。(cf. シミュレーションをするのが仕事)


単体テストは、リファクタリングということで、外部から見た動作を変えずに内部設計を変更するのに使われることがある。

内部設計が変わってもテストが通れば外部から見た動作が変わっていないことが確認出来ると。

その分、テストの内容が充実していないとダメですけどね。

テスト内容が充実してれば、テストで追えるから、内部設計を変更しても安心感がある。


今回は全く新規にコードを書いているので、マイコンにペリフェラルに依存する部分と、依存しない論理的な部分を分けて、

エミュレータでのテストをやりやすい設計にしている。

でも、よくあるマイコンのプログラムは抽象度が低くて、エミュレータでのテストにはなかなか向かないんだよね。

最初からテストを意識した設計じゃないと、単体テストを活用するのは難しい。

というわけで、エミュレータでの単体テストを他のシステムで活用するのは難しいなと思った。

逆にうまく切り分けられれば、実機では気づきにくい問題もいろいろ発見できたのでメリットが大きい方法だとは思ったけど。


Author : Hidemaro
Date : 2018/07/25(Wed) 23:01
電気・数学・物理 | Comment | trackback (0)
blog comments powered by Disqus

トラックバック

トラックバックURL取得

Tools