Wednesday, January 04, 2006

QA, QC and Software Testing

Quality Control, Quality Assurance and Testing are important, closely related, yet different concepts. There is a thin line that seperates these three methods of ensuring software quality. But all these three are useful to manage risks of developing and managing software.

Quality Assurance refers to the process used to create the deliverables, and can be performed by a manager, client, or even a third-party reviewer. Examples of quality assurance include process checklists and project audits.Quality Assurance is process oriented. A QA review would focus on the process elements of a project - e.g., "are requirements being defined at the proper level of detail?".

Quality Control refers to quality related activities associated with the creation of project deliverables. Quality control is used to verify that deliverables are of acceptable quality to the client and that they are complete and correct. Examples of quality control activities include deliverable peer reviews and the testing process.Quality Control is Product or Service specific. QC activities focus on finding defects in specific deliverables - e.g., are the defined requirements the right requirements. Testing is one example of a QC activity, but there can be other QC activities such as inspections and reviews.

Software testing is a process used to identify the correctness, completeness and quality of developed computer software. Actually, testing can never establish the correctness of computer software, as this can only be done by formal verification (and only when there is no mistake in the formal verification process). It can only find defects, not prove that there are none. The purpose of testing is to ensure that the users can be confident that their new systems will work as specified. Consequently, testing is being recognised as an increasingly important part of the development process that is essential for success. Hence we see that Software Testing is an example of Quality Control activity. Software Testing is generally done at the code level, and is more technical than managerial.

An Example

Suppose a project manager asked the client to approve the Business Requirements Report. The approval of the Business Requrements Report can be done is two ways.

One solution would be to actually review the document and the business requirements. This is an example of a quality control activity, since it is based on validating the deliverable itself.

Instead, if the client asks the project manager to describe the process used to create the document.A typical process will be like this:
  • Gathering client requirements in a client group meeting.

  • Documenting the requirements and asking the group for their feedback, modifications, etc.

  • Taking the updated requirements to representatives from different groups to add requirements to support company standards.

  • Reviewing the final document with the client
If an approval is made on the basis of the above criteria, then it is an example of QA activity.

Hence, while Quality control activities are focused on the deliverable itself. Quality assurance activities are focused on the process used to create the deliverable. They are both powerful techniques and both must be performed to ensure that the deliverables meet your customers quality requirements.

There may be questions about the amount of QA/QC activities that need to be done in an organization. Also, there may be a conflict between the focus on QC and QA, in organizations. A good balance can be achieved by carrying on the QA/QC activities as mentioned in the below guidelines:
  • While line management should have the primary responsibility for implementing the appropriate QA, QC and testing activities on a project, an external QA function can provide valuable expertise and perspective.

  • The amount of external QA/QC should be a function of the project risk and the process maturity of an organization. As organizations mature, management and staff will implement the proper QA and QC approaches by default. When this happens only minimal external guidance and review are needed.
Hence, we conclude that Quality Assurance and Quality Control are very essential to ensure good quality of software, and need to be included in the default practices in organizations developing software products and services. Software Testing is just a special case of Quality Control, and tries to identify defects in the developed software, before they are delivered to the final end user. The Software Quality Philosophy in the light of QA, QC and Software Testing can be summed up in the following quote by Edward R. Murrow:

To be persuasive we must be believable --- QA
To be believable we must be credible --- QC
To be credible we must be truthful --- Software Testing


Blogger QEdge Trainer said...

Learn Software Testing Tools Online Training From Experienced Trainers.
Software Testing Tools Training Hyderabad

2:50 AM  

Post a Comment

<< Home