Many companies are able to have an in-house testing department, but many choose to outsource to an independent testing company.
While the in-house testing department allows a company to control the whole process and address issues immediately, there are some drawbacks to this model. Cost for an in-house employee includes salary, but also hidden costs such as hiring, training, benefits, hardware and infrastructure. The company has to continue paying for the employee regardless of what the current testing needs are. Additionally, if the employee is not familiar with a particular task or new type of testing, the company has to supply training, or perhaps hire another person to do the job.
For many companies it will make sense to hire an independent testing company to take care of its testing needs. Developers have a familiarity with their creation and they tend to make assumptions that the end user will probably not make. Therefore, an independent testing company has the advantage of taking a fresh, un-biased look at the software, essentially taking the place of the customer. This objectivity assures that you are delivering what you intended to create. Independent testers have the added advantage of experience and efficiency that comes with focusing on advancements in the field and working on a variety projects where they can collect and re-use their knowledge. Quality is also their only goal. Using an independent testing company gives you logistical benefits such as reduced costs, including reducing hidden costs, as well as flexibility, meaning you can quickly reduce or increase your team size.