A Practitioner's Guide to Software Test Design