A software is associated with certain modes of failure. Occurrence of such failures may be hazardous for the regular functioning of the software. Majority of these failures occur because of the unforeseen faults that manifest themselves during the execution of the software. The contemporary trends in the software industry indicate dedicated efforts to minimize these unforeseen faults, thereby minimizing the chances of unforeseen failures. One of the definitive ways is to analyze the specifications thoroughly for the potential faults it may contain. Fault tree analysis (FTA) is one such approach that scans the specifications to identify potential failure modes and has been used successfully in many domains including software. In this paper, we propose an approach to generate test cases from UML activity diagram specifications by first transforming an activity diagram into a Software Success Tree (SST) and a Software Fault Tree (SFT). Subsequently, the SST and the SFT are then used to generate test cases for testing the normal and exceptional behavior of the system, respectively. We demonstrate the applicability of the proposed approach using an illustrative example and compare its effectiveness with the other activity diagram based test case generation techniques.