« lcovでテスト・カバレッジ状況をグラフィック化 | トップページ | 勉強会参加できず。 »

ソフトウェア品質を高めるには(2)〜カイゼンを実践するマインド

今日は外出。エリック・オールマン氏の講演も聞いてきます。

==

カイゼンを実践するマインド by @IT ソフトウェア品質を高めるには(2)

システム内部の設計を変更しても、外部に提供しているサービスには影響がないことをテストで証明し、品質の劣化が発生していないことに注意を払う必要があります。従って、進化を続けるためには、常に多くのテストを行う必要があります。そこで有効な手段としては、テストの自動化があります。テストを自動化することで、人的工数を下げることができます。しかし、テストを自動化することは、一朝一夕に実現できるわけではありません。テストを自動化するためには、設計段階からテストすることを前提にして開発を行うことが重要です。また、すべてのテストを自動化することを目的にすると挫折してしまうので、自動テストできる範囲を広げることを目的にすべきです。

「すべてのテストを自動化する」というのは過度の期待であって、システム開発者を惑わす。今ははっきりと認識しているが、以前の僕も「テストを自動化する」を「テストを自動化するので手動テストは不要」といったような誤認をしていた。このパラダイムを持っていると、テストケースをすべて自動化しなくちゃならないと考えてしまい、逆にテストツールが複雑化してしまい本末転倒になってしまう。それに、自動化したことで品質が保たれていると勘違いしてしまい、単体テストや手動でするべきテストを怠ってしまう、といったエラーを引き起こす。(実際に引き起こした。)著者のいうように進化を続けるシステムではテストの自動化はかなり効果的な手法ではあるが、目的をきちんと明確にしておくのも忘れないように。



システムを高い品質に保ち、その品質を維持したまま、さまざまな機能拡張を繰り返すシステムに対して、テスト容易性を指針とすることは大変有効です。それは、良いテストが良い設計を証明することや、品質を維持したまま設計を改善するための重要な武器になるからです。

新規システム開発ではそういった指針が重要かも。ただ、既存のシステムがすでにある場合って思った以上にプロセス改善やテスト改善、指針に準規するって難易度が高そう。



最近、脚光を浴びているDIコンテナでは、独立性の高いコンポーネントの開発と、そのコンポーネントの組み立てを分離することで、コンポーネント単体のテストやコンポーネントの関連テストを容易に実現することができ、自動テストの範囲を広げることができます。一部の開発者は、DIコンテナをテストコンテナと呼んでいます。

DIコンテナってなんだろう?javaの世界の話?調べてみようっと。

|

« lcovでテスト・カバレッジ状況をグラフィック化 | トップページ | 勉強会参加できず。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/155415/4274070

この記事へのトラックバック一覧です: ソフトウェア品質を高めるには(2)〜カイゼンを実践するマインド:

« lcovでテスト・カバレッジ状況をグラフィック化 | トップページ | 勉強会参加できず。 »