Abstract
•We integrate software testing within a broader context of specification, verification and testing.•We present software testing as a structured, multi-phased activity.•We precise milestones and deliverables.•We present testing as a goal-oriented activity, with specific verifiable claims.•Specific verifiable claims are based on engineering methods and techniques.
Ever since it emerged in the late (nineteen) sixties, the discipline of software engineering has set itself apart from other engineering disciplines in a number of ways, including: the pervasiveness of its products; the complexity of its products and processes; the criticality of its applications; the difficulty of managing its processes and estimating its costs; the volatility of its workforce; the intractability of its process lifecycles; etc. A number of principles have emerged from recent software engineering research, that have the potential to bring a measure of control to the practice of this discipline; but they have not made it into routine practice in industry. We argue that the classroom is a good place to start acquainting students with these principles, and to start getting them into the habit of adhering to them as a matter of routine practice.