Dec 27, 2022 SA Blog Team
Software Quality Assurance 101 – The basics
Software Quality Assurance - the Software performance detector
What is Software Quality Assurance?
Software quality assurance (SQA) generally refers to the process of assuring that the end product performs as intended and as supposed to. It is an ongoing process that takes place before, during, and after the software development cycle.
SQA identifies all the potential failures and catches all the shortcomings as well as deficiencies before it backfires the financial loss. According to The Cost of Poor Software Quality in the US: A 2020 Report, the total Cost of Poor Software Quality in the US is $2.08 trillion, accounting for a 14% rise compared to 2018 statistics.
In order to ensure Software Quality Assurance processes and procedures are up to certified standards, Software Quality Assurance often combines with international standards, such as ISO (The International Organization for Standardization), CMMI model, TMM, etc.
How to do Software Quality Assurance the “right way”?
In Quality Assurance methodology, the PDCA cycle is applied as a well-defined process model, developed by Dr. William Edwards Deming in the 1950s aimed for continuous improvement of a product effectively.
This four-step approach iteratively detects the problem when the software is not functioning properly or delivering the desired results. PDCA comes in as an analysis tool to explore and discover the rooted issues while finding possible solutions to resolve and improve such. The 4 stages of PDCA are:
Establishing the project’s objectives and goals is the very first step in kick-starting this cycle. From here, define success metrics and the processes (supporting methods) to achieve these goals.
At this stage, we execute our plan, implement it and collect data for later analysis of the next stage.
Here we evaluate the results of the implemented plan and certain that our set out goals and objectives have been reached. Coming up with a checklist of revision to refine and striving to meet the defined goals.
This step closes the circle. Reflected on whether the improvements and changes that have been made were our predefined goals or not. If not, continue the cycle by carrying out a new task of improvement with another plan. Repeat the cycle over and over again until we achieve our goals.
Although the PDCA cycle is basic and simple to follow and accomplish in Quality Assurance at any level of your organization, it is not ideal for tackling urgent issues.
Software Quality Assurance Common Activities
A typical Software Quality Assurance would include the following activities but not limited to depending on the organization’s structures, standards, and operations models:
- Software Quality Assurance Plan
Creating a Software Quality Assurance Plan is one of the most important tasks to specify how Software Quality Assurance should be implemented throughout the project life cycle. Ensuring the team has the right proficient skill set mix.
- Checkpoints setup
The Software Quality Assurance team has to set out checkpoints for each stage of the project to access to secure quality control and evaluate projects performance at different checkpoints.
- Multi-testing strategy
Relying on one single testing approach is not ideal, as a matter of fact. Maintaining multiple testing approaches should be performed to have the software tested from different angles and aspects, which helps to detect errors earlier on and improve spot on.
Making a fix during a project shall affect the product in one way or another. The team should be able to determine the impact of such changes on the project overall and establish whether or not the change is compatible with the rest of the project.
- Collaboration is the key to unlocking all potentials
This might sound absurd, however, it is necessary to maintain good relations between the QA and other teams involved. Playing politics or developing superior attitudes shall affect the project quality overall. At the end of the day, all teams are heading toward the same goal.
Software Quality Assurance in Action
Software Quality Assurance Planning
Planning is just planning, what is Software Quality Assurance planning different from others? You might ask. Apparently, Software Quality Assurance Planning is rather complicated than it might sound. The Software Quality Assurance Plan includes all the procedures, techniques, and tools that are used to certify the end products/software aligned with the software requirement specification.
The software Quality Assurance plan also determines the QA team’s responsibilities, the Software Quality Assurance work products, what work products are to be reviewed and audited, and the schedule to perform the Software Quality Assurance tasks. Each Software Quality Assurance plan document may be in different formats, however it generally covers the following sections:
- Scope of works & Intention
- Reference Documents
- Software configuration management (Organization, Tasks, Roles & Responsibilities, Resources, Schedule, etc.)
- Standards, Practices, Conventions, and Metrics
- Review & Audits (Technical Review, Management Review, Process Audits, Configuration Audits, etc.)
- Problem reporting and corrective action (Process Audit Report, P/CR, Software Tool Evaluation Report, etc.)
- Tools, Technologies, and Methodologies
- Code control
- Records: Collection, maintenance, and retention
- Risk Management
Developing a Software Quality Assurance plan document is vital to any software development project. There is no skipping or doing it halfway. It acts as a backbone, foundation, and structure for your project. Preventing overlapping tasks, excessive arguments on roles and responsibilities, etc. Outlining all the comprehensive rules and procedures to ensure the highest quality of the products. Helping the organization to effectively allocate testing and financial resources.
Software Quality Assurance Techniques
Various Software Quality Assurance techniques are adopted in Software development, here are a few worth mentioning:
Involving the Software Quality Assurance professionals to inspect whether or not the work products and anything related to them follows the predefined standard processes.
Examining the products by the internal and external stakeholders in a meeting to get approval and seek comments on the products.
- Code Inspection
Formal review concerning static testing to find bugs and avoid them escalating later on in the project. This inspection would not include the original product coders, mainly carried out by trained mediators/peers based on the established rules, checklists, etc.
- Design Inspection
This technique mainly goes over a checklist containing these design areas, such as general requirements and design, functional and Interface specifications, conventions, requirement traceability, structures and interfaces, logic, performance, error handling and recovery, testability, extensibility, coupling, and cohesion.
Integrating real-life conditions into a simulation model to examine the system behaviors virtually.
- Functional Testing
This is a behavioral testing technique where it focuses on a specific functionality without knowing about its structure or design or how it does it. It allows the software quality tester to be in the users’ shoes and think from the users’ point of view.
Making sure everything in the software follows the standards without being ambiguous and guess works.
- Static Analysis
An automated methodology debugs by examining the code without executing it. These automated tools shall scan all the code available to check for vulnerabilities and validate them at the same time.
An informal process known as peer reviews is initiated by the developers to go through all the documents/codes with their peers, acknowledge the status of the code completed, and collect comments, queries, suggestions, etc. regarding the software for better development's sake.
- Path Testing
It is a structural testing technique, conducted to evaluate the code and the internal structure of such software. This often goes side by side with the black box testing or behavioral testing as mentioned above to sufficiently cover the maximum defects.
- Stress Testing
As the name suggests, this technique checks how the system might behave under heavy load /high demand conditions to test out the capacity of the software.
- The Six Sigma
A quality assurance approach strives to achieve 99.76% defect-free software. To go into detail about what six sigma is, we’ll save that for a later blog. Stay alert and watch out for the upcoming blogs!
There are far more Software Quality Assurance techniques than those listed above. Depending on the type of software, project size, and organization model, one may prefer to narrow down the techniques they favor over the others.
Why is Software Quality Assurance important?
As technology evolves in the last decade and the overwhelming introduction of new advanced technologies & innovations, has triggered a change in customer behaviors., leading to significant shifts in seeking complex software testing. In response, Software Quality Assurance is undeniably an important factor in the software development life cycle, a reliable indicator of success in the market and exceeding customer expectations.
An organization needs to have a decent Software Quality Assurance process in place to monitor the consistency of the production process. Many companies have pursued the help of third-party software testing and quality assurance service providers, fully outsourcing to concentrate on the coding itself. SHIFT ASIA is a leading Software Quality Assurance company providing the best test automation, system testing, and other testing solutions as required. For inquiries and questions on our services, contact our support team for assistance.
Software Quality Assurance 101 – The basics
Stay in touch with Us