Mutation Testing: Object-Oriented Mutation and Testing Tools

Authors

  • Z. Ivanković University of Novi Sad, Technical Faculty “Mihajlo Pupin”, Zrenjanin
  • B. Markoski University of Novi Sad, Technical Faculty “Mihajlo Pupin”, Zrenjanin
  • D. Radosav University of Novi Sad, Technical Faculty “Mihajlo Pupin”, Zrenjanin

DOI:

https://doi.org/10.7251/JIT1102105I

Abstract

Software testing represents activity in detecting software failures. Mutation testing represents a way to test a test. The basic idea of mutation testing is to seed lots of artificial defects into the program, test all defects individually, focus on those mutations that are not detected, and, finally, improve the test suite until it finds all mutations. Mutants can be created by mutating the grammar and then generating strings, or by mutating values during a production. Object-oriented (OO) programming features changed the requirements for mutation testing. Non object-oriented mutation systems make mutations of expressions, variables and statements, but do not mutate type and component declarations. OO programs are composed of user-defined data types (classes) and references to the user-defined types. It is very likely that user-defined components contain many defects such as mutual dependency between members/classes, inconsistencies or conflicts between the components developed by different programmers. Class Mutation is a mutation technique for OO programs which particularly targets plausible faults that are likely to occur due to features in OO programming. Mutation testing requires automated testing tools, which is not a trivial tool to make. Automated mutation tools must be able to parse the program and know its language. When the program is run, mutant can be killed by one of two possible scenarios: if a mutant crashes, or if the mutant goes into an infinite loop.

Published

2011-12-15

Issue

Section

Чланци