A Comprehensive Guide to Software Quality Assurance

By Indeed Editorial Team

Published June 19, 2022

The Indeed Editorial Team comprises a diverse and talented team of writers, researchers and subject matter experts equipped with Indeed's data and insights to deliver useful tips to help guide your career journey.

When developing software, it's essential that there's a process in place to help ensure that the company releases a high-quality product. Quality assurance involves a series of processes, procedures, and tests designed by developers to ensure this occurs. If you're planning a career in software development, it's important you understand the role quality assurance plays in the development process. In this article, we define software quality assurance, discuss its key components and activities, explore the techniques associated with quality assurance, identify the benefits of the process, and consider the relevant standards involved.

What is software quality assurance?

Software quality assurance (SQA) is the process of ensuring that a final software product complies with the standardized quality specifications defined by an organization. The process checks and evaluates that everyone working on the project has implemented and complied with the set of activities put in place by an organization.

The process typically runs in parallel with software development. Instead of undergoing product control on completion, the product is subject to the quality control process at each stage of its development. Each SQA process has these key characteristics:

  • defined approach to quality management

  • regular formal technical reviews

  • implementation of a multi-testing strategy

  • effective use of software engineering technology

  • mechanism for measurement and reporting

Related: 9 Quality Assurance Interview Questions with Sample Responses

SQA chief components and activities

The following are the chief components and activities associated with SQA:

1. Create an SQA Plan

The SQA plan (SQAP) defines the quality assurance process. Typically, the SQAP is a very detailed document containing the procedures, techniques, and tools that an organization plans to use to ensure the completed product meets the requirements set out in the software requirement specification. The SQAP identifies the SQA work processes and details the areas that require review and audit.

An SQAP typically has the following sections:

  • purpose

  • reference

  • software configuration management

  • problem reporting and corrective action

  • tools, technologies, and methodologies

  • code control

  • records for collection, maintenance, and retention

  • testing methodology

2. Set checkpoints

SQA evaluates the product throughout the development process. The first step is to determine the points in development at which this evaluation takes place. Checkpoints help ensure that assessments occur at regular and logical intervals.

3. Deploy software engineering techniques

There's a range of software engineering techniques that developers can use to achieve high-quality specifications. Developers might collect information using technologies that include the functional analysis system technique (FAST) and interviews. Once the developers have collected the information, they use techniques that include the work breakdown structure (WBS) and functional point (FP) to create the project estimation.

Related: How to Become a Certified Quality Engineer (With Steps)

4. Conduct formal technical reviews

The purpose of a formal technical review (FTR) is to evaluate prototypes for quality and design. Technical team members meet and discuss the actual quality requirements of the product's prototype. The main outcome of this review is the detection of errors in early development. This also helps to reduce further work on the network in the latter stages of development.

5. Adopt a multi-testing strategy

It's good practice to adopt a multi-testing strategy. By using this approach, developers can help ensure that the testing process is robust. A multi-testing strategy can help guarantee that developers consider all aspects of the product to improve its quality.

6. Ensure adherence to the process

This activity confirms that the developers stay true to the previously defined quality processes. It also helps ensures that product evaluation adheres to those standards. The second aspect of adherence is process monitoring, which involves comparing the actual steps with the documented ones.

7. Control change

Developers use a combination of automated and manual tools to monitor the effect of change. During this process, developers evaluate changes, validate them, and then control their impact. This helps ensure they maintain product quality.

8. Measure change impact

If there's a change and the testers detect a negative impact from that change, the developers focus on fixing the defect. Once they've done this, it's important to test, not only to see if they've resolved the defect but whether their repair impacts product quality. If it's impacting quality, they repeat this process.

9. Perform software quality assurance audits

Audits allow for a comparison of the software development process with the established procedures. The team identifies any variations or issues of non-compliance. If the auditors identify any issues, they document them for future reference.

10. Maintain reports and records

It's essential that the team documents the quality assurance process. Ideally, this documentation covers all the SQA processes and is available for the stakeholders to review. Testers can use it as a reference point for quality assurance activities in future projects.

SQA techniques

Those managing the quality assurance process typically employ the following techniques:

  • Auditing: This is an inspection of the work to ensure the team followed standard procedures.

  • Reviewing: The internal and external stakeholders meet, examine the product, and approve it.

  • Code inspections: A trained peer or mediator completes a formal code review using defined checklists, rules, and entry and exit criteria.

  • Design inspection: Using a checklist, design inspection evaluates general requirements and design, functional and interface specifications, conventions, traceability requirements, structures and interfaces, logic, performance, error handling and recovery, testability, extensibility, and coupling and cohesion.

  • Simulation: The product undergoes an evaluation in a simulation of real-world conditions.

  • Functional testing: The tester verifies the effectiveness of the product in isolation, without evaluating the processes that got it to that point.

  • Walkthrough: The developer shows a peer review team the product, allowing them to query decisions, suggest improvements, and comment on any possible errors, standard violations, and potential issues.

  • Stress testing: This involves running and monitoring the program in a high stress environment.

  • Six Sigma: This is a quality assurance philosophy, striving for perfect products and services.

Related: 3 Sigma vs. 6 Sigma: Differences, Similarities, and Examples

Benefits of SQA

There's a wide range of benefits associated with SQA, including:

  • Decreases costs: Errors may cost software developing companies money while addressing fixes and patches. A good SQA program identifies most of the issues during development and negates the future costs associated with fixing the problem.

  • Saves time: SQA programs aim to identify issues early in the development process to avoid many of the costs associated with identifying a problem later. In addition, the team avoids repeating aspects of development to fix the problem.

  • Prevents breakdowns or malfunctions: Issues identified and resolved during the development phase have little impact on the company. When there are issues or malfunctions following the release of the product, product recalls or the release of patches to remediate the issue may be costly.

  • Affects consumer confidence: By developing functional software, the company can create a good reputation and gain consumer confidence.

  • Increases market share: More consumers are likely to buy a reputable company's products, thus increasing the company's market share.

  • Improves product safety: A product without issues or problems is likely to be a safe product in the opinion of consumers.

Related: Differences between Software Engineer vs. Software Developer

Relevant standards

There are several different standards that organizations work to, including:

ISO 9000

The ISO 9000 is an internationally recognized standard that many organizations use to define quality. It helps ensure that an organization aligns its products with the needs of customers. There are seven relevant principles:

  • customer focus

  • leadership

  • engagement of people

  • process approach

  • improvement

  • evidence-based decision making

  • relationship management

CMMI model

CMMI stands for capability maturity model integration. This standard refers to an organization receiving a maturity level rating based on quality performance. The maturity levels are:

  • Level 1, initial: processes unpredictable, poorly controlled, reactive

  • Level 2, managed: processes controlled by processes and reactive

  • Level 3, defined: processes characterized by organization and proactive

  • Level 4, quantitatively managed: processes measured and controlled

  • Level 5, optimized: focus on process improvement

Explore more articles