Software testing can be done manually or automatically. Manual testing is done by the programmer himself. On the other hand, automated testing is done by software tools to test the program without human intervention. Automated testing will make sure that all errors are found and removed from the software successfully. We have many different means of automated testing like unit testing, integration testing, functional testing, load testing, etc. The aim of all these tests is to find errors. Here are some software testing principles: Testing indicates the habitation of bugs, testing at an early stage, Aggressive Testing is impossible, Defect Clustering, Errors Fallacy should not be there.