Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。リファクタリングを繰り返す」です。今回はそれらについて、修正時に変更するテストケースの数を増やさないための考察も含め解説します。5デバッグ(その2)まとめはじめにこの連載の第1回ではTDDの基本を、第2回と第3回とでMSTestとNUnitの使い方を説明しました。ここからは、いわば実践編になります。避けて通ることのできない仕様変更とデバッグの方法についてです。Frameworkの開発者。本稿執筆時点では、下記から入手できます。betaでも構いません。betaの単体テスト機能を使ってみよう!」を参照)。TDDでは仕様変更やバグをどう扱うのか?仕様変更とは、TDDではテストケースの修正・追加です。バグとは、TDDではテストケースの不足や誤りです。連載第1回で述べたように、TDDのテストファーストとは、自動化されたテストコードの形でメソッドの外部設計を先に確定させてから、それを満たすようにメソッドの内部設計(すなわち製品コードの実装)を行うことでした。内部設計(製品コード)仕様変更の場合、新たな仕様を満たすために変更・追加しなければならないメソッドがあります。メソッドの外部設計に対する変更・追加として、仕様変更の内容をブレークダウンできたら、後はそのようにテストケースを変更・追加してテストファーストを実施します。バグの場合、そのバグを含んでいるメソッドの外部設計に誤りがあったということです。自動化されたテストコードによって外部設計が記述されているのですから、テストファーストでは外部設計を満たさない実装は存在していないはずだからです。バグの原因となった外部設計(テストケース)の誤りをまず特定し、修正します。してから、変更・追加したテストケースに通るように製品コードを修正します。どちらの場合でも、テストファーストで汚くなったコードはリファクタリングします。まとめると、仕様変更でもバグ修正でも、まずテストケースの変更・追加にブレークダウンし、テストケースを変更・追加してREDになることを確認し、次に製品コードを修正してGREENにし、そしてリファクタリングします。最初にコードを書くときのTDDと同じループを回すことになります。リファクタリングの循環それでは簡単なサンプルコードを使って、実際のやり方を見ていきましょう。R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。くま同盟の勉強会(名古屋)で、よく喋ってたりする。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。モブプログラミングを取り入れて開発を効率化させるヒント9Pythonや生成AI活用など無料で基礎が学べるプログラミング学習講座「スタディングテック」提供開始10企業の7割超が「2025年の崖」を理解していないことが明らかに。新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。