2012-01-19 18 views
3

ソースコントロールにある以前のバージョンのソフトウェアでユニットテストを実行するツールはありますか? アイデアはバグが浮かび上がっていたので、私は新しいテストを書いて、ソフトウェアがそれぞれのバック・バージョンをソース・コントロールからチェックアウトし、テストがもう失敗しなくなるまでまたは私達は最初に達する。ソース管理の履歴バージョンに関する探偵ユニットテスト

私たちは転覆を使っていますが、このようなことが一般的に存在するかどうか不思議です。

答えて

3

Mercurialにはbisectというコマンドが組み込まれており、基本的には探しているものを実行します。

これはユーザー作成のスクリプトで動作するように設計されていますが、一言で言えば、スクリプト(ユニットテストを実行するスクリプト)は、チェックアウトされたリビジョンが "合格"または "失敗"これに基づいて、バグが導入されたリビジョンが見つかるまで履歴を移動します。

私はこのようなツールがSVN用に存在するかどうかはわかりませんが、私はMercurialでbisectを見つけました。この種のものには非常に便利です。

1

バージョン管理システムのほとんどは、特定のバージョンのビルド全体をチェックアウトすることができます。ビルドの特定のファイルの履歴/変更を追跡することができます。

a) Check out a really old version into a scratch directory 

    b) Build and confirm it DOESN'T have the bug 

    c) Manually compare the old and current versions and make "educated guesses" as to "what changed". 

    d) Check out a version between the old and current version (based on what I found in step c). 

    e) Build and test. 

    f) If it has the bug, check out version between a) and d). 

    If it doesn't have the bug, check out a version between d) and the current. 

    g) Rinse and repeat 

そして、はい、一部またはこのすべては確かにスクリプト化することができます。

通常、私は単純な「分割統治」のアプローチを取ります。

bash(Linuxの場合)または選択したスクリプト言語で。

3

Mercurialの中バイセクト(とGitは)各バックバージョンをckeckingのを除いて、まさにこのジョブを実行する - それが問題の原因が速く

見つけました
関連する問題