As commonly known, there are almost unlimited number of error sources. Some are more obvious than others, such as the human imperfection or the growing number of digital devices. Consequently, software testing represents an unavoidable task, and the main goal should be to eliminate most of these bugs. But how?
Current State of Quality Assurance
The first question that arises is: How do I ensure a constantly high quality of my software? Or to be even more precise: How can superior quality be guaranteed for more complex products at relatively low cost? As usually, today's project budgets are tight, and software quality assurance can eat up a lot of it. Mainly because, testing efforts require a variety of testing devices, ranging from different kinds of desktop and mobile hardware to various OS and browser versions. In addition, skilled employees are required to execute and document all testing efforts. Hence, there are usually the following ways to go:
Maintain a costly internal quality assurance (QA) department, comprising skilled QA personal as well as several testing devices
Assign testing to demanded developers, who test the software they themselves created
Have testing be carried out by interns, who join the company temporarily and often lack proper motivation or affection for detail
Challenges raised by today's Quality Assurance
All these solutions include major setbacks and none of them can cover all required testing scenarios. In more detail, the internal QA department as well as developers are clearly the most expensive resource for testing software. Additionally, every resource should be utilized in the best possible way, in this case developers should rather focus on their core capability, the development of new product features. Interns on the other hand, should not be utilized as a low-cost testing resource either beause they lack the experience, incentives and the motivation to deliver high quality results.
So what's the best solution for software testing in today's world?