Learning regular sets from queries and counterexamples
Information and Computation
Inference of finite automata using homing sequences
STOC '89 Proceedings of the twenty-first annual ACM symposium on Theory of computing
Random DFA's can be approximately learned from sparse uniform examples
COLT '92 Proceedings of the fifth annual workshop on Computational learning theory
Inference of Reversible Languages
Journal of the ACM (JACM)
FORTE XII / PSTV XIX '99 Proceedings of the IFIP TC6 WG6.1 Joint International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols (FORTE XII) and Protocol Specification, Testing and Verification (PSTV XIX)
AMC: An Adaptive Model Checker
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
A Method to Automate User Interface Testing Using Variable Finite State Machines
FTCS '97 Proceedings of the 27th International Symposium on Fault-Tolerant Computing (FTCS '97)
Generating Test Cases for GUI Responsibilities Using Complete Interaction Sequences
ISSRE '00 Proceedings of the 11th International Symposium on Software Reliability Engineering
Finite-State Testing and Analysis of Graphical User Interfaces
ISSRE '01 Proceedings of the 12th International Symposium on Software Reliability Engineering
Java Bytecode Verification: Algorithms and Formalizations
Journal of Automated Reasoning
Synthesis of interface specifications for Java classes
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A Model-Based Approach for Testing GUI Using Hierarchical Predicate Transition Nets
ITNG '07 Proceedings of the International Conference on Information Technology
An event-flow model of GUI-based applications for testing: Research Articles
Software Testing, Verification & Reliability
Covering array sampling of input event sequences for automated gui testing
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
State-Merging DFA Induction Algorithms with Mandatory Merge Constraints
ICGI '08 Proceedings of the 9th international colloquium on Grammatical Inference: Algorithms and Applications
A system for interactive graphical programming
AFIPS '68 (Spring) Proceedings of the April 30--May 2, 1968, spring joint computer conference
Iterative Refinement of Reverse-Engineered Models by Model-Based Testing
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Iterative execution-feedback model-directed GUI testing
Information and Software Technology
Learning assumptions for compositional verification
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
Dynamic testing via automata learning
HVC'07 Proceedings of the 3rd international Haifa verification conference on Hardware and software: verification and testing
Increasing functional coverage by inductive testing: a case study
ICTSS'10 Proceedings of the 22nd IFIP WG 6.1 international conference on Testing software and systems
A GUI bug finding framework for Android applications
Proceedings of the 2011 ACM Symposium on Applied Computing
Experiences of System-Level Model-Based GUI Testing of an Android Application
ICST '11 Proceedings of the 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation
Incremental learning-based testing for reactive systems
TAP'11 Proceedings of the 5th international conference on Tests and proofs
Crawling Ajax-Based Web Applications through Dynamic Analysis of User Interface State Changes
ACM Transactions on the Web (TWEB)
On the correspondence between conformance testing and regular inference
FASE'05 Proceedings of the 8th international conference, held as part of the joint European Conference on Theory and Practice of Software conference on Fundamental Approaches to Software Engineering
Combining model-based and combinatorial testing for effective test case generation
Proceedings of the 2012 International Symposium on Software Testing and Analysis
Using GUI ripping for automated testing of Android applications
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Testing android apps through symbolic execution
ACM SIGSOFT Software Engineering Notes
Automated concolic testing of smartphone apps
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Model-Based testing and model inference
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
ISoLA'12 Proceedings of the 5th international conference on Leveraging Applications of Formal Methods, Verification and Validation: technologies for mastering change - Volume Part I
AppsPlayground: automatic security analysis of smartphone applications
Proceedings of the third ACM conference on Data and application security and privacy
A grey-box approach for automated GUI-model generation of mobile applications
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Dynodroid: an input generation system for Android apps
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Automated testing of graphical user interfaces: a new algorithm and challenges
Proceedings of the 2013 ACM workshop on Mobile development lifecycle
Hi-index | 0.00 |
Smartphones and tablets with rich graphical user interfaces (GUI) are becoming increasingly popular. Hundreds of thousands of specialized applications, called apps, are available for such mobile platforms. Manual testing is the most popular technique for testing graphical user interfaces of such apps. Manual testing is often tedious and error-prone. In this paper, we propose an automated technique, called Swift-Hand, for generating sequences of test inputs for Android apps. The technique uses machine learning to learn a model of the app during testing, uses the learned model to generate user inputs that visit unexplored states of the app, and uses the execution of the app on the generated inputs to refine the model. A key feature of the testing algorithm is that it avoids restarting the app, which is a significantly more expensive operation than executing the app on a sequence of inputs. An important insight behind our testing algorithm is that we do not need to learn a precise model of an app, which is often computationally intensive, if our goal is to simply guide test execution into unexplored parts of the state space. We have implemented our testing algorithm in a publicly available tool for Android apps written in Java. Our experimental results show that we can achieve significantly better coverage than traditional random testing and L*-based testing in a given time budget. Our algorithm also reaches peak coverage faster than both random and L*-based testing.