System/software testing involves various types of testing at different stages to detect errors and ensure reliability. It includes unit testing by programmers, integration testing of modules, system testing of full system with real data and user involvement, and acceptance testing in real-world environments. Testing strategies aim to thoroughly test all functionality through techniques like equivalence partitioning, boundary value analysis, and dependency analysis to reduce the number of test cases needed.