単体テストをコードベースに組み込むにはどうすればよいでしょうか?

StackOverflow https://stackoverflow.com/questions/42785

  •  09-06-2019
  •  | 
  •  

質問

現在単体テストがないコード ベースに単体テストを後付けするための戦略はありますか?

役に立ちましたか?

他のヒント

単体テストを行わずに既存のプロジェクトを改良する最良の方法は、バグを修正するときに行うことです。バグを再現する手順を含む、バグのあるロジックで失敗するテストを作成します。次に、テストに合格するまでコードをリファクタリングします。これで、バグが修正され、サイクルの後半に導入されることはないと確信できるようになり、プロジェクトに単体テストの導入を開始しました。

こちらです もう一つの素晴らしい記事 テスト中。特に、そこからの多少関連性のある引用は次のとおりです。

これはひどいアイデアです。プロジェクトのテスト スイートを構築するのに 1 週​​間を費やすと決めます。まず第一に、テスト中にイライラして燃え尽きてしまう可能性が高いです。第二に、最初は質の悪いテストを書く可能性が高いため、たとえ大量のテストを作成したとしても、テストがどれほど遅いか、脆弱か、または読みにくいかがわかったら、戻って書き直す必要があります。

バグを修正したり、新しい機能を追加したりするときに、一度に 1 つずつテストを構築する方が良いと思います...欠落しているテスト ケースを構築しようとしないでください。カバレッジを向上させるだけではなく、各テストの最終目標を設定する必要があります。

デールは投票で選ばれる。はい、動作しているコードに単体テストを追加しても何のメリットもありません。X と Y という 2 つの未知のバグがあるとします。ある時点で、典型的な現場での使用によって X が明らかになります。それを修正し、単体テストを追加して、次に進みます。ここで、プログラムの存続期間全体にわたって Y が決して発見されないと仮定しましょう。Y は決して自らを明らかにしなかったので、まるで存在しなかったかのようです。資源を無駄にする必要はありません。これに何百、何千もの休眠中のバグを掛け合わせると、余分なメンテナンスを大幅に節約できます。

古い Perl コードに単体テストを追加しようとしている場合は、強くお勧めします。

Perl テスト:開発者のノートブック イアン・ラングワース作、クロマチック。

レガシーコードや「テスト不可能な」コードをテストするための非常に優れたトリックがいくつかあります。

単体テストを追加する理由は何ですか?コードにバグがあると感じますか?ただ何かしたいだけですか?新しい機能に着手しようとしていますか?

かなり長い間リリースされている古い製品の場合は、他の製品に同意し、バグを見つけた場合や新しい機能を追加した場合にのみテストを追加します。

まだ開発中でリリースされていない製品、または最近リリースされたばかりの製品の場合は、コードをレビューすることから始めます。何かが正しくない場合は、それに対するテストを追加します。おそらくいくつかのテストを行ってサンプルデータを作成すると思います。サンプル データを作成すると、かなりの費用対効果が得られるようですし、便利な場合もあります。

テストするバグがない場合でも、テストを書くことには利点があると思います。後で新しい機能を追加したりバグを修正したりするときに、テストによって新しいバグが導入されていないことが確認されます。

私たちはパニックに陥り、単体テストとパフォーマンス テストの間で混乱している可能性がありますか?アプリケーションは少数のユーザーでは正常に動作しますが、負荷が高くなるとエラーが発生し始めるのでしょうか?その場合、単体テストは答えではありません。単体テスト != 負荷テスト。

単体テストが実際に答えである場合は、コードをクリーンアップするのに役立つため、単体テストを改造することは良い考えです。たくさんのリファクタリングを準備してください。TDD を使用して書かれたコードは、TDD を使用せずに書かれたコードとは大きく異なることがわかります。私の場合、多くの場合に対処するメソッド HandleDisposition() がありました。TDD でコードを書いていたら、このような方法は存在しなかったでしょう。単体テストを改良するときに、その関数をリファクタリングし、XDisposition()、YDisposition()、ZDisposition() などのメソッドを使用できるようになり、単体テストの作成がはるかに簡単になりました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top