A method for facilitating testing of an insecure computing environment, comprising: obtaining a real data set comprising a set of data strings; determining, by one or more computer systems, a set of frequency distributions associated with the set of data strings, wherein determining the set of frequency distributions associated with the set of data strings comprises: obtaining one or more block definitions, wherein each of the one or more block definitions identifies a set of possible characters for substrings of the data strings; generating a set of block sequences from the set of data strings by: applying the one or more block definitions to each data string in the set of data strings to produce a block sequence of one or more blocks, wherein each block in the block sequence comprises one or more frequency distributions for a substring of the data string that matches a block definition in the one or more block definitions; and including the block sequence in the set of block sequences; and generating a combined block sequence from the set of block sequences by: combining a set of blocks from each block position in the set of block sequences to produce a block distribution over the set of blocks in the block position; and including the block distribution in the block position of the combined block sequence; generating, by the one or more computer systems, a test data set from the real data set, wherein the test data set comprises a set of random data strings that conforms to the set of frequency distributions; and testing the insecure computing environment using the test data set. obtaining a real data set comprising a set of data strings; determining, by one or more computer systems, a set of frequency distributions associated with the set of data strings, wherein determining the set of frequency distributions associated with the set of data strings comprises: obtaining one or more block definitions, wherein each of the one or more block definitions identifies a set of possible characters for substrings of the data strings; generating a set of block sequences from the set of data strings by: applying the one or more block definitions to each data string in the set of data strings to produce a block sequence of one or more blocks, wherein each block in the block sequence comprises one or more frequency distributions for a substring of the data string that matches a block definition in the one or more block definitions; and including the block sequence in the set of block sequences; and generating a combined block sequence from the set of block sequences by: combining a set of blocks from each block position in the set of block sequences to produce a block distribution over the set of blocks in the block position; and including the block distribution in the block position of the combined block sequence; obtaining one or more block definitions, wherein each of the one or more block definitions identifies a set of possible characters for substrings of the data strings; generating a set of block sequences from the set of data strings by: applying the one or more block definitions to each data string in the set of data strings to produce a block sequence of one or more blocks, wherein each block in the block sequence comprises one or more frequency distributions for a substring of the data string that matches a block definition in the one or more block definitions; and including the block sequence in the set of block sequences; and generating a combined block sequence from the set of block sequences by: combining a set of blocks from each block position in the set of block sequences to produce a block distribution over the set of blocks in the block position; and including the block distribution in the block position of the combined block sequence; applying the one or more block definitions to each data string in the set of data strings to produce a block sequence of one or more blocks, wherein each block in the block sequence comprises one or more frequency distributions for a substring of the data string that matches a block definition in the one or more block definitions; and including the block sequence in the set of block sequences; and generating a combined block sequence from the set of block sequences by: combining a set of blocks from each block position in the set of block sequences to produce a block distribution over the set of blocks in the block position; and including the block distribution in the block position of the combined block sequence; combining a set of blocks from each block position in the set of block sequences to produce a block distribution over the set of blocks in the block position; and including the block distribution in the block position of the combined block sequence; generating, by the one or more computer systems, a test data set from the real data set, wherein the test data set comprises a set of random data strings that conforms to the set of frequency distributions; and testing the insecure computing environment using the test data set.