How Do Static and Dynamic Test Case Prioritization Techniques Perform on Modern Software Systems? An Extensive Study on GitHub Projects
Qi Luo, Kevin Moran, Lingming Zhang, Denys Poshyvanyk

TL;DR
This extensive empirical study compares static and dynamic test case prioritization techniques on real-world GitHub Java projects, revealing insights into their effectiveness, correlations at different granularities, and impact of program size and evolution.
Contribution
It provides the first comprehensive empirical evaluation of static versus dynamic TCP techniques across multiple quality metrics on large, real-world software projects.
Findings
Static techniques can be surprisingly effective, especially with APFDc.
TCP performance improves with larger programs.
Program evolution and mutant types have limited impact on effectiveness.
Abstract
Test Case Prioritization (TCP) is an increasingly important regression testing technique for reordering test cases according to a pre-defined goal, particularly as agile practices gain adoption. To better understand these techniques, we perform the first extensive study aimed at empirically evaluating four static TCP techniques, comparing them with state-of-research dynamic TCP techniques across several quality metrics. This study was performed on 58 real-word Java programs encompassing 714 KLoC and results in several notable observations. First, our results across two effectiveness metrics (the Average Percentage of Faults Detected APFD and the cost cognizant APFDc) illustrate that at test-class granularity, these metrics tend to correlate, but this correlation does not hold at test-method granularity. Second, our analysis shows that static techniques can be surprisingly effective,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
