All Projects → dsietz → test-data-generation

dsietz / test-data-generation

Licence: Apache-2.0 license
Test Data Generation

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to test-data-generation

JayantGoel001
JayantGoel001's profile with 74 stars ⭐ and 91 forks 🎉.
Stars: ✭ 74 (+111.43%)
Mutual labels:  profile
LearnSnake
🐍 AI that learns to play Snake using Q-Learning (Reinforcement Learning)
Stars: ✭ 69 (+97.14%)
Mutual labels:  markov-decision-processes
okty
The simplest application to create and customize your docker projects
Stars: ✭ 48 (+37.14%)
Mutual labels:  generate
material-about
An about screen to use in your Mobile apps.
Stars: ✭ 37 (+5.71%)
Mutual labels:  profile
vip-git
💊 Automated "hey" · ·👋 · · of the day. Every day a unique historic event is generated based on the given day.
Stars: ✭ 4 (-88.57%)
Mutual labels:  profile
open-source-enthusiasts
[ PLEASE DON'T USE THIS REPO ] Hacktoberfest 2020 movement to list out all the open source enthusiasts in one place. Want to make your PR count for Hacktoberfest? Add yourself in the list.
Stars: ✭ 40 (+14.29%)
Mutual labels:  profile
peterthehan
My personal site and profile README.
Stars: ✭ 36 (+2.86%)
Mutual labels:  profile
blockstack.js-old
The Blockstack JS library for identity and authentication
Stars: ✭ 20 (-42.86%)
Mutual labels:  profile
rollup-plugin-generate-package-json
Generate package.json file with packages from your bundle using Rollup
Stars: ✭ 29 (-17.14%)
Mutual labels:  generate
notfilippo
✨ uwa, special ✨
Stars: ✭ 22 (-37.14%)
Mutual labels:  profile
Saikai
Saikai - (Resume in Japanese) is a web platform for management resume submissions. Developer web: https://saikai-develop.web.app/ ****** LIVE WEBSITE: https://saikai.me
Stars: ✭ 17 (-51.43%)
Mutual labels:  profile
TinderUserProfile
Tinder/Bumble like user image with user details scroll animation
Stars: ✭ 21 (-40%)
Mutual labels:  profile
DTE
Generate C# class from database table
Stars: ✭ 26 (-25.71%)
Mutual labels:  generate
lucasgdb
Template para o perfil do Github. "Github Profile Intro" ❤️
Stars: ✭ 52 (+48.57%)
Mutual labels:  profile
BlackIQ
Who I am !?
Stars: ✭ 19 (-45.71%)
Mutual labels:  profile
laravel-bootstrap-components
Ready-to-use and customizable form components.
Stars: ✭ 20 (-42.86%)
Mutual labels:  generate
awesome-probabilistic-planning
A curated list of online resources for probabilistic planning: papers, software and research groups around the world!
Stars: ✭ 45 (+28.57%)
Mutual labels:  markov-decision-processes
itgoyo
a beautiful template make your github profile look awesome ,give me a star , plz orz
Stars: ✭ 104 (+197.14%)
Mutual labels:  profile
awesome-tasker
Carefully curated list of awesome Tasker projects, tutorials and tricks
Stars: ✭ 78 (+122.86%)
Mutual labels:  profile
netease-music-box
🎧 将你最近一周的网易云音乐的听歌记录更新到 Gist
Stars: ✭ 57 (+62.86%)
Mutual labels:  profile

Test Data Generation

License Coverage Status Docs.rs

Linux: Build Status Windows: Build status

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

What's New

Here's what's new ...

0.3.4

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:

  1. character patterns
  2. frequency of patterns
  3. character locations
  4. beginning and ending characters
  5. length of entity (string, date, number)

Usage

There 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 test_data_generation::profile::profile::Profile;

fn main() {
  // analyze the dataset
  let mut data_profile =  Profile::new();

  // analyze the dataset
  data_profile.analyze("Smith, John");
  data_profile.analyze("Doe, John");
  data_profile.analyze("Dale, Danny");
  data_profile.analyze("Rickets, Ronney");

  // confirm 4 data samples were analyzed   		
  assert_eq!(data_profile.patterns.len(), 4);

  // prepare the generator
  data_profile.pre_generate();

  // generate some data
  println!("The generated name is {:?}", data_profile.generate());

  // save the profile (algorithm) for later
  assert_eq!(data_profile.save(&String::from("./tests/samples/sample-00-profile")).unwrap(), true);

  // later... create a new profile from the saved archive file
  let mut new_profile = Profile::from_file(&String::from("./tests/samples/sample-00-profile"));
  new_profile.pre_generate();

  // generate some data
  println!("The generated name is {:?}", new_profile.generate());
}

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 test_data_generation::data_sample_parser::DataSampleParser;

fn main() {
  let mut dsp = DataSampleParser::new();
  dsp.analyze_csv_file(&String::from("./tests/samples/sample-01.csv"), None).unwrap();

  println!("My new name is {} {}", dsp.generate_record()[0], dsp.generate_record()[1]);
  // My new name is Abbon Aady
}

You can also save the Data Sample Parser (the algorithm) as an archive file (json) ...

extern crate test_data_generation;
use test_data_generation::data_sample_parser::DataSampleParser;

fn main() {
  let mut dsp =  DataSampleParser::new();  
  dsp.analyze_csv_file(&String::from("./tests/samples/sample-01.csv"), None).unwrap();

  assert_eq!(dsp.save(&String::from("./tests/samples/sample-01-dsp")).unwrap(), true);
}

and use it at a later time.

extern crate test_data_generation;
use test_data_generation::data_sample_parser::DataSampleParser;

fn main() {
  let mut dsp = DataSampleParser::from_file(&String::from("./tests/samples/sample-01-dsp"));

	println!("Sample data is {:?}", dsp.generate_record()[0]);
}

You can also generate a new csv file based on the data sample provided.

extern crate test_data_generation;
use test_data_generation::data_sample_parser::DataSampleParser;

fn main() {
  let mut dsp =  DataSampleParser::new();  

  dsp.analyze_csv_file(&String::from("./tests/samples/sample-01.csv"), None).unwrap();
  dsp.generate_csv(100, &String::from("./tests/samples/generated-01.csv"), None).unwrap();
}

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 continuously 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].