Reproducible Interference-Aware Mobile Testing
6
Citation
34
Reference
10
Related Paper
Citation Trend
Abstract:
Mobile apps are born to work in an environment with ever-changing network connectivity, random hardware interruption, unanticipated task switches, etc. However, such interference cases are often oblivious in traditional mobile testing but happen frequently and sophisticatedly in the field, causing various robustness, responsiveness and consistency problems. In this paper, we propose JazzDroid to introduce interference to mobile testing. JazzDroid adopts a gray-box approach to instrument apps at binary level such that interference logic is inlined with app execution and can be triggered to effectively affect normal execution. Then, JazzDroid repeatedly orchestrates the instrumented app through app developers' existing tests and continuously randomizes interference on the fly to reveal possible faulty executions. Upon discovering problems, JazzDroid generates a test script with the user inputs from developers' tests and the interference injected for developers to reproduce the problems. At a high level, JazzDroid can be seamlessly integrated into app developers' testing procedures, detecting more problems from existing tests. We implement JazzDroid to function on unmodified apps directly from app markets and interface with de facto industrial testing toolchain. JazzDroid improves mobile testing by discovering 6x more problems, including crashes, functional bugs, UI consistency issues and common bug patterns that fail numerous apps.Keywords:
Toolchain
Mobile apps
Robustness
De facto
Software bug
In this paper, we present a free and open source toolchain that can be used for enumerating all custom instructions from C and C++ codes considering not only general constraints like circular dependencies but also parameterized architectural constraints such as number of read and write ports, area, and delay parameters and constraints. After enumerating all custom instructions, the toolchain can select the best subset of custom instructions for implementation.
Toolchain
Enumeration
Cite
Citations (0)
Abstract The emergence of new areas of human-robot cooperation creates the need to ensure human safety in this regard. Therefore, there is a need to develop new sensors to detect the presence of a human in the vicinity of a robot. One such sensor is an electronic skin (e-skin). Manufacturing and testing new e-skin prototypes is labor-intensive. This paper presents a software toolchain developed to simulate the operation of an e-skin used to detect human proximity. The toolchain is based on the finite element method and has been developed exclusively with free and open-source software. The presented toolchain makes it possible to test e-skin modifications without the need for a physical prototype and significantly reduces implementation costs. The developed solution is multi-platform and allows parallel and multi-threaded calculations conducted on multiple machines simultaneously. This paper presents modeling results obtained for a simplified e-skin sensor, which are consistent with experimental results on the actual model.
Toolchain
Cite
Citations (0)
The creation of a program analysis toolchain involves design choices regarding intermediate representations (IRs). Good choices for an IR depend on the analyses performed by a toolchain. In academia, new analyses are developed frequently. Therefore, the best single IR of a research-oriented toolchain does not exist. Thus, we will describe our design of an IR that can be easily adapted to new requirements.
Toolchain
Cite
Citations (0)
Numerical instability is a well-known problem that may cause serious runtime failures. This paper discusses the reason of instability in software development process, and presents a toolchain that not only detects the potential instability in software, but also diagnoses the reason for such instability. We classify the reason of instability into two categories. When it is introduced by software requirements, we call the instability caused by problem . In this case, it cannot be avoided by improving software development, but requires inspecting the requirements, especially the underlying mathematical properties. Otherwise, we call the instability caused by practice. We design our toolchain as four loosely-coupled tools, which combine stochastic arithmetic with infinite-precision testing. Each tool in our toolchain can be configured with different strategies according to the properties of the analyzed software. We evaluate our toolchain on subjects from literature. The results show that it effectively detects and separates the instabilities caused by problems from others. We also conduct an evaluation on the latest version of GNU Scientific Library, and the toolchain finds a few real bugs in the well-maintained and widely deployed numerical library. With the help of our toolchain, we report the details and fixing advices to the GSL buglist.
Toolchain
Cite
Citations (10)
App Inventor for Android (AIA) is a visual programming environment freely available from MIT's Center for Mobile Learning that enables students with no previous programming background to build apps for Android mobile devices. Empowering students to create their own mobile apps engages them personally and can infuse much-needed energy and excitement into computer science education.
Mobile apps
Android app
Android application
Cite
Citations (8)
This paper deals with the processing of vehicle data in a stream using machine learning. In modern vehicles, a significant amount of sensor data are generated, which are only used temporarily before being discarded. The toolchain presented here aims to historize the data and evaluate it in near real time. Stream machine learning is used to process the data. Requirements for the toolchain are the platform-independent use of these and the free provision of the tools used. The result is a complete and innovative toolchain that maps everything required. From the reading of data on the vehicle to the use of stream machine learning and the evaluation of the data. An illustrative use case is presented and an outlook on extensions of the toolchain is given.
Toolchain
Stream Processing
Cite
Citations (2)
Android apps are ubiquitous and serve many aspects of our daily lives. Ensuring their functional correctness is crucial for their success. To date, we still lack a general and in-depth understanding of functional bugs, which hinders the development of practices and techniques to tackle functional bugs. To fill this gap, we conduct the first systematic study on 399 functional bugs from 8 popular open-source and representative Android apps to investigate the root causes, bug symptoms, test oracles, and the capabilities and limitations of existing testing techniques. This study took us substantial effort. It reveals several new interesting findings and implications which help shed light on future research on tackling functional bugs. Furthermore, findings from our study guided the design of a proof-of-concept differential testing tool, RegDroid, to automatically find functional bugs in Android apps. We applied RegDroid on 5 real-world popular apps, and successfully discovered 14 functional bugs, 10 of which were previously unknown and affected the latest released versions—all these 10 bugs have been confirmed and fixed by the app developers. Specifically, 10 out of these 14 found bugs cannot be found by existing testing techniques. We have made all the artifacts (including the dataset of 399 functional bugs and RegDroid) in our work publicly available at https://github.com/Android-Functional-bugs-study/home.
Software bug
Empirical Research
Functional testing
Cite
Citations (15)
WebView is a widely used Android component that augments a native app with web browser capabilities. It eases the interactions between an app's native code and web code. However, the interaction mechanism of WebView induces new types of bugs in Android apps. Understanding the characteristics and manifestation of these WebView-induced bugs (ωBugs for short) facilitates the correct usages of WebViews in Android apps. This motivates us to conduct the first empirical study on ωBugs based on those found in popular open-source Android apps. Our study identified the major root causes and consequences of ωBugs and made interesting observations that can be leveraged for detecting and diagnosing ωBugs. Based on the empirical study, we further propose an automated testing technique ωDroid to effectively expose ωBugs in Android apps. In our experiments, ωDroid successfully discovered 30 unique and previously-unknown ωBugs when applied to 146 open-source Android apps. We reported the 30 ωBugs to the corresponding app developers. Out of these 30 ωBugs, 14 were confirmed and 7 of them were fixed. This shows that ωDroid can effectively detect ωBugs that are of the developers' concern.
Software bug
Android app
Empirical Research
Web browser
Cite
Citations (23)
While the first part of the paper describes the general approach and the software architecture of the toolchain, the second part illustrates its application with an example of a real building.
Toolchain
Cite
Citations (6)
This paper describes the open-source software toolchain developed by the Underwater Systems and Technology Laboratory (LSTS) for supporting networked heterogeneous air and ocean vehicle systems. The toolchain supports the deployment of air and ocean vehicles interacting over limited acoustic and wireless networks combined with disruption-tolerant networking protocols. We present the different components of the toolchain and how they can be deployed and extended for different scenarios. We conclude with descriptions of recent applications to onboard deliberative planning and integration of low-cost micro UAVs into the toolchain.
Toolchain
Cite
Citations (129)