Information Technology Quality Assurance is the process of monitoring the quality of a product (often software) as it is being developed or maintained.
Quality Assurance generally encompasses the entire development process, including standards compliance; requirement, design and code reviews; software inspections; testing; and management processes such as configuration management and process improvement.
In this Information Technology Quality Assurance post, we’ll be covering:
- What is Information Technology Quality Assurance
- Software quality assurance principles
- The need for Quality Assurance
- The role of Quality Management in determining assurance
- What is the quality assurance process?
- The Quality Assurance process in Information Technology?
- Example software quality assurance plan
- Benefits of Information Technology Quality Assurance
- Issues with Information Technology Quality Assurance
Quality Assurance is a multi-disciplinary approach to achieving long-term success through customer satisfaction with a product or service. It ensures that all the activities necessary to design, develop, and implement a product or service are potent with respect to the system and its performance and how it meets requirements.
Software quality assurance (SQA) is the process of monitoring the Quality of software as it is being developed or maintained. Quality assurance in information technology often bounds the entire development process, which includes processes such as standards compliance; requirement, design and code reviews; software inspections; testing; and management processes such as configuration management and process improvement.
Quality Assurance is commonly thought of in terms of industries like Aerospace and Pharmaceuticals, but it’s also applicable to many others, including Information Technology.
There are numerous principles that are associated with Quality Assurance; these include:
- The earlier QA are engaged, the higher the return.
- Quality Assurance is not free. It requires people, processes and systems.
- Quality Assurance is not immediate. It requires time to plan and execute
- Quality assurance does not remove the need to design Quality in
- Quality is everyone’s job, not just Quality Assurance personnel. Engineers/Developers must understand that Quality is a fundamental part of their role.
- Collaboration between stakeholders is crucial, and environments where developers/Engineers and QA work together are a must-have in order to drive maximum return.
- No product is 100% error-free
Software errors have a serious impact on both businesses and consumers.
Severe consequences can result from mistakes in the code of commercial and industrial software.
Such events can drive cost and damage brand image and customer relations.
To prevent these issues and ensure a consistent level of product quality, Quality Assurance should be implemented as a defined process in software development processes.
Organizations depend upon their customers and so must provide them with goods/services that have appropriate levels of Quality.
Quality management has a role in helping meet this need by providing an overarching philosophy that uses techniques (including quality assurance and control of processes as well as products) to achieve more consistent quality.
Although it does not guarantee the absence of defects, Quality Assurance does provide objective evidence about the degree to which a product meets specifications or customer needs.
Many might assume that Quality control is the driver of high standards within information technology. Quality control is an element of quality management. Its primary focus is that of fulfilling quality requirements, generally thorough inspection ensuring requirements have been met.
Quality assurance, on the other hand, relates to how processes are executed or how it is produced. It helps, through a series of planned activities, demonstrate that products or services will achieve the necessary quality requirements.
The approach to Quality Assurance is often industry (or at the very least) organization-specific. There are, however, some common steps which include:
- Determining requirements
- Developing requirements
- Test planning
- Test design
- Test execution
In addition, Information Technology quality assurance tends to be a two-stage process that covers
- Initial release
- Subsequent releases – verifying whether a newly developed feature or release is compatible with already existing versions. (Upgrades that stop software from working are never a good thing!)
Testing is often a significant aspect of QA in the IT industry, and there are several principles that we should consider and apply
- Testing against every eventuality and subtlety is impossible
- Testing does not demonstrate that defects are absent it merely highlights those it finds
- The earlier you test, the higher the savings
- No product is 100% error-free
- Your assurance plan will set a context for verification which in turn drives the errors you are likely to find
- Errors are often associated with one another and are grouped
As we’ve described, SQA will usually encompass the entire software development process; this will often include a range of varying steps such as standards compliance; requirement, design and code reviews; software inspections; testing; and management processes such as configuration management and process improvement.
Each step may require a certain approach in order for the QA process to deliver value.
So what is that approach, and how should we apply Quality Assurance?
As it’s a process-driven multi-disciplinary approach with specific steps that ensure Quality, it will require multiple supporting operations and resources.
As ever, our good friend PDCA (Plan, Do, Check, Act) can help us.
Let’s take a look.
Planning Quality assurance usually involves the development of a Quality Assurance Plan (QAP).
This is a formal document developed by the project/development team and describes the process, which, if followed, ensures criteria are met, and compliance against specified assurance criteria is met.
The plan should articulate how several goals are attained; these include:
- Customer Requirements
- Business Objectives
We’ll cover an example plan’s contents later in the post.
This is the stage where you will execute your plan, usually with a level of testing involved.
Testing in support of Information Technology Quality assurance is typically performed by software testers and technicians at various stages of development or maintenance in order to detect potential errors or bugs before the actual end-users are exposed to them.
In this sense, QA testing is intended to give developers feedback about their work (against a predicted set of requirements and desired outcomes) and identify issues early in the development cycle when they’re easier—and less expensive—to correct.
Once you have executed your testing, the next phase is to understand how the results of the tests measure up to the desired results.
Reviewers will need to assess and gauge every element’s testing results to ensure everything meets requirements.
Once the results are known, then the organization can act.
If all tests are completed successfully and were to plan, then there are unlikely to be corrective or follow on actions.
Where requirements have not been met, then there are likely to be further remedial activities required followed by further Quality Assurance processes to verify.
A Quality Assurance Plan (QAP) is a document that aims to confirm the completed product fulfils all criteria.
It describes a series of steps that the project team need to follow.
Below is a common structure for a Quality Assurance Plan
- Purpose and scope of the document
- Associated documents – these should be read with the QAP.
- Applicable standards/requirements that should be followed or applied during the process
- Identification of how requirements and output will be verified and validated
- Checkpoints – on successful completion of a stage, it is assumed that all deliverables have been completed to requirements and all remaining issues have appropriate closeout plans.
- Roles and responsibilities of key personnel in the execution of the plan, together with any required skills
- What in-stage assessments need to be carried out
- Assessment of risks to the plan
- Stage exit reviews
- Report & Approval for the exit of the process
The benefits of applying quality assurance to information technology are in line with other industries where quality assurance may be applied; key benefits include:
- Ensuring the product meets requirements
- Preventing poor products from reaching the customer
- Reducing costs through an extensive rework of finished goods
- Building quality and value into the finished product
Quality assurance is ubiquitous, and while there are issues, these are unlikely to prevent you from deploying the technique. There are some things to look out for and to tailor your process accordingly – these include:
- The process can be time-consuming and require resources to execute the process, which some organizations might find restrictive.
- It does require suitably qualified, experienced personnel to carry out the process (especially in the design of the assurance plan), and the outputs may vary if inexperienced personnel carry out the process.
- These personnel come at a cost, and a business is likely to need to provide training and infrastructure in support of these which may appear costly.
- Businesses may find themselves in time-pressured circumstances with the need to get products released by a deadline and may feel that elongated QA activity may impact. Some businesses often fall into the (costly) trap of releasing a product with a view of “fixing later.”
- Your results will often depend on your QAP; something that has been knocked together without care and attention is unlikely to deliver the results you want.
Quality assurance is commonplace in many industries, including information technology.
Quality Assurance in Information Technology usually centres around the verification and validation of products at varying stages of the product lifecycle. These will invariably focus on product testing, which usually requires careful planning by experienced personnel.
Businesses will then need to apply strict processes around how testing is carried out with a specific focus on corrective action where it’s needed.
Do you work in information technology? How has your organization applied quality assurance to its processes? Have you some lessons learned that you’d like to share?
As ever, we’d love your feedback and experiences on the topic. You can reach us using the comments section below, or you can reach out to us on Twitter.