What is Software Quality Assurance?
Software Quality Assurance (SQA) is a Software Engineering process to ensure that the software product conforms to the specifications and functions as per the design. SQA spans through all the phases of Software Development and through the entire life of the software. Members of the Software Quality Assurance (SQA) team participate in Requirements Analysis, Design, Development, Integration, Testing, Deployment and Maintenance of software. The goal of SQA is to check and improve the quality of the software product. To achieve this SQA is involved in testing the product itself and monitoring the development and maintenance process.
SQA is often mistaken with Software Testing, which is just the process of verifying the correctness of product feature sets or bug fixes. Software Testing is a subset of SQA. Very broadly it is difference between executing a task and owning a part of the project.
Why do we need Software Quality Assurance?
With the growing complexity of software programs, its interaction with different systems and platforms, systematic SQA has become a necessary activity to produce quality software. SQA can no longer be a task performed by an individual banging on his keyboard, but it really is a project activity. Frequent releases also call for frequent test cycles and more and thorough regression testing. Software applications are also no longer programs running on a single machine. Most applications have components distributed over the intranet/internet, relying on remote data stores, network communication, etc. This nature of the applications also results in an increased number of failure points. In many cases, like in the finance, insurance or medical industry, many business rules governing the software applications are dictated by external authorities, changes in these rules require a quick release or patch for the product. These are some of the reasons you need a systematic QA approach, a process that is guided by well documented tasks at different milestones and produces clear results and reports to help judge the quality of the product.
Activities in Software Quality Assurance
Now I will elaborate a little on some SQA activities. At the start of the project, SQA reviews the project documents for clarity and completeness. For example, in the Program Specification Document, SQA points out the need to list features and functions instead of a vague pointer to a similar feature in a different application. SQA also ensures that we have clearly defined exit criteria for each phase.
SQA manages the tree structure and contents for the source code repository. SQA is not performing house-keeping, but defines the location of source code, libraries, build tools, build process, etc. SQA ensures that developers check-in unit tests. SQA verifies the quality of the builds by running automated tests.
SQA insists on the need to document bugs, product modification with great detail. A problem report should consist of clear steps to reproduce the issue.
Activities also include studying various testing tools and picking the right ones for the project. SQA implements automated unit tests (more thorough than the developer’s edition) and automated functional tests to be run as part of the Build Verification or Milestone Verification process. A good addition to these automated tests is to measure Code Coverage of these automated tests. Code Coverage numbers provide a quantifiable way to express software quality and also help in estimating additional testing work.
These are just some SQA activities, but hopefully they give you an idea as to the nature of the tasks in SQA.
The success of a project with active participation from the SQA team is much higher than that of a project with individual testers working on discrete tasks assigned to them a day before the release.