论文标题
用于检测非碰撞逻辑错误的Android应用程序的全自动功能模糊
Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs
论文作者
论文摘要
Android应用程序是基于GUI的事件驱动的软件,并且近年来已经无处不在。显然,功能正确性对于应用程序的成功至关重要。但是,除了崩溃错误之外,非碰撞功能错误(简而言之,这项工作中的“无碰撞错误”),例如无意义的功能故障,即使在受欢迎的,经过良好测试的应用程序中,静音用户数据丢失和不正确的显示信息也很普遍。这些非碰撞功能错误通常是由程序逻辑错误引起的,并在图形用户界面(GUIS)上表现出来。在实践中,此类错误在有效检测它们时构成了重大挑战,因为(1)当前的做法严重依赖昂贵的小规模手动验证(缺乏自动化); (2)现代完全自动化的测试仅限于崩溃错误(缺乏测试ORACLES)。本文通过引入独立视图Fuzzing来填补这一空白,这是一种新颖的,完全自动化的方法,用于检测Android应用中的非崩溃功能错误。受变质测试的启发,我们的主要见解是利用Android应用程序的常见独立视图属性从一组验证某些应用程序属性的种子测试中制造具有物业的突变体测试。突变的测试有助于在额外的不良条件下行使经过测试的应用程序。任何财产违规都表明可能进行手动确认的功能错误。我们已经意识到自己的方法是一种自动化的端到端功能模糊工具Genie。给定一个应用程序,(1)Genie自动检测到非碎裂的错误而无需进行人提供的测试和甲壳(因此完全自动化); (2)检测到的非碰撞错误是多种多样的(因此一般,不限于特定的功能特性),这使Genie与先前的工作不同。
Android apps are GUI-based event-driven software and have become ubiquitous in recent years. Obviously, functional correctness is critical for an app's success. However, in addition to crash bugs, non-crashing functional bugs (in short as "non-crashing bugs" in this work) like inadvertent function failures, silent user data lost and incorrect display information are prevalent, even in popular, well-tested apps. These non-crashing functional bugs are usually caused by program logic errors and manifest themselves on the graphic user interfaces (GUIs). In practice, such bugs pose significant challenges in effectively detecting them because (1) current practices heavily rely on expensive, small-scale manual validation (the lack of automation); and (2) modern fully automated testing has been limited to crash bugs (the lack of test oracles). This paper fills this gap by introducing independent view fuzzing, a novel, fully automated approach for detecting non-crashing functional bugs in Android apps. Inspired by metamorphic testing, our key insight is to leverage the commonly-held independent view property of Android apps to manufacture property-preserving mutant tests from a set of seed tests that validate certain app properties. The mutated tests help exercise the tested apps under additional, adverse conditions. Any property violations indicate likely functional bugs for further manual confirmation. We have realized our approach as an automated, end-to-end functional fuzzing tool, Genie. Given an app, (1) Genie automatically detects non-crashing bugs without requiring human-provided tests and oracles (thus fully automated); and (2) the detected non-crashing bugs are diverse (thus general and not limited to specific functional properties), which set Genie apart from prior work.