those mobile apps often have very short time-to-market
and upgrade cycles, thus, requiring short development
time.
More severely, mobile apps are often closed-source, i.e. their source code is not
publicly available. Thus, finding and learning code examples
from existing mobile app projects would be difficult.
therefore
as such,
As such, traditional testing such as coverage-based approaches may not be effective.
However, learning API usages is often
challenging due to the fast-changing nature of API frameworks
for mobile systems and the insufficiency of API documentation
and source code examples.
While researchers have developed techniques to analyze, quantify, detect, and fix performance bugs, we conjecture that many of these techniques may not be effective in highly-configurable systems.
Modern software systems are highly-configurable, allowing users to customize a large number of configuration operations while retaining a core set of functionality.
most existing work assumes default configurations while ignoring the influence of various configurations.
For example, an
Android app might make 8-42% of its external dependencies
to Android APIs and 7-68% to Java APIs
e.g.
typical API usage scenarios often include several API elements
and follow special rules, e.g. for pre- and post-conditions
or for control and data flows