Realistic test data in DEV and QA environments can pinpoint bugs and performance issues early

How do we make this data realistic and scalable without compromising production data security?

Vardøgr: A tool that can create production-like data by generating a distribution model, then generate data from the model.

Distribution model

The distribution model is essentially a description of how your production data looks like. The description contains:

Absolutely no actual data gets saved in the model.

Based on this description, the tool can then recreate data that follows the same rules. And since it's not related to the actual data, there is no restriction on the scale of said recreation.

Usage

build --reset

This connects to your production database (read-only) and builds the distribution model. If this is the first time connecting to the database, a wizard will start to guide you through creating a configuration file. Once a config file is created, the tool remembers how to connect to the database in the future. Credentials are encrypted.

--reset Optional: Removes the existing config file.


generate --factor 2 --clean

This takes a distribution model and applies it to a lower environment database. It will ask for credentials which require write access.

--factor [number] Optional: Scaling the model by a certain factor. For example: generate --factor 2 will generate data 2x the size of the production data. Defaults to 1

--fill [number] Optional: Scaling the model up to a certain record count. For example: generate --fill 3000 will generate data up to 3000 records.

--clean Optional: Causes to truncate tables and then generate data. Without this parameter, the tool simply 'appends'.

As a concrete example: If the production table contains 10 records, and the test database contains 3 records, then calling this without the clean parameter will cause it to append 7 new records. With the clean parameter, the test table will be truncated to 0 records and then 10 new records would be created.

How to run

Vardøgr comes as an executable jar. You need to have Java installed.

java -jar vardogr.jar