The system should also correct itself by applying learned
rules on test input data that are selected using these rules and
verifying that these test data lead to predicted performance
results, thereby increasing the probability that the learned
rules express genuine causation between input values and
performance-related workloads rather than simply correlating
them.
Finally, no performance testing is complete without providing
sufficient clues to performance engineers where in the
AUT problems can lurk. A main objective of performance
analysis is to find bottlenecks – a single method that drags down the performance of the entire application is easy to
detect using profilers; however, it is a difficult problem to
find bottlenecks when there are hundreds of methods whose
elapsed execution times are approximately the same, which
often is the case in large-scale applications [11], [12]. A
problem that we solve in this paper is that once the input
space is clustered into good and bad performance test cases
using learned rules, we want to find methods that are specific
to good performance test cases and that are most likely to
contribute to bottlenecks.