  Mutation testing has been widely used to assess the fault-detection
effectiveness of a test suite, as well as to guide test case generation or
prioritization. Empirical studies have shown that, while mutants are generally
representative of real faults, an effective application of mutation testing
requires "traditional" operators designed for programming languages to be
augmented with operators specific to an application domain and/or technology.
This paper proposes MDroid+, a framework for effective mutation testing of
Android apps. First, we systematically devise a taxonomy of 262 types of
Android faults grouped in 14 categories by manually analyzing 2,023 software
artifacts from different sources (e.g., bug reports, commits). Then, we
identified a set of 38 mutation operators, and implemented an infrastructure to
automatically seed mutations in Android apps with 35 of the identified
operators. The taxonomy and the proposed operators have been evaluated in terms
of stillborn/trivial mutants generated and their capacity to represent real
faults in Android apps, as compared to other well know mutation tools.
