Creating and maintaining complex software systems faces several challenges during the phases of the development lifecycle. Software testing is a vital part of the development process. It serves several purposes: detecting defects, helping avoid user detecting problems, making sure the software is reliable enough, and it provides demonstrative proof that business requirements have been met.
The scope of this thesis is within the field of software testing, intending to predict testing challenges and measure testing efficiency. The goal of the thesis is to predict testing efforts based on analysing software metrics. I searched for metrics and measurable software properties which are capable of predicting testing effort and complexity. I investigated various metrics and related works in order to select potential metrics and techniques.
I searched for relationships between testing effort and software metrics on an open-source code base. The code base consists of programming tasks and solutions for these problems written in different languages. I measured various metrics of the source code and the test cases. By analysing the measured metrics, I tried to discover relationships between source and test metrics. Since there are solutions in multiple languages for the same tasks I also tried to discover the relationships between the languages.
I presented a custom approach for analysing software projects. The approach consisted of a data model and multiple visualizations based on the collected data. The approach is capable of analysing software projects individually, but also to compare the properties of different ones. I gathered various software metrics of multiple projects. I used the collected data to evaluate the selected software projects and also to search for relationships between
the software properties.