私は最近、この(古い)記事に出くわしました:
http://imranontech.com/2007/01/04/unit-testing-the-final-frontier-legacy-code/
作成者は、テスト ケースを自動的に生成するための perl スクリプトを作成したとされています。彼の戦略は次のようになりました(引用):
- 私が与えたヘッダーファイルを読み込んでください。
- 関数プロトタイプを抽出しました。
- 見つかった関数のリストが表示され、単体テストを作成する関数を選択できました。
次に、選択した関数が呼び出されるたびにブレークポイントを設定し、渡された変数を保存し、関数が返される時点で戻り値を保存するまで続行する dbx (Solaris デバッガー) スクリプトを作成しました。
dbx スクリプトの下で実行可能ファイルを実行し、その時点でアプリケーションを通常どおりに使用し、問題のコードを通過すると思われる多くのユース ケース、特にエッジ ケースにヒットすると思われるケースを実行しました。単体テストを作成したい関数。
次に、perl スクリプトはすべての実行例を取得し、重複を取り除き、各例の単体テストを含む C ファイルを自動生成します (つまり、入力データを渡し、戻り値が実行例と同じであることを確認します)。単体テストをコンパイル/リンク/実行し、失敗したものを破棄しました (つまり、関数が非決定論的に動作する原因となる入力を取り除きます)
私は Python と Fortran の言語で、あらゆる種類のレガシー コードをたくさん持っています。この記事は 2007 年のものです。現在の単体テスト フレームワークに実装されているようなものはありますか?
このようなスクリプトを作成するにはどうすればよいでしょうか。