テスト駆動開発による組み込みプログラミングをやってみる Vol.1
『テスト駆動開発による組み込みプログラミング C言語とオブジェクト指向で学ぶアジャイルな設計』
James W.Grenning 著
蛸島 昭之 監訳
笹井 崇司 訳
2章 テスト駆動ツールと約束事
さて、2章です。
練習問題以外は解説とか定義とかなので、さくっと読みます。
こんなことが書いてあります。
- ユニットテストハーネスは、プロダクトコードがどのように振舞うべきかを「プログラマが表現できるようにする」ためのソフトウェアパッケージ
- ユニットテストハーネスとしては「Unity」「CppUTest」を使うよ!
- テストフィクスチャが作られた理由は「重複をなくすこと」
- Unity vs CppUTest、要請に合わせて選んでね
- 4フェーズテストパターンを守ると、可読性の高い(=ドキュメントとしての価値のある)テストコードが書けるよ!
本書内では、これらを悪名高い「sprintf」関数のテストを題材にUnity、CppUTestのそれぞれについて解説してくれています。
個人的にはCppUTestが使い勝手がいいなと感じました。
理由は、「テストケースを登録しなくてよい」、これに尽きます。
Unityの方は、テストケースをインストールするスクリプトが用意されているようですが、CppUTestの方は言語仕様を利用して自動的にテストケースをインストールするためにユーザが登録する必要がなくなっています。
この二つの意味合いは全然違っているので、CppUTestの方がいいなと思います。
ただ、CppUTestはC++なので、C++全く知らない場合はどう書いていいものやら躊躇するかもしれませんね(^^;
あと、「extern "C"」などのピュアなC言語では必要のないプログラミングスキルや知識が求められるので、純粋にC言語でやりたい人はUnityを選択するとよいかもしれませんね。
後は、ユニットテストハーネスはどれでも大体似たようなつくりと思想になっているはずなので、必要に応じて選ぶべきですね。それこそ、CUnitとかEmbUnitとかたくさんのユニットテストハーネスがありますので。。。
初めて触るっていう人は、CppUTestかUnityを選択して、使ってみて足りないところが出てきたら別のツールを探すなり、自分で追加機能を入れ込むなりするとハッピーになれるかもしれませんね。
そんなこんなで、まずは2章(P.11-P.26)読了。
この辺は、大丈夫かな。
次は練習問題にチャレンジ!なので、環境の構築をやります。
練習問題は次の課題があります。
- 環境を作ることと
- テストを追加すること
- テストを変更すること
てことで、実際にコードを触る必要があるので、次はCodeanywhere + DevboxでLinux(Ubuntu) 環境を作ります。
最終更新:2014年12月11日 01:57