リファクタリング機能

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

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

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

つまりテスト駆動開発は、コードを「キレイなコード」に改善するというメリットも生みだすことになります。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ではコードカバレッジ機能が含まれているため、単体テストを行っている開発者自身がテストの充足度をチェックしながら、テスト駆動開発でのプログラミングを進めることができます。また開発者からの受け入れ時には、単体テストの網羅性をチェックすることができます。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30