3

I have the following requirement for an application:

  • Store large files (order of megabytes) which I will use as input for non regression test and some expected properties of the processing result
  • Allow business users to add additional files and properties
  • Being able to track over time which files (and properties) were used for testing

Obviously putting the test data under VCS wouldn't allow my business users to add files and properties easily, should I use a cloud storage? What other solutions do I have?

  • 2
    It's not so "obvious" to me ... At least part of this data should be kept under VCS, so you are able to track which files where used by which module and when. Can you imagine having e.g. the filename + md5 sum + URL in VCS and the file data in some share/cloud ? – Tibo Jun 1 '16 at 7:39
  • 1
    Possible duplicate of Binaries in source control – user22815 Jun 1 '16 at 16:44
  • @Snowman: enlighten me, but where does that other question deal with the issues of binary files which are so large it gets impracticle to store them in source control? – Doc Brown Jun 11 '16 at 15:41
  • 2
    @DocBrown enlighten me, but where does this question deal with the issues of binary files which are so large it gets impractical to store them in source control? The question specifically states "Store large files (order of megabytes)" which is not impractically large to store in source control. – user22815 Jun 11 '16 at 18:41
3

I would argue that you want this in VCS.

When you branch or tag the code, you're going to want to branch/tag your tests too. And with that your test data. Otherwise how do you know which data set ties up with which particular code set that you have.

You could possibly contain a reference to a dataset within your versioned codebase, and store the actual dataset outside. Then your tests would have a referenced dataset to load and you could change that with each branch or tag. But that seems particularly troublesome and difficult to maintain, and I would avoid that if at all possible.

  • This sounds very sensible: a reference to the dataset under VCS. Where would you store the dataset itself? – Edmondo1984 Jun 1 '16 at 10:27
1

Obviously putting the test data under VCS wouldn't work

Why not? And what about LFS?

Even without LFS, you need to think twice before discarding version control solution. You tell only that there are some files which have a size of a few megabytes. No further indication.

  • A dozen 5 MB files which change once per month for a 12-months project is not a big deal: any version control will handle that painlessly.

  • Hundreds of 5 MB files changed nearly daily for a 2-year project could bring some version control systems/servers/networks down and require additional preparation.

If you're in the first case, simply create a dedicated repository using your preferred version control system.

If you're in the second case, then you need to be very specific: how much files? How frequently are they changed? What is the exact average size? How long is the project? From there, you may either use an existent solution, such as LFS, or create your own, where files will actually be stored on a NAS, but never accessed directly, but only through the custom version control.

If you're in Microsoft world, FILESTREAM feature of Microsoft SQL Server could help abstracting away the actual storage of the files. Eventually (although I don't know Microsoft SQL Server well enough), you might be able to combine it with CDC to track the actual changes. Also, SharePoint provides you with the capability of versioning binary files while storing them efficiently if only part of a binary file is actually changed.

  • what about allowing business users to add the files themselves? – Edmondo1984 Jun 1 '16 at 8:33
  • @Edmondo1984: What about the business users? Are they so technically illiterate that they aren't able to use a GUI program and follow a simple set of instructions? Using a modern VCS is no more complicated than using Windows Explorer, as long as there are clear instructions. – Bart van Ingen Schenau Jun 1 '16 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.