Rigorous testing is essential in the development of all well engineered products. Software testing is a pervasive process that uses both static and dynamic techniques of system checking. Using these various techniques, software engineering professionals are tasked with ensuring that software achieves quality standards, satisfies its specification and when implemented, meets the expectations of the stakeholders. This course aims to expose students to various techniques involved in the verification and validation of software, and ensuring its quality throughout the development process. It will focus on test-driven development processes.