System testing is done to discover errors by testing all components, subassemblies, and the final product. There are various types of tests that each address specific testing needs. Unit testing checks individual software units before integration to validate internal logic and outputs. Integration testing checks integrated components run as one program. Functional testing systematically exercises software functions, inputs, outputs, and interfaces as specified in requirements. System testing ensures the full integrated system meets requirements through configuration testing.