Software testing is a vital part of software development that serves to evaluate the functionality of a software application with the sole aim of verifying that the developed software meets the specified requirements and that it is free of defects.
Just as a musician is not in the best position to determine if his recorded sound will go well with his fans, a programmer of a software is in most cases not the best person to determine if his program is free of detects. This is mainly because he is more inclined to perform testing based solely on his understanding of the internal code structure.
Software Testing often requires a fresh perspective. A neutral person who behaves as close to the end-user as possible is needed to perform a more thorough Behavioral, Specification-Based, Input-Output Testing. Most software developers are wired to solve problems, not create them. This makes it difficult for them to get into the tester's mindset of destroying instead of creating. This is exactly why a Software Tester is a better person to test software than the developer of the software himself.
Feel free to share this answer with other students in your network. Hope you found this answer helpful.