EDBT 2026 Demo / reviewers in the wild / expert
Farah Hariri
dblp:153/5340
· DBLP profile ↗
9ranked-venue papers
4as first author
0since 2021 · last 2019
0000-0001-8486-7151ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 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
4 papers |
Software testing · 77% Debugging and program repair · 8% Empirical software engineering · 8% |
Topics — the 10 heaviest of 11, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
regression testing |
0.4 | 2 | 2016 | An extensive study of static regression test selection in modern software evolution · SIGSOFT FSE 2016 An empirical analysis of flaky tests · SIGSOFT FSE 2014 |
Software testing
mutation testing |
0.3 | 1 | 2018 | SRCIROR: a toolset for mutation testing of C source code and LLVM intermediate representation · ASE 2018 |
Software testing › regression testing
regression test selection |
0.2 | 1 | 2016 | An extensive study of static regression test selection in modern software evolution · SIGSOFT FSE 2016 |
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 |
Software testing
flaky test |
0.2 | 1 | 2014 | An empirical analysis of flaky tests · SIGSOFT FSE 2014 |
Empirical software engineering
mining software repositories |
0.2 | 1 | 2014 | An empirical analysis of flaky tests · SIGSOFT FSE 2014 |
Debugging and program repair
root cause analysis |
0.2 | 1 | 2014 | An empirical analysis of flaky tests · SIGSOFT FSE 2014 |
Compilers and program optimization
intermediate representation |
0.1 | 1 | 2018 | SRCIROR: a toolset for mutation testing of C source code and LLVM intermediate representation · ASE 2018 |
Software maintenance and evolution
software evolution |
0.1 | 1 | 2016 | An extensive study of static regression test selection in modern software evolution · SIGSOFT FSE 2016 |
Methods — techniques the papers use, named apart from their topics
mutation operators · 0.3heap access path analysis · 0.2dynamic analysis · 0.2empirical study · 0.2commit analysis · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Comparing Mutation Testing at the Levels of Source Code and Compiler Intermediate RepresentationabstractMutation testing is widely used in research for evaluating the effectiveness of test suites. There are multiple mutation tools that perform mutation at different levels, including traditional mutation testing at the level of source code (SRC) and more recent mutation testing at the level of compiler intermediate representation (IR). This paper presents an extensive comparison of mutation testing at the SRC and IR levels, specifically at the C programming language and the LLVM compiler IR levels. We use a mutation testing tool called SRCIROR that implements conceptually the same mutation operators at both levels. We also employ automated techniques to account for equivalent and duplicated mutants, and to determine minimal and surface mutants. We carry out our study on 15 programs from the Coreutils library. Overall, we find mutation testing to be better at the SRC level: the SRC level produces much fewer mutants and is thus less expensive, but the SRC level still generates a similar number of minimal and surface mutants, and the mutation scores at both levels are very closely correlated. We also perform a case study on the Space program to evaluate which level's mutation score correlates better with the actual fault-detection capability of test suites sampled from Space's test pool. We find the mutation score at both levels to not be very correlated with the actual fault-detection capability of test suites. Farah Hariri, August Shi, Vimuth Fernando, Suleman Mahmood, Darko Marinov |
ICST | 1 |
| 2018 | Targeted Test Generation for Actor SystemsabstractThis paper addresses the problem of targeted test generation for actor systems. Specifically, we propose a method to support generation of system-level tests to cover a given code location in an actor system. The test generation method consists of two phases. First, static analysis is used to construct an abstraction of an entire actor system in terms of a message flow graph (MFG). An MFG captures potential actor interactions that are defined in a program. Second, a backwards symbolic execution (BSE) from a target location to an "entry point" of the actor system is performed. BSE uses the MFG constructed in the first phase of our targeted test generation method to guide execution across actors. Because concurrency leads to a huge search space which can potentially be explored through BSE, we prune the search space by using two heuristics combined with a feedback-directed technique. We implement our method in Tap, a tool for Java Akka programs, and evaluate Tap on the Savina benchmarks as well as four open source projects. Our evaluation shows that the Tap achieves a relatively high target coverage (78% on 1,000 targets) and detects six previously unreported bugs in the subjects. Farah Hariri, Gul A. Agha |
ECOOP | 2 |
| 2018 | Approximate Transformations as Mutation Operators
Farah Hariri, August Shi, Owolabi Legunsen, Milos Gligoric 0001, Sarfraz Khurshid, Sasa Misailovic |
ICST | 1 |
| 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 | 3 |
| 2018 | SRCIROR: a toolset for mutation testing of C source code and LLVM intermediate representationabstractWe present SRCIROR (pronounced “sorcerer“), a toolset for performing mutation testing at the levels of C/C++ source code (SRC) and the LLVM compiler intermediate representation (IR). At the SRC level, SRCIROR identifies program constructs for mutation by pattern-matching on the Clang AST. At the IR level, SRCIROR directly mutates the LLVM IR instructions through LLVM passes. Our implementation enables SRCIROR to (1) handle any program that Clang can handle, extending to large programs with a minimal overhead, and (2) have a small percentage of invalid mutants that do not compile. SRCIROR enables performing mutation testing using the same classes of mutation operators at both the SRC and IR levels, and it is easily extensible to support more operators. In addition, SRCIROR can collect coverage to generate mutants only for covered code elements. Our tool is publicly available on GitHub (https://github.com/TestingResearchIllinois/srciror). We evaluate SRCIROR on Coreutils subjects. Our evaluation shows interesting differences between SRC and IR, demonstrating the value of SRCIROR in enabling mutation testing research across different levels of code representation. Farah Hariri, August Shi |
ASE | 1 |
| 2016 | Evaluating the Effects of Compiler Optimizations on Mutation Testing at the Compiler IR LevelabstractSoftware testing is one of the most widely used approaches for improving software reliability. The effectiveness of testing depends to a large extent on the quality of test suites. Researchers have developed various techniques to evaluate the quality of test suites. Of these techniques, mutation testing is generally considered to be the most advanced but also expensive. A key result of applying mutation testing to a given test suite is the mutation score representing the percentage of mutants killed by the test suite. Ideally the mutation score is computed ignoring the mutants that are semantically equivalent to the original code under test or to one another. In this paper, we investigate a new perspective on mutation testing: evaluating how standard compiler optimizations affect the cost and results of mutation testing performed at the compiler intermediate representation. Our study targets LLVM, a popular compiler infrastructure that supports multiple source and target languages. Our evaluation on 18 Coreutils programs discovers several interesting relations between the numbers of mutants (including the numbers on equivalent and duplicated mutants) and mutation scores on unoptimized and optimized programs. Farah Hariri, August Shi, Hayes Converse, Sarfraz Khurshid, Darko Marinov |
ISSRE | 1 |
| 2016 | An extensive study of static regression test selection in modern software evolutionabstractRegression test selection (RTS) aims to reduce regression testing time by only re-running the tests affected by code changes. Prior research on RTS can be broadly split into dy namic and static techniques. A recently developed dynamic RTS technique called Ekstazi is gaining some adoption in practice, and its evaluation shows that selecting tests at a coarser, class-level granularity provides better results than selecting tests at a finer, method-level granularity. As dynamic RTS is gaining adoption, it is timely to also evaluate static RTS techniques, some of which were proposed over three decades ago but not extensively evaluated on modern software projects. Owolabi Legunsen, Farah Hariri, August Shi, Yafeng Lu, Lingming Zhang 0001, Darko Marinov |
SIGSOFT FSE | 2 |
| 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 | 3 |
| 2014 | An empirical analysis of flaky testsabstractRegression 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 FSE | 2 |