2

私は古いユニットテスト環境をクリーンアップする責任があります。既存の環境には大量の実行可能ファイル(1000以上のシェルスクリプト、コンパイルされたバイナリなど)が含まれており、それぞれがコード0または1を返し、結果に応じていくつかの出力を返します。テストもタイムアウトする可能性があります。一連のPERLスクリプトが実行され、各実行可能ファイルが実行され、結果が大きなXMLファイルに収集されてWebページにレンダリングされます。このシステムはうまく機能しますが、あまり拡張性がなく、高速でもありません。

これをクリーンアップ/高速化することに加えて、同時テストを実装したいと思います。現在、テストは一度に1つずつ実行されます。テストの多くはリソースロック(ポート、ファイルなど)を必要とし、同時に実行しても安全なリストはありません。ここでのオプションは、ある種のVMでそれぞれを実行することです。

この種の状況のた​​めに設計されたフレームワークまたはツールはありますか?独自の新しいシステムを作成する必要がある場合、それにアプローチするための最良の方法は何ですか?私の制限は、1000以上のテスト実行可能ファイルを変更できないことです。サブプロセスなどを使用して既存のテストを実行し、結果をPythonic形式に変換するPythonユニットテストを備えたPyUnitのようなものを考えていました。これはやり過ぎですか?このようなシステムは、テスト間のデッドロックや競合状態を回避するために、プロセスの分離をサポートできますか?最悪の場合、Pythonを使用していくつかのVMの1つにSSHで接続し、テストを実行することを考えていました。

任意のヘルプやガイダンスをいただければ幸いです。

編集:Pythonは厳密には必要ありません。別のソリューションでは、テストセットをいくつかのMサイズのチャンクに分割し、すべてのMサイズのチャンクが完了するまでSSH経由で独立したVMで各テストを実行する場合があります。この問題を解決するツールがあることを願っています。

4

1 に答える 1

0

あなたが直面している問題を解決するために私が認識している、すぐに使える、またはニーズに合わせてカスタマイズするソリューションはありません。

あなたの問題を見ると、際立ったいくつかの明確なニーズがあります。

  • タグ付けのテスト
  • テストの実行
  • テスト結果キャプチャ

対処する必要がある最初の問題は、特定の環境で同時に実行できるテストをどのように識別して追跡するかということです。

を使用していた場合(つまり、Python のテストに適している場合)、属性セレクター プラグインを使用して、さまざまな属性でテストにタグを付けることができます。

ノーズはまた、テストの実行を支援し、テストのタグ付けと組み合わせると、テストを並行して実行することができます。ノーズを使用すると、外部実行可能ファイルを実行し、そのステータス コードに基づいてアサートできるはずです。

直面する最後の問題は、テスト出力を独自の形式でキャプチャし、すぐに利用できるツールに取り込める形式に変換する方法です。繰り返しますが、鼻がここであなたを助けることができると信じています。独自の形式を使用して XUnit 形式に変換し、その方法で結果を報告するノーズ プラグインを作成できます。

上記のすべてを念頭に置いて、この状況に対処する方法を次に示します。

  • 鼻に基づいてテスト ラッパー クラスを作成します。
    • タグ付け可能
    • プログラムを実行し、結果出力をキャプチャする
    • その出力を XUnit に変換します
  • テストごとにラッパーを作成する
    • 面倒なので、このプロセスを自動化する方法を考えてください。
  • テスト実行ハーネスを構築します。
    • 1 つ以上の VM を起動します
    • テスト ラッパーをロードして実行する
    • 結果をキャプチャする
于 2013-02-26T23:26:37.547 に答える