We take every care to ensure that the software we build satisfies our client's requirements. The only way to ensure that is to perform quality assurance throughout the software lifecycle. We typically involve a lead quality engineer in the early phases of a project to participate in requirements elicitation and analysis, to ensure that our quality assurance team understands the business objectives and the detailed requirements. This understanding enables the team to develop a comprehensive quality assurance plan for the project that includes the following elements:
- Test Plan and Test Cases - We develop a complete testing plan based on the requirements. The test plan includes unit, integration and system testing. The test plan includes all the test cases that typically cover functionality, error handling, performance, scalability, and fail over, among other required tests. The test plan and test cases are validated with the client during the early stages of a project, and are refined and enhanced during the downstream activities (detailed design and coding).
- Traceability Matrix - During the software lifecycle we trace the requirements to the design components, to the code modules, and to the test cases. This enables us to track changes to the requirements and to validate the test plan covers all requirements and all design elements.
- Peer reviews of designs and code - Depending on the size and duration of a project, we conduct design and code reviews with architects and engineers from outside the project. These reviews provide an opportunity for valuable feedback and independent perspective.
- Acceptance Plan - At the beginning of each iteration of a project, we develop a detailed acceptance plan that describes all the expected deliverables during or at the end of the iteration. The client signs off on the acceptance plan to indicate agreement on the expected results.
The quality engineers staffed on a project are responsible for implementing, tracking and adjusting the quality assurance plan to make sure that it is completed successfully by the delivery date. They often use test automation tools to help them in conducting the required testing and establishing a complete regression test suite for the product that is as automated as possible.