Discussion:
Testcase generation
Martin Nowotny
2014-09-17 12:17:45 UTC
Permalink
Hello,
I have a question regarding the testcase generation in klee.
For example I want to test the following program:

int foo()
{
if(b>0) {
// do something
// already have an existing TC
}
else {
//do something
// not tested yet
}
}

If I run klee normally it would give me 2 testcases, one where "b" is
greater than zero and one not.
But let's say I already have an exisiting testcase for the true-branch,
so I won't need any.
So what I thought, was that I can either change the outcome of the
comparison directly in the Executor::executeInstruction,
or for the fact that the Solver will return an unknown case just not add
the true branch to the Constraints.
Either way it does not seem to affect the outcome of the testcase,
although it doesn't execute the true branch (I can see
this in the transferToBasicBlock destination).
I tried to figure out the processTestcase, but I didn't really.
Could you give me a hint how klee then in the end gives "b" for example
the value 0 in the one case and 2147483647 in the other?
Or to be more precise, is it even possible to alter the testcase
generation in a way that it fits the execution?

Thank you very much,
Martin

Loading...