A computer-implemented method comprising: obtaining test artifacts that were generated based on testing one or more legacy versions of a software application using multiple test cases; generating a risk index based at least on the test artifacts that were generated based on testing the one or more legacy versions of the software application using the multiple test cases, wherein generating the risk index comprises: aggregating, for a particular functional area or module of the software application: a count of test cases that are associated with the particular functional area or module of the software application, a count of defects that are associated with the particular functional area or module of the software application, a value that represents a ratio of the count of test cases that are associated with the particular functional area or module of the software application to the count of defects that are associated with the particular functional area or module of the software application, and a count of defects that are associated with the particular functional area or module of the software application and that are indicated as high priority; training an ensemble model that is configured to identify likely unnecessary or redundant test cases in connection with testing an updated version of the software application, based at least on the risk index; generating, using the ensemble model, a score for each of the multiple test cases in connection with testing the updated version of the software application; outputting data identifying one or more of the multiple test cases and, for each test case, the score in connection with testing the updated version of the software application; and executing the multiple test cases on the updated version of the software application in a prioritized order according to the score. obtaining test artifacts that were generated based on testing one or more legacy versions of a software application using multiple test cases; generating a risk index based at least on the test artifacts that were generated based on testing the one or more legacy versions of the software application using the multiple test cases, wherein generating the risk index comprises: aggregating, for a particular functional area or module of the software application: a count of test cases that are associated with the particular functional area or module of the software application, a count of defects that are associated with the particular functional area or module of the software application, a value that represents a ratio of the count of test cases that are associated with the particular functional area or module of the software application to the count of defects that are associated with the particular functional area or module of the software application, and a count of defects that are associated with the particular functional area or module of the software application and that are indicated as high priority; a count of test cases that are associated with the particular functional area or module of the software application, a count of defects that are associated with the particular functional area or module of the software application, a value that represents a ratio of the count of test cases that are associated with the particular functional area or module of the software application to the count of defects that are associated with the particular functional area or module of the software application, and a count of defects that are associated with the particular functional area or module of the software application and that are indicated as high priority; training an ensemble model that is configured to identify likely unnecessary or redundant test cases in connection with testing an updated version of the software application, based at least on the risk index; generating, using the ensemble model, a score for each of the multiple test cases in connection with testing the updated version of the software application; outputting data identifying one or more of the multiple test cases and, for each test case, the score in connection with testing the updated version of the software application; and executing the multiple test cases on the updated version of the software application in a prioritized order according to the score.