Approval Testing

Approval Testing

1.  Test behaviour not code

2.  If behaviour isn’t simple, stable and well defined, don’t use assertions

3.  Capture system behaviour, filter it and manage things in it

4.  Approval testing – reject it (a bug), intentional change, or ignore it (we don’t care)

5.  Blacklisting vs Whitelisting: <a href=”“><img src=”” alt=”whitelisting-vs-blacklisting-middle” class=”size-full wp-image” id=”i-2262″ /></a>

6.  More checks implies more effective but less maintainable

7.  Assertion based checking – start checking nothing but blacklist outcomes up front – repeat until bored – what are all failure modes

8.  Approval checking – start checking everything and whitelist outcomes on demand – repeat until maintenance feels manageable – is this change correct, incorrect, or uninteresting

9.  Legacy code – correct behaviour is what it does now – cannot change to get it under test, APIs may be lacking

10.  Characterization testing – what it does

11. (open source)