Test Data Generation
Fast test data generation!
Description
For software development teams who need realistic test data for testing their software, this Test Data Generation library is a light-weight module that implements Markov decision process machine learning to quickly and easily profile sample data, create an algorithm, and produce representative test data without the need for persistent data sources, data cleaning, or remote services. Unlike other solutions, this open source solution can be integrated into your test source code, or wrapped into a web service or stand-alone utility.
PROBLEM In order to make test data represent production, (a.k.a. realistic) you need to perform one of the following:
- load data from a production environment into the non-production environment, which requires ETL (e.g.: masking, obfuscation, etc.)
- stand up a pre-loaded "profile" database that is randomly sampled, which requires preparing sample data from either another test data source or production environment (option #1 above)
SOLUTION Incorporate this library in your software's testing source code by loading an algorithm from a previously analyzed data sample and generating test data during your tests runtime.
Table of Contents
- Test Data Generation
- Fast test data generation!
- What's New
- About
- Usage
- Examples
- How to Contribute
- License
What's New
Here's whats new in 0.2.1:
- Fix for issue #88
- Added a new Demo 03
cargo run --example 03_demo
About
test data generation
uses Markov decision process machine learning to create algorithms that enable test data generation on the fly without the overhead
of test data databases, security data provisioning (e.g.: masking, obfuscation), or standing up remote services.
The algorithm is built on the bases of:
- character patterns
- frequency of patterns
- character locations
- beginning and ending characters
- length of entity (string, date, number)
Usage
The are multiple ways to use the Test Data Generation library. It all depends on your intent.
Profile
The easiest way is to use a Profile. The profile
module provides functionality to create a profile on a data sample (Strings).
Once a profile has been made, data can be generated by calling the pre_generate() and generate() functions, in that order.
extern crate test_data_generation;
use Profile;
Data Sample Parser
If you are using CSV files of data samples, then you may wish to use a Data Sample Parser.
The data_sample_parser
module provides functionality to read sample data, parse and analyze it, so that test data can be generated based on profiles.
extern crate test_data_generation;
use DataSampleParser;
You can also save the Data Sample Parser (the algorithm) as an archive file (json) ...
extern crate test_data_generation;
use DataSampleParser;
and use it at a later time.
extern crate test_data_generation;
use DataSampleParser;
You can also generate a new csv file based on the data sample provided.
extern crate test_data_generation;
use DataSampleParser;
Examples
This library comes with the following examples. To run the examples.
- Demo 1 : Demonstrates the basic feature of the library to generate dates and people's names from the built-in demo data sets.
cargo run --example 01_demo
- Demo 2 : Demonstrates the basic feature of the library to generate dates and people's names from a CSV file.
cargo run --example 02_demo
- Demo 3 : Demonstrates the ability to conitnuously add new analyzed data to an existing profile.
cargo run --example 03_demo
How to Contribute
Details on how to contribute can be found in the CONTRIBUTING file.
License
test-data-generation is primarily distributed under the terms of the Apache License (Version 2.0).
See LICENSE-APACHE "Apache License for details.