On the Noble Art of Quality Assurance
So you want to be a Software Tester?
Do you have a knack for figuring things out? A knack for figuring things out that goes beyond the obvious, even to the point of figuring things out that the developer didn't figure out when he was writing the code? And yet, do you feel it is time to elevate that 'knack' to a whole new level? Do you want to take charge of the test process and elevate it to an art form?
Then Welcome to the Noble Art of Quality Assurance!
The goal of Quality Assurance in a software organization is simple: perfecting the software? That means: perfecting the developers, perfecting the processes by which software is developed, and ultimately perfecting the relationship that the software (and the company behind it) has with the end user: the customer.
There are many today that do not comprehend the difference between Software Quality Assurance and Software Test. They may deem that 'Quality Assurance Engineer' is simply a more elaborate title placed upon the Software Tester, or they may consider that the Quality Assurance Engineer is simply a Software Tester who is also schooled in the use of various tools for reporting of test metrics.
Both of these concepts touch upon the truth, but they also both entirely miss it.
The use of metrics with respect to testing, development, test coverage, bug finding, and so on, are only a tool that the QA Engineer uses on his path to helping mature his company's development processes. The end goal must always remain in sight: help mold this company's products into something the customers can depend on. Help elevate the quality of workmanship that goes into the product. Quality of workmanship is the path to a quality product, a dependable product that the customer will thank you for, both by continued patronage and word-of-mouth promotion.
In a company that makes proper use of the Quality Assurance role, the Quality Assurance Engineer is able to use both title and tools to elevate the quality of workmanship. The company gives the QA Engineer the authority to hold up a release, if needed, in order to ensure the highest quality product is released. The company gives the QA Engineer the authority to hold developers accountable to fulfillment of requirements, and overall meeting of the project vision.
This is not an 'authority' that the QA Engineer abuses, or uses lightly. It is a serious thing to hold up a software release. It can ultimately result in lost revenue. But just as serious is the authority to release a product 'on time' even if it is not ready. Not only will such a release result in lost revenue, but what's more, lost credibility.
It is thus through the use of various tools in reporting test coverage and other quality metrics that the QA Engineer provides 'Assurance' to the project management, and various other project stakeholders, on the release-ability of the product. The QA Engineer must become 'master' of both the company development processes, and the tools which enable him to provide some level of assurance in a product.
To speak of the role of Quality Assurance like this is to underscore that it is one of the most important roles in a Software Organization. The QA Engineer must not merely elevate the process of software testing to an art form, but must elevate the entire process of software development to an art form. In the end it is the artwork itself (a finely crafted piece of software) that provides the entire team that worked on it with the satisfaction of having perfected something and brought it out into popular usage. And the QA Engineer can sleep at night, knowing that he has in no small way helped accomplish this.