2009-08-03 8 views
2

スピンドルの種類はthisです。ソースツリーにそれらを保存しますか?それらをソース管理のままにしていますか?テストデータファイルはどこに保管していますか?

テストケースがファイルを参照すると、ファイルはシステムの動作仕様の一部であるため、システムの現在のバージョンに関連付けられているため、ソースにチェックインする必要がありますコントロール。しかし、私は彼らがローカルにチェックアウトされるべきではないと思っています。なぜなら、そうである必要はなく、潜在的にかなり大きいからです。プロジェクトのコードファイルが$ svn/Code/foo/bar/bazにある場合、関連するテストデータファイルは$ svn/TestData/foo/bar/bazにあり、後者は、何らかの種類の一般的なテストデータヘルパークラス(おそらくファイルをローカルにキャッシュする)を使用してサーバーから直接アクセスされます。これは、単に相対パスを受け取り、それらを見つける場所を見つけることができます。これは理にかなっていますか?

私は、最初にテストするために外部ファイルをどの程度広範囲に使用するべきかということに関連する疑問があります。私は彼らがしばしばより高いレベルの "受け入れ"テストに良いと思う。

答えて

3

しかし、彼らは

なぜないである必要はありませんので、私は、彼らがローカルにチェックアウトしなければならないとは思いませんか?テストは、複雑なソフトウェアシステムの不可欠な部分です。データなしで実行できない場合は、無駄になります。

テストデータを必要に応じてリモートで取得するというアイデアは興味深いですが、テストを実行するだけでSubversionサーバーとの接続に頼るようになります。私はそれが簡単なことでなければならないものに不必要な複雑さを加えると思う。実行テストが開発のボトルネックになることはありません。

これに加えて、2つの異なるsvnツリーを今すぐ維持しなければならないという事実を考慮する必要があります。複数のフィーチャーブランチとリリースまたはタグがある場合、これは悪夢になる可能性があります。

明示的に質問に答えるために、テストファイルを<プロジェクトルート>/testsに保存しているため、各ブランチには独自の有効なテストセットがあります。

+0

ええ、あなたが言っていることが分かります。低レベル単体テストと高レベルの受け入れテスト(パフォーマンステストの側面を含むかもしれないし、場合によってはマルチギガバイトの入力データを実行する)との間にきれいな分割が必要だと思いますか?明らかに、実行するために数分かかるので、私は変更を行うたびに後者を実行するべきではありませんが、私はまだ定期的に自動的にそれらを実行したいと思います。 大きく分かりにくいデータ入力を処理するこのようなプロジェクトのテストをどのように扱うかについて、私はまだ幾分混乱しています。 –

0

は、私がこのよう

- Trunk 
    - Source 
    - Lib 
    - Tests 
     - DescriptiveTestName_1 
     - DescriptiveTestName_2 
- Branches 
    - v0.9 
     - Source 
     - Lib 
     - Tests 

すべてのファイルのソース、ライブラリ、およびテストはバージョンごとにまとめてある。この方法で、ソース管理に追加し、それが開発(と問題を修正)する場合速度まで取得するのは簡単です。テスト中の各サブディレクトリには、テストに必要なすべてのファイルが含まれています。

+0

「テスト」にテスト用のデータファイルとテスト用のソースコードの両方が含まれていますか?またはソース/テストのソースコードですか? – MatrixFrog

6

私たちは "すべてがソースコントロールの下にある"という考えの学校に登録しています(肛門保持はも始まりません。私たちについて説明しています)。

私たちが責任を負っているすべてのテストレベル(ユニット、システム、統合、翻訳など)、開発ソフトウェアのCD/DVDイメージ、OSイメージ、VM用のテストケース(コードとデータ)テスト環境、すべてのドコ、基本的にすべてチームのすべてのPCとソフトウェアを盗まれた場合に開発/テスト環境をまとめるために必要なもの - ハードウェアを除いては、それをまだチェックするには:-)。

ディスク容量は、必要なすべてを元に戻すのにかかる時間よりもはるかに安いです。そして、あるバージョンのソフトウェアが公開されると、実際にそのバージョンを構築し、それを複数のDVDに焼き付けて、処女ハードウェアのプロセスをテストするために必要なすべてをチェックします。それから、私たちは複数のコピーを作り、それを宇宙の四隅に配布します...おっと、申し訳ありませんが、逃げました。

でも、ですが、ビルドDVDは複数の地理的に離れた場所(地球上ではなく、宇宙全体ではありません)に配布されています。

ソースコントロールツリーのどこにあるのかについては、ツリーの最上位レベルは常にバージョンであり、そのバージョンとのすべてがその下にあります。これにより大規模な複製が可能になりますが、管理が非常に簡単になります。そして、一般に、ディスクストレージは人的資源よりもずっと安いです。

1

私は間違いなく、最新のコードをプルダウンしてテストを実行するのが簡単であるように、テストとソースと同じツリーにテストデータをバージョン管理する必要があると思います。

trunk/ 
    +- Source/ 
    +- TestSource/ 
    \- TestData/ 

これらのテストは、../TestData/myTestData.xmlなど、必要なものを参照しています。

関連する問題