Last updated on Monday, October 06, 2025
@article{Abdi2022EMSE,
author = {Mehrdad Abdi and Henrique Rocha and Serge Demeyer and
Alexandre Bergel},
journal = {Empirical Software Engineering},
month = jul,
number = {128},
publisher = {Springer},
title = {Small-Amp: Test amplification in a dynamically typed
language},
volume = {27},
year = {2022},
abstract = {Some test amplification tools extend a manually
created test suite with additional test cases to
increase the code coverage. The technique is
effective, in the sense that it suggests strong and
understandable test cases, generally adopted by
software engineers. Unfortunately, the current
state-of-the-art for test amplification heavily
relies on program analysis techniques which benefit a
lot from explicit type declarations present in
statically typed languages. In dynamically typed
languages, such type declarations are not available
and as a consequence test amplification has yet to
find its way to programming languages like Smalltalk,
Python, Ruby and Javascript. We propose to exploit
profiling information ---readily obtainable by
executing the associated test suite--- to infer the
necessary type information creating special test
inputs with corresponding assertions. We evaluated
this approach on 52 selected test classes from 13
mature projects in the Pharo ecosystem containing
approximately 400 test methods. We show the
improvement in killing new mutants and mutation
coverage at least in 28 out of 52 test classes
($\approx$53\%). Moreover, these generated tests are
understandable by humans: 8 out of 11 pull-requests
submitted were merged into the main code base
($\approx$72\%). These results are comparable to the
state-of-the-art, hence we conclude that test
amplification is feasible for dynamically typed
languages.},
annote = {internationaljournal},
doi = {10.1007/s10664-022-10169-8},
}