A computer-implemented method for generating test data, the method including: providing an execution environment, wherein the execution environment includes a data profiling module and a test data generation module, wherein the execution environment implements the data profiling module as a dataflow graph and the test data generation module as a dataflow graph; reading, by the data profiling module, values occurring in M fields of a stream of N individual records from a data source; storing, by the data profiling module, profile information including statistics characterizing the values; providing, by the data profiling module, the stream of N individual records to the test data generation module, wherein the test data generation module performs a separate iteration of processing the stream of N individual records for each of the M fields; generating, by the test data generation module, a model of a probability distribution for each of the M fields based on the statistics; generating, by the test data generation module in each of the M iterations, N test data values using the generated model such that a frequency at which a given value occurs in the test data values corresponds to a probability assigned to that given value by the model, wherein the test data generation module replaces the values in each of the M fields of the N individual records with the generated test data values for the field, and wherein the N test data values for different iterations are generated sequentially one after another or in parallel at the same time; storing, by the test data generation module, a collection of test data including the test data values in a data storage system accessible to the execution environment; and providing a development environment, wherein the development environment is for a developer to develop and test a program using the test data stored in the data storage system, wherein the development environment supports execution of the program as a dataflow graph, wherein the data source is inaccessible to the development environment, and wherein the data storage system is accessible to the development environment. providing an execution environment, wherein the execution environment includes a data profiling module and a test data generation module, wherein the execution environment implements the data profiling module as a dataflow graph and the test data generation module as a dataflow graph; reading, by the data profiling module, values occurring in M fields of a stream of N individual records from a data source; storing, by the data profiling module, profile information including statistics characterizing the values; providing, by the data profiling module, the stream of N individual records to the test data generation module, wherein the test data generation module performs a separate iteration of processing the stream of N individual records for each of the M fields; generating, by the test data generation module, a model of a probability distribution for each of the M fields based on the statistics; generating, by the test data generation module in each of the M iterations, N test data values using the generated model such that a frequency at which a given value occurs in the test data values corresponds to a probability assigned to that given value by the model, wherein the test data generation module replaces the values in each of the M fields of the N individual records with the generated test data values for the field, and wherein the N test data values for different iterations are generated sequentially one after another or in parallel at the same time; storing, by the test data generation module, a collection of test data including the test data values in a data storage system accessible to the execution environment; and providing a development environment, wherein the development environment is for a developer to develop and test a program using the test data stored in the data storage system, wherein the development environment supports execution of the program as a dataflow graph, wherein the data source is inaccessible to the development environment, and wherein the data storage system is accessible to the development environment.