VLDB 2026 Research / reviewers in the wild / expert
Alex Gyori
dblp:129/8214
· DBLP profile ↗
12ranked-venue papers
6as first author
0since 2021 · last 2018
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 12 · 6 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
8 papers |
Software testing · 56% Software maintenance and evolution · 19% Program analysis · 10% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Cloud and datacenter computing · 50% Distributed systems · 50% |
Topics — the 20 heaviest of 21, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
regression testing |
0.7 | 3 | 2018 | Evaluating test-suite reduction in real software evolution · ISSTA 2018 Comparing and combining test-suite reduction and regression test selection · ESEC/SIGSOFT FSE 2015 Balancing trade-offs in test-suite reduction · SIGSOFT FSE 2014 |
Software testing › regression testing
test suite reduction |
0.7 | 3 | 2018 | Evaluating test-suite reduction in real software evolution · ISSTA 2018 Comparing and combining test-suite reduction and regression test selection · ESEC/SIGSOFT FSE 2015 Balancing trade-offs in test-suite reduction · SIGSOFT FSE 2014 |
Software maintenance and evolution › refactoring
automated refactoring |
0.3 | 2 | 2013 | Crossing the gap from imperative to functional programming through refactoring · ESEC/SIGSOFT FSE 2013 LAMBDAFICATOR: from imperative to functional programming through automated refactoring · ICSE 2013 |
Programming languages and type systems
functional programming |
0.3 | 2 | 2013 | Crossing the gap from imperative to functional programming through refactoring · ESEC/SIGSOFT FSE 2013 LAMBDAFICATOR: from imperative to functional programming through automated refactoring · ICSE 2013 |
Software maintenance and evolution
refactoring |
0.3 | 2 | 2013 | Crossing the gap from imperative to functional programming through refactoring · ESEC/SIGSOFT FSE 2013 LAMBDAFICATOR: from imperative to functional programming through automated refactoring · ICSE 2013 |
Software testing › test suite evaluation
test effectiveness evaluation |
0.3 | 1 | 2018 | Evaluating test-suite reduction in real software evolution · ISSTA 2018 |
Cloud and datacenter computing › datacenter operations
datacenter reliability |
0.3 | 1 | 2018 | Maelstrom: Mitigating Datacenter-level Disasters by Draining Interdependent Traffic Safely and Efficiently · OSDI 2018 |
Distributed systems
fault tolerance |
0.3 | 1 | 2018 | Maelstrom: Mitigating Datacenter-level Disasters by Draining Interdependent Traffic Safely and Efficiently · OSDI 2018 |
Software maintenance and evolution
change impact analysis |
0.3 | 1 | 2017 | Refining interprocedural change-impact analysis using equivalence relations · ISSTA 2017 |
Program analysis › static analysis
interprocedural analysis |
0.3 | 1 | 2017 | Refining interprocedural change-impact analysis using equivalence relations · ISSTA 2017 |
Program analysis
static analysis |
0.3 | 1 | 2017 | Refining interprocedural change-impact analysis using equivalence relations · ISSTA 2017 |
Debugging and program repair
fault localization |
0.2 | 1 | 2016 | NonDex: a tool for detecting and debugging wrong assumptions on Java API specifications · SIGSOFT FSE 2016 |
Software testing
test execution |
0.2 | 1 | 2016 | NonDex: a tool for detecting and debugging wrong assumptions on Java API specifications · SIGSOFT FSE 2016 |
Software testing › regression testing
regression test selection |
0.2 | 1 | 2015 | Comparing and combining test-suite reduction and regression test selection · ESEC/SIGSOFT FSE 2015 |
Software testing
test dependency detection |
0.2 | 1 | 2015 | Reliable testing: detecting state-polluting tests to prevent test dependency · ISSTA 2015 |
Software testing › flaky test
test reliability |
0.2 | 1 | 2015 | Reliable testing: detecting state-polluting tests to prevent test dependency · ISSTA 2015 |
Programming languages and type systems
lambda expressions |
0.2 | 1 | 2013 | LAMBDAFICATOR: from imperative to functional programming through automated refactoring · ICSE 2013 |
Software maintenance and evolution
software evolution |
0.1 | 1 | 2018 | Evaluating test-suite reduction in real software evolution · ISSTA 2018 |
Software testing
mutation testing |
0.1 | 1 | 2014 | Balancing trade-offs in test-suite reduction · SIGSOFT FSE 2014 |
Compilers and program optimization
program transformation |
0.0 | 1 | 2013 | LAMBDAFICATOR: from imperative to functional programming through automated refactoring · ICSE 2013 |
Methods — techniques the papers use, named apart from their topics
fault seeding · 0.3empirical study · 0.3program dependence analysis · 0.3equivalence relations · 0.3test execution · 0.2random exploration · 0.2heap access path analysis · 0.2empirical comparison · 0.2dynamic analysis · 0.2empirical evaluation · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2018 | Evaluating Regression Test Selection Opportunities in a Very Large Open-Source EcosystemabstractRegression testing in very large software ecosystems is notoriously costly, requiring computational resources that even large corporations struggle to cope with. Very large ecosystems contain thousands of rapidly evolving, interconnected projects where client projects transitively depend on library projects. Regression test selection (RTS) reduces regression testing costs by rerunning only tests whose pass/fail behavior may flip after code changes. For single projects, researchers showed that class-level RTS is more effective than lower method-or statement-level RTS. Meanwhile, several very large ecosystems in industry, e.g., at Facebook, Google, and Microsoft, perform project-level RTS, rerunning tests in a changed library and in all its transitive clients. However, there was no previous study of the comparative benefits of class-level and project-level RTS in such ecosystems. We evaluate RTS opportunities in the MAVEN Central open-source ecosystem. There, some popular libraries have up to 924589 clients; in turn, clients can depend on up to 11190 libraries. We sampled 408 popular projects and found that 202 (almost half) cannot update to latest library versions without breaking compilation or tests. If developers want to detect these breakages earlier, they need to run very many tests. We compared four variants of class-level RTS with project-level RTS in MAVEN Central. The results showed that class-level RTS may be an order of magnitude less costly than project-level RTS in very large ecosystems. Specifically, various class-level RTS variants select, on average, 7.8%-17.4% of tests selected by project-level RTS. Alex Gyori, Owolabi Legunsen, Farah Hariri, Darko Marinov |
ISSRE | 1 |
| 2018 | Evaluating test-suite reduction in real software evolutionabstractTest-suite reduction (TSR) speeds up regression testing by removing redundant tests from the test suite, thus running fewer tests in the future builds. To decide whether to use TSR or not, a developer needs some way to predict how well the reduced test suite will detect real faults in the future compared to the original test suite. Prior research evaluated the cost of TSR using only program versions with seeded faults, but such evaluations do not explicitly predict the effectiveness of the reduced test suite in future builds. August Shi, Alex Gyori, Suleman Mahmood, Peiyuan Zhao, Darko Marinov |
ISSTA | 2 |
| 2018 | Maelstrom: Mitigating Datacenter-level Disasters by Draining Interdependent Traffic Safely and Efficiently
Kaushik Veeraraghavan, Justin Meza, Scott Michelson, Sankaralingam Panneerselvam, Alex Gyori, Sonia Margulis, Daniel Obenshain, Shruti Padmanabha, Ashish Shah, Yee Jiun Song, Tianyin Xu |
OSDI | 5 |
| 2017 | Efficient Incrementalized Runtime Checking of Linear Measures on ListsabstractWe present mechanisms to specify and efficiently check, at runtime, assertions that express structural properties and aggregate measures of dynamically manipulated linkedlist data structures. Checking assertions involving the structure, disjointness, and aggregation measures on lists and list segments typically requires linear or quadratic time in the size of the heap. Our main contribution is an incrementalization instrumentation that tracks properties of data structures dynamically as the program executes and leads to orders of magnitude speedup in assertion checking in many scenarios. Our incrementalization incurs a constant overhead on updates to list structures but enables checking assertions in constant time, independent of the size of the heap. We define a general class of functions on lists, called linear measures, which are amenable to our incrementalization technique. We demonstrate the effectiveness of our technique by showing orders of magnitude speedup in two scenarios: one scenario stemming from assertions at the level of APIs of list-manipulating libraries and the other scenario stemming from providing dynamic detection of security attacks caused by malicious rootkits. Alex Gyori, Pranav Garg 0001, Edgar Pek, P. Madhusudan |
ICST | 1 |
| 2017 | Refining interprocedural change-impact analysis using equivalence relationsabstractChange-impact analysis (CIA) is the task of determining the set of program elements impacted by a program change. Precise CIA has great potential to avoid expensive testing and code reviews for (parts of) changes that are refactorings (semantics-preserving). However most statement-level CIA techniques suffer from imprecision as they do not incorporate the semantics of the change. Alex Gyori, Shuvendu K. Lahiri, Nimrod Partush |
ISSTA | 1 |
| 2016 | Detecting Assumptions on Deterministic Implementations of Non-deterministic SpecificationsabstractSome commonly used methods have nondeterministicspecifications, e.g., iterating through a set canreturn the elements in any order. However, non-deterministicspecifications typically have deterministic implementations, e.g.,iterating through two sets constructed in the same way mayreturn their elements in the same order. We use the termADINS code to refer to code that Assumes a DeterministicImplementation of a method with a Non-deterministic Specification. Such ADINS code can behave unexpectedly whenthe implementation changes, even if the specification remainsthe same. Further, ADINS code can lead to flaky tests -- teststhat pass or fail seemingly non-deterministically. We present a simple technique, called NONDEX, for detectingflaky tests due to ADINS code. We implemented NONDEX forJava: we found 31 methods with non-deterministic specificationsin the Java Standard Library, manually built non-deterministicmodels for these methods, and used a modified Java VirtualMachine to explore various non-deterministic choices. We evaluatedNONDEX on 195 open-source projects from GitHub and 72student submissions from a programming homework assignment.NONDEX detected 60 flaky tests in 21 open-source projects and110 flaky tests in 34 student submissions. August Shi, Alex Gyori, Owolabi Legunsen, Darko Marinov |
ICST | 2 |
| 2016 | NonDex: a tool for detecting and debugging wrong assumptions on Java API specificationsabstractWe present NonDex, a tool for detecting and debugging wrong assumptions on Java APIs. Some APIs have underdetermined specifications to allow implementations to achieve different goals, e.g., to optimize performance. When clients of such APIs assume stronger-than-specified guarantees, the resulting client code can fail. For example, HashSet’s iteration order is underdetermined, and code assuming some implementation-specific iteration order can fail. NonDex helps to proactively detect and debug such wrong assumptions. NonDex performs detection by randomly exploring different behaviors of underdetermined APIs during test execution. When a test fails during exploration, NonDex searches for the invocation instance of the API that caused the failure. NonDex is open source, well-integrated with Maven, and also runs from the command line. During our experiments with the NonDex Maven plugin, we detected 21 new bugs in eight Java projects from GitHub, and, using the debugging feature of NonDex, we identified the underlying wrong assumptions for these 21 new bugs and 54 previously detected bugs. We opened 13 pull requests; developers already accepted 12, and one project changed the continuous-integration configuration to run NonDex on every push. The demo video is at: https://youtu.be/h3a9ONkC59c Alex Gyori, Ben Lambeth, August Shi, Owolabi Legunsen, Darko Marinov |
SIGSOFT FSE | 1 |
| 2015 | Reliable testing: detecting state-polluting tests to prevent test dependencyabstractWriting reliable test suites for large object-oriented systems is complex and time consuming. One common cause of unreliable test suites are test dependencies that can cause tests to fail unexpectedly, not exposing bugs in the code under test but in the test code itself. Prior research has shown that the main reason for test dependencies is the ``pollution'' of state shared across tests. We propose a technique, called , for finding tests that pollute the shared state. In a nutshell, finds tests that modify some location on the heap shared across tests or on the file system; a subsequent test could fail if it assumes the shared location to have the initial value before the state was modified. To aid in inspecting the pollutions, provides an access path through the heap that leads to the polluted value or the name of the file that was modified. We implemented a prototype tool for Java and evaluated it on NumOfProjects projects, with a total of NumOfTests tests. Diaper reported PollutingTests , and our inspection found that NumOfTPsSpace of those are relevant pollutions that can easily affect other tests. Alex Gyori, August Shi, Farah Hariri, Darko Marinov |
ISSTA | 1 |
| 2015 | Comparing and combining test-suite reduction and regression test selectionabstractRegression testing is widely used to check that changes made to software do not break existing functionality, but regression test suites grow, and running them fully can become costly. Researchers have proposed test-suite reduction and regression test selection as two approaches to reduce this cost by not running some of the tests from the test suite. However, previous research has not empirically evaluated how the two approaches compare to each other, and how well a combination of these approaches performs. We present the first extensive study that compares test-suite reduction and regression test selection approaches individually, and also evaluates a combination of the two approaches. We also propose a new criterion to measure the quality of tests with respect to software changes. Our experiments on 4,793 commits from 17 open-source projects show that regression test selection runs on average fewer tests (by 40.15pp) than test-suite reduction. However, test-suite reduction can have a high loss in fault-detection capability with respect to the changes, whereas a (safe) regression test selection has no loss. The experiments also show that a combination of the two approaches runs even fewer tests (on average 5.34pp) than regression test selection, but these tests still have a loss in fault-detection capability with respect to the changes. August Shi, Tifany Yung, Alex Gyori, Darko Marinov |
ESEC/SIGSOFT FSE | 3 |
| 2014 | Balancing trade-offs in test-suite reductionabstractRegression testing is an important activity but can get expensive for large test suites. Test-suite reduction speeds up regression testing by identifying and removing redundant tests based on a given set of requirements. Traditional research on test-suite reduction is rather diverse but most commonly shares three properties: (1) requirements are defined by a coverage criterion such as statement coverage; (2) the reduced test suite has to satisfy all the requirements as the original test suite; and (3) the quality of the reduced test suites is measured on the software version on which the reduction is performed. These properties make it hard for test engineers to decide how to use reduced test suites. We address all three properties of traditional test-suite reduction: (1) we evaluate test-suite reduction with requirements defined by killed mutants; (2) we evaluate inadequate reduction that does not require reduced test suites to satisfy all the requirements; and (3) we propose evolution-aware metrics that evaluate the quality of the reduced test suites across multiple software versions. Our evaluations allow a more thorough exploration of trade-offs in test-suite reduction, and our evolution-aware metrics show how the quality of reduced test suites can change after the version where the reduction is performed. We compare the trade-offs among various reductions on 18 projects with a total of 261,235 tests over 3,590 commits and a cumulative history spanning 35 years of development. Our results help test engineers make a more informed decision about balancing size, coverage, and fault-detection loss of reduced test suites. August Shi, Alex Gyori, Milos Gligoric 0001, Andrey Zaytsev, Darko Marinov |
SIGSOFT FSE | 2 |
| 2013 | LAMBDAFICATOR: from imperative to functional programming through automated refactoringabstractJava 8 introduces two functional features: lambda expressions and functional operations like map or filter that apply a lambda expression over the elements of a Collection. Refactoring existing code to use these new features enables explicit but unobtrusive parallelism and makes the code more succinct. However, refactoring is tedious (it requires changing many lines of code) and error-prone (the programmer must reason about the control-flow, data-flow, and side-effects). Fortunately, these refactorings can be automated. We present LambdaFicator, a tool which automates two refactorings. The first refactoring converts anonymous inner classes to lambda expressions. The second refactoring converts for loops that iterate over Collections to functional operations that use lambda expressions. In 9 open-source projects we have applied these two refactorings 1263 and 1595 times, respectively. The results show that LambdaFicator is useful. A video highlighting the main features can be found at: http://www.youtube.com/watch?v=EIyAflgHVpU. Lyle Franklin, Alex Gyori, Jan Lahoda, Danny Dig |
ICSE | 2 |
| 2013 | Crossing the gap from imperative to functional programming through refactoringabstractJava 8 introduces two functional features: lambda expressions and functional operations like map or filter that apply a lambda expression over the elements of a Collection. Refactoring existing code to use these new features enables explicit but unobtrusive parallelism and makes the code more succinct. However, refactoring is tedious: it requires changing many lines of code. It is also error-prone: the programmer must reason about the control-, data-flow, and side-effects. Fortunately, refactorings can be automated. We designed and implemented LambdaFicator, a tool which automates two refactorings. The first refactoring converts anonymous inner classes to lambda expressions. The second refactoring converts for loops that iterate over Collections to functional operations that use lambda expressions. Using 9 open-source projects, we have applied these two refactorings 1263 and 1709 times, respectively. The results show that LambdaFicator is useful: (i) it is widely applicable, (ii) it reduces the code bloat, (iii) it increases programmer productivity, and (iv) it is accurate. Alex Gyori, Lyle Franklin, Danny Dig, Jan Lahoda |
ESEC/SIGSOFT FSE | 1 |