I am studying software engineering at Prof. Tomoji Kishi’s laboratory. The software development I’m involved with is in the test phase, and what I am researching is the effective use of past test data.
Most software is developed in stages through a series of revisions, but I think the efficiency of this process can be improved by re-utilizing past test data. However, past test data is not currently utilized to any great extent.
Scanning past test data could, for example, reveal circumstances in which bugs of a specific sort are common and help reveal defect tendencies. By grasping such circumstances, corrections and revisions can be made and tested on a priority basis.
In the first place, there is no clear-cut point at which you can say you are done with testing. No matter how much you test, there is no guarantee that there are no undiscovered defects.
This means there is great freedom in approaches that can be taken to testing, and any number of these can be correct. There is something called the “knapsack problem,” a problem of combinatorial optimization, for which there are many different theories and methods of determining what things can be fitted into a knapsack and how to fit them. The same applies to testing.
You have to determine for yourself what to test and how much to test it, and build your own algorithm with the aim of achieving efficiency. That is an interesting aspect of this research.
The problem is that it all takes a tremendous amount of time.
In fact, of all the stages of software development, it is testing that is most costly and time-consuming. It is said that about 42% of overall development cost is incurred in testing. Since there is no limit on how much testing is needed, the time consumed tends to expand. That means that it is also taking a long time for me to validate the method I am exploring and determine whether it is correct.