Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Chaoqiang Zhang

dblp:118/3958 · DBLP profile ↗
← Back
9ranked-venue papers
1as first author
0since 2021 · last 2016
0000-0001-7729-173XORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 1 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
6 papers
Software testing · 94% Empirical software engineering · 2% Program analysis · 2%

Topics — the 15 heaviest of 17, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software testing › test adequacy
coverage criteria
0.422015
Guidelines for Coverage-Based Comparisons of Non-Adequate Test Suites · ACM Trans. Softw. Eng. Methodol. 2015
Comparing non-adequate test suites using coverage criteria · ISSTA 2013
Software testing
test suite evaluation
0.422015
Guidelines for Coverage-Based Comparisons of Non-Adequate Test Suites · ACM Trans. Softw. Eng. Methodol. 2015
Comparing non-adequate test suites using coverage criteria · ISSTA 2013
Software testing
fuzzing
0.322013
Taming compiler fuzzers · PLDI 2013
Swarm testing · ISSTA 2012
Software testing › regression testing
test case prioritization
0.222014
Taming compiler fuzzers · PLDI 2013
Using test case reduction and prioritization to improve symbolic execution · ISSTA 2014
Software testing › test coverage › code coverage
branch coverage
0.212015
Guidelines for Coverage-Based Comparisons of Non-Adequate Test Suites · ACM Trans. Softw. Eng. Methodol. 2015
Software testing › test coverage
path coverage
0.212015
Guidelines for Coverage-Based Comparisons of Non-Adequate Test Suites · ACM Trans. Softw. Eng. Methodol. 2015
Software testing › test optimization
test case reduction
0.212014
Using test case reduction and prioritization to improve symbolic execution · ISSTA 2014
Software testing › regression testing
test selection
0.212014
You Are the Only Possible Oracle: Effective Test Selection for End Users of Interactive Machine Learning Systems · IEEE Trans. Software Eng. 2014
Software testing › fuzzing › system software fuzzing
compiler fuzzing
0.212013
Taming compiler fuzzers · PLDI 2013
Software testing
random testing
0.112012
Swarm testing · ISSTA 2012
Software testing › test suite evaluation
test diversity
0.112012
Swarm testing · ISSTA 2012
Software testing
test generation
0.112012
Swarm testing · ISSTA 2012
Program analysis
symbolic execution
0.112014
Using test case reduction and prioritization to improve symbolic execution · ISSTA 2014
Software testing
test oracle
0.112014
You Are the Only Possible Oracle: Effective Test Selection for End Users of Interactive Machine Learning Systems · IEEE Trans. Software Eng. 2014
Debugging and program repair
fault localization
0.012013
Taming compiler fuzzers · PLDI 2013

Methods — techniques the papers use, named apart from their topics

