Demo Data from VLDB 2026 / reviewers in the wild / expert
Yang Chen 0024
dblp:48/4792-24
· DBLP profile ↗
8ranked-venue papers
2as first author
0since 2021 · last 2016
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 2 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
5 papers |
Software testing · 79% Debugging and program repair · 16% Programming languages and type systems · 5% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Embedded and real-time systems · 67% Hardware reliability and fault tolerance · 33% |
Topics — the 15 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
fuzzing |
0.3 | 2 | 2013 | Taming compiler fuzzers · PLDI 2013 Swarm testing · ISSTA 2012 |
Software testing
compiler testing |
0.3 | 2 | 2012 | Test-case reduction for C compiler bugs · PLDI 2012 Finding and understanding bugs in C compilers · PLDI 2011 |
Debugging and program repair
fault localization |
0.2 | 2 | 2013 | Test-case reduction for C compiler bugs · PLDI 2012 Taming compiler fuzzers · PLDI 2013 |
Software testing › fuzzing › system software fuzzing
compiler fuzzing |
0.2 | 1 | 2013 | Taming compiler fuzzers · PLDI 2013 |
Software testing › regression testing
test case prioritization |
0.2 | 1 | 2013 | Taming compiler fuzzers · PLDI 2013 |
Debugging and program repair › fault localization
compiler bug isolation |
0.1 | 1 | 2012 | Test-case reduction for C compiler bugs · PLDI 2012 |
Software testing
random testing |
0.1 | 1 | 2012 | Swarm testing · ISSTA 2012 |
Software testing › test optimization
test case reduction |
0.1 | 1 | 2012 | Test-case reduction for C compiler bugs · PLDI 2012 |
Software testing › test suite evaluation
test diversity |
0.1 | 1 | 2012 | Swarm testing · ISSTA 2012 |
Software testing
test generation |
0.1 | 1 | 2012 | Swarm testing · ISSTA 2012 |
Software testing › test generation
random test generation |
0.1 | 1 | 2011 | Finding and understanding bugs in C compilers · PLDI 2011 |
Programming languages and type systems › language-based security
memory safety |
0.1 | 1 | 2009 | Surviving sensor network software faults · SOSP 2009 |
Hardware reliability and fault tolerance
error recovery |
0.1 | 1 | 2009 | Surviving sensor network software faults · SOSP 2009 |
Embedded and real-time systems › embedded software › embedded operating systems
sensor node operating system |
0.1 | 1 | 2009 | Surviving sensor network software faults · SOSP 2009 |
Embedded and real-time systems › embedded software › embedded operating systems
TinyOS |
0.1 | 1 | 2009 | Surviving sensor network software faults · SOSP 2009 |
Methods — techniques the papers use, named apart from their topics
recovery units · 0.2compiler and runtime extensions · 0.2random testing · 0.2modular program transformation · 0.1fixpoint computation · 0.1feature omission · 0.1delta debugging · 0.1configuration sampling · 0.1randomized test-case generation · 0.1differential testing · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2016 | Cause reduction: delta debugging, even without bugsabstractSummary What is a test casefor? Sometimes, to expose a fault. Tests can also exercise code, use memory or time, or produce desired output. Given a desired effect, a test case can be seen as acause, and its components divided into essential (required for effect) and accidental. Delta debugging is used for removing accidents from failing test cases, producing smaller test cases that are easier to understand. This paper extends delta debugging by simplifying test cases with respect toarbitrary effects, a generalization calledcause reduction. Suites produced by cause reduction provide effectivequick testsfor real‐world programs. For Mozilla's JavaScript engine, the reduced suite is possiblymoreeffective for finding faults. The effectiveness of reduction‐based suites persists through changes to the software, improving coverage by over 500 branches for versions up to 4 months later. Cause reduction has other applications, including improving seeded symbolic execution, where using reduced tests can often double the number of additional branches explored. Copyright © 2015 John Wiley & Sons, Ltd. Alex Groce, Mohammad Amin Alipour, Chaoqiang Zhang, Yang Chen 0024, John Regehr |
Softw. Test. Verification Reliab. | 4 |
| 2014 | Cause Reduction for Quick TestingabstractIn random testing, it is often desirable to produce a "quick test" -- an extremely inexpensive test suite that can serve as a frequently applied regression and allow the benefits of random testing to be obtained even in very slow or over-subscribed test environments. Delta debugging is an algorithm that, given a failing test case, produces a smaller test case that also fails, and typically executes much more quickly. Delta debugging of random tests can produce effective regression suites for previously detected faults, but such suites often have little power for detecting new faults, and in some cases provide poor code coverage. This paper proposes extending delta debugging by simplifying tests with respect to code coverage, an instance of a generalization of delta debugging we call cause reduction. We show that test suites reduced in this fashion can provide very effective quick tests for real-world programs. For Mozilla's Spider Monkey JavaScript engine, the reduced suite is more effective for finding software faults, even if its reduced runtime is not considered. The effectiveness of a reduction-based quick test persists through major changes to the software under test. Alex Groce, Mohammad Amin Alipour, Chaoqiang Zhang, Yang Chen 0024, John Regehr |
ICST | 4 |
| 2013 | Help, help, i'm being suppressed! The significance of suppressors in software testingabstractTest features are basic compositional units used to describe what a test does (and does not) involve. For example, in API-based testing, the most obvious features are function calls; in grammar-based testing, the obvious features are the elements of the grammar. The relationship between features as abstractions of tests and produced behaviors of the tested program is surprisingly poorly understood. This paper shows how large-scale random testing modified to use diverse feature sets can uncover causal relationships between what a test contains and what the program being tested does. We introduce a general notion of observable behaviors as targets, where a target can be a detected fault, an executed branch or statement, or a complex coverage entity such as a state, predicate-valuation, or program path. While it is obvious that targets have triggers - features without which they cannot be hit by a test - the notion of suppressors - features which make a test less likely to hit a target - has received little attention despite having important implications for automated test generation and program understanding. For a set of subjects including C compilers, a flash file system, and JavaScript engines, we show that suppression is both common and important. Alex Groce, Chaoqiang Zhang, Mohammad Amin Alipour, Eric Eide, Yang Chen 0024, John Regehr |
ISSRE | 5 |
| 2013 | Taming compiler fuzzersabstractAggressive random testing tools ("fuzzers") are impressively effective at finding compiler bugs. For example, a single test-case generator has resulted in more than 1,700 bugs reported for a single JavaScript engine. However, fuzzers can be frustrating to use: they indiscriminately and repeatedly find bugs that may not be severe enough to fix right away. Currently, users filter out undesirable test cases using ad hoc methods such as disallowing problematic features in tests and grepping test results. This paper formulates and addresses the fuzzer taming problem: given a potentially large number of random test cases that trigger failures, order them such that diverse, interesting test cases are highly ranked. Our evaluation shows our ability to solve the fuzzer taming problem for 3,799 test cases triggering 46 bugs in a C compiler and 2,603 test cases triggering 28 bugs in a JavaScript engine. Yang Chen 0024, Alex Groce, Chaoqiang Zhang, Weng-Keen Wong, Xiaoli Z. Fern, Eric Eide, John Regehr |
PLDI | 1 |
| 2012 | Swarm testingabstractSwarm testing is a novel and inexpensive way to improve the diversity of test cases generated during random testing. Increased diversity leads to improved coverage and fault detection. In swarm testing, the usual practice of potentially including all features in every test case is abandoned. Rather, a large “swarm” of randomly generated configurations, each of which omits some features, is used, with configurations receiving equal resources. We have identified two mechanisms by which feature omission leads to better exploration of a system’s state space. First, some features actively prevent the system from executing interesting behaviors; e.g., “pop” calls may prevent a stack data structure from executing a bug in its overflow detection logic. Second, even when there is no active suppression of behaviors, test features compete for space in each test, limiting the depth to which logic driven by features can be explored. Experimental results show that swarm testing increases coverage and can improve fault detection dramatically; for example, in a week of testing it found 42% more distinct ways to crash a collection of C compilers than did the heavily hand-tuned default configuration of a random tester. Alex Groce, Chaoqiang Zhang, Eric Eide, Yang Chen 0024, John Regehr |
ISSTA | 4 |
| 2012 | Test-case reduction for C compiler bugsabstractTo report a compiler bug, one must often find a small test case that triggers the bug. The existing approach to automated test-case reduction, delta debugging, works by removing substrings of the original input; the result is a concatenation of substrings that delta cannot remove. We have found this approach less than ideal for reducing C programs because it typically yields test cases that are too large or even invalid (relying on undefined behavior). To obtain small and valid test cases consistently, we designed and implemented three new, domain-specific test-case reducers. The best of these is based on a novel framework in which a generic fixpoint computation invokes modular transformations that perform reduction operations. This reducer produces outputs that are, on average, more than 25 times smaller than those produced by our other reducers or by the existing reducer that is most commonly used by compiler developers. We conclude that effective program reduction requires more than straightforward delta debugging. John Regehr, Yang Chen 0024, Pascal Cuoq, Eric Eide, Chucky Ellison, Xuejun Yang |
PLDI | 2 |
| 2011 | Finding and understanding bugs in C compilersabstractCompilers should be correct. To improve the quality of C compilers, we created Csmith, a randomized test-case generation tool, and spent three years using it to find compiler bugs. During this period we reported more than 325 previously unknown bugs to compiler developers. Every compiler we tested was found to crash and also to silently generate wrong code when presented with valid input. In this paper we present our compiler-testing tool and the results of our bug-hunting study. Our first contribution is to advance the state of the art in compiler testing. Unlike previous tools, Csmith generates programs that cover a large subset of C while avoiding the undefined and unspecified behaviors that would destroy its ability to automatically find wrong-code bugs. Our second contribution is a collection of qualitative and quantitative results about the bugs we have found in open-source C compilers. Xuejun Yang, Yang Chen 0024, Eric Eide, John Regehr |
PLDI | 2 |
| 2009 | Surviving sensor network software faultsabstractWe describe Neutron, a version of the TinyOS operating system that efficiently recovers from memory safety bugs. Where existing schemes reboot an entire node on an error, Neutron's compiler and runtime extensions divide programs into recovery units and reboot only the faulting unit. The TinyOS kernel itself is a recovery unit: a kernel safety violation appears to applications as the processor being unavailable for 10-20 milliseconds. Yang Chen 0024, Omprakash Gnawali, Maria A. Kazandjieva, Philip Alexander Levis, John Regehr |
SOSP | 1 |