A computer implemented method of determining test data for use in discovering latent defects in software, the method comprising: determining, by a processor, that at least part of a software structure of a software to be tested is similar to, but not the same as, a software structure associated with a defect, wherein the software structure of the software to be tested and the software structure associated with a defect each comprise a plurality of components; retrieving, by the processor, information regarding operational circumstances for causing the defect in the software structure associated with the defect, wherein the retrieved information defines a plurality of different time points at which events occur during execution of the software structure associated with the defect; and creating, by the processor and based upon the retrieved information, test data for testing the software to be tested, wherein the determining that at least part of a software structure of a software to be tested is similar to, but not the same as, a software structure associated with a defect comprises: calculating a numerical measure of similarity between a profile data set representing the software structure of the software to be tested and a profile data set representing the software structure associated with a defect, wherein the profile data sets each include indications of interrelations between components of the respective plurality of components; and determining that the calculated similarity measure meets a predetermined criteria. determining, by a processor, that at least part of a software structure of a software to be tested is similar to, but not the same as, a software structure associated with a defect, wherein the software structure of the software to be tested and the software structure associated with a defect each comprise a plurality of components; retrieving, by the processor, information regarding operational circumstances for causing the defect in the software structure associated with the defect, wherein the retrieved information defines a plurality of different time points at which events occur during execution of the software structure associated with the defect; and creating, by the processor and based upon the retrieved information, test data for testing the software to be tested, wherein the determining that at least part of a software structure of a software to be tested is similar to, but not the same as, a software structure associated with a defect comprises: calculating a numerical measure of similarity between a profile data set representing the software structure of the software to be tested and a profile data set representing the software structure associated with a defect, wherein the profile data sets each include indications of interrelations between components of the respective plurality of components; and determining that the calculated similarity measure meets a predetermined criteria. calculating a numerical measure of similarity between a profile data set representing the software structure of the software to be tested and a profile data set representing the software structure associated with a defect, wherein the profile data sets each include indications of interrelations between components of the respective plurality of components; and determining that the calculated similarity measure meets a predetermined criteria.