Evaluating effectiveness of software testing techniques with emphasis on enhancing software reliability