Here's my suggestion for random tests: you clearly have a fast simulator set up. So for each level have a function that implements the result correctly. Then run a large number of inputs (suggest: all 2047 inputs of length < 10 plus 1024 randomly chosen inputs of length 10-20) on the candidate machine. If any of them fails, just present the user with that test after your canned tests. In other words, you "randomly" select tests that you know will fail unless you don't find one, which is very likely only in the case of a correct user input.
Neat concept and good gameplay, but it suffers badly from pacing issues, especially in the later rounds. I'm on wave 5 and spend the first 15 or so enemies bored out of my mind, then get swarmed by 8+ at a time by number 70 or so.