Akiira / Comp-524-program

A genetic algorithm to create test suites that cover every branch of a program
2 stars 0 forks source link

Generation of Test Cases #3

Closed Akiira closed 9 years ago

Akiira commented 9 years ago

Decide on the best method of test case generation. This may change depending on the exact context and could consist of several different techniques.

(I'm just writing a few "issues" so we can have a record of what else needs done.)

Akiira commented 9 years ago

When creating the initial population we could create TestSuites of varying length e.g., create 100 TestSuites of length 1, 100 of length 2, .... etc up to the max TestSuite size. Should we do this? and if so how should we divide up the lengths? I implemented a simple version that divides them evenly, but it did not seem to have much effect yet.

ambarket commented 9 years ago

I wasn't sure about this. If we do this I have a feeling the extremes of the test suite sizes are unlikely to be ever picked. Also do we then allow test suites to exceed the max through the local optimization heuristics we discussed or cut things off at the max. For example if we do the "union" of two test suites idea, what do we do if the result has more than max? This also requires us to change the crossover in a way that maintains diversity in size while also allowing the sizes to change.

Akiira commented 9 years ago

The max size should always be large enough to allow coverage of every edge and predicate. So if we combine two test suites and the number of TestCases exceeds the max we simply get rid of duplicates.

As for crossover, we only need to maintain divisersity to a certain degree. As the simulation runs the TestSuites should be slowly shifting towards the max size, or at the very least the min size needed to cover all edges. There is no reason to always keep a TestSuite of every size in the population because they will never be able to cover everything.

ambarket commented 9 years ago

We have evolved a lot in our approach since this. And this is not really relevant