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.

Qingzhou Luo

dblp:17/7915 · DBLP profile ↗
← Back
10ranked-venue papers
4as first author
0since 2021 · last 2015
0009-0000-7567-4040ORCID · corroborated

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

Software engineering, systems software and programming languages · 10 · 4 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 · 42% Concurrent programming · 24% Program verification · 12%

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

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bug detection
0.432015
GPredict: Generic Predictive Concurrency Analysis · ICSE (1) 2015
Change-aware preemption prioritization · ISSTA 2011
Ballerina: Automatic generation and clustering of efficient random unit tests for multithreaded code · ICSE 2012
Software testing
regression testing
0.322014
An empirical analysis of flaky tests · SIGSOFT FSE 2014
Change-aware preemption prioritization · ISSTA 2011
Program analysis › dynamic analysis
predictive trace analysis
0.212015
GPredict: Generic Predictive Concurrency Analysis · ICSE (1) 2015
Software testing
flaky test
0.212014
An empirical analysis of flaky tests · SIGSOFT FSE 2014
Empirical software engineering
mining software repositories
0.212014
An empirical analysis of flaky tests · SIGSOFT FSE 2014
Debugging and program repair
root cause analysis
0.212014
An empirical analysis of flaky tests · SIGSOFT FSE 2014
Software testing › concurrency testing
multithreaded program testing
0.212013
EnforceMOP: a runtime property enforcement system for multithreaded programs · ISSTA 2013
Program verification › dynamic verification › runtime verification
runtime enforcement
0.212013
EnforceMOP: a runtime property enforcement system for multithreaded programs · ISSTA 2013
Program verification › dynamic verification
runtime verification
0.212013
EnforceMOP: a runtime property enforcement system for multithreaded programs · ISSTA 2013
Software testing
test generation
0.112012
Ballerina: Automatic generation and clustering of efficient random unit tests for multithreaded code · ICSE 2012
Concurrent programming
concurrency bugs
0.112011
Improved multithreaded unit testing · SIGSOFT FSE 2011
Software testing › regression testing
test case prioritization
0.112011
Change-aware preemption prioritization · ISSTA 2011
Software testing
unit testing
0.112011
Improved multithreaded unit testing · SIGSOFT FSE 2011
Software testing
concurrency testing
0.012013
EnforceMOP: a runtime property enforcement system for multithreaded programs · ISSTA 2013
Concurrent programming › concurrency bug detection
data race detection
0.012013
EnforceMOP: a runtime property enforcement system for multithreaded programs · ISSTA 2013

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

