1. A method for testing a software application, the method comprises the steps of: creating a system model for the software application, wherein the system model comprises an activity diagram; applying one or more test annotations to the activity diagram to control test generation for testing the software application; processing the test annotations and the system model to create one or more test cases; and testing the software application using a test execution tool that uses the test cases.