1. A method for generating test cases for a computer program, the method comprising: analyzing the computer program to identify a plurality of test units; selecting a test unit from the plurality of test units to be tested; applying a set of programming rules to the selected test unit; and automatically generating one or more test cases for the selected test unit.