4

私は次の問題を解決できるツールを見つけようとしています:

テストスイート全体の実行には数時間かかります。これにより、テストの実行の間に50〜200のコミットが存在する可能性があるため、特定のテストに失敗したコミットを見つけるのが困難になるか、少なくとも非常に時間がかかります。常に壊れたテストはごくわずかであるため、壊れたテストのみを再実行することは、テストスイート全体を実行する場合に比べて非常に高速です。

テストがOKだった最後のリビジョンとテストがOKではなかった最初のリビジョンの間にいくつかのリビジョンを使用して失敗したテストを再実行し、特定のコミットを自動的に検出できるツール(継続的インテグレーションサーバーなど)はありますか?テストが成功から失敗に切り替わりました。

例えば:

テストAとBはリビジョン100で問題ありません。テストAとBはリビジョン200で壊れています。

ツールは、リビジョン150で両方のテストを実行する必要があります。たとえば、テストAが壊れていて、テストBがリビジョン150で問題ない場合は、テストAがリビジョン125で、テストBがリビジョン175で、すべての壊れたテストまでチェックを続けることができます。いくつかの特定のコミットによって説明することができます。

単一のテストでは、おそらくgitbisectと一緒に何かをハックすることができます。しかし、複数の失敗したテストの場合、多くのリビジョンを両方向で検索する必要があるため、これではおそらく十分ではありません。

4

1 に答える 1

4

ギット

またはを使用していますか(参照: Mercurial bisect は何に適していますか? )?

プロジェクトのバージョン 2.6.18 は機能したが、「マスター」のバージョンがクラッシュしたとします。このようなリグレッションの原因を見つける最良の方法は、プロジェクトの履歴を総当たり検索して、問題の原因となった特定のコミットを見つけることです。git bisect コマンドは、これを行うのに役立ちます:[...]

From:問題を見つける - Git Bisect .

基本的に、2 つのリビジョンを開始と終了、およびヒットとしてマークします。

$ git bisect

次に、テストを実行し、呼び出しが成功したか失敗したかに応じて

$ git bisect good

また

$ git bisect bad

それぞれ。git は二分探索を行い、常に残りのリビジョンを半分に減らします。簡単にスクリプト化できると思います。を使用している場合、git はリポジトリ全体を簡単にインポートできます。

一度に 1 つのリビジョンをビルドする

これは答えではなくアドバイスです。すべてのコミットをテストしてください。現在、継続的インテグレーション サーバーを簡単にクラスター化できます。サーバー ファームを使用すると、すべてのコミットをテストするのはそれほど難しくありません。

于 2012-04-06T13:11:21.420 に答える