TOPプロジェクト管理> リファクタリング機能




Visual Studio 2005を活用した、テスト駆動開発とソフトウェア品質向上アプローチ
Visual Studio 2005を活用した、テスト駆動開発とソフトウェア品質向上アプローチ

第1回:テストは開発者から利用者の視点へ
著者:日本ユニシス  小川 英惠   2005/11/29
前のページ  1  2  3   4  次のページ
リファクタリング機能

   リファクタリングとは、仕様変更やメンテナンスを容易にさせるために、あるルールに従ってソースコードを書き換え、重複を取り除き、わかりやすいコードに変えていくものです。

   しかし最初に説明した従来型開発スタイルでは「動いているコードを変えてはならない」という気持ちが働き、いきなりリファクタリングはできないのではないでしょうか。

   テスト駆動開発のやり方であれば、プログラミングの動作をテストするためのテストコードが事前にあり、何度もテストを再実行できるため、リファクタリングによる信頼性低下を防ぎ、開発者も余計な不安を抱えずに気楽にリファクタリングが行えるというメリットがあります。

   つまりテスト駆動開発は、コードを「キレイなコード」に改善するというメリットも生みだすことになります。VS2005 Team Systemではこのリファクタリングの機能も提供しています。


さらに、コード分析

   ほかにも、プログラミングを支援するツールが用意されています。

   通常、コーディングルールに則っているかのチェックやコーディングした人以外が見てもわかりやすいコードに整形するなどの場合は、コードレビューで実施していると思います。

   VS2005 Team Systemの機能の1つであるFxCopは、静的コード分析の機能を提供します。デザインガイドラインに則っているかのチェックを引き受けてくれる静的コード分析の機能であり、テスト駆動開発をサポートします。

   このようにVS2005 Team Systemは、テスト駆動開発を支援するツールがはじめからそろっている開発環境なのです。このVS2005 Team Systemを利用しながらテスト駆動開発のリズムを覚えることができます。そして、テスト駆動開発による効率のよいソフトウェア開発を行うことが可能だといえるでしょう。

   テスト駆動開発が終わったら、VS2005 Team Systemで結合およびシステムテスト、システム開発において不具合を発見することは、テストの大きな役目の1つです。不具合の発生は、システム開発に大きく波及する上に、開発工数の増加や予算の圧迫および開発者へのモチベーションにも悪影響をおよぼすことになります。

   またシステム開発(特にウォータフォール型開発)では、システム開発全体の工程のしわ寄せがテスト工程にくることがあり、テストの重要性を開発メンバーが認識し効率よく行うことが重要となります。

   ここでは、単体テストが十分に満たされているかを評価する機能であるカバレッジ分析を紹介します。その後に、結合テストを自動化するWebテストの説明と性能要求をテストする負荷テストとコードプロファイラについて説明します。


カバレッジ分析

   これまでの解説でテスト駆動開発の有効性はおわかりいただけたと思います。

   テスト駆動開発は"開発"の手法として有効であり開発がスムーズに進みますが、だからといってテスト駆動開発というスタイルが単体テストの充足度を保障してくれるわけではありません。単体テストが十分でないと、結合テストなどの後工程において単体テストレベルの障害が発生することになります。

   例えば、Aモジュールに単体テストレベルの不具合が発生した場合、「Aモジュールの不具合が改修されないと、Bモジュールのテストが進められません」といった状況になります。

   そうした場合には、Aモジュールの開発者X氏に修正を行ってもらい再度単体テストが終わるまで、後続のテストが進められなくなります。最悪のケースでは、X氏が開発したCモジュールとDモジュールにも不具合が発生していてX氏の改修作業がテスト全体のボトルネックになるなんてこともあります。これでは、開発全体のスケジュールに大きな影響を与えてしまいます。

   とはいえ、単体テストが100%であるかを人間が測定することは不可能ですから、単体テストの網羅性・充足度を機械的に測定することが必要となります。

   VS2005 Team Systemのコードカバレッジ機能は、テストケースの充足度をざっくり判断するのに有効です。

   今までのVS2003にはコードカバレッジ機能はなかったため、皆さんもサードパーティーのアプリケーションを利用されていると思いますが、コスト面から開発メンバー全員に配布するのは難しかったと思います。

   Team Edition for Software Developersではコードカバレッジ機能が含まれているため、単体テストを行っている開発者自身がテストの充足度をチェックしながら、テスト駆動開発でのプログラミングを進めることができます。また開発者からの受け入れ時には、単体テストの網羅性をチェックすることができます。

前のページ  1  2  3   4  次のページ


日本ユニシス株式会社 小川 英惠
著者プロフィール
日本ユニシス株式会社  小川 英惠
テクノロジコンサルティングサービス本部 コンピテンスセンタ .NET開発コンサルティング所属
オープン系システム開発を中心とした業務を担当し、システム構築から運用・サポートまでの一連の業務を経験。2002年より、.NET開発においてアーキテクトの経験を積み重ね現在に至る。「個人技ではなく、チームとして成果をだすこと」がモットー。


INDEX
第1回:テストは開発者から利用者の視点へ
  はじめに
  テスト駆動開発のスタイル
リファクタリング機能
  Webテストと手動テスト