  Graphical user interfaces (GUIs), due to their event driven nature, present a
potentially unbounded space of all possible ways to interact with software.
During testing it becomes necessary to effectively sample this space. In this
paper we develop algorithms that sample the GUI's input space by only
generating sequences that (1) are allowed by the GUI's structure, and (2) chain
together only those events that have data dependencies between their event
handlers. We create a new abstraction, called an event-dependency graph (EDG)
of the GUI, that captures data dependencies between event handler code. We
develop a mapping between EDGs and an existing black-box user-level model of
the GUI's workflow, called an event-flow graph (EFG). We have implemented
automated EDG construction in a tool that analyzes the bytecode of each event
handler. We evaluate our "grey-box" approach using four open-source
applications and compare it with the current state-of-the-art EFG approach. Our
results show that using the EDG reduces the number of test cases while still
achieving at least the same coverage. Furthermore, we were able to detect 2 new
bugs in the subject applications.
