Practical GUI Testing of Android Applications Via Model Abstraction and Refinement

@article{Gu2019PracticalGT,
  title={Practical GUI Testing of Android Applications Via Model Abstraction and Refinement},
  author={Tianxiao Gu and Chengnian Sun and Xiaoxing Ma and Chun Cao and Chang Xu and Yuan Yao and Qirun Zhang and Jian Lu and Zhendong Su},
  journal={2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)},
  year={2019},
  pages={269-280}
}
  • Tianxiao Gu, Chengnian Sun, Z. Su
  • Published 1 May 2019
  • Computer Science
  • 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)
This paper introduces a new, fully automated modelbased approach for effective testing of Android apps. Different from existing model-based approaches that guide testing with a static GUI model (i.e., the model does not evolve its abstraction during testing, and is thus often imprecise), our approach dynamically optimizes the model by leveraging the runtime information during testing. This capability of model evolution significantly improves model precision, and thus dramatically enhances the… 
An infrastructure approach to improving effectiveness of Android UI testing tools
TLDR
To improve the effectiveness of Android testing tools, TOLLER is proposed, a tool consisting of infrastructure enhancements to the Android operating system that reduces average time usage of UI Hierarchy Capturing and UI Event Execution operations by up to 97% and 95%, respectively and integrates with existing state-of-the-art/practice Android UI testing tools.
Benchmarking automated GUI testing for Android against real-world bugs
TLDR
This paper offers the first ground-truth empirical evaluation of automated GUI testing for Android, and identifies five major common challenges that these tools face, and reveals additional findings such as factors affecting these tools in bug finding and opportunities for tool improvements.
Automated Functional Fuzzing of Android Apps
TLDR
Independent view fuzzing is introduced, the first automated approach for detecting functional bugs in Android apps, to leverage the commonly-held independent view property of Android apps to manufacture property-preserving mutant tests from a set of seed tests that validate certain app properties.
On the feasibility and challenges of synthesizing executable Espresso tests
TLDR
The empirical study shows that the creation of Espresso tests is difficult, mostly due to the lack of unique properties to unambiguously identify specific widgets in the UI, and points out that further research is needed to find ways to improve the testability of Android apps either manually or automatically.
Improving Automated GUI Exploration of Android Apps via Static Dependency Analysis
TLDR
Gesda introduces dependency-informed exploration, an automated approach that leverages static dependency analysis to effectively improve GUI exploration performance and outperforms existing state-of-the-art GUI exploration techniques, i.e., Monkey and Stoat.
Fully automated functional fuzzing of Android apps for detecting non-crashing logic bugs
TLDR
Inspired by metamorphic testing, the key insight is to leverage the commonly-held independent view property of Android apps to manufacture property-preserving mutant tests from a set of seed tests that validate certain app properties.
Preference-Wise Testing of Android Apps via Test Amplification
TLDR
In an experimental evaluation conducted on real-world Android apps, amplified test cases produced by Prefest from automatically generated test cases covered significantly more code of the apps and detected 7 real bugs, and the tool's test amplification time was at the same order of magnitude as the running time of the input test cases.
Automated, Cost-effective, and Update-driven App Testing
TLDR
This paper presents ATUA, a model-based approach that synthesizes App models with static analysis, integrates a dynamically-refined state abstraction function and combines complementary testing strategies, enabling ATUA to generate a small set of inputs that exercise only the code affected by the updates.
Assessing Android Test Data Generation Tools via Mutation Testing
TLDR
Results from the evaluation of three state-of-the-art tools for Android apps: Monkey, Stoat and APE are presented regarding the ability of the test data generated by them to reveal faults described by the mutation operators of the tool MDroid+.
Understanding and finding system setting-related defects in Android apps
Android, the most popular mobile system, offers a number of user-configurable system settings (e.g., network, location, and permission) for controlling devices and apps. Even popular, well-tested
...
...

References

SHOWING 1-10 OF 49 REFERENCES
Automated model-based Android GUI testing using multi-level GUI comparison criteria
  • Young-Min Baek, Doo-Hwan Bae
  • Computer Science
    2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE)
  • 2016
TLDR
A set of multi-level GUI Comparison Criteria (GUICC) that provides the selection of multiple abstraction levels for GUI model generation and can alleviate the inherent state explosion problems of existing a single-level GuICC for behavior modeling of real-world Android apps by flexibly manipulating GUICC.
A Grey-Box Approach for Automated GUI-Model Generation of Mobile Applications
TLDR
This work presents a novel grey-box approach for automatically extracting a model of a given mobile app, which can efficiently extract compact yet reasonably comprehensive models of high quality for such apps.
Guided, stochastic model-based GUI testing of Android apps
TLDR
The results show that the models produced by Stoat cover 17~31% more code than those by existing modeling tools; and Stoat detects 3X more unique crashes than two state-of-the-art testing tools, Monkey and Sapienz.
EHBDroid: Beyond GUI testing for Android applications
TLDR
A novel approach and an open source tool called EHBDroid is presented, which can efficiently simulate a large number of events that are difficult to generate by traditional UI-based approaches for testing Android apps.
CrashScope: A Practical Tool for Automated Testing of Android Applications
TLDR
Results of preliminary studies show that CRASHSCOPE is able to uncover about as many crashes as other state of the art tools, while providing detailed useful crash reports and test scripts to developers.
Automated Test Input Generation for Android: Are We There Yet? (E)
TLDR
A thorough comparison of the main existing test input generation tools for Android is performed, evaluating the effectiveness of these tools, and their corresponding techniques, according to four metrics: ease of use, ability to work on multiple platforms, code coverage, and ability to detect faults.
PATDroid: permission-aware GUI testing of Android
TLDR
PATDroid is presented, for efficiently testing an Android app while taking the impact of permissions on its behavior into account, and significantly reduces the testing effort, yet achieves comparable code coverage and fault detection capability as exhaustively testing an app under all permission combinations.
DetReduce: Minimizing Android GUI Test Suites for Regression Testing
TLDR
A heuristic technique that helps create a small regression test suite for an Android app from a large test suite generated by an automated Android GUI testing tool is proposed.
Sapienz: multi-objective automated testing for Android applications
TLDR
Sapienz, an approach to Android testing that uses multi-objective search-based testing to automatically explore and optimise test sequences, minimising length, while simultaneously maximising coverage and fault revelation, significantly outperforms both the state-of-the-art technique Dynodroid and the widely-used tool, Android Monkey.
Targeted and depth-first exploration for systematic testing of android apps
TLDR
The key insight of the approach is to use a static, taint-style, dataflow analysis on the app bytecode in a novel way, to construct a high-level control flow graph that captures legal transitions among activities (app screens).
...
...