Mohammad Amin Alipour

Learn More
Debugging programs is a complicated and cumbersome task. It is an iterative process which includes hypothesizing the cause of a failure and validating the hypothesis. Since programs comprise of many components with complex interactions this chain often involves several trials. Fault localization (FL) is the task of identifying components that are likely to(More)
Reducing the size of tests, typically by delta debugging or a related algorithm, is a critical component of effective automated testing and debugging. Automatically generated or user-submitted tests are often far longer than required, full of unnecessary components that make debugging difficult. Test reduction algorithms automatically remove components of(More)
Though mutation analysis is the primary means of evaluating the quality of test suites, it suffers from inadequate standardization. Mutation analysis tools vary based on language, when mutants are generated (phase of compilation), and target audience. Mutation tools rarely implement the complete set of operators proposed in the literature and mostly(More)
— Mutation testing has been widely studied in imperative programming languages. The rising popularity of functional languages and the adoption of functional idioms in traditional languages (e.g. lambda expressions) requires a new set of studies for evaluating the effectiveness of mutation testing in a functional context. In this paper, we report our ongoing(More)
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(More)
Correcting concurrency failures (e.g., data races and deadlocks/livelocks) is a difficult task in part due to the non-deterministic nature of multithreaded programs, and the fact that a correction often involves multiple threads. As such, manually fixing a failure often results in introducing new flaws, which in turn requires a regression verification step(More)
In this paper we propose a three-step aspect-oriented method to contribute the automatic runtime analysis of requirements. In the first step the property of interest is encapsulated by some aspects and for each aspect a verifier rule as ECA rule is presented. Then, in second step, for each aspect, the corresponding crosscut points of program is considered(More)
  • 1