Android App State Exploration Using Curiosity-Driven DFA Guidance
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Android app testing is challenging due to complex service functions, numerous interfaces and events, and system-level events, leading to high assembly spaces and difficulty in ensuring correctness and efficiency.
Innovation Solution
A curiosity-driven Android app automatic testing method using a pre-processing assembly, curiosity-driven reinforcement learning module, and deterministic finite automaton (DFA) to guide exploration and improve code coverage and fault exposure.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Manufacturing precision
If traditional automatic testing methods are used to test Android apps with complex service functions and numerous interfaces, then the testing process becomes extremely time-consuming and computationally expensive, but the code coverage rate and fault exposure remain insufficient
Solution Approach 1:
The patent segments the vast state space of Android apps by using abstraction to group similar states together. The pre-processing assembly extracts interface structures and maps them to abstracted app states, dividing the complex testing space into manageable segments that can be explored more efficiently without missing critical code paths
Solution Approach 2:
The patent changes the parameter representation from concrete UI states to abstracted state representations. By transforming the state space parameters through abstraction functions, the system reduces the effective state space size while maintaining the essential characteristics needed for achieving high code coverage
2Reliability
If exhaustive testing of all possible events and interfaces is performed to ensure app correctness, then complete coverage might be achieved, but the testing efficiency and productivity decrease significantly
Solution Approach 1:
The patent implements feedback mechanisms where the exploration agent continuously receives information about visited states and uses this feedback to guide future exploration. The system learns from past testing experiences and adjusts its exploration strategy to focus on untested or under-tested areas, maintaining high reliability while improving productivity
Solution Approach 2:
The exploration agent autonomously generates test cases and guides the testing process without requiring constant human intervention. The system serves itself by automatically learning from exploration results and adapting its strategy, thereby maintaining thorough testing coverage while significantly improving testing efficiency
3Manufacturing precision
If the testing system explores deep function paths to increase code coverage, then more faults may be exposed, but the system risks falling into local optima and wasting time on redundant exploration
Solution Approach 1:
The patent employs dynamic exploration strategies where the testing system adapts its behavior based on the current state and historical exploration data. The exploration agent dynamically adjusts its path selection to balance between exploring deep function paths for fault detection and avoiding redundant exploration of already-tested areas, preventing getting stuck in local optima
Data Source
AI summary
A curiosity-driven Android app automatic testing method includes the following steps:1) a left part represents a pre-processing assembly which achieves abstraction of an Android app state based on an Android interface structure; 2) a right part is curiosity-driven reinforcement learning module which maintains a historical access state set and optimizes an exploration policy constantly to guide a test to find more new states under the guidance of a reward function based on a curiosity thought; and 3) a middle part represents an advanced guidance module of a deterministic finite automaton (DFA), where the DFA is constructed during operation to record all access states and frequencies thereof; and if the new states are not explored within a given time budget, an AndroidExplore selects the most curious state as a starting point of a next exploration according to global information of the DFA.


