期限が非常に厳しいため、開発中にテスト駆動の開発プロセスはありませんでした
この声明は非常に重要です。TDDを使用せずに開発したことや、すべてをテストしているわけではないからです。これは、TDDによって速度が低下し、締め切りに間に合わないことを示しているためです。
このように見れば、TDDの準備ができていません。TDDは徐々に使いこなせるものではありません。あなたはそれを行う方法を知っているか、知らないかのどちらかです。途中でやろうとすると、あなたはそれを作り、自分自身を悪く見せます。
TDDは、最初に自宅で練習する必要があるものです。それが役立ちますので、それを行うことを学ぶあなたがコーディングになりました。誰かがそれをするように言ったからではありません。後で変更するときに役立つからではありません。あなたが急いでいるからそれがあなたがすることになるとき、あなたはそれを専門的にする準備ができています。
TDDは、どのショップでもできることです。テストコードを提出する必要さえありません。他の人がテストを軽disする場合、あなたはそれを自分自身に保つことができます。正しく実行すると、誰もテストを実行していなくても、テストによって開発が加速されます。
一方、他の人がテストを気に入って実行している場合でも、TDDショップでテストをチェックインするのはあなたの仕事ではないことに注意してください。実績のある実動コードを作成することです。それがたまたまテスト可能である場合、きちんと。
管理者がTDDを信じる必要がある、または同僚のコーダーがテストをサポートする必要があると考えている場合、TDDが行う最善のことを無視しています。コードが行うことと実際に行うことの違いをすぐに示します。
それだけでは、締め切りに間に合わせるのにどのように役立つかがわからない場合は、TDDを仕事で使う準備ができていません。家で練習する必要があります。
とはいえ、チームがテストを使用して本番コードを読み取れるようにしたり、管理者が新しいTDDツールを購入したりするのは素晴らしいことです。
チームをTDDに変換した後、考えられるすべてのテストケースを作成することをお勧めしますか?
チームが何をしているかに関係なく、可能なすべてのテストケースを作成することは常に良い考えとは限りません。最も有用なテストケースを作成します。100%のコードカバレッジにはコストがかかります。判断を下すのが難しいからといって、収益の減少の法則を無視しないでください。
興味深いビジネスロジックのためにテストのエネルギーを節約します。決定を下し、ポリシーを実施するもの。その全体をテストします。物をつなぎ合わせるだけのわかりやすい構造接着コードを退屈にすることは、テストをそれほどひどくする必要はありません。
(1)すべてが完全に正常に動作している場合でも(まだ!)、開発の大部分を停止し、最初から可能なテストケース全体を書き始めることは、まだ大丈夫ですか?または
いいえ。これは「完全に書き直そう」という考え方です。これは苦労して得た知識を破壊します。テストを書く時間を経営者に尋ねないでください。テストを書くだけです。何をしているかがわかれば、テストによって速度が低下することはありません。
(2)何か悪いことが起こるのを待ってから、修正中に新しい単体テストを作成するか、または
(3)以前のコードを忘れて、新しいコードのみの単体テストを記述し、すべてを次の主要なリファクタリングに延期します。
2と3も同じように答えます。何らかの理由でコードを変更する場合、テストに参加できると本当に便利です。コードがレガシーである場合、現在のところテストを歓迎していません。つまり、変更する前にテストすることは困難です。とにかく変更しているので、テスト可能なものに変更してテストできます。
それが核の選択肢です。危険です。テストなしで変更を行っています。変更する前にレガシーコードをテストするいくつかの創造的なトリックがあります。コードを変更せずにコードの動作を変更できるシームと呼ばれるものを探します。構成ファイル、ビルドファイルなど、必要なものを変更します。
マイケル・フェザーズは、これについての本を提供しました:Legacy Codeで効果的に働く。読んでみると、古いものをすべて焼き付けて新しいものを作成する必要がないことがわかります。