Guowei Yang

Dr. Guowei Yang

orcid

Research Focus & Metrics

Academic Career Length

10Years (2017-Present)

(Calculated once Scilit publication data is synced: current year − year of first publication + 1)

Representative Publications

View All Publications
30 November 2023
Verified
Conference Paper
Open access
MWMingyuan Wu
Mingyuan Wu
YOYicheng Ouyang
Yicheng Ouyang
MLMinghai Lu
Minghai Lu
JCJunjie Chen
Junjie Chen
YZYingquan Zhao
Yingquan Zhao
YZYuqun Zhang
Yuqun Zhang
While the Java Virtual Machine (JVM) plays a vital role in ensuring correct executions of Java applications, testing JVMs via generating and running class files on them can be rather challenging. The existing techniques, e.g., ClassFuzz and Classming, attempt to leverage the power of fuzzing and differential testing to cope with JVM intricacies by exposing discrepant execution results among different JVMs, i.e., inter-JVM discrepancies, for testing analytics. However, their adopted fuzzers are insufficiently guided since they include no well-designed seed and mutator scheduling mechanisms, leading to inefficient differential testing. To address such issues, in this paper, we propose SJFuzz, the first JVM fuzzing framework with seed and mutator scheduling mechanisms for automated JVM differential testing. Overall, SJFuzz aims to mutate class files via control flow mutators to facilitate the exposure of inter-JVM discrepancies. To this end, SJFuzz schedules seeds (class files) for mutations based on the discrepancy and diversity guidance. SJFuzz also schedules mutators for diversifying class file generation. To evaluate SJFuzz, we conduct an extensive study on multiple representative real-world JVMs, and the experimental results show that SJFuzz significantly outperforms the state-of-the-art mutation-based and generation-based JVM fuzzers in terms of the inter-JVM discrepancy exposure and the class file diversity. Moreover, SJFuzz successfully reported 46 potential JVM issues, and 20 of them have been confirmed as bugs and 16 have been fixed by the JVM developers.

27 February 2023 in Journal of Systems and Software
Verified
Journal Article
Closed access
TMTarek Mahmud
Tarek Mahmud
MCMeiru Che
Meiru Che
Guowei YangGuowei Yang
Guowei Yang

8 May 2023 in IEEE Transactions on Software Engineering
Verified
Journal Article
Closed access
TMTarek Uddin Mahmud
Tarek Uddin Mahmud
MCMeiru Che
Meiru Che
Guowei YangGuowei Yang
Guowei Yang
Android application programming interface (API) enables app developers to harness the functionalities of Android devices by interfacing with services and hardware using a Software Development Kit (SDK). However, API frequently evolves together with its associated SDK, and compatibility issues may arise when the API level supported by the underlying device differs from the API level targeted by app developers. These issues can lead to unexpected behaviors, resulting in a bad user experience. This article presents ACID, a novel approach to detecting Android API compatibility issues induced by API evolution. It detects both API invocation compatibility issues and API callback compatibility issues using API differences and static analysis of the app code. Experiments with 20 benchmark apps show that ACID is more accurate and faster than the state-of-the-art techniques in detecting API compatibility issues. The application of ACID on 2965 real-world apps further demonstrates its practical applicability. To eliminate the false positives reported by ACID, this article also presents a simple yet effective method to quickly verify the compatibility issues by selecting and executing the relevant tests from app's test suite, and experimental results demonstrate the verification method can eliminate most false positives when app's test suite has good coverage of the API usages.

20 June 2024 in Proceedings of the ACM on Programming Languages
Verified
Journal Article
Open access
QYQiuping Yi
Qiuping Yi
YYYifan Yu
Yifan Yu
Guowei YangGuowei Yang
Guowei Yang
Symbolic execution is a powerful technique for bug finding by generating test inputs to systematically explore all feasible paths within a given threshold. However, its practical usage is often limited by the path explosion problem. In this paper, we propose compatible branch coverage driven symbolic execution for efficient bug finding. Our new technique owns a novel path-pruning strategy obtained from program dependency analysis to effectively avoid unnecessary explorations. Specifically, based on a Compatible Branch Set , our technique directs symbolic execution to explore feasible branches while soundly pruning redundant paths that have no new contributions to branch coverage. We have implemented our approach atop KLEE and conducted experiments on a set of programs from Siemens Suite, GNU Coreutils, and other real-world programs. Experimental results show that, compared with the state-of-the-art symbolic execution techniques, our approach always uses significantly less time to reproduce bugs while achieving the same or better branch coverage. On average, our approach got over 45% path reduction and 3x speedup on the GNU Coreutils programs

9 April 2019 in Innovations in Systems and Software Engineering
Verified
Journal Article
Closed access
PDF file
Guowei YangGuowei Yang
Guowei Yang
RQRui Qiu
Rui Qiu
SKSarfraz Khurshid
Sarfraz Khurshid
CPCorina S. Păsăreanu
Corina S. Păsăreanu
JWJunye Wen
Junye Wen

11 March 2018
Verified
Book Chapter
Closed access
PDF file
RQRui Qiu
Rui Qiu
SKSarfraz Khurshid
Sarfraz Khurshid
CPCorina S. Păsăreanu
Corina S. Păsăreanu
JWJunye Wen
Junye Wen
Guowei YangGuowei Yang
Guowei Yang