Logic and Software Testing