Android Testing via Synthetic Symbolic Execution

被引:0
|
作者
Gao, Xiang [1 ]
Tan, Shin Hwei [1 ,2 ]
Dong, Zhen [1 ]
Roychoudhury, Abhik [1 ]
机构
[1] Natl Univ Singapore, Singapore, Singapore
[2] Southern Univ Sci & Technol, Shenzhen, Peoples R China
基金
新加坡国家研究基金会;
关键词
Android testing; Symbolic execution; Program synthesis;
D O I
10.1145/32381417.3238225
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Symbolic execution of Android applications is challenging as it involves either building a customized VM for Android or modeling the Android libraries. Since the Android Runtime evolves from one version to another, building a high-fidelity symbolic execution engine involves modeling the effect of the libraries and their evolved versions. Without simulating the behavior of Android libraries, path divergence may occur due to constraint loss when the symbolic values flow into Android framework and these values later affect the subsequent path taken. Previous works such as JPF-Android have relied on the modeling of execution environment such as libraries. In this work, we build a dynamic symbolic execution engine for Android apps, without any manual modeling of execution environment. Environment (or library) dependent control flow decisions in the application will trigger an on-demand program synthesis step to automatically deduce a representation of the library. This representation is refined on-the-fly by running the corresponding library multiple times. The overarching goal of the refinement is to enhance behavioral coverage and to alleviate the path divergence problem during symbolic execution. Moreover, our library synthesis can be made context-specific. Compared to traditional synthesis approaches which aim to synthesize the complete library code, our context-specific synthesis engine can generate more precise expressions for a given context. The evaluation of our dynamic symbolic execution engine, built on top of JDART, shows that the library models obtained from program synthesis are often more accurate than the semi-manual models in JPF-Android. Furthermore, our symbolic execution engine could reach more branch targets, as compared to using the JPF-Android models.
引用
收藏
页码:419 / 429
页数:11
相关论文
共 50 条
  • [41] Validating converted java code via symbolic execution
    Sneed, Harry M.
    Verhoef, Chris
    Lecture Notes in Business Information Processing, 2017, 269 : 70 - 83
  • [42] Eliminating Path Redundancy via Postconditioned Symbolic Execution
    Yi, Qiuping
    Yang, Zijiang
    Guo, Shengjian
    Wang, Chao
    Liu, Jian
    Zhao, Chen
    IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2018, 44 (01) : 25 - 43
  • [43] Generating Performance Distributions via Probabilistic Symbolic Execution
    Chen, Bihuan
    Liu, Yang
    Le, Wei
    2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, : 49 - 60
  • [44] Precise Cache Timing Analysis via Symbolic Execution
    Chu, Duc-Hiep
    Jaffar, Joxan
    Maghareh, Rasool
    2016 IEEE REAL-TIME AND EMBEDDED TECHNOLOGY AND APPLICATIONS SYMPOSIUM (RTAS), 2016,
  • [45] Unit tests reloaded: Parameterized unit testing with symbolic execution
    Tillmann, Nikolai
    Schulte, Wolfram
    IEEE SOFTWARE, 2006, 23 (04) : 38 - +
  • [46] Enhancing Conformance Testing Using Symbolic Execution for Network Protocols
    Song, JaeSeung
    Kim, Hyoungshick
    Park, Soojin
    IEEE TRANSACTIONS ON RELIABILITY, 2015, 64 (03) : 1024 - 1037
  • [47] Event Listener Analysis and Symbolic Execution for Testing GUI Applications
    Ganov, Svetoslav
    Killmar, Chip
    Khurshid, Sarfraz
    Perry, Dewayne E.
    FORMAL METHODS AND SOFTWARE ENGINEERING, PROCEEDINGS, 2009, 5885 : 69 - 87
  • [48] Combining Symbolic Execution and Model Checking for Data Flow Testing
    Su, Ting
    Fu, Zhoulai
    Pu, Geguang
    He, Jifeng
    Su, Zhendong
    2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, VOL 1, 2015, : 654 - 665
  • [49] A case for GUI testing using symbolic execution poster abstract
    Ganov, Svetoslav
    Khurshid, Sarfraz
    Perry, Dewayne
    TAIC PART 2007 - TESTING: ACADEMIC AND INDUSTRIAL CONFERENCE - PRACTICE AND RESEARCH TECHNIQUES, PROCEEDINGS: CO-LOCATED WITH MUTATION 2007, 2007, : 135 - 135
  • [50] Integration Testing of Protocol Implementations using Symbolic Distributed Execution
    Sasnauskas, Raimondas
    Kaiser, Philipp
    Jukic, Russ Lucas
    Wehrle, Klaus
    2012 20TH IEEE INTERNATIONAL CONFERENCE ON NETWORK PROTOCOLS (ICNP), 2012,