Software design testing