Question

I understand that program verification is a branch of computer engineering - but that it's practical application to real world code bases is limited by combinatorial explosion.

I also understand that as part of designing your software change, for a modification to an existing Java framework, it's helpful to think about whitebox, boundary and blackbox tests for your algorithm, in advance. (Some people call this hammock driven development - thinking before you code.)

Assuming you take this thinking and embed it in junit style tests, I'm assuming that the Computer Science name for the contents is strictly 'whitebox testing/fuzzing' and not sufficient to comprise 'program verification'.

So my question is - junit tests - whitebox fuzzing or program verification?

Was it helpful?

Solution

Program verification is done proving mathematical properties on a mathematical model which is related to your application (it can be derived from the formal semantic of the programming language or by hand, like writing behavioral types that models your web service).

Take a look at pi-calculus to understand what I mean.

Of course, junit has nothing to do with formal program verification.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top