2. Testing Throughout the Software Lifecycle