|dc.description.abstract||In general, it is difficult to apply test automation to GUI(Graphical User Interface) applications, because they are often too complicated. Many testing approachs for GUI applications has been developed in these days, and one of the most widespread approach is Capture-and-Replay. Capture-and-Replay can be categorized into two approaches: intrusive approach and non-intrusive approach. Non-instrusive approach is very suitable for widget-based GUI, where the testing tool Sikuli from MIT that is improved by this thesis is belonged to this category. Sikuli can detect widget positions from screen by giving clipped images and simulate mouse or keyboard actions to the widgets captured by these images. To archieve so, most non-intrusive approachs inject hooks into operating system’s DLLs so that the mouse and keyboard events can be intercepted independently from the system under test. However, this approach impacts the performance of SUT(software under testing) significantly, particularly in while users do continuous drag-and-drop operations. The impact causes the SUT to run slower and behave differently from normal runs, and then fail the replay of test cases. This problem is now more critical on mobile applications, because multi-touch drag and move become the common input events to these applications. To avoid such a problem, the intrusive approach in  provides an alternative, but its drawback is that it needs to be done by inserting code in the source code.
Another key factor in capture-and-replay test automation is the test oracles. An automatic test run needs test oracle to detect anomalies of visual effect or internal. How to derive good test oracles for both cases remain a difficult issue. At last, most of GUI applications are event-driven, some events may have dependency and some events could be concurrently executed at same time. A test automation system should be able to distinguish when should wait for next event and when should tolerate event interleaving. In this thesis, all these problems are studied and addressed. A prototype tool, xTitan, is implemented to demonstrate the results of this study.||en_US|