The process of avoiding, finding, and fixing bugs in your software is quality assurance. QA consists of more than just testing. Nevertheless, testing the software being developed is a big part of most development groups' quality plans. Each kind of testing has a different focus. Unit testing is a way of making sure that the code works the way the developer thinks it should.
Unit testing is performed by the developer who wrote the code.
It exercises the interaction between old and new code. Integration testing is usually performed by the developer of the new code. System testing determines whether the software as a whole works together. System testing is best performed by a separate group of testers. Beta testing is similar to system testing except that it's handled informally by users external to the development process, usually external to the entire company.