1. A method for testing software applications, comprising: generating a behavioral model of a software application; generating a test design for the software application from the behavioral model; and executing the test design on the software application, wherein the step of generating the behavioral model comprises: designing a use case to define functionalities of the software application; building an activity diagram for the use case, wherein the activity diagram includes a plurality of activities, wherein each activity is an execution of a task whether it be a physical activity or an execution of code and wherein the activity diagram shows a sequence of the activities; adding test annotations to the activities, wherein at least one of the test annotations indicates whether the activity to which it has been added is either a user or system activity; and combining the test annotations with the activities to generate an annotated activity diagram.