What is quality assurance?
Definition: The literal definition of quality assurance is “the maintenance of a desired level of quality in a service or product, especially by means of attention to every stage of the process of delivery or production.”
In software development, quality assurance refers to a systematic approach to development that looks at the entire development process to deliver working software, but most importantly prevent future mistakes.
Quality assurance vs. quality control: Quality control only refers to functionality of the product. Many software development companies will claim that they guarantee quality control (deliver an app that works), but without more metrics and a deeper QA program it is hard to gauge how much maintenance the product will need in the future. Quality assurance encompasses both the quality of the product and the processes. It typically involves a lot more measurements during the development process (here are the 3 main types). In short, a QA program controls for product quality, process quality, programmer knowledge, and infrastructure suitability.
Why does your software need a quality assurance program?
Avoid failure
Research in Motion (RIM), the telecommunications company that pioneered the Blackberry, offers a cautionary tale in this regard. In October 2011, it suffered a three-day email outage that affected customers across the globe. The cause was a simultaneous malfunctioning of RIM’s primary system and backup system. Although RIM was able to restore access, it faced some long-term fallout: lost subscriptions, several lawsuits, and an erosion of its brand name’s credibility among the public. Perhaps RIM could have avoided all of this is damage if they had paid more attention to quality.
Because of the negative impact quality failures can bring, engineers and developers have created methods of Software Quality Management (SQM). SQM is a variety of platforms and applications that exist to make software development run more smoothly, minimize the chances of defective products going to market, and in general keep mishaps like RIM’s massive system failure from occurring.
Create quality culture
Computer scientist Ian Sommerville defines SQM as comprising three “layers.” Software Quality Assurance (QA) is the first layer. It is an accumulated body of standards, regulations, and best practices that the project in question is to use to assess its production processes and products on an ongoing basis. The second layer is a software quality plan (SQP) that lays out a set of standards, regulations, and procedures that the project is to follow, as well as the project goals and any expected risks. Finally, there is a software quality control layer, which involves monitoring the development teams to ensure that they are adhering to QA requirements and the SQP.
A good software quality assurance program will safeguard the quality of software products and foster a “quality culture,” in which everyone becomes an active participant in guaranteeing quality in both production and the finished products within your organization.
Better development process
Everyone in your organization can benefit from quality assurance:
- Engineers can test source code and identify potential improvements,
- Testers and software architects use it to assess functionality of software applications
- Managers can use it to manage the software development. During the QA process volumes of metrics are gathered and can be used to generate reader-friendly charts and graphs that show how systems are improving and where further improvement is needed. Even outside clients and customers can utilize QMP; the system will make it easier for them to verify that your developers are fulfilling their projects’ requirements.
Company-wide results
Understanding the quality of a software product while it’s being developed benefits all project stakeholders in different ways. Here’s how:
Higher productivity. By gathering metrics of your production processes, you will more clearly understand what needs to be done and delegate each task to the individual who is best qualified to do it.
Teams that run better. Everyone will know more clearly what is expected of them and how their own efforts fit into the larger scheme. They will have less difficulty working with each other, and more ease at tracking their own and each other’s progress, determining if anyone’s performance is not up to par, and sharing new ideas and best practices.
Improved planning. You will have the hard data that you need to clearly assess any given project’s status and to accurately predict its completion time.
In business and in life, people achieve goals when they determine the steps they need to take and then measure their own step-by-step progress. If your goal is efficient operations and software products that satisfy your customers, then a quality assurance program, whether your own or one implemented by your provider, is critical to success.
For a real-life example on how to create a quality assurance program, download The Ultimate Guide to Measuring Software Quality.