Independence is a quality that is highly valued by many in their day-to-day lives. Examples of this are the advice and help they receive from independent insurance brokers, independent financial advisors or even the advice they take from friends and acquaintances in certain situations. Without this independent advice the risk of being taken advantage of or making the wrong decisions would become much higher.
What do you think would happen if an individual car manufacturer was suddenly made responsible for carrying out all MOT’s? Yes, the roads would soon be full of that manufacturer’s vehicles. If a judge was a regular guest at an accused’s or prosecutor’s dinner parties, could you be confident that his adjudication of an impending court case would be impartial? I certainly wouldn’t. These two questions might help us understand why independence in testing is important.
Before focusing on the importance and benefits of independent testing we will look at those levels of testing that are not fully independent. To appreciate why these levels are lacking in independence, we should consider the differing views, approaches and goals of the people who are engaged to deliver them. We must also consider that testing is only effective if it is carried out as a destructive process.
Developer testing is prepared and executed by the person who wrote the software. There is a clear absence of independence in this type of testing. While it could prove useful as a precursor to more
rigorous testing, the view of the person writing and performing the tests can be clouded by bias. The developer will want his product to be delivered, but his approach to testing will be exactly just that. He won’t be as eager to break his product as someone who isn’t involved in its production. Glenford Myers (author of The Art of Software Testing) states that a developer’s state of mind is that of a person building and creating while a tester’s state of mind is intent on finding flaws.
Boris Beizer (author of Software Testing Techniques) stated, “Half a programmer’s professional life is testing, yet less than 5% of all the programmer’s education will be devoted to testing.” There is an extremely high risk in attempting to deliver any form of software based on this level of testing alone.
Another common level of testing is development testing performed by an integrated tester or team who report directly to the development manager. Although this is a move toward testing independence and could in many eyes be deemed necessary, this level of testing should not be considered adequate for the delivery of software to the customer or end user. The tester or team performing this development integration testing might be instructed to cut corners on their testing due to time or budgetary constraints. Consideration must also be given to the environment in which this testing takes place. Development environments are not usually representative of the environment into which the software will eventually be delivered. Most development environments are dedicated to a handful of users or lack full integration, unlike test or production environments where a multitude of system processes and users operate. Stress testing and other forms of performance testing would not be possible in the restricted development environments.
A healthy degree of independent testing could be achieved by a team of testers who are independent and outside the development team, but who report into project management. This level of testing is usually carried out in a dedicated environment that resembles the production environment into which the end product is to be delivered. It offers a fair degree of independence, but could still be influenced by a project’s goals and, more importantly, restrictive timelines that have been set for delivery. Again we might experience bias. In this case it’s not bias toward the product, but bias toward the project. Independent testing A fully independent test team is a separate test team that reports into an organization at a point equal to the development and/or project teams. Ideally, it should consist of product specialists, specialists in technology, and specialists in testing such as security testers, certification testers, or test automation experts. The aim of testing is to establish if requirements have or have not been met for specific products or services. The independent test team should be audacious enough to question everything about the requirements to develop a common understanding and knowledge base.
At Qualitest we provide an independent software test experience that focuses on improving software quality across a range of business sectors. By adopting best practices, a proven set of test processes, reusable assets, a comprehensive test repository and global delivery capabilities, Qualitest provides levels of test support that will help clients deliver robust and superior-quality software. Our independent testing is performed by testing specialists who have not been involved in the development of software, and whose intention is to ensure that the delivered software meets functional and non-functional requirements.