Analysis and definition of the process of maximizing utility and minimizing costs associated with software testing: the case of software Android - Ferreira, Bruno Miguel Pinto (2024)
Software testing is increasingly important in the software development lifecycle. There are different types of tests, which can be applied in different phases of software development, but as far as I know, there are no documents or strategies that establish which types of tests should be adopted to increase their quality and balance error detection, costs and time. To guarantee software quality, it is necessary to adopt different types of tests, which have an associated cost in the scope of each project with different delivery times. However, failure to adopt good practices could lead to poor quality, high costs and delays in project delivery. This academic project addresses this difficulty and aims to propose a method to determine the type and extent of tests to be adopted in a software project to increase the quality of tests by appropriately balancing error detection, cost and time. To initiate the investigation, a project was selected from which the existing tests and the respective code coverage were obtained. Various metrics were also analyzed, such as complexity and the number of tests. The solution considered was the use of automatic mutation tests to assess the quality of the tests. It was concluded that it is not possible to infer the quality of the tests if there are no mutation tests in the project.