Unfortunately, 100% code coverage does not automatically imply good test cases. However, mutation testing allows the quality of test cases to be checked and improved if necessary. This is important for safety-critical software. In mutation testing, a set of passed test cases is re-executed on a mutated test object. Mutating means that the software under test is (subtly) changed. IEC 61508 therefore aptly calls the mutation test "error seeding". If at least one of the tests fails when repeated, then this test case set has uncovered ("killed") the mutation.
If not, this is questionable and needs to be checked. It is possible that there is an equivalent mutation in which the outward behavior of the test subject does not change. This has to be checked by a human; the resulting effort is the problem of the mutation test.
The talk introduces the mutation testing procedure and explains concepts such as strong/weak mutation, coupling effect, the competent programmer hypothesis, mutation testing as distinct from fault injection, adequate test case. Furthermore, questions are discussed such as:
Which mutations are useful, which are rather not?
Why is the problem of mutation testing reduced for safety-critical software?
To what extent can mutation testing be automated?
How can a mutation be killed without a failed test case?
Please note, the lecture will be held in German.