Software testing is getting more complicated by the day. User interfaces are getting richer and complex, development cycles are shrinking, and architecture complexity is increasing. Amid all these constraints, the timeline needed to assure the quality of the system is shrinking. All these factors necessitate the employment of a test strategy that can satisfy these constraints and fulfill the required quality objectives.