@article {15472,
	title = {Call-Stack Coverage for GUI Test Suite Reduction},
	journal = {Software Engineering, IEEE Transactions on},
	volume = {34},
	year = {2008},
	month = {2008/02//jan},
	pages = {99 - 115},
	abstract = {Graphical user interfaces (GUIs) are used as front ends to most of today{\textquoteright}s software applications. The event-driven nature of GUIs presents new challenges for testing. One important challenge is test suite reduction. Conventional reduction techniques/tools based on static analysis are not easily applicable due to the increased use of multilanguage GUI implementations, callbacks for event handlers, virtual function calls, reflection, and multithreading. Moreover, many existing techniques ignore code in libraries and fail to consider the context in which event handlers execute. Consequently, they yield GUI test suites with seriously impaired fault-detection abilities. This paper presents a reduction technique based on the call-stack coverage criterion. Call stacks may be collected for any executing program with very little overhead. Empirical studies in this paper compare reduction based on call-stack coverage to reduction based on line, method, and event coverage, including variations that control for the size and optional consideration of library methods. These studies show that call-stack-based reduction provides unique trade-offs between the reduction in test suite size and the loss of fault detection effectiveness, which may be valuable in practice. Additionally, an analysis of the relationship between coverage requirements and fault-revealing test cases is presented.},
	keywords = {call-stack coverage criterion, computer testing, Graphical user interfaces, test suite reduction},
	isbn = {0098-5589},
	doi = {10.1109/TSE.2007.70756},
	author = {McMaster,S. and Memon, Atif M.}
}
@conference {18678,
	title = {Loki: a state-driven fault injector for distributed systems},
	year = {2000},
	month = {2000///},
	pages = {237 - 242},
	abstract = {Distributed applications can fail in subtle ways that depend on the state of multiple parts of a system. This complicates the validation of such systems via fault injection, since it suggests that faults should be injected based on the global state of the system. In Loki, fault injection is performed based on a partial view of the global state of a distributed system, i.e. faults injected in one node of the system can depend on the state of other nodes. Once faults are injected, a post-runtime analysis, using off-line clock synchronization, is used to place events and injections on a single global timeline and to determine whether the intended faults were properly injected. Finally, experiments containing successful fault injections are used to estimate the specified measures. In addition to briefly reviewing the concepts behind Loki and its organization, we detail Loki{\textquoteright}s user interface. In particular, we describe the graphical user interfaces for specifying state machines and faults, for executing a campaign and for verifying whether the faults were properly injected},
	keywords = {campaign execution, computer testing, distributed applications failure, distributed processing, distributed system validation, Fault diagnosis, fault event placement, fault specification, global system state, global timeline, Graphical user interfaces, Loki, off-line clock synchronization, post-runtime analysis, specified measures estimation, state machine specification, state-driven fault injection, Synchronisation},
	doi = {10.1109/ICDSN.2000.857544},
	author = {Chandra,R. and Lefever,R.M. and Michel Cukier and Sanders,W. H.}
}
