Devo armazenar arquivos de teste no controle de origem?

8

Eu tenho vários arquivos de teste (grandes) que precisam ser mantidos. Isso significa que o acesso ao histórico deles é um requisito.

Benefícios

  • Qualquer novo desenvolvedor obtém todo o conjunto de testes com apenas um git pull.
  • O histórico dos arquivos é feito em backup.
  • Os próprios arquivos são copiados.

Desvantagens

  • Grande aumento no tamanho do repositório.
  • Grande aumento no tamanho do download de novos desenvolvedores que copiam o repositório.

Quais são as melhores práticas para manter arquivos de teste?

Eu guardo esses arquivos no controle de origem? Existem alternativas?

sdasdadas
fonte
7
Você já pensou em armazená-los em um repositório diferente, que será extraído apenas quando for absolutamente necessário? Um submódulo git, talvez?
yannis 26/09
Se você decidir não fazer a versão dos arquivos reais, faça uma versão de uma lista de hashes dos arquivos para que pelo menos você possa confirmar se possui os corretos ao tentar repetir os testes.
Steve314 26/09
@YannisRizos Eu realmente gosto da idéia de um submódulo, obrigado.
sdasdadas 26/09/13
2
Se você tiver alguns arquivos realmente grandes que não mudam frequentemente no mix, o anexo do git também pode ser interessante. Mas isso é falar de arquivos com centenas de megabytes ou mais. Arquivos menores são bons apenas armazenados no git, mesmo que haja muitos deles.
Jan Hudec 27/09/13

Respostas:

13

Armazene-os no controle de origem. Os benefícios que você listou são todos muito bons. Quando você diz que isso resultará em um tamanho "enorme", quão grande você está falando? Centenas de gigabytes? Terabytes?

Se o armazenamento é realmente um problema, você pode compactar os arquivos, armazená-los no controle de origem e, em seguida, ter um script que os descompacta quando os casos de teste são executados? Você perderia o histórico detalhado de cada arquivo dessa maneira (a menos que seja possível encontrar uma ferramenta que descompactará e mostrará o histórico na memória), mas os novos desenvolvedores ainda teriam acesso fácil aos arquivos de teste.

Dependendo da natureza dos seus dados de teste, você pode ter um script para gerar arquivos de teste. Isso pode funcionar se você estiver testando imagens muito grandes que podem ser geradas proceduralmente (as inserções SQL para preencher um banco de dados também podem ser facilmente geradas por um programa ou script), mas essa técnica não se aplica a todos os tipos de dados de teste ...

FrustratedWithFormsDesigner
fonte
7
Armazenar o arquivo zip no controle de origem resultará em mais armazenamento usado do que apenas o texto, pois ele precisará manter blobs binários em vez de apenas diffs.
Daenyth 26/09/13
@ Daenyth: Eu acho que pode depender de quanto os arquivos podem ser compactados - se eles podem ser compactados e não mudam com muita frequência (por isso não há muitas diferenças), pode valer a pena. Impossível dizer com certeza sem detalhes sobre esses arquivos.
FrustratedWithFormsDesigner
1
Enorme (neste caso) significa 10s ou 100s de GB.
sdasdadas 26/09/13
1
@sdasdadas: Hmm 100's de GB podem ficar grandes com o tempo ... a compressão é uma opção? Ou gerar dados de teste com pequenos scripts?
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner Acho que sempre posso compactá-los se ficar fora de controle. Um script de teste de geração meio que desafia o argumento, já que se trata de testes do "mundo real" - os scripts tendem a produzir dados inventados.
sdasdadas 27/09/13
5

Eu os armazenaria no controle de origem. Existe um caso em que você deseja a suíte de testes sem o código? Não faz sentido. Existe um caso em que você deseja editar o código sem atualizar o conjunto de testes? Não deveria haver.

A desvantagem 1 não deve ser um problema, considerando os preços de armazenamento atualmente, e os sistemas modernos de SCM também devem tornar a atividade de rede uma preocupação fora da configuração inicial.

Sua desvantagem 2 não parece ser muito. Com que frequência você tem novos desenvolvedores participando deste projeto que o tempo inicial do clone se torna um problema?

Daenyth
fonte
2

Eu os armazenaria em um repositório diferente. As desvantagens que você mencionou são inevitáveis ​​se você tiver um conjunto de testes volumoso.

vpillai
fonte