This report provides a comprehensive overview of software testing techniques, essential for determining the effectiveness of developed software. It begins by introducing the two main tools: black box testing, which focuses on external testing without knowledge of internal code, and white box testing, which examines internal code logic and procedures. The report then explores the testing spectrum, encompassing alpha-beta, unit, acceptance, system, and integration testing. Furthermore, it delves into equivalence class partitioning, a method for creating test cases from input data sets, and discusses static and structural white box testing. The conclusion emphasizes the importance of software testing in validating, verifying, and improving software quality throughout the Software Development Life Cycle (SDLC), ensuring efficient and reliable software products for customers.