Soll ich Testdateien in der Quellcodeverwaltung speichern?


8

Ich habe eine Reihe von (großen) Testdateien, die gepflegt werden müssen. Dies bedeutet, dass der Zugriff auf ihre Historie eine Voraussetzung ist.

Leistungen

  • Alle neuen Entwickler erhalten die gesamte Testsuite mit nur einem git pull.
  • Der Verlauf der Dateien wird gesichert.
  • Die Dateien selbst werden gesichert.

Nachteile

  • Riesige Vergrößerung des Endlagers.
  • Riesige Zunahme der Downloadgröße neuer Entwickler, die das Repository kopieren.

Was sind die Best Practices für die Pflege von Testdateien?

Speichere ich diese Dateien in der Quellcodeverwaltung? Gibt es Alternativen?


7
Haben Sie darüber nachgedacht, sie in einem anderen Repository zu speichern, das nur abgerufen wird, wenn dies unbedingt erforderlich ist? Ein Git-Submodul vielleicht?
Yannis

Wenn Sie die eigentlichen Dateien nicht versionieren möchten, versionieren Sie eine Liste der Hashes der Dateien, damit Sie zumindest bestätigen können, dass Sie die richtigen Dateien haben, wenn Sie versuchen, Tests zu wiederholen.
Steve314

@YannisRizos Ich mag die Idee eines Submoduls wirklich, danke.
SDASDADAS

2
Wenn Sie einige wirklich große Dateien haben, die sich im Mix nicht oft ändern, könnte der Git-Anhang ebenfalls interessant sein. Aber es geht um Dateien mit einer Größenordnung von Hunderten von Megabyte oder mehr. Kleinere Dateien sind in Ordnung, nur in Git gespeichert, auch wenn es viele davon gibt.
Jan Hudec

Antworten:


13

Speichern Sie sie in der Quellcodeverwaltung. Die von Ihnen aufgeführten Vorteile sind alle sehr gut. Wenn Sie sagen, dass dies zu einer "großen" Größe führt, wie groß sprechen Sie dann? Hunderte von Gigabyte? Terabyte?

Wenn die Speicherung wirklich ein so großes Problem darstellt, können Sie die Dateien komprimieren, die ZIP-Datei in der Quellcodeverwaltung speichern und dann über ein Skript verfügen, das sie entpackt, wenn die Testfälle ausgeführt werden? Auf diese Weise würden Sie den detaillierten Verlauf jeder Datei verlieren (es sei denn, Sie finden ein Tool, das den Verlauf entpackt und im Speicher anzeigt), aber neue Entwickler hätten weiterhin einfachen Zugriff auf Testdateien.

Abhängig von der Art Ihrer Testdaten können Sie über ein Skript zum Generieren von Testdateien verfügen. Dies funktioniert möglicherweise, wenn Sie sehr große Bilder testen, die prozedural generiert werden können (SQL-Einfügungen zum Auffüllen einer Datenbank können auch problemlos von einem Programm oder Skript generiert werden), diese Technik gilt jedoch nicht für alle Arten von Testdaten ...


7
Das Speichern der Zip-Datei in der Quellcodeverwaltung führt dazu, dass mehr Speicher als nur der Text verwendet wird, da Binär-Blobs anstelle von Diffs beibehalten werden müssen.
Daenyth

@Daenyth: Ich denke, es könnte davon abhängen, wie viel die Dateien komprimiert werden können - wenn sie komprimiert werden können und sie sich nicht zu oft ändern (es gibt also nicht zu viele Unterschiede), könnte es sich lohnen. Ohne Details zu diesen Dateien ist das nicht sicher zu sagen.
FrustratedWithFormsDesigner

1
Riesig (in diesem Fall) bedeutet 10s oder 100s GB.
SDASDADAS

1
@sdasdadas: Hmm 100 GB könnten mit der Zeit groß werden ... ist Komprimierung eine Option? Oder Testdaten mit kleinen Skripten generieren?
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner Ich denke, ich kann sie immer komprimieren, wenn es außer Kontrolle gerät. Ein generierendes Testskript trotzt dem Punkt, da dies "reale" Tests sein sollen - Skripte neigen dazu, erfundene Daten zu erstellen.
Sdasdadas

5

Ich würde sie in der Quellcodeverwaltung speichern. Gibt es jemals einen Fall, in dem Sie die Testsuite ohne Code möchten? Macht keinen Sinn. Gibt es jemals einen Fall, in dem Sie den Code bearbeiten möchten, ohne die Testsuite zu aktualisieren? Das sollte es nicht geben.

Nachteil 1 sollte angesichts der Speicherpreise heutzutage kein Problem sein, und moderne SCM-Systeme sollten die Netzwerkaktivität auch außerhalb der Ersteinrichtung nicht zu einem Problem machen.

Ihr Nachteil 2 scheint nicht viel zu sein. Wie oft kommen neue Entwickler an Bord dieses Projekts, sodass die anfängliche Klonzeit zu einem Problem wird?


2

Ich würde sie in einem anderen Repo aufbewahren. Die von Ihnen genannten Nachteile sind unvermeidlich, wenn Sie eine umfangreiche Testsuite haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.