Adequate system testing of present day application programs requires satisfactory coverage of system states and transitions. This can be achieved by using a system state model. However, the system state models are rarely constructed by system developers, as these are usually extremely large and complex.The only state models that are constructed by the developers are those of the individual objects. However state based system testing using the state charts of individual objects prima facie appears to be difficult, since system test cases would have to be specified in the form of scenario sequences rather than transitions on individual object statecharts. We propose a method to automatically generate system test specifications to achieve coverage of system states based on UML models constructed during normal development process. We use use case, sequence and state chart models to automatically design a set of sequences of scenarios that can achieve adequate coverage of system states. We assume that the system state, at any time, is determined by the states of the individual objects making up the system. Next, we propose a novel approach to automatically synthesize the state model of a system based on its UML design artifacts developed during normal development process. Based on the synthesized state model, we automatically generate test specifications to achieve coverage of elementary transition paths. Our technique for coverage of elementary transition paths would also ensure coverage of all states and transitions of the system model. Subsequently, we propose a technique to optimize the automatically generated test specifications without compromising the coverage achieved. While maintaining the required coverage, our optimized test suite would maximize testing of high priority and critical elements and minimize the cost of testing. These objectives conflict with each other and require solution to a difficult multi objective optimization problem. We first prioritize system transitions based on certain criteria. We then present a genetic algorithm-based technique to select test specifications out of a large pool of automatically generated test specifications. Our experimental studies reveal that our approach results in reduction of test suite size by about 70% without compromising the coverage achieved by the original test suite.