Optimization of Test Execution - Brink, Erik; Risne, William (My University, 2023)
Testing software is among the most fundamental practices of programmers. Though sometimes daunting to carry out, testing still fills an important role of assuring correct software in various forms. The possibly daunting part of testing is the time it takes to execute an entire test suite potentially containing millions of test cases. Such test suites might end up taking days to run, which might leave developers with idle hands. Various solutions has been proposed to solve the problem of optimizing test suite execution in terms of time efficiency. The time from the start of the execution until receiving an error can be minimized by using test case prioritization. This could involve ordering test cases in a test suite, such that the test cases with higher probability to fail (to produce an error) based on modification to a piece of software, are prioritized in the order of execution. In this thesis, we implement test case prioritization using a Deep Neural Network that produces an order of test cases to be executed. We refer to this model as Prioritized Order Model (POM). We also use test case selection, which involves taking a subset of a test suite based on some criteria. In the case of this thesis, the criteria is based on time limitations of the execution of tests. This is done by using an approach that utilizes the Knapsack Problem. We found that POM performs well given a sufficient amount of data on test suite error reports and modified files in a software repository. POM is compared to different orderings and their time efficiency, which indicated superior performance by POM.
Keywords: Test case prioritization; test case selection; deep neural network; data augmentation; the knapsack problem