4/22(日)Test Driven Development for Embedded C読書会第3回 (第5〜6章)

Test Driven Development for Embedded C読書会の第3回の開催記録です。この日は第5〜6章をやりました。 第5章「Embedded TDD Strategy」では、組み込みソフトウェア開発にTDDを適用する上で重要なDual Targeting Test(ターゲットとPCの両方でテストする)というテクニックを学びました。 第6章の内容は、プロジェクトにTDDを導入する際にありがちな反対理由への回答。プロジェクトに適用する際の障壁などについて議論がありました。 続きを読む
1
CAD @yukikado

まずはユニットテストの自動化から(Not Test Fifst)始めるのが得策。というかCI。 #tdd4ec

2012-04-22 16:32:40
Yohei @legoboku

#tdd4ec CIならJenkinsがお勧め。

2012-04-22 16:33:01
CAD @yukikado

Unity・CppUTestはJenkinsのフォーマットに対応している。 #tdd4ec

2012-04-22 16:34:22
山本康彦@BluewaterSoft @biac

どんな技法だってそうだろうと思うのだが…。それが課題になっちゃうのって、ソフトウェア開発業界の宿痾? QT @legoboku: #tdd4ec スキルがないと浸透できないのが課題。

2012-04-22 16:38:05
Kazunori Otani @katzchang

RT @biac: どんな技法だってそうだろうと思うのだが…。それが課題になっちゃうのって、ソフトウェア開発業界の宿痾? QT @legoboku: #tdd4ec スキルがないと浸透できないのが課題。

2012-04-22 16:45:50
非実在naka aki @naka_aki_spl

RT @biac: どんな技法だってそうだろうと思うのだが…。それが課題になっちゃうのって、ソフトウェア開発業界の宿痾? QT @legoboku: #tdd4ec スキルがないと浸透できないのが課題。

2012-04-22 16:47:42
Yohei @legoboku

#tdd4ec テストがないとメンテも必要なくなる。が、手動再テストをしないといけない。TDDのスキルを身につけるとメンテ可能でテストが自動化できる。

2012-04-22 16:51:39
goyoki @goyoki

ターゲットでのテストはCIで組み込むべし。最低でもデイリーで実行、とかいうけど、試作中は火事やショートの問題もあるのでむずい場面もあるな #tdd4ec

2012-04-22 16:52:55
Yohei @legoboku

#tdd4ec TDDで全てのバグを取ることはできない。だが、TDDによって単体レベルのバグを取り除くことによって、より高次元のテストをスムーズにできる。結合、受け入れ、探索、負荷テスト。

2012-04-22 16:53:15
Yohei @legoboku

#tdd4ec TDDをやるには素早い反復ビルドが必要。edit/build/unit testのサイクルを数秒でできないといけない。

2012-04-22 16:58:06
Yohei @legoboku

#tdd4ec ビルド時間の短縮のためにmake file、make targetを複数用意し、test executablesを複数生成できるようにする。

2012-04-22 17:00:28
Yohei @legoboku

#tdd4ec レイヤーアーキクチャ、かつモジュールの依存関係を整理し、モジュールをインタフェースで分割しておくとモジュール単位で test executable をでき、ビルド時間を短縮でき、担当部分のユニットが簡単にできる。

2012-04-22 17:02:50
Yohei @legoboku

#tdd4ec TDDは設計を改善する、間違いを防止する、TDDは問題を明らかにする、テストカバレッジを改善する。

2012-04-22 17:06:28
CAD @yukikado

TDDを実施する場合、インターフェイスを定義し、インターフェイスに依存した設計にする必要がある。設計が改善される(逆にいえば、実施前に設計の知識が必要になりそう)。 #tdd4ec

2012-04-22 17:08:56
CAD @yukikado

テストを実装後に書くと、カバレッジがなかなか出ない。TDDならば、カバレッジを意識して設計できるので、結果的に改善できる? #tdd4ec

2012-04-22 17:11:24
Yohei @legoboku

#tdd4ec 時間が足りないのが最大の問題。まずはデバッグ作業でどれだけ時間を無駄にしているか明らかにするところからかな。

2012-04-22 17:12:12
goyoki @goyoki

TDD導入はドップダウンとボトムアップ、両方のアプローチ #tdd4ec

2012-04-22 17:14:09
goyoki @goyoki

トップダウンなら、プロセスのどこで時間をとられているか、デバッグや手戻りのコストがどうなっているか明らかにすると導入の説得力が出る #tdd4ec

2012-04-22 17:15:34
CAD @yukikado

TDDの効果って、個人的には効果あると思うんだけど、具体的な数値として出てこないのかなぁ。 #tdd4ec

2012-04-22 17:15:35
goyoki @goyoki

ボトムアップなら、自分のTDD力を高める。TDDは個人レベルのプログラミングも効率化する。自分がそれを体現して広げる #tdd4ec

2012-04-22 17:16:32
CAD @yukikado

ソースコードの非同期問題。タスク間での割り込み関係。#tdd4ec

2012-04-22 17:22:37
Yohei @legoboku

#tdd4ec 本当に解決したい問題は単体テストのスコープを超えているからな。負荷をかけた状態で非同期処理がおかしくなるとか。タスク間の割り込みなど。

2012-04-22 17:23:26
CAD @yukikado

動的解析ツールがひとつの解。ロギングして、負荷をかけて解析する #tdd4ec

2012-04-22 17:24:11
CAD @yukikado

イテレーションごとにBig Visible Chart(BVC)でメモリサイズ等を管理する #tdd4ec

2012-04-22 17:30:41