## 3 Experiment Results
### Experiment Results for SUT2  
As a SUT2, a specially generated program with a large number of operations and conditions was used. Appendix B shows the CFG of only a part of the program. The main functionality is found in the functions that are not presented here due to space limitations. In addition to a larger number of operations and functions in SUT2, a hierarchy of conditions is introduced to test the performance of the proposed method for automatic generation of test data.  
The dependence of the code coverage on \(k\) for different number of chromosomes in the population for SUT2 is shown in Figure 2. To represent a different percent (not always 100%) of coverage, it was decided to use only 75 generations. The trend of the code coverage versus \(k\) for SUT2 is very similar to that for SUT1 shown in Figure 0(a). The best coverage value is achieved at \(k=10\), even though the tested codes SUT1 and SUT2  
Figure 1: Achieved statement coverage of final population depending on \(k\) (\(m=M=35\)) for SUT1.  
differ significantly in the number and complexity of statements. Thus, the value \(k=10\) can presumably be recommended as an initial one for other SUTs as well.  
For the SUT2, research of the dependence of the average value of statement coverage on the number of generations varying from 1 to 700 were carried out. The average coverage value was calculated from 10 random GA launches with a fitness function calculated by Formula (6) with \(k=10\). The results of calculations are presented for different population sizes (\(m=5\), 10, 15, 20, and 40), and it is assumed that it does not change from generation to generation. Figure 3 clearly shows how much the convergence rate of the algorithm differs when using a different number of chromosomes in the population.  
Figure 3: Comparison of the algorithm’s convergence speed with different population size.  
Figure 2: Achieved statement coverage of final population depending on \(k\) for SUT2.  
First of all, it should be noted that in all cases the proposed algorithm stably ensures the accumulation of a pool of elite chromosomes, providing almost complete code coverage (at least 98% on average). The difference between the results obtained for different population sizes mainly consists in different rates of convergence to complete code coverage when \(m=5\), the lowest speed is achieved and the final coverage value is the lowest of the considered variants. An algorithm with 5 chromosomes in the population accumulates a pool of elite chromosomes for an extremely long time (700 generations), which provides almost complete coverage in about 700 generations.  
An algorithm of test data generation with a population size of 10, 15, and 20 chromosomes shows somewhat better results. It reaches the maximum coverage value at \(\sim\)270-450 generations, i.e., the convergence rate is much higher. Note that a value of 20 is an upper bound for the number of different paths providing complete coverage for the SUT2.  
As expected, an increase in the number of chromosomes in a population significantly increases the convergence rate of the algorithm, i.e., the rate of increase in the degree of code coverage in the pool of elite chromosomes. This is achieved by providing more sample diversity. The algorithm achieved the best values of coverage and convergence rate for 40 chromosomes in the population. The maximum value of statement coverage is reached within 70-80 generations.  
For the proposed code, as mentioned above, the number of generated variants is approximately 15-20. That is, for better generation of test data, it is necessary to have at least 2 times more chromosomes than the required number of test cases required for complete code coverage. A further increase in the number of chromosomes in the population will lead to an increase in the convergence rate, but negatively affect the overall speed of the method, because it leads to an exponential increase in the amount of computation.