Software Testing Foundations: Test Planning, Management, and Tool Support