Quality Assurance is the effort taken to continuously improve a process to ensure high quality output at the end of it which exceeds customer expectations. The ultimate goal of Quality Assurance is to achieve an ideal process with no rework, no time loss and no wastage.
Software Quality Assurance (SQA)
A typical Software Development Life Cycle (SDLC) has the following stages
SQA ensures timely checks and measurements to identify such issues with a set of reviews, documentation, metrics and testing.
Requirements Gathering
Requirements Analysis
Solution Design and Review
Coding and Unit Testing
Testing
User Acceptance Testing
Release or Deployment
Support or Maintenance
The improvement of the SQLC process requires frequent monitoring, reviewing and measuring the output of the various stages of the SDLC. SQA is an active part of each one of these phases and it is the process of ensuring that at each stage the information received from the preceding stages is accurately used and the information required for the subsequent stages are accurately provided.
SQA works on the principles of "do right first time" and "catch issues early". Do Right First Time is an old manufacturing concept which focuses on ensuring that there is no rework in the process. Catch issues early is an important concept which states that the greater the number of phases lapsed between identifying and fixing of an issue, the greater the cost associated with it.
Hence, SQA ensures timely checks and measurements to identify such issues with a set of reviews, documentation, metrics and testing. All of these checks and measurements are also used for continuous quality improvement of the process and hence the product.
Requirements Gathering: In this phase, customers needs are gathered in a detailed format. Their specific business needs, environment, performance requirement, load requirement, compatibility with other components/software, etc. are captured. SQA for Requirements Gathering involves, defining a standardized template for gathering requirements, created with the input of the Business Analysts, Product Management Team and the software development and testing teams to ensure that all the data required for software analysis, development and testing are captured. Assumptions made during this phase are very critical and should be communicated to all teams and the customer during the review process and should be signed off. Over the course of the project, changes to the requirement / assumptions should be captured as metrics and analyzed to help improve this phase of the SDLC process.
Read More Requirements Analysis: This phase involves reviewing the Requirements document created and analyzing the various approaches to meeting the customer needs. This phase is carried out by domain knowledge experts. An important part of this phase is to gather additional information that might have been missed in the previous phase. The domain knowledge experts are also challenged with looking at other requirements in the same area to see if they can develop a generic solution which is scalable and for the long term. SQA involves ensuring completeness of the requirements and its related areas and the output is a Software Requirement Specification which his actionable.
Solution Design: In this phase, the Software Requirement Specification is used to develop multiple approaches to solving the customer need. The approaches are listed in a Design document with the pros and cons for each. This task is done by the Software Architects. A design review is conducted with the Product Management team (or project stake holder), Architects, Programmers, Testers. SQA involves ensuring that a standardized design document format is created, the design document is created with multiple approaches with pros and cons for each, design reviews happen, all technology challenges are addressed and the design document is signed off by all. SQAalso involves ensuring that allthe organizational design and coding practices for UI, DB, application, technology. Lookandfeelandusabilityareadheredto.
Coding: Coding involves implementation of the design and performing unit testing for all the components of the software. SQA involves code review process to ensure that the implementation matches the design approach picked. The code review also helps in ensuring that deadlines and milestones are met and relevant unit tests are created. SQA includes defining a process for builds to be created regularly, as agreed upon by the programming and testing teams. Successful unit test execution on every single build and user acceptance criteria being met before handover to the testing team are keymetricstrackedinthisphase.
Software Testing: A big part of SQA and continuous improvement is Software Testing. Software Testing is the activity performed to identify issues in the product being developed and measuring them quantitatively. It involves testing the actual application being built to ensure that it satisfies the customer requirements functionally and also in terms of performance, scalability, conformance and environment support. Software testing can be classified into various activities like
Functional Testing
Regression Testing
Platform Testing
Database Testing
Installation Testing
Upgrade Testing
Conformance Testing
Performance Testing
Scalability Testing
Load and Soak Testing
Reliability Testing
Usability Testing
SQA includes the creation of an acceptance criteria for accepting builds and maintaining a standard template for test specification, test case and test metrics creation. Test Specification and Test Case reviews should occur at every stage by testing peers, programmers and architects. All bugs found as a result of tests run should be recorded in the bug tracking system and should follow the bug life cycle. Test metrics to help track test progress and product stability should be maintained throughout the project. Metrics on the amount of time required to resolve issues and the number of times bugs are reopened are maintained as these have direct impact on the cost of a project.
User Acceptance Testing: In this phase, a tested build is given to the customer for User Acceptance Testing. This phase is also called Beta in some organizations. Feedback is solicited from a controlled group of end users. SQA includes maintaining a detailed log of the issues reported from the field, analyzing the issues to classify the bugs and to find the reason why they were missed during testing and adding test cases in the test case documentation to continually improve the test cases.
Deployment or Release is the phase where the software is released to the market or at the customer site. The released software should include all the supporting documentation like installation and upgrade documentation, user manuals, help files, release notes and a readme document. SQA involves ensuring that all the documents are in the correct format with accurate content. It helps to maintain standardized templates for all release documentation.
Maintenance: In this phase all activities related to supporting customers who have purchased the released software are performed. This includes clarifying questions, releasing bug fixes, feature enhancements, certifications etc. SQA involves maintaining a log of all issues received, analyzing the issues raised in the field and testing the fixes released. SQA also includes defining a process to incorporate the bug fix tests into the product regression test cases for continuous improvement.
Even though the discounts and schemes are coinciding with festivals and technology (GPS) etc., these could only be the initial marketing factors. In future, service assurance, quality and convenience will emerge as the long term differentiators between a successful venture and a non-successful one.
Conclusion
Even though the discounts and schemes are coinciding with festivals and technology (GPS) etc., these could only be the initial marketing factors. In future, service assurance, quality and convenience will emerge as the long term differentiators between a successful venture and a non-successful one.
--Raghu Krishnan is the Head of Quality Assurance at Inlogic Bizcom Pvt. Ltd. He has over 11 years of experience in Software Quality Assurance. His expertise include Testing and Test Management, Automation, Process Definition, Continuous Quality Improvement, Metrics based Project Tracking, Agile Development and Team Building. Raghu is a Stanford Certified Project Manager and has a Masters in Industrial Engineering (with Quality Assurance specialization) from Iowa State University.