A method, comprising: receiving, in a computing device having a processor and a memory, a set of test requests, a test calendar, a list of prototype control models, and test compatibility data, wherein each of the test requests includes an identifier for one of a plurality of tests to be performed and one or more attributes required to be included in a prototype to be used in the one of the tests, the test calendar includes a test duration and a list of build dates, each of the build dates associated with one of a plurality of prototypes to be available for testing on the respective build date, the list of prototype control models including a list of possible buildable configurations of the prototypes, and the test compatibility data indicating whether, for at least some pairs of tests in the set of test requests, each test in the pair can be performed on a single one of the prototypes; generating, in the computing device, a control model compatibility list that includes, for each pair of prototypes in the plurality of prototypes, an indication of whether the prototypes in the pair are compatible for tests; generating, in the computing device, based at least on the control model compatibility list and the test compatibility data, a test compatibility list that specifies, for each pair of tests in the set of test requests, an indication of whether the tests in the pair of tests can each be performed on a single prototype; performing, in the computing device, at least one of a heuristic and a mathematical optimization that utilizes at least the test requests, the test calendar, the control model compatibility list and the test compatibility list to generate a test schedule for building and testing prototypes. receiving, in a computing device having a processor and a memory, a set of test requests, a test calendar, a list of prototype control models, and test compatibility data, wherein each of the test requests includes an identifier for one of a plurality of tests to be performed and one or more attributes required to be included in a prototype to be used in the one of the tests, the test calendar includes a test duration and a list of build dates, each of the build dates associated with one of a plurality of prototypes to be available for testing on the respective build date, the list of prototype control models including a list of possible buildable configurations of the prototypes, and the test compatibility data indicating whether, for at least some pairs of tests in the set of test requests, each test in the pair can be performed on a single one of the prototypes; generating, in the computing device, a control model compatibility list that includes, for each pair of prototypes in the plurality of prototypes, an indication of whether the prototypes in the pair are compatible for tests; generating, in the computing device, based at least on the control model compatibility list and the test compatibility data, a test compatibility list that specifies, for each pair of tests in the set of test requests, an indication of whether the tests in the pair of tests can each be performed on a single prototype; performing, in the computing device, at least one of a heuristic and a mathematical optimization that utilizes at least the test requests, the test calendar, the control model compatibility list and the test compatibility list to generate a test schedule for building and testing prototypes.