  Mutation analysis can provide valuable insights into both System Under Test
(SUT) and its test suite. However, it is not scalable due to the cost of
building and testing a large number of mutants. Predictive Mutation Testing
(PMT) has been proposed to reduce the cost of mutation testing, but it can only
provide statistical inference about whether a mutant will be killed or not by
the entire test suite. We propose Seshat, a Predictive Mutation Analysis (PMA)
technique that can accurately predict the entire kill matrix, not just the
mutation score of the given test suite. Seshat exploits the natural language
channel in code, and learns the relationship between the syntactic and semantic
concepts of each test case and the mutants it can kill, from a given kill
matrix. The learnt model can later be used to predict the kill matrices for
subsequent versions of the program, even after both the source and test code
have changed significantly. Empirical evaluation using the programs in the
Defects4J shows that Seshat can predict kill matrices with the average F-score
of 0.83 for versions that are up to years apart. This is an improvement of
F-score by 0.14 and 0.45 point over the state-of-the-art predictive mutation
testing technique, and a simple coverage based heuristic, respectively. Seshat
also performs as well as PMT for the prediction of mutation scores only. Once
Seshat trains its model using a concrete mutation analysis, the subsequent
predictions made by Seshat are on average 39 times faster than actual
test-based analysis.
