photo credit: Ѕolo via photopin cc

以前、組込み開発での機能テスト自動化について考察しました。

組込み開発でのエンドツーエンドの課題は、テストが失敗したところから正常な状態まで復旧させることでした。

実際にテストできるかどうかはまだまだ試行錯誤が必要そうだ。実際の仕事で適用するためには、後処理から正常な状態に復旧させる処理が最大の課題だと思っている。

この課題を、仮想環境のスナップショットがコマンドラインから操作できるvagrantとsaharaを利用して解決してみようと思います。

3ヶ月前のリベンジ

3ヶ月前に書いた、Rubyのminitestを利用したスクリプトのなかに、vagrantとsaharaを組込みます。ポイントは、

  • setupでスナップショットから仮想環境を初期化

です。テストが失敗した結果、いくらボロボロに環境を破壊してても、一瞬でもとに戻します。

# sahara rollbackで初期化
system( 'vagrant sandbox rollback' )

mkdirするサンプルテスト

動画

ミライの組込み開発

GOOS本を読んでから、ウォーキングスケルトンを組込み開発でどうやってつくればいいのか、ずっと頭を悩ませていた。(そして、途中で読むのをやめてしまった。。えっ?(・・?)

  • 実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる - Steve Freeman

vagrant、これが、答えだ! ( ー`дー´)キリッ

vagrantとsaharaを利用したエンドツーエンドテスト、革命的な方法だと思う。

githubのReadmeを読むと、Acceptance Tests用の追加機能もあるっぽいのでもう少し調べてみる。

会社では、quemで作成されたシミュレータをCentOS上で動作させてテストしたりしてる。vagrantとsaharaを利用すれば、quemで作られたシミュレータも一瞬で初期化できるのだ。もっとも、quem自体にスナップショット機能があるっぽいけど。。

実機がないけど、シミュレータを利用してテスト出来て、いくらでも壊して一瞬で復元できる。。。これが、ミライの組込み開発。

これって、すごいことじゃないか?