• Publications
  • Influence
CUTE: a concolic unit testing engine for C
A method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graphs as inputs is developed and an efficient constraint solver is proposed to facilitate incremental generation of such test inputs. Expand
DART: Directed Automated Random Testing
  • Koushik Sen
  • Computer Science
  • Haifa Verification Conference
  • 19 October 2009
Direct automated random testing is described, an efficient approach which combines random and symbolic testing, and several heuristic search strategies are presented, including a novel strategy guided by the control flow graph of the program under test. Expand
DART: directed automated random testing
DART is a new tool for automatically testing software that combines three main techniques, automated extraction of the interface of a program with its external environment using static source-code parsing, and dynamic analysis of how the program behaves under random testing and automatic generation of new test inputs to direct systematically the execution along alternative program paths. Expand
Heuristics for Scalable Dynamic Test Generation
Several heuristic search strategies are presented, including a novel strategy guided by the control flow graph of the program under test, which achieves significantly greater branch coverage on the same testing budget than concolic testing with a traditional depth-first search strategy. Expand
Race directed random testing of concurrent programs
A novel randomized dynamic analysis technique that utilizes potential data race information obtained from an existing analysis tool to separate real races from false races without any need for manual inspection is proposed. Expand
Jalangi: a selective record-replay and dynamic analysis framework for JavaScript
This paper presents a simple yet powerful framework, called Jalangi, for writing heavy-weight dynamic analyses, which incorporates two key techniques: selective record-replay, a technique which enables to record and to faithfully replay a user-selected part of the program, and shadow values and shadow execution, which enables easy implementation of heavy- Weight dynamic analyses. Expand
Statistical Model Checking of Black-Box Probabilistic Systems
The authors' algorithm checks, based on statistical hypothesis testing, whether the sample provides evidence to conclude the satisfaction or violation of a property, and computes a quantitative measure (p-value of the tests) of confidence in its answer, and may, at least in some cases, be faster than previous analysis methods. Expand
Guided GUI testing of android apps with minimal restart and approximate learning
This paper proposes an automated technique, called Swift-Hand, for generating sequences of test inputs for Android apps, which uses machine learning to learn a model of the app during testing, uses the learned model to generate user inputs that visit unexplored states of theapp, and uses the execution of the application on the generated inputs to refine the model. Expand
A view of the parallel computing landscape
Writing programs that scale with increasing numbers of cores should be as easy as writing programs for sequential computers.
Symbolic execution for software testing: three decades later
The challenges---and great promise---of modern symbolic execution techniques, and the tools to help implement them.