Test suite reduction in Android application using refactoring - Ahmed, Maryam Temitayo (2016)
The vast increase in demand for android applications has made android application testing inevitable. The android open source feature has led to developers of unknown level of expertise developing the application, thus raising concerns on quality issues. Currently, android applications are found lagging in the area of testing. Test case generation is the most important and challenging area of software testing. Test cases tend to be large in number as redundant test cases are generated due to the presence of code smells in the software. Code smells are unnecessary codes, as a result of poor design or implementation. Several approaches have been proposed in the past by both academy and industrial researchers to tackle the high number of generated test cases in android applications, including test case minimization and prioritization technique. Nonetheless, these approaches are reactive rather than proactive. The technique used in this study is to apply code refactoring before test case generation to avoid redundant test cases from being generated. To achieve this, the detection of smells was done, followed by refactoring of detected smells. Test cases were then generated from the refactored code. More explicitly, this research presents three rules for detection of three code smells; lazy class, small method and duplicate, and three rules for their refactoring. The rules were implemented in a tool named DART (Detection and Refactoring Tool) to refactor the android source code for the reduction of test cases. The resultant source code is compared with the original source code by generating a number of branches, branch coverage and complexity using Clover. The results of this research show a reduction of about 7.7% in the cyclomatic complexity of the source code, while increasing the branch coverage with up to 9.2% increment. Also, there is a 28% reduction in the number of test cases generated. These show that refactoring can be used to reduce redundant test cases.