  Executing large test suites is time and resource consuming, sometimes
impossible, and such test suites typically contain many redundant test cases.
Hence, test case minimization is used to remove redundant test cases that are
unlikely to detect new faults. However, most test case (suite) minimization
techniques rely on code coverage (white-box), model-based features, or
requirements specifications, which are not always accessible by test engineers.
Recently, a set of novel techniques was proposed, called FAST-R, relying solely
on test case code for test case minimization, which appeared to be much more
efficient than white-box techniques. However, it achieved a comparable low
fault detection capability for Java projects, making its application
challenging in practice. This paper proposes ATM (AST-based Test case
Minimizer), a similarity-based, search-based test case minimization technique,
taking a specific budget as input, that also relies exclusively on the source
code of test cases but attempts to achieve higher fault detection through
finer-grained similarity analysis and a dedicated search algorithm. ATM
transforms test case code into Abstract Syntax Trees (AST) and relies on four
tree-based similarity measures to apply evolutionary search, specifically
genetic algorithms, to minimize test cases. We evaluated the effectiveness and
efficiency of ATM on a large dataset of 16 Java projects with 661 faulty
versions using three budgets ranging from 25% to 75% of test suites. ATM
achieved significantly higher fault detection rates (0.82 on average), compared
to FAST-R (0.61 on average) and random minimization (0.52 on average), when
running only 50% of the test cases, within practically acceptable time (1.1-4.3
hours, on average), given that minimization is only occasionally applied when
many new test cases are created (major releases). Results achieved for other
budgets were consistent.
