A mutation testing tool takes as input a system under test and a test suite and produces as output the mutation score of the test suite. The tool systematically creates mutants by making small syntactic changes to the system under test and executes the test suite to determine which mutants give different results from the original system. Almost all mutation testing tools have been developed for statically typed languages. The lack of tools for dynamically typed languages may be rooted in additional challenges that are caused by the lack of precise type information until the program is executed. Existing tools for dynamically typed languages mostly focus on mutation of literals because the type of literals are known statically.
This paper presents SMutant, the first mutation testing tool for Smalltalk programs. In addition to literal replacement, SMutant supports many mutation operators that are commonly seen in tools for statically typed languages, such as operator replacement. Instead of applying mutations statically, SMutant postpones mutating until execution and applies mutations dynamically, when the types are available. Also, SMutant enables the user to define new mutation operators by sending a single message. The tool automatically generates code to support new mutation operators.
[1]
Darko Marinov,et al.
Automatic testing of software with structurally complex inputs
,
2005
.
[2]
Richard J. Lipton,et al.
Hints on Test Data Selection: Help for the Practicing Programmer
,
1978,
Computer.
[3]
Richard G. Hamlet,et al.
Testing Programs with the Aid of a Compiler
,
1977,
IEEE Transactions on Software Engineering.
[4]
Luciano Baresi,et al.
An Introduction to Software Testing
,
2006,
FoVMT.
[5]
Mark Harman,et al.
An Analysis and Survey of the Development of Mutation Testing
,
2011,
IEEE Transactions on Software Engineering.
[6]
S. Inglis,et al.
Jumble Java Byte Code to Measure the Effectiveness of Unit Tests
,
2007,
Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007).
[7]
Leonardo Bottaci.
Type Sensitive Application of Mutation Operators for Dynamically Typed Programs
,
2010,
2010 Third International Conference on Software Testing, Verification, and Validation Workshops.