  Despite over a decade of research, it is still challenging for mobile UI
testing tools to achieve satisfactory effectiveness, especially on industrial
apps with rich features and large code bases. Our experiences suggest that
existing mobile UI testing tools are prone to exploration tarpits, where the
tools get stuck with a small fraction of app functionalities for an extensive
amount of time. For example, a tool logs out an app at early stages without
being able to log back in, and since then the tool gets stuck with exploring
the app's pre-login functionalities (i.e., exploration tarpits) instead of its
main functionalities. While tool vendors/users can manually hardcode rules for
the tools to avoid specific exploration tarpits, these rules can hardly
generalize, being fragile in face of diverted testing environments and fast app
iterations. To identify and resolve exploration tarpits, we propose VET, a
general approach including a supporting system for the given specific Android
UI testing tool on the given specific app under test (AUT). VET runs the tool
on the AUT for some time and records UI traces, based on which VET identifies
exploration tarpits by recognizing their patterns in the UI traces. VET then
pinpoints the actions (e.g., clicking logout) or the screens that lead to or
exhibit exploration tarpits. In subsequent test runs, VET guides the testing
tool to prevent or recover from exploration tarpits. From our evaluation with
state-of-the-art Android UI testing tools on popular industrial apps, VET
identifies exploration tarpits that cost up to 98.6% testing time budget. These
exploration tarpits reveal not only limitations in UI exploration strategies
but also defects in tool implementations. VET automatically addresses the
identified exploration tarpits, enabling each evaluated tool to achieve higher
code coverage and improve crash-triggering capabilities.