correlation analysis · 0.2user study · 0.2symbolic execution · 0.2delta debugging · 0.2random testing · 0.2coverage measurement · 0.2feature omission · 0.1configuration sampling · 0.1
YearPublicationVenuePosition
2016 Cause reduction: delta debugging, even without bugs
abstract
Summary 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.3
2015 Guidelines for Coverage-Based Comparisons of Non-Adequate Test Suites
abstract
A fundamental question in software testing research is how to compare test suites, often as a means for comparing test-generation techniques that produce those test suites. Researchers frequently compare test suites by measuring their coverage . A coverage criterion C provides a set of test requirements and measures how many requirements a given suite satisfies. A suite that satisfies 100% of the feasible requirements is called C-adequate . Previous rigorous evaluations of coverage criteria mostly focused on such adequate test suites: given two criteria C and C ′, are C -adequate suites on average more effective than C ′-adequate suites? However, in many realistic cases, producing adequate suites is impractical or even impossible. This article presents the first extensive study that evaluates coverage criteria for the common case of non-adequate test suites: given two criteria C and C ′, which one is better to use to compare test suites? Namely, if suites T 1 , T 2 ,…, T n have coverage values c 1 , c 2 ,…, c n for C and c 1 ′, c 2 ′,…, c n ′ for C ′, is it better to compare suites based on c 1 , c 2 ,…, c n or based on c 1 ′, c 2 ′,…, c n ′ ? We evaluate a large set of plausible criteria, including basic criteria such as statement and branch coverage, as well as stronger criteria used in recent studies, including criteria based on program paths, equivalence classes of covered statements, and predicate states. The criteria are evaluated on a set of Java and C programs with both manually written and automatically generated test suites. The evaluation uses three correlation measures. Based on these experiments, two criteria perform best: branch coverage and an intraprocedural acyclic path coverage. We provide guidelines for testing researchers aiming to evaluate test suites using coverage criteria as well as for other researchers evaluating coverage criteria for research use.
Milos Gligoric 0001, Alex Groce, Chaoqiang Zhang, Rohan Sharma, Mohammad Amin Alipour, Darko Marinov
ACM Trans. Softw. Eng. Methodol.3
2014 Cause Reduction for Quick Testing
abstract
In 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
ICST3
2014 Using test case reduction and prioritization to improve symbolic execution
abstract
Scaling symbolic execution to large programs or programs with complex inputs remains difficult due to path explosion and complex constraints, as well as external method calls. Additionally, creating an effective test structure with symbolic inputs can be difficult. A popular symbolic execution strategy in practice is to perform symbolic execution not “from scratch” but based on existing test cases. This paper proposes that the effectiveness of this approach to symbolic execution can be enhanced by (1) reducing the size of seed test cases and (2) prioritizing seed test cases to maximize exploration efficiency. The proposed test case reduction strategy is based on a recently introduced generalization of delta debugging, and our prioritization techniques include novel methods that, for this purpose, can outperform some traditional regression testing algorithms. We show that applying these methods can significantly improve the effectiveness of symbolic execution based on existing test cases.
Chaoqiang Zhang, Alex Groce, Mohammad Amin Alipour
ISSTA1
2014 You Are the Only Possible Oracle: Effective Test Selection for End Users of Interactive Machine Learning Systems
abstract
How do you test a program when only a single user, with no expertise in software testing, is able to determine if the program is performing correctly? Such programs are common today in the form of machine-learned classifiers. We consider the problem of testing this common kind of machine-generated program when the only oracle is an end user: e.g., only you can determine if your email is properly filed. We present test selection methods that provide very good failure rates even for small test suites, and show that these methods work in both large-scale random experiments using a “gold standard” and in studies with real users. Our methods are inexpensive and largely algorithm-independent. Key to our methods is an exploitation of properties of classifiers that is not possible in traditional software testing. Our results suggest that it is plausible for time-pressured end users to interactively detect failures-even very hard-to-find failures-without wading through a large number of successful (and thus less useful) tests. We additionally show that some methods are able to find the arguably most difficult-to-detect faults of classifiers: cases where machine learning algorithms have high confidence in an incorrect result.
Alex Groce, Todd Kulesza, Chaoqiang Zhang, Shalini Shamasunder, Margaret M. Burnett, Weng-Keen Wong, Simone Stumpf, Shubhomoy Das, Amber Shinsel, Forrest Bice, Kevin McIntosh
IEEE Trans. Software Eng.3
2013 Help, help, i'm being suppressed! The significance of suppressors in software testing
abstract
Test 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
ISSRE2
2013 Comparing non-adequate test suites using coverage criteria
abstract
A fundamental question in software testing research is how to compare test suites, often as a means for comparing test-generation techniques. Researchers frequently compare test suites by measuring their coverage. A coverage criterion C provides a set of test requirements and measures how many requirements a given suite satisfies. A suite that satisfies 100% of the (feasible) requirements is C-adequate.
Milos Gligoric 0001, Alex Groce, Chaoqiang Zhang, Rohan Sharma, Mohammad Amin Alipour, Darko Marinov
ISSTA3
2013 Taming compiler fuzzers
abstract
Aggressive 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
PLDI3
2012 Swarm testing
abstract
Swarm 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
ISSTA2