私は単体テストのメリットを検証し、コードの正しさを検証し、適切に行うと自然に疎結合コードを作成するという追加の利点を確認しました。言い換えれば、ユニットは1つの方法ほど小さく、大きくはない。私はちょうどよい単体テストがコードを鳴らして他の開発者のコード変更からその機能を保護するかどうかを知りたいと思います(失敗した単体テストが失敗したビルドだと仮定して)。私が見落とした他の利点もありますか?ユニットテストはあなたのコードを他の開発者の間違いから守りますか?
答えて
単体テストのテストカバレッジを持つ他の(見過ごされた)メリットの1つは、開発者が自分のつま先を大きなソリューション/古いレガシーコードに浸すことを実際に奨励できるということです。リファクタリングが失敗したときのフィードバック
はい、大部分の時間は、単体テストは実際に他の開発者の間違いを防ぎます。しかし、これは常に真実ではありません。テストポイントは、より実行可能なソリューションのためのより良い賭けです。
他の開発者がテストを削除しないかどうかによって異なります。
しかし、真剣に、コードを適切にモジュール化してテストを明確にすると、通常、人々はテストを中断した場合に変更を2回考えます。
変更が必要な理由がない限り、新しい機能を説明するために、テストを適宜変更する必要があります。
単体テストは、コードを他の開発者のミスから保護しますか?
正確ではありません。
単体テストは、特定のコード(「単位」)を分離し、それを肯定的および否定的な方法で呼び出して、毎回期待される結果に対して出力をテストします。これにより、ユニットが堅牢であり、そのユニットの文脈内で予想される要求 - を満たすことが保証されます。。
これは、コードに値を渡す前に間違っている他の開発者や、返された値に間違って動作することを阻止しません。あなたのコードに渡された値は有効かもしれませんが、間違っています。例えば、あなたのコードは0から100の間の正の整数を期待するかもしれませんが、あなたのコードは50の値を渡す特定の呼び出し元が間違っているということを知らない - あなたのコードは受信したものにしか作用できません。 。この場合、その呼び出しコードの単体テストが問題を解決するかもしれませんが、コードの単体テストは実行されません。私はちょうど良いユニットテストはコード・フェンスリングや他の開発者のコードからその機能を保護するかどうかを知りたい
は
ユニットテストは、フェンスは何も鳴らない変更します。よく書かれたテストを前提として、あなたのコードが変更され、元の意図とはもはや一致しなくなった場合、あなたに教えてくれます。呼び出し元が実行時に間違った値を渡している場合は、呼び出し元が間違った値を渡しているかどうかはわかりませんが、間違った値が渡された場合、コードが正しく動作するかどうかを確認するのに役立ちます。
私の経験では、コードを書いている人としては良い。その人が貧弱なコーダーであるか、または要件を正しく理解していない場合は、テストは無駄になる可能性があります。私はこれまでに本当にひどい単体テストを見たことがあります。その結果、テストアプローチの一部に過ぎないことを常にアドバイスしています。それらを専ら信頼するべきではありません。単に規律あるアプローチの一部です。
- 1. 違反ボットの開発、コードに問題がありますか?
- 2. このコードにはメモリリークの間違いがありますか?
- 3. 中級Java開発者のための良い、簡潔なAndroid開発チュートリアルはどこにありますか?
- 4. GITプルリクエストと開発者側からのマージの違い
- 5. ギアVR - あなたは開発者ではありません
- 6. Scandit SDKの開発者向けドキュメントはありますか?
- 7. iPhone開発者用のプロフェッショナルコース(認定プログラム)はありますか?
- 8. 開発者コンソールのSalesForceのコードをインデントするためのショートカットキーはありますか?
- 9. プラットフォーム間でAppEngine Python SDK開発サーバーコードに違いはありますか?
- 10. 私のコードで間違いがありますか?
- 11. 開発者マスターとリモートマスターの違いは何ですか?
- 12. 開発者からの応答なし
- 13. 開発者から別の開発者にアプリケーションを転送
- 14. 開発時間の1時間あたりのコードレビューの時間はどれくらいですか?
- 15. IE用FireBugのような開発者用ツールはありますか?
- 16. 高度なPHP開発者のためのDrupalに関する良い本/チュートリアルはありますか?
- 17. ユニットテストはiOS開発でコストがかかりますか?
- 18. 他のネストの開発者アカウントから私のサーモスタットデータにアクセスするには?
- 19. 開発者以外の人(翻訳者)がリソースバンドルを編集するためのツールはありますか?
- 20. ASPのネストされたIFステートメント...コードに間違いがありますか?
- 21. 用語のコードとステートメントの間に違いはありますか?
- 22. Facebook-connectまたはOpenID?開発者の視点から
- 23. 開発者と非開発者の間でios開発を共有する
- 24. 他のユーザーロールとして間違ったテーマがあります
- 25. 開発者間のコラボレーションリアリティチェック
- 26. 包括的と排他的な違いはありますか?
- 27. Cの開発者にとって、Clangのバージョン2.8と3.1の間に実用的な違いはありますか?
- 28. 開発者ビルドのオーディエンスを作成する方法はありますか?
- 29. あなたのAPKのバージョンコードは、プレイストア開発者コンソールのXXより高くする必要があります
- 30. リターンと例外発生の間に違いはありますか?
適切なカプセル化は、他の開発者の間違いを防ぐのに役立ちます。メソッド、モジュール、またはロジックの意図しない使用を、「使用させる」ものに限定することによって、他の開発者からのエラーを制限します。単体テストではそのようなことはありません。逆に、単体テストでは、機能的に必要以上にコードベースを開く必要があります。 単体テストの唯一のテストは、モジュールとメソッドが期待どおりの変更を行っていることです。 –