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; selecting a discrete part of the structured data and fuzzing the selected discrete part; determining whether there are any parts of the structured data whose validity as input to the software component can be affected by fuzzing of the discrete part of the structured data; analyzing the fuzzed discrete part of the structured data and updating a related part of the structured data to be consistent with the fuzzed discrete part; and passing to the software component being tested the structured data with the fuzzed part and the updated part.