Testing is an integral part of our development cycle. Activities like prototyping are powerfully beneficial because with a prototype humans do the testing. Before we ever reach that point, however, we implement rigorous automated testing on our works in progress.
Automated testing tells us whether our work has met certain standards. It catches defects and failures and checks for compatibility with different environments. It is also important that an app work as predicted and produce repeatable results.
By making testing a regular and frequent part of development, we can spot errors early, the kind of errors that it could take humans months to find. Tests also help us catch mistakes made by changing the code base.
It's simple to explain why we test. Without it, we'd be sending our software out blindly into the world, and the burden of discovering their faults would lie squarely with the users. That's not how good software works.