Litcius/Paper detail

Learning to rank for test case prioritization

Safa Omri, Carsten Sinz

202219 citationsDOIOpen Access PDF

Abstract

In Continuous Integration (CI) environments, the productivity of software engineers depends strongly on the ability to reduce the round-trip time between code commits and feedback on failed test cases. Test case prioritization is popularly used as an optimization mechanism for ranking tests by their likelihood in revealing failures. However, existing techniques are usually time and resource intensive making them not suitable to be applied within CI cycles. This paper formulates the test case prioritization problem as an online learn-to-rank model using reinforcement learning techniques. Our approach minimizes the testing overhead and continuously adapts to the changing environment as new code and new test cases are added in each CI cycle. We validated our approach on an industrial case study showing that over 95% of the test failures are still reported back to the software engineers while only 40% of the total available test cases are being executed.

Topics & Concepts

Computer scienceRanking (information retrieval)Rank (graph theory)Test (biology)Overhead (engineering)Test casePrioritizationCode (set theory)Reliability engineeringSoftwareCode coverageMachine learningEngineeringProgramming languageManagement scienceMathematicsCombinatoricsSet (abstract data type)Regression analysisBiologyPaleontologySoftware Engineering ResearchSoftware Testing and Debugging TechniquesSoftware Reliability and Analysis Research