What is Software Quality Assurance?
Software Quality Assurance, as the name says, is a process or a role of a software engineer to make sure there is no concession or slippage occurring in the software application with respect to the requirement provided by the customer. The four phases of Software Quality Assurance are Plan, Do, Check and Act, where Plan is to plan the measures necessary to keep the application standards in high quality, Do is to the development process that involves the build and testing processes, Check is to observe and examine the implementation routes, and Act is to act upon the activities required to maintain the application quality.
Software Quality Assurance Activities
Below given are some of the activities of Software Quality Assurance.
1. Setting the Checkpoint
SQA team sets the checkpoints after specific time intervals in order to check the progress, quality, performance of software, and whether the software quality work is done on time as per the schedule and documents.
2. Measure Change Impact
For a defect reported by QA and fixed by the developer, it is very important to retest the defect fix and to verify whether the fixed defect does not introduce new defects in the working software. For this, test metrics are maintained and observed by managers and developers to check for newly generated defects by the introduction of new functionality or the fix of any defect.
3. Having Multiple Testing Strategy
One should not rely on a single testing approach and strategy for testing software. Multiple testing strategies should be implemented in software so as to test it from different angles and cover all the areas. For an e-commerce website, security testing, performance testing, load testing, database testing all should be done to ensure a better quality of software.
4. Maintaining Records and Reports
It is important to keep all the records and documents of the QA and share them on time to time to stakeholders. Test cases executed, test cycles, defects logged, defects fixed, test cases created, change in requirements from a client for a specific test case, all should be properly documented for future reference.
5. Managing Good Relations
Managing good relations between the testers and developers plays an important role in the project. As the role of developer and tester contradict each other but this should not be taken on a personal level. The main aim of both teams should be the delivery of good quality projects with minimum risks of failure.
6. SQA Management Plan
This includes finding ways how the SQA will work in the new project in the most effective way. Think of SQA strategies, software engineering processes that could be implemented as per the project requirements, and the individual skills of team members.
Components of SQA System
SQA components can be classified into 6 classes:
1. Pre-Project Components
This assures that the commitment of the project has been defined clearly regarding the time estimation, clarification of customer requirements, total budget of the project, evaluation of development risks, total staff required for that particular project. It also assures that development and quality plans have been clearly defined.
2. Software Project Life Cycle Components
This component includes the review, expert opinions, software testing, software maintenance components. In the project development life cycle, it includes components like reviews, expert opinions, and finding defects in software design and programming, whereas in the software maintenance life cycle it includes specializing in maintenance components and development life cycle components for enhancing maintenance tasks.
3. Infrastructure Components for Error Prevention and Improvements
This component includes staff training, certification, configuration management, preventive and corrective measures in order to reduce the rate of errors in software based on the organization’s accumulated SQA experience.
4. Management SQA Components
This class includes software quality metrics, software quality costs, which includes control of maintenance and development activities, and the introduction of managerial involvement in order to reduce the risk of quality, schedule, and budget in the project.
5. Components of Standardization, Certification, and SQA System Assessment
The main objective of this class is the utilization of professional international knowledge, which helps in the coordination between the different organization quality systems at a professional level.
6. Organizing for SQA Human Components
This base includes managers, testers, and other SQA practitioners that are interested in SQA. The main objective is to support and initiate the SQA activities, detect the gaps/deviations in them, and suggest improvements for that.
Software Quality Assurance Standards
Several organizations, national and international institutes are involved in the development of SQA standards. The below mentioned are the main organizations and institutes involved in it :
- IEEE
- DOT
- ISO
- ANSI
- EIA
- IEC
SQA Standards are basically divided into Two Categories:
1. Software Quality Assurance Standard, which is known as Quality Management Standards.
Example: ISO 9000-3, CMM (Capability Maturity Model).
They focus on the organization’s infrastructure, SQA system, requirements leaving the choice of tools and methods of testing to an organization. Their standard objective is “what” to achieve. It assures that organizations achieve an acceptable quality of software.
2. Software Project Development Process standards which are known as Project Process Standards.
Example: ISO/IEC 12207 IEEEStd 1012-1998.
They focus on methodologies that must be implemented in software development and maintenance. It focuses on “how” to perform. It includes design documentation requirements, steps to be taken, software testing to be performed, and design review and review issues.
SQA Techniques
There are several SQA techniques. Some of them are mentioned below:
1. Reviewing
In reviewing, a meeting is held by both internal and external stakeholders to review the whole project who analyses the whole software and if finds an issue, distinguishes whether it is testing, development, requirement or a design The main objective is to measure the quality of software and ensure that whether it meets the customer expectations or not.
2. Auditing
In Auditing, the whole work product and all the data are inspected by stakeholders to check whether it follows the standard processes or not.
3. Functional Testing
In functional testing, the functionality of the whole software is tested whether it is functioning as expected or not. It checks “what the system works” without knowing “how the system works”. It is like the black box testing of an application in which the user knows the expected output without knowing how it is produced.
4. Standardization
It assures that everything in the software should be standardized, i.e. it follows all the standards either the standards in documentation, development, quality control. It reduces ambiguity and hence improves the quality of software.
5. Code Inspection
Code Inspection is one of the most formal kinds of review with the main objective of finding defects in the code and highlighting any issues in the Code Inspection is led by a trained Moderator rather than the Author of the code. Meeting has proper entry and exit criteria. Users must need complete preparation before the meeting in order to have complete knowledge of documents and all before raising their points.
6. Walkthroughs
Software walkthrough is a kind of informal process and usually, it is initiated by the Author to read the document or code and the peer members write down their suggestions or errors in it and submits them. It is not formally documented like Inspection and moderator is not necessary for the meeting. Its main objective is to know the status of code completed to date and collecting suggestions from peers for a better quality of software.
7. Stress Testing
Stress testing is done to check how the system works under heavy load. This testing plays an important role in software quality as in e-commerce applications, stress and load testing are done properly in order to test the capacity of the software (how many maximum numbers of users can access an application at a time).
8. Design Inspection
Design Inspection is done to check the various areas of software using the checklist like functional and interface design, conventions, general requirements and design, requirement traceability, logic, coupling, and cohesion.
Advantages of SQA
Let’s discuss the advantages of SQA.
1. Increases Client’s Confidence
Proper quality check at different levels of software like review, Inspection, Auditing, etc and with the involvement of both internal and external stakeholder increases the confidence of clients in the submission of the Weekly reports of the defect and requirement metrics also helps a lot in assuring the client that the work is being done on time.
2. SQA Saves Money
Defects found in the early stage either in requirement gathering, code, testing are easy and cost-effective to Proper SQA done at several levels helps to reduce those risks as maximum defects have been uncovered and resolved in early stages and hence saves money to fix the faulty software after being presented to the client which can costs company’s reputation, users and clients too.
3. Boost Customer Satisfaction
Timely involvement of the client in software development and testing boost customer satisfaction that the quality software is being developed and as per the requirements and taking of suggestions in between consideration boosts customer satisfaction.
4. Promotes Productivity and Efficiency
When development and testing are done in parallel, defects found early just after the development of a single module is done and fixed by developers timely allows everyone to work in peace and in a more productive manner rather than be burdened with multiple bugs at once after the completion of the whole software.
5. Prevents from Unforeseen Emergencies
When developing corporate software, stakes are also very high. As the software deals with a lot of customer’s sensitive data, it needs to work as expected without any blackouts, corruption, or communication breakdowns. The software should be tested very rigorously so that it should work as expected.
6. Reduces End Time Client Conflicts
There are many cases found of disagreement of client and organizations later on regarding the change in requirements, time and budget fixed in the starting resulting in the cancellation of the project, money loss and bad impression of the company in the market (loss of client as it would create a bad reputation). In SQA everything is fixed at the starting of the project and documented properly without any ambiguity so that no conflicts would arise
Disadvantages of SQA
Let’s discuss the disadvantages of SQA.
1. Sometimes Difficult to Implement
As SQA defines all the activities and actions that should be taken at each step of software development in a very detailed manner, sometimes it becomes difficult to implement every single activity and process in development. So the person knows that it would be beneficial but focussing on each step in detail becomes difficult when working in large teams.
2. Time Consuming
Implementing each action in SQA is very time-consuming and sometimes it wastes more time in documentation and meetings rather than working on the actual development and testing of software.
3. High Cost
Through implementing SQA, though the cost of fixing the bugs in the later stages can be reduced by finding them and fixing in the starting only for the small projects with a low budget it is very difficult to implement SQA as the number of resources increases in the project so does the budget of a project. For small projects hiring the whole team of QA and implementing SQA cause a drastic increase in the cost of a project.
Conclusion
SQA is an umbrella activity that covers the whole project throughout the software lifecycle starting from requirement gathering till maintenance of the project. It covers all the activities and processes at different stages of software development in order to ensure that the software delivered should be of high quality and minimum risk so that it can succeed in the market and meet the customer and client expectations.
Recommended Articles
This is a guide to Software Quality Assurance. Here we discuss the basic concept, activities, components, advantages, and disadvantages of SQA in detail. You can also go through our other suggested articles to learn more –