私は単体テスト、TDD、および固体の原則について読んできました。私はいくつかの明確化が必要です。私の理解は、開かれた/閉ざされた原則に従えば、単体テストは、コードが変更されていないという事実のために、大部分は不要になる可能性があるから、コードが適切に分離されていれば再テストする必要はありません。コードが関連ユニットテストに合格すると、変更されない単体テストの追加コストの長期的な利益は失われます。コードは決して変わらないので、常に通り過ぎます。継承されたクラスはテストする必要がありますが、関連するテストに合格すると、変更されたクラスも閉じられ、再テストする必要はありません。 The Wikipedia article on OCPは、最初の段落でこの考え方を強調しています(私はそれが法律にならないことを認識しています)。
アーノンがOCPテストに変更する場合、既存の試験方法が複雑になる可能性があるため、開発者がソースコードを変更するのは推奨されていることでTDDを補完することを言っているようですけれども、私は、調和is hereにOCPとTDD生活のために見つけた最良の説明新しい機能
それはすべてそれにありますか?私は、引数を探していないよという断っておくが、私はこれに新たなんだと私はあなたが受け入れるようにした場合でもI.テスト駆動開発とオープン/クローズド・プリンシプルはどのように連携しますか?
答えて
よりも対象と多くの経験を有する者からの明確化を探しています、そのソフトウェアの動作に一度変更しない場合は、テストする必要はありません(私はそうではありません)。最初にコンポーネントが動作することを示す必要があります。私はそれを行う最善の方法の1つがユニットテストであると主張します。あなたがテストを持っていたら
また、実質的に言えば、それを実行するために非常に少ないコスト。したがって、コンポーネントが変更されなくても、継続的にテストを実行することで多くを失うことはありません。さらに、時には設計変更があり、いくつかのコンポーネントをやり直す必要があります。この場合、単体テストは間違いなく助けになります。
テストスイートを使用した結果の1つは、変更。たとえあなたのチームがSOLIDでOをフォローしていても、それは事が偶然に変わることを意味しません。そこでテストは、何かが誤って変更されたかどうかを示すことによってそこに役立ち、変更の影響を受けたものを正確に示します。
ユニットテストは、原因コードがすべてではない、まあ
を修飾を閉じているという事実に大部分が不要になる可能性があります。元の閉鎖された実装が正しいことをどのように知っていますか?
ユニットテストの追加初期費用の長期的な利益は
を失っているソフトウェア工学経済学の重要な知見は、それは、後の生活の中で欠陥を検出し、修正するために、はるかに高価です製品。古典的な「滝」開発プロセスでは、各段階で約2倍の大きさになります。単体テスト(TDDであろうとテストファーストであろうと)は早期に欠陥を検出するので、コストをすばやく回収することができます。
それはそれで欠陥がある場合は、それを変更する必要があります
を変更しません。もちろん、あなたのコードに欠陥がないことを保証できるなら、あなたの言うことは真実です。しかし、あなたが保証することができます場合種類のテスト。しかし、このような主張をすることができるソフトウェアプロジェクトはごくわずかです。
- 1. テスト駆動開発プレゼンテーション
- 2. JSPのテスト駆動開発特に
- 3. Pythonでのテスト駆動開発
- 4. .NET(TDD)でのテスト駆動開発VS2010
- 5. CakePHPでのテスト駆動開発
- 6. HandlerManagerはソースとどのように連携しますか?
- 7. HTTP/2とCNAMEはどのように連携しますか?
- 8. PEARクラスコメントとファイルコメントスニフはどのように連携しますか?
- 9. nhibernateとasp.netはどのように連携しますか?
- 10. SASL Anonymousはxmppとどのように連携しますか?
- 11. subqとcfはどのように連携しますか?
- 12. VLCとFFMPEGはどのように連携しますか?
- 13. .matchとキャプチャグループはどのように連携しますか?
- 14. waitpidとptraceはどのように連携しますか?
- 15. CoberturaはJUnitとどのように連携しますか?
- 16. ReactとNodeJSはどのように連携しますか?
- 17. addListenerはmatchmedia APIとどのように連携しますか?
- 18. 例によるテスト駆動開発例Kent Beck著
- 19. Pythonによるテスト駆動開発 - 第6章
- 20. img altタグはどのように動的コンテンツと連携しますか
- 21. 私のクラスで動作しないテスト駆動型開発
- 22. Rubyでテスト駆動開発をしようとするとNoMethodErrorが発生する
- 23. iOSのテスト駆動開発... TDDかTDDかを問わず
- 24. OSGIとJSFはどのように連携できますか?
- 25. ジェンキンスパイプラインはモノレポとどのように連携できますか
- 26. SharePoint開発者は、プロジェクトでグラフィックデザイナーとどのように連携する必要がありますか?
- 27. Pythonでモジュールをテスト駆動型開発用にインポートするかどうかをテストするにはどうすればよいですか?
- 28. テスト駆動開発では、行動主導型開発の一部が考慮されていますか?
- 29. Passenger、Capistrano&SVNはどのように連携しますか
- 30. 複数のコントローラを使用したAngular JSテスト駆動開発
SOLIDはベストプラクティスであり、宇宙の調和のとれたバランスが依存する物理学の法則ではないことを常に忘れないでください。 SOLIDルールを簡単に破ることができます。たとえ宗教的に従ったとしても、SOLIDデザインはすべての可能な変更に単純に対応できません。 1つのタイプの変更を閉じると、別のタイプの変更が行われる可能性が高くなります。 – KeithS