私は古いユニットテスト環境をクリーンアップする責任があります。既存の環境には大量の実行可能ファイル(1000以上のシェルスクリプト、コンパイルされたバイナリなど)が含まれており、それぞれがコード0または1を返し、結果に応じていくつかの出力を返します。テストもタイムアウトする可能性があります。一連のPERLスクリプトが実行され、各実行可能ファイルが実行され、結果が大きなXMLファイルに収集されてWebページにレンダリングされます。このシステムはうまく機能しますが、あまり拡張性がなく、高速でもありません。
これをクリーンアップ/高速化することに加えて、同時テストを実装したいと思います。現在、テストは一度に1つずつ実行されます。テストの多くはリソースロック(ポート、ファイルなど)を必要とし、同時に実行しても安全なリストはありません。ここでのオプションは、ある種のVMでそれぞれを実行することです。
この種の状況のために設計されたフレームワークまたはツールはありますか?独自の新しいシステムを作成する必要がある場合、それにアプローチするための最良の方法は何ですか?私の制限は、1000以上のテスト実行可能ファイルを変更できないことです。サブプロセスなどを使用して既存のテストを実行し、結果をPythonic形式に変換するPythonユニットテストを備えたPyUnitのようなものを考えていました。これはやり過ぎですか?このようなシステムは、テスト間のデッドロックや競合状態を回避するために、プロセスの分離をサポートできますか?最悪の場合、Pythonを使用していくつかのVMの1つにSSHで接続し、テストを実行することを考えていました。
任意のヘルプやガイダンスをいただければ幸いです。
編集:Pythonは厳密には必要ありません。別のソリューションでは、テストセットをいくつかのMサイズのチャンクに分割し、すべてのMサイズのチャンクが完了するまでSSH経由で独立したVMで各テストを実行する場合があります。この問題を解決するツールがあることを願っています。