Test case generation

I'm currently working on the co-evolutionary test case generation...

Higher Order Mutation Testing

Highter Order Mutation Testing is a comparatively new form of Mutation Testing. The underlying motivation was to seek to find those rare but valuable higher order mutants that denote subtle faults. In traditional Mutation Testing, mutants can be classified into first order mutants (FOM) and higher order mutant(HOM). FOMs are created by applying mutation operator only once. HOM are generated by applying mutation operators more than once.

In this work, the concept of subsuming HOMs is introduced. A subsuming HOM is harder to kill than the FOMs from which it is constructed. As a result, it may be preferable to replace FOMs with the single HOM to reduce the number of the mutants. In particular, they also introduced the concept of a strongly subsuming HOM (SSHOM) which is only killed by a subset of the intersection of test cases that kill each FOM from which it is constructed.

Mutation Testing has been widely studied for over three decades. The literature on Mutation Testing has contributed a set of approaches, tools, developments and empirical results which have not been surveyed in detail until now. A comprehensive analysis and survey of Mutation Testing work has been conducted. The paper presents the results of several development trend analyses. These analyses provide evidence that mutation testing techniques and tools are reaching a state of maturity and applicability, while the topic of mutation testing itself is the subject of increasing interest. This paper is currently published as a technical report, available from here.

Clone Detection

A software clone is a code fragment identical or nearly identical to another fragment in the same system. Cloned code may increase comprehension cost, resource requirements, and reduce maintainability, so it is important to have precise and efficient clone identification algorithms. Previous work has resulted in a choice of either fast, scalable but imprecise algorithms or slower, less scalable, but more precise algorithms, leaving the software engineer with a speed--precision trade off.

I had worked on this problem during my Master and proposed an approach to achieve precision without loss of speed. This approach is capable of detecting all three types of clone studied in the literature. The novel aspect of the approach is the exploitation of both textual and dependence information. The key benefit of this combination is an improvement in both precision and performance.