SWE 437 Homeworks 12, 13
Spring 2017
Mutation Analysis


For homeworks 12 and 13, you have a choice: Pick 2 of the following 3 options:

Option 1

I presented some slides on mutation of the cal() program earlier in the semester. According to the slides, only 10 mutants are needed (from the muJava set).

Assignment: Pick 10 mutants (of any flavor), develop JUnit tests to kill them, and make a case for how good you think they are. The deliverable is three things:

Bonus on Option 1 (2 points): Generate a dynamic subsumption graph for your mutants and your test set. To do this, you need a matrix of which tests kill which mutants. Dynamic subsumption is defined as implication with respect to this matrix: If every test that kills mutant 1 also kills mutant 2, then mutant 1 subsumes mutant 2. Visually, the dynamic subsumption graph is a drawing of the transitive reduction of this relation.

Option 2

PIT mutation
Consider the PIT mutation tool. Apply PIT to the cal() program, and generate tests to kill the PIT mutants.

Turn in a suitable report documenting your activities.

Bonus on Option 2 (2 points): Generate a dynamic subsumption graph for the PIT mutants and your test set. For credit, your analysis needs to be specific and correct.

Option 3

Major mutation
Repeat the PIT exercise, except with the Major tool.

Bonus on Option 3 (2 points): Same as Option 2, except use the Major mutants.