Test Driven Development for Embedded C読書会第4回

2012/6/3(日)に開催した「Test Driven Development for Embedded C」読書会第4回のまとめてす。 本日のネタは以下です。そろそろ本格的に依存関係のあるモジュールに対してTest Doubleを導入する方法について解説が進んでいます。なかなか歯ごたえある内容。 ・第7章「Introducing Test Doubles」 Stub、Mock、SpyといったTest Doubleの種類、Test Doubleを使う目的などが解説されています。 続きを読む
2
Yohei @legoboku

実コードが使えるときは実コードを使う。必要な場合にTest Doublesに置き換える。 #tdd4ec

2012-06-03 14:02:18
Yohei @legoboku

Test Doubleの使いどころ:ハードウェア依存、入力の作成が困難、collaboratorの速度が遅い・開発中・ビルドが困難 #tdd4ec

2012-06-03 14:04:30
Yohei @legoboku

Exploding Fake。必ず例外を上げるdoublesを使う場合もある。 #tdd4ec

2012-06-03 14:15:25
Yohei @legoboku

Test Doublesの用語がゆれている?言葉が定まってくるとコミュニケーションがしやすくなる。 #tdd4ec

2012-06-03 14:17:40
Yohei @legoboku

C言語でモジュール置換方法:リンク時置換、関数ポインタ置換、プリプロセッサ置換、リンク時・関数ポインタの組み合わせ。 #tdd4ec

2012-06-03 14:22:24
Yohei @legoboku

第8章はリンク置換、第9章は関数ポインタ置換を扱う。 #tdd4ec

2012-06-03 14:24:07
Yohei @legoboku

CppUTestでは標準関数をプリプロセッサ置換して、メモリリーク監視を行っている。 #tdd4ec

2012-06-03 14:26:02
Harlequin Shrimp @EspernaShrimp

関数ポインタでTest Doubleができる。 #tdd4ec

2012-06-03 14:31:02
Yohei @legoboku

一時的にスタブの振るまいを変えるために、リンク置換と関数ポインタ置換を組み合わせる場合がある。 #tdd4ec

2012-06-03 14:31:05
Harlequin Shrimp @EspernaShrimp

関数ポインタ使うとデバッグが大変になる。便利そうなんだけど。 #tdd4ec

2012-06-03 14:32:20
Harlequin Shrimp @EspernaShrimp

今日の勉強会は話が暗くない!!!#tdd4ec

2012-06-03 14:33:14
Yohei @legoboku

sexyhookというライブラリを使うと、一時的にAPIや関数、クラスメソッドの挙動を自由に書き換えできる。http://t.co/5tS6vPn4 #tdd4ec

2012-06-03 14:35:05
Yohei @legoboku

信号処理の分野で、速度は落ちても開発スピードを優先して、ソフトで実装するケースもあるそうだ。#tdd4ec

2012-06-03 14:37:49
Harlequin Shrimp @EspernaShrimp

信号処理ってハードでやるイメージが強かったが、開発期間やコストなどの面からソフトでやることもあるんだ。。。#tdd4ec

2012-06-03 14:38:24
Yohei @legoboku

プリプロセッサ置換はC言語界の鉄板テク #tdd4ec

2012-06-03 14:39:52
CAD @yukikado

信号処理も最近はハードじゃなくてソフトで処理するようになってきているらしい。処理速度が許容範囲になったので、ハードウェアが上がってくるまでのオーバーヘッドを考えた場合、ソフトウェアでやったほうが開発コストが下がる。 #tdd4ec

2012-06-03 14:41:33
Yohei @legoboku

ものすごい穏やかにマニアックな会話が続く、不思議な読書会だな。 #tdd4ec

2012-06-03 14:48:29
CAD @yukikado

OSやハードウェアのコンポーネントに対して、一枚抽象化レイヤを加えることで、test doubleを行いやすくする。 #tdd4ec

2012-06-03 15:22:44
Yohei @legoboku

最初にテストリストを作る。完璧なリストは作らなくてもいい。大雑把なもの。途中で追加したり、順番を入れ替えたりする。 #tdd4ec

2012-06-03 15:24:10
kazumi007 @kazumi007

電子版は図番号が違うのか・・・。 #tdd4ec

2012-06-03 15:27:04
Yohei @legoboku

#tdd4ec インタフェースと実装を切り分けて、実装部分をTest Doubleに置き換える。C言語だとインタフェースがヘッダファイル、ソースファイルがTest Doubleに置き換える。

2012-06-03 15:27:20
Yohei @legoboku

実コードは.libに、Test Doubleは.oにすると、最初に.oでリンクが解決されて、ライブラリの実コードが参照されない。実ビルドではTest Doubleの.oを除外すればいい。 #tdd4ec

2012-06-03 15:28:25