Before we learn Quality Assurance, let's understand-
Quality is extremely hard to define, and it is simply stated: "Fit for use or purpose." It is all about meeting the needs and expectations of customers with respect to functionality, design, reliability, durability, & price of the product.
Assurance is nothing but a positive declaration on a product or service, which gives confidence. It is certainty of a product or a service, which it will work well. It provides a guarantee that the product will work without any problems as per the expectations or requirements.
Quality Assurance is popularly known as QA Testing, is defined as an activity to ensure that an organization is providing the best possible product or service to customers. QA focuses on improving the processes to deliver Quality Products to the customer. An organization has to ensure, that processes are efficient and effective as per the quality standards defined for software products.
In this tutorial, you will learn-
- What is Quality?
- What is Assurance?
- What is Quality Assurance?
- How to do Quality Assurance: Complete Process
- What is Quality Control?
- Difference between Quality Control and Quality Assurance?
- Differences between SQA and Software Testing
- Best practices for Quality Assurance
- Quality Assurance Functions
- Quality Assurance Certifications
- CMMI level
- Test Maturity Model (TMM)
Quality assurance has a defined cycle called PDCA cycle or Deming cycle. The phases of this cycle are:
These above steps are repeated to ensure that processes followed in the organization are evaluated and improved on a periodic basis. Let's look into the above steps in detail -
- Plan - Organization should plan and establish the process related objectives and determine the processes that are required to deliver a high-Quality end product.
- Do - Development and testing of Processes and also "do" changes in the processes
- Check - Monitoring of processes, modify the processes, and check whether it meets the predetermined objectives
- Act - Implement actions that are necessary to achieve improvements in the processes
An organization must use Quality Assurance to ensure that the product is designed and implemented with correct procedures. This helps reduce problems and errors, in the final product.
Quality control popularly abbreviated as QC. It is a Software Engineering process used to ensure quality in a product or a service. It does not deal with the processes used to create a product; rather it examines the quality of the "end products" and the final outcome.
The main aim of Quality control is to check whether the products meet the specifications and requirements of the customer. If an issue or problem is identified, it needs to be fixed before delivery to the customer.
QC also evaluates people on their quality level skill sets and imparts training and certifications. This evaluation is required for the service based organization and helps provide "perfect" service to the customers.
Sometimes, QC is confused with the QA. Quality control is to examine the product or service and check for the result. Quality assurance is to examine the processes and make changes to the processes which led to the end-product.
Examples of QC and QA activities are as follows:
|Quality Control Activities||Quality Assurance Activities|
|Inspection||Tool Identification and selection|
|Checkpoint review||Training of Quality Standards and Processes|
The above activities are concerned with QA and QC of any product and not essentially software. With respect to software
- QA becomes SQA ( Software Quality Assurance)
- QC becomes Software Testing.
Following table explains on differences between SQA and Software Testing:
|Software Quality Assurance is about engineering process that ensures quality||Software Testing is to test a product for problems before the product goes live|
|Involves activities related to the implementation of processes, procedures, and standards. Example - Audits Training||Involves actives concerning verification of product Example - Review Testing|
|Process focused||Product focused|
|Preventive technique||Corrective technique|
|Proactive measure||Reactive measure|
|The scope of SQA applied to all products that will be created by the organization||The scope of Software Testing applies to a particular product being tested.|
- Create a Robust Testing Environment
- Select release criteria carefully
- Apply automated testing to high-risk areas to save money. It helps to fasten the entire process.
- Allocate Time Appropriately for each process
- It is important to prioritize bugs fixes based on software usage
- Form dedicated security and performance testing team
- Simulate customer accounts similar to a production environment
There are 5 primary Quality Assurance Functions:
- Technology transfer: This function involves getting a product design document as well as trial and error data and its evaluation. The documents are distributed, checked and approved
- Validation: Here validation master plan for the entire system is prepared. Approval of test criteria for validating product and process is set. Resource planning for execution of a validation plan is done.
- Documentation: This function controls the distribution and archiving of documents. Any change in a document is made by adopting the proper change control procedure. Approval of all types of documents.
- Assuring Quality of products
- Quality improvement plans
There are several certifications available in the industry to ensure that Organizations follow Standards Quality Processes. Customers make this as qualifying criteria while selecting a software vendor.
This standard was first established in 1987, and it is related to Quality Management Systems. This helps the organization ensure quality to their customers and other stakeholders. An organization who wishes to be certified as ISO 9000 is audited based on their functions, products, services and their processes. The main objective is to review and verify whether the organization is following the process as expected and check whether existing processes need improvement.
This certification helps -
- Increase the profit of the organization
- Improves Domestic and International trade
- Reduces waste and increase the productivity of the employees
- Provide Excellent customer satisfaction
The Capability Maturity Model Integrated (CMMI) is a process improvement approach developed specially for software process improvement. It is based on the process maturity framework and used as a general aid in business processes in the Software Industry. This model is highly regarded and widely used in Software Development Organizations.
CMMI has 5 levels. An organization is certified at CMMI level 1 to 5 based on the maturity of their Quality Assurance Mechanisms.
- Level 1 - Initial: In this stage the quality environment is unstable. Simply, no processes have been followed or documented
- Level 2 - Repeatable: Some processes are followed which are repeatable. This level ensures processes are followed at the project level.
- Level 3 - Defined: Set of processes are defined and documented at the organizational level. Those defined processes are subject to some degree of improvement.
- Level 4 - Managed: This level uses process metrics and effectively controls the processes that are followed.
- Level 5 - Optimizing: This level focuses on the continuous improvements of the processes through learning & innovation.
This model assesses the maturity of processes in a Testing Environment. Even this model has 5 levels, defined below-
- Level 1 - Initial: There is no quality standard followed for testing processes and only ad-hoc methods are used at this level
- Level 2 - Definition: Defined process. Preparation of test strategy, plans, test cases are done.
- Level 3 - Integration: Testing is carried out throughout the software development lifecycle (SDLC) - which is nothing but integration with the development activities, E.g., V- Model.
- Level 4 - Management and Measurement: Review of requirements and designs takes place at this level and criteria has been set for each level of testing
- Level 5 - Optimization: Many preventive techniques are used for testing processes, and tool support(Automation) is used to improve the testing standards and processes.
Quality Assurance is to check whether the product developed is fit for use. For that, Organization should have processes and standards to be followed which need to be improved on a periodic basis. It concentrates mainly on the quality of product/service that we are providing to the customers during or after implementation of software.