戦略とスケルトンは、生成するテストの種類、探しているカバレッジの種類、作業している言語/環境に大きく依存します。
CやJavaなどの言語の場合、クラスシグネチャを読み取り、標準のコーナーケースのテストを自動的に生成するテストジェネレーターを作成するのは非常に簡単です(0、2のランダムな値、MAX_INT、MIN_INTを整数引数に渡し、null可能の場合はnullなど)。次に、生成されたテストを実行し、各テストの結果を記録し、それらを手動でフィルター処理して無関係なものを削除し、合格するテストの許容可能な結果を承認し(それ以降は自動的に合格できるようにします)、失敗した無効なものとしてマークします。
クラスのタグ付け/コメント化/リファクタリングでこれを拡張して、ジェネレーターに追加のヒントを提供できます。メソッド呼び出しで発生する可能性のあるすべての例外をリストしたり、整数引数に有効な整数の範囲を狭めたりするタグがあります。テストを自分で作成する必要がある場合は、これらを省略形として見てください。
それで、あなたが見たいいくつかのコンポーネントがあります:
- ソースコード/関数署名/手動注釈を自動的に解析し、標準テストケースを作成するコンポーネント、または入力が完了するのを待つテストケースのアウトライン/署名。
- 自動テストビルダーへのヒントを表す、あらゆるレベルの粒度(メソッド/クラス/署名/ whileループなど)に移行する可能性のあるタグ/注釈/コメントの絶えず成長/変化する言語。理想的には、フレームワークまたはその中のチャンクを再コーディングすることなく、この言語で遊ぶことができるはずです
- 自動化されたテストランナー。新しい/古いテストを識別し、各テストの「許容できる」回答に対してテストを記録/テストできます。理想的には、このランナーはテスト実行、受け入れられた/拒否された結果、および各テストの現在の受け入れ可能な結果のデータベースを構築します。
- クラス名と名前のマップ->値を指定して、クラスを模倣するオブジェクトを生成し、関数呼び出し、アクセサ、パブリックデータスロットなどのカスタマイズ可能なデータを返す自動「オブジェクトフェイカー」
さまざまな言語およびプラットフォーム用のこの機能のチャンクをすでに含んでいるテストフレームワークがたくさんあります。自分でこの作業を開始し、社内でこの種のフレームワークを有機的に成長させることはかなり簡単ですが、おそらく既存の作業を複製する無限の長期プロジェクトでもあります。最初に利用可能なものを確認するためにかなりの時間を取ってから、飛び込むのに価値があるかどうかを判断することをお勧めします。