テストファイルをソース管理に保存する必要がありますか?


8

維持する必要のある(大きな)テストファイルがいくつかあります。これは、彼らの歴史へのアクセスが要件であることを意味します。

利点

  • 新しい開発者は、だけでテストスイート全体を入手できgit pullます。
  • ファイルの履歴がバックアップされます。
  • ファイル自体がバックアップされます。

欠点

  • リポジトリのサイズが大幅に増加しました。
  • リポジトリをコピーする新しい開発者のダウンロードサイズが大幅に増加します。

テストファイルを維持するためのベストプラクティスは何ですか?

これらのファイルをソース管理に保存しますか?代替案はありますか?


7
それらを別のリポジトリに格納することを検討しましたか?絶対に必要な場合にのみプルされるリポジトリですか?おそらくgitサブモジュール?
yannis 2013

実際のファイルをバージョン管理しない場合は、ファイルのハッシュのリストをバージョン管理して、少なくともテストを繰り返すときに正しいハッシュがあることを確認できるようにします。
Steve314 2013

@YannisRizosありがとう、サブモジュールのアイデアが本当に好きです。
sdasdadas 2013

2
ミックスで頻繁に変更されない非常に大きなファイルがいくつかある場合、git annexも興味深いかもしれません。しかし、それは数百メガバイト以上のファイルについて話している。小さいファイルは、それらが多数ある場合でもgitに保存するだけで問題ありません。
Jan Hudec 2013

回答:


13

それらをソース管理に保管します。あなたが挙げた利点はすべて非常に良いものです。これを行うと「巨大な」サイズになると言ったとき、あなたはどれだけ巨大な話をしていますか?数百ギガバイト?テラバイト?

ストレージが本当にそれだけ問題である場合、ファイルを圧縮して、ソース管理にzipファイルを保存し、テストケースの実行時にそれらを解凍するスクリプトを作成できますか?(ファイルを解凍してメモリに履歴を表示するツールを見つけられない限り)各ファイルの詳細な履歴は失われますが、新しい開発者はテストファイルに簡単にアクセスできます。

テストデータの性質に応じて、テストファイルを生成するスクリプトを作成できます。これは、手続き的に生成できる非常に大きな画像をテストする場合に機能する可能性があります(データベースにデータを追加するSQL挿入は、プログラムまたはスクリプトによって簡単に生成することもできます)。ただし、この手法はすべての種類のテストデータに適用できるわけではありません...


7
ソースコントロールにzipファイルを保存すると、単なる差分ではなくバイナリblobを保持する必要があるため、テキストだけでなくより多くのストレージが使用されます。
Daenyth 2013

@Daenyth:圧縮できるファイルの量に依存するのではないかと思います-圧縮でき、あまり頻繁に変更されない場合(差分が多すぎない場合)、それだけの価値があります。これらのファイルについての詳細なしで確かに言うことは不可能です。
FrustratedWithFormsDesigner

1
巨大な(この例では)は、10 GBまたは100 GBを意味します。
sdasdadas 2013

1
@sdasdadas:うーん100 GBは時間の経過とともに大きくなる可能性があります...圧縮はオプションですか?または小さなスクリプトでテストデータを生成しますか?
FrustratedWithFormsDesigner 2013

@FrustratedWithFormsDesigner私は手に負えなくなったらいつでも圧縮できると思います。これは「実世界」のテストであるはずなので、生成するテストスクリプトは要点に反しています。スクリプトは不自然なデータを作成する傾向があります。
sdasdadas 2013

5

ソース管理に保存します。コードなしのテストスイートが必要になるケースはありますか?意味がありません。テストスイートを更新せずにコードを編集したい場合はありますか?あってはいけません。

最近のストレージの価格を考えると、欠点1は問題にならず、最近のSCMシステムでは、初期設定以外のネットワークアクティビティも問題にならないはずです。

あなたの欠点2はそれが多くあるべきであるようには見えません。このプロジェクトに新規開発者が参加する頻度はどれくらいですか。最初のクローン時間が問題になりますか?


2

別のリポジトリに保存します。かさばるテストスイートがある場合、あなたが言及した欠点は避けられません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.