A new automated technique developed at Georgia Tech identifies potential platform-based glitches in Android apps. Developers will save time and money, and users will have more stable apps regardless of their Android platform.
Professor Alessandro Orso and Ph.D. student Mattia Fazzini with the School of Computer Science introduced the new technique, DiffDroid, in their paper Automated Cross-Platform Inconsistency Detection for Mobile Apps. Fazzini presented it at the 32nd IEEE/ACM International Conference on Automated Software Engineering in October.
“Doing research on Android is very rewarding because you can immediately see how the techniques you develop have the potential to positively impact a large number of people,” Fazzini said.
Testing software is one of the most expensive and challenging parts of the development process. Testing Android apps is even harder due to the fragmentation of the ecosystem. Because apps can run on devices with different hardware, display size, and operating systems, they can exhibit cross-platform inconsistencies (CPIs), meaning they behave differently on different phones. CPIs can make or break the success of an app, which is where DiffDroid comes in.
DiffDroid identifies CPIs through the combination of input generation, user interface modeling, and differential testing. The automated technique operates in four steps:
- It automatically generates a large set of inputs for an app.
- It runs the app with these inputs on a reference device and builds a model of the app.
- It runs the app with these inputs on a wide variety of platforms.
- It compares the model of the app on these different platforms with the model created for the reference device, noting and reporting inconsistencies to developers.
Fazzini and Orso created a tool from this technique and evaluated the effectiveness of it on five real-world apps and considered more than 130 platforms. DiffDroid was able to spot 96 CPIs resulting from differences in screen resolution, screen density, and operating system. For example, users could not access the full functionality of the app on certain devices, like an important app button being no longer visible to users.
“DiffDroid is particularly useful when it can find inconsistencies that affect an app’s functionality and can result in user frustration,” Fazzini said.
DiffDroid can be run overnight, so that developers can get a full report of issues in the morning. Not only is DiffDroid efficient, it’s also precise, with only two out of ten reports coming up as false positives in the apps studied so far. The researchers have made the tool open source, so developers can use it and future researchers can build on the technique and extend it.
“This DiffDroid idea could also become a start-up,” Orso said.
According to Fazzini and Orso, this is only the beginning of this area of research. First, they hope to work with developers on how to make the tool more useful in the real world. Second, future development could extend DiffDroid so that it also finds differences in the execution of operating system APIs. Finally, they hope to design a technique to automatically repair reported inconsistencies.
The researchers also plan to help Android developers with ideas that follow different research directions. For instance, they plan to automatically generate test cases from bug reports by combining natural language processing with program analysis techniques. In this way, developers can spend less time analyzing reports and instead just fix the bugs.