自分自身をテストするように設計された「堅牢な」ソフトウェアを構築する方法を学びたいです。つまり、ソフトウェアに自動化されたテストをどのように実装するのですか ( Java または groovy または c++ を使用)。
どこでこれを学べばよいか (本やウェブサイト)、またそのために必要なツールやライブラリを知りたいです。
自分自身をテストするように設計された「堅牢な」ソフトウェアを構築する方法を学びたいです。つまり、ソフトウェアに自動化されたテストをどのように実装するのですか ( Java または groovy または c++ を使用)。
どこでこれを学べばよいか (本やウェブサイト)、またそのために必要なツールやライブラリを知りたいです。
前述のテスト駆動開発 (TDD) 手法に加えて、コントラクトによる設計を検討することもできます。これは、基本的に、本番コードにアサーションを追加して、実行時に契約条項 (入力、出力、およびコンポーネント間の不変条件) が尊重されます。これらのアサーションは、ソフトウェアの配信時に削除または保持できます。
TDDが「それ自体をテストするように設計されたソフトウェア」につながるのではなく、一部のソフトウェア、つまり別のソフトウェアをテストする製品コードとともに成長した単体テストスイートにつながることを明確にするために、私の答えを増やしたいと思います.
開始するのに適した場所はhttp://www.codeproject.com/KB/cs/autp1.aspxです
RoyOsheroveによるTheArtof Unit Testingは、ユニットテスト、整数化テスト、TDDなどの基本を理解するのに非常に役立つことがわかりました。.Net言語向けに少し調整されていますが、自動テストの背後にあるアイデアに関する非常に優れた情報も提供します。
xUnit テスト フレームワーク ( C++ の場合はcppUnit 、Java の場合はJUnit ) を見て、素晴らしい本xUnit Test Patterns: Refactoring Test Codeを調べてください。
そして、本当にやりたい場合は、テスト駆動開発をチェックしてください。適切な紹介は、ボブおじさんの TDD の 3 つの法則とボウリング ゲームのカタです (ボウリング ゲームのエピソードも参照してください)。このテーマに関する優れた本はTest Driven Development: By Exampleです。
Java の自動テスト ハーネスである JUnit は、実際に物事を開始したツールです。 JUnit サイトは、開始するのに最適な場所です。多くの記事とテスト ツールへのリンクがまとめられています。
「自分自身をテストする」部分についてはわかりませんが、最初に考えたのは、テスト駆動開発 ( http://en.wikipedia.org/wiki/Test-driven_development ) について読んで、JUnit をチェックすることです。