Columbus: Android App Testing Through Systematic Callback Exploration

by   Priyanka Bose, et al.

With the continuous rise in the popularity of Android mobile devices, automated testing of apps has become more important than ever. Android apps are event-driven programs. Unfortunately, generating all possible types of events by interacting with the app's interface is challenging for an automated testing approach. Callback-driven testing eliminates the need for event generation by directly invoking app callbacks. However, existing callback-driven testing techniques assume prior knowledge of Android callbacks, and they rely on a human expert, who is familiar with the Android API, to write stub code that prepares callback arguments before invocation. Since the Android API is huge and keeps evolving, prior techniques could only support a small fraction of callbacks present in the Android framework. In this work, we introduce Columbus, a callback-driven testing technique that employs two strategies to eliminate the need for human involvement: (i) it automatically identifies callbacks by simultaneously analyzing both the Android framework and the app under test, and (ii) it uses a combination of under-constrained symbolic execution (primitive arguments), and type-guided dynamic heap introspection (object arguments) to generate valid and effective inputs. Lastly, Columbus integrates two novel feedback mechanisms – data dependency and crash-guidance, during testing to increase the likelihood of triggering crashes, and maximizing coverage. In our evaluation, Columbus outperforms state-of-the-art model-driven, checkpoint-based, and callback-driven testing tools both in terms of crashes and coverage.


page 1

page 8


DinoDroid: Testing Android Apps Using Deep Q-Networks

The large demand of mobile devices creates significant concerns about th...

CAT: Change-focused Android GUI Testing

Android Apps are frequently updated, every couple of weeks, to keep up w...

Concurrency-related Flaky Test Detection in Android apps

Validation of Android apps via testing is difficult owing to the presenc...

DimensionApp : android app to estimate object dimensions

In this project, we develop an android app that uses on computer vision ...

Deep Reinforcement Learning for Black-Box Testing of Android Apps

The state space of Android apps is huge and its thorough exploration dur...

Lifestate: Event-Driven Protocols and Callback Control Flow

Developing interactive applications (apps) against event-driven software...

Lifestate: Event-Driven Protocols and Callback Control Flow (Extended Version)

Developing interactive applications (apps) against event-driven software...

Please sign up or login with your details

Forgot password? Click here to reset