Information
2008-04-23
極力ユニットテストを書かずに品質を確保する方法
今日のテストサミットで、できるだけユニットテストを書かずに品質を確保する方法について、ディスカッションします。
やり方を簡単に紹介すると、最初は、Programming First Developmentで、機能を実装して、ユーザに動かしてもらうってことをユーザの要件が固まるまで繰り返します。このときは、基本的にユニットテストは書きません。動かすことに集中します。
ユーザの要件が固まった(実装がほとんど終わった)ら、保守のためのドキュメントの一つとして、テストシナリオ(ユースケーステスト)を作って、テストを行います。そのテスト中に、バグが発見されたらその周辺のユニットテストを書いていきます。
これは、「バグは偏在(偏って存在)する」という特徴を利用して、一通り動かした後に見つかったバグの近くをテストしておけば、主なバグはつぶれるだろうという考えです。
これまでは、「ユニットテストは、できるだけ書いたほうがいい」というのが一般的な見解でした(と思う)。でも、「そういわれても、ユニットテスト書くのも工数がかかるし」という人が多くて、ユニットテストが普及していないのも事実です。そういう人たちに対して、「ユニットテストを書いたほうが最終的にはコストが下がるんだ」と説明しても、あまり納得感はないでしょう。事実、ここ数年、「ユニットテストは工数がかかる」と思っている人と「ユニットテストを書いたほうが最終的にはコストが下がる」と思っている人の会話は平行線のままです。
このような状況を改善するために考えたのが、「Programming First Development」のなかで、バグったところ(とその周辺)のみユニットテストを書くという方法です。このやり方なら、ユニットテストを書く工数は、かなり減ります。そして、偏在しているバグを効率よくつぶすことができるのです。
また、最初にユーザに実際に動かしてもらっているので、開発者が、仕様を勘違いするという「仕様バグ」をほとんどなくすことができます。修正が大変なのは、「仕様バグ」です。実装バグは、後から見つかっても、直ぐに修正することができるでしょう。
- src’s note - 気になる技術メモ
- もうすぐ初夏だよはぶにっき - テスト? テストって何よ?
- iad_otomamay@kronos-jp.netの日記 - ユニットテストの方法論
- nemuzukaの業務 - テストコードって誰の為?
- Developers [Test] Summit 2008
- Road to NAgiler - Developers[Test]Summit
- u2uni(うにうに)の日記 - 極力ユニットテストを書ないなんて・・...
- aikeの日記 - Programming First Developmentは業務システム屋を救...
- チーフプログラマ制度、セル生産、Programming First Developmentに...
- I have dreams - 夢は野山を駆け巡る - Developers [Test] Summit ...
- I have dreams - 夢は野山を駆け巡る - Developers [Test] Summit ...
- ひがやすを blog - プログラミングファースト開発
- 仕様書が先か? プログラムが先か?
- 357 http://reader.livedoor.com/reader/
- 339 http://b.hatena.ne.jp/hotentry
- 242 http://d.hatena.ne.jp/
- 137 http://b.hatena.ne.jp/
- 91 http://d.hatena.ne.jp/habuakihiro/20080423
- 85 http://b.hatena.ne.jp/entrylist?sort=hot
- 78 http://www.google.com/reader/view/
- 64 http://www.google.co.jp/ig?hl=ja
- 63 http://www.google.co.jp/reader/view/
- 54 http://www.google.co.jp/search?q=ひがやすお&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a