constraint modeling · 0.2SMT solving · 0.2empirical study · 0.2commit analysis · 0.2synchronization mechanisms · 0.2runtime monitoring · 0.2random test generation · 0.1clustering · 0.1schedule enforcement · 0.1change-aware prioritization · 0.1
YearPublicationVenuePosition
2015 GPredict: Generic Predictive Concurrency Analysis
abstract
Predictive trace analysis (PTA) is an effective approach for detecting subtle bugs in concurrent programs. Existing PTA techniques, however, are typically based on adhoc algorithms tailored to low-level errors such as data races or atomicity violations, and are not applicable to high-level properties such as "a resource must be authenticated before use" and "a collection cannot be modified when being iterated over". In addition, most techniques assume as input a globally ordered trace of events, which is expensive to collect in practice as it requires synchronizing all threads. In this paper, we present GPredict: a new technique that realizes PTA for generic concurrency properties. Moreover, GPredict does not require a global trace but only the local traces of each thread, which incurs much less runtime overhead than existing techniques. Our key idea is to uniformly model violations of concurrency properties and the thread causality as constraints over events. With an existing SMT solver, GPredict is able to precisely predict property violations allowed by the causal model. Through our evaluation using both benchmarks and real world applications, we show that GPredict is effective in expressing and predicting generic property violations. Moreover, it reduces the runtime overhead of existing techniques by 54% on DaCapo benchmarks on average.
Jeff Huang 0001, Qingzhou Luo, Grigore Rosu
ICSE (1)2
2014 ROSRV: Runtime Verification for Robots
Jeff Huang 0001, Cansu Erdogan, Brandon M. Moore, Qingzhou Luo, Aravind Sundaresan, Grigore Rosu
RV5
2014 RV-Monitor: Efficient Parametric Runtime Verification with Simultaneous Properties
Qingzhou Luo, Choonghwan Lee, Dongyun Jin, Patrick O'Neil Meredith, Traian-Florin Serbanuta, Grigore Rosu
RV1
2014 An empirical analysis of flaky tests
abstract
Regression testing is a crucial part of software development. It checks that software changes do not break existing functionality. An important assumption of regression testing is that test outcomes are deterministic: an unmodified test is expected to either always pass or always fail for the same code under test. Unfortunately, in practice, some tests often called flaky tests—have non-deterministic outcomes. Such tests undermine the regression testing as they make it difficult to rely on test results. We present the first extensive study of flaky tests. We study in detail a total of 201 commits that likely fix flaky tests in 51 open-source projects. We classify the most common root causes of flaky tests, identify approaches that could manifest flaky behavior, and describe common strategies that developers use to fix flaky tests. We believe that our insights and implications can help guide future research on the important topic of (avoiding) flaky tests.
Qingzhou Luo, Farah Hariri, Lamyaa Eloussi, Darko Marinov
SIGSOFT FSE1
2013 EnforceMOP: a runtime property enforcement system for multithreaded programs
abstract
Multithreaded programs are hard to develop and test. In order for programs to avoid unexpected concurrent behaviors at runtime, for example data-races, synchronization mechanisms are typically used to enforce a safe subset of thread interleavings. Also, to test multithreaded programs, devel- opers need to enforce the precise thread schedules that they want to test. These tasks are nontrivial and error prone.
Qingzhou Luo, Grigore Rosu
ISSTA1
2013 Efficient mutation testing of multithreaded code
abstract
SUMMARY Mutation testing is a well‐established method for measuring and improving the quality of test suites. A major cost of mutation testing is the time required to execute the test suite on all the mutants. This cost is even greater when the system under test is multithreaded: not only are test cases from the test suite executed on many mutants but also each test case is executed—or more precisely, explored—for multiple possible thread schedules. This paper introduces a general framework for efficient exploration that can reduce the time for mutation testing of multithreaded code. The paper presents five techniques (four optimizations and one heuristic) that are implemented in a tool called MuTMuT within the general framework. Evaluation of MuTMuT on mutation testing of 12 multithreaded programs shows that it can substantially reduce the time required for mutation testing of multithreaded code.Copyright © 2012 John Wiley & Sons, Ltd.
Milos Gligoric 0001, Vilas Jagannath, Qingzhou Luo, Darko Marinov
Softw. Test. Verification Reliab.3
2012 Ballerina: Automatic generation and clustering of efficient random unit tests for multithreaded code
abstract
Testing multithreaded code is hard and expensive. A multithreaded unit test creates two or more threads, each executing one or more methods on shared objects of the class under test. Such unit tests can be generated at random, but basic random generation produces tests that are either slow or do not trigger concurrency bugs. Worse, such tests have many false alarms, which require human effort to filter out. We present Ballerina, a novel technique for automated random generation of efficient multithreaded tests that effectively trigger concurrency bugs. Ballerina makes tests efficient by having only two threads, each executing a single, randomly selected method. Ballerina increases chances that such simple parallel code finds bugs by appending it to more complex, randomly generated sequential code. We also propose a clustering technique to reduce the manual effort in inspecting failures of automatically generated multithreaded tests. We evaluate Ballerina on 14 real-world bugs from six popular codebases: Groovy, JDK, JFreeChart, Apache Log4j, Apache Lucene, and Apache Pool. The experiments show that tests generated by Ballerina find bugs on average 2×-10× faster than basic random generation, and our clustering technique reduces the number of inspected failures on average 4×-8×. Using Ballerina, we found three previously unknown bugs, two of which were already confirmed and fixed.
Adrian Nistor, Qingzhou Luo, Michael Pradel, Thomas R. Gross, Darko Marinov
ICSE2
2011 Change-aware preemption prioritization
abstract
Successful software evolves as developers add more features, respond to requirements changes, and fix faults. Regression testing is widely used for ensuring the validity of evolving software. As regression test suites grow over time, it becomes expensive to execute them. The problem is exacerbated when test suites contain multithreaded tests. These tests are generally long running as they explore many different thread schedules searching for concurrency faults such as dataraces, atomicity violations, and deadlocks. While many techniques have been proposed for regression test prioritization, selection, and minimization for sequential tests, there is not much work for multithreaded code.
Vilas Jagannath, Qingzhou Luo, Darko Marinov
ISSTA2
2011 Improved multithreaded unit testing
abstract
Multithreaded code is notoriously hard to develop and test. A multithreaded test exercises the code under test with two or more threads. Each test execution follows some schedule/interleaving of the multiple threads, and different schedules can give different results. Developers often want to enforce a particular schedule for test execution, and to do so, they use time delays (Thread.sleep in Java). Unfortunately, this approach can produce false positives or negatives, and can result in unnecessarily long testing time.
Vilas Jagannath, Milos Gligoric 0001, Dongyun Jin, Qingzhou Luo, Grigore Rosu, Darko Marinov
SIGSOFT FSE4
2010 A Lightweight and Portable Approach to Making Concurrent Failures Reproducible
Qingzhou Luo, Sai Zhang 0001, Jianjun Zhao 0001
FASE1