1. A method performed by a computing device configured with a test tool for generating test data to test a software component, the method comprising: receiving structured data, the structured data conforming to a format or schema of valid inputs that the software component is able to parse and process, the structured data comprising a discrete first part and a discrete second part, the second part having an original value dependent on the first part; selecting the first part of the structured data and fuzzing the selected discrete first part, the first part then comprising fuzzed data; accessing relationship information that was stored before the structured data was received, the relationship information identifying a first element type of the format or schema, a second element type of the format or schema, and a function that computes values of the second element type from values of the first element type, wherein the first part comprises an instance of the first element type, and the second part comprises an instance of the second element type, and wherein the fuzzing of the first part causes the original value of the second part to be incorrect relative to the function and the fuzzed first part; from the relationship information, correlating the first part with the second part and using the relationship information to apply the function to the fuzzed data to compute a new value according to the fuzzed data; updating the second part of the structured data to be consistent with the fuzzed first part by replacing the original value with the new value; and passing to the software component being tested the structured data with the fuzzed part and the updated second part.