In our empirical study, we studied 220 real-world FIC issues to:
We collected five subject Android apps from three open source Android app hosting websites: Google Code, F-Droid, GitHub. The 5 subjects were selected from 27 candidate apps (Download the full list). We collected 220 FIC issues from the subject apps. The information of the subject apps is as follows:
App Name | Category | Rating | Downloads | KLOC | # FIC Issues |
---|---|---|---|---|---|
CSipSimple | Communication | 4.3/5.0 | 1M - 5M | 59.3 | 80 |
AnkiDroid | Education | 4.5/5.0 | 1M - 5M | 50.8 | 44 |
K-9 Mail | Communication | 4.2/5.0 | 5M - 10M | 93.7 | 40 |
VLC | Media & Video | 4.4/5.0 | 10M - 50M | 151.1 | 36 |
AnySoftKeyboard | Tools | 4.4/5.0 | 1M - 5M | 38.9 | 20 |
Detailed information of the data set in our empirical study: Download
The dataset is updated with 31 more recent FIC issues that were not included in the ASE paper
We highlight some key findings of our empirical study. For more information, please refer to our research paper.
We categorized the FIC issues into two types: device-specific and non-device-specific issues.
The common root causes of device-specific issues are: problematic driver implementation, OS customization, peculiar hardware composition.
The common root causes of non-device-specific issues are: API evolution and original system bugs.
Summary: We observed two types and five major root causes of FIC issues in Android apps, of which the platform API evolution and problematic hardware drive implementation are most prominent. It is challenging to ensure app compatibility on various device models with diverse software and hardware environments.
Summary: FIC issues can cause both functional and non-functional consequences such as app crashing, app not functioning, performance and user experience degradation. Their symptoms can be app-specific, making it difficult to define oracles in compatibility testing.
Common Patching Patterns
We studied the common patching patterns of the FIC issues:
Patching Complexity
The patch of FIC issues are usually simple and of small size. However, identifying the valid patch is a difficult task. As the causes of FIC issues lie on the device side, without adequate information, it is difficult to locate the root cause and fix FIC issues.
Summary: Locating the root cause of FIC issues is difficult in practice. Whereas, issue fixes are usually simple and demonstrate common patterns: checking device information and availability of software/hardware components before invoking issue-inducing APIs/methods.
We conducted interviews with five experienced Android practitioners and an online survey among over 200 Android developers to learn common challenges and practices in real practices.
Survey information can be found on call for participation page.
The interview questions are available: interview questions