A Framework for Systematic Testing of Software Specifications