HP online study of IT experts speaking to little, medium and substantial endeavors (2017) reports that in PC programming improvement Agile practices essentially exceed cascade approach: 91% versus 9%. Be that as it may, what does it bring to Agile undertaking groups? A need to work quicker with no harm to the nature of the expectations, which requires assessing and enhancing the development of QA forms through the inward or outer review. So why QA process development is so vital and how to manufacture it? We investigate the issue in detail.
Why QA development matters?
A develop QA process ought to completely cover the partner’s needs and guarantee the steady conveyance of a quality item. However, how to ensure the QA procedure is develop? The indication flagging the procedure adolescence are clients’ objections, a typical consequence of postponements and different quality issues in Agile ventures. All in all, in the event that the clients don’t gripe about the item quality, is the QA procedure without a doubt develop? Not by any stretch of the imagination. Imagine a scenario where, sooner or later, a client is miserable with the expectations.
Furious on-the-spot measures may not function admirably, as making sense of what to do will require extra time and just incense the client. This is precisely the point where a develop QA process can spare the day. A develop QA process gives conduct and activity examples to taking care of conceivable task challenges. These obvious arrangements of activities help venture groups to determine issues effectively diminishing the time and negative impacts.
Quality Assurance development is not just about the testing. It is about The Customer, and more specifically about The Customer’s Happiness. Testing is one of the tools that can be used to adjudicate and indirectly improve Quality. In software development, quality assurance refers to a systematic approach that looks at the entire development process to deliver working software but also prevents future mistakes.
Quality assurance is often mistaken with the Quality control in the software development. While working with the different Software Testing Life Cycle, Quality control gains a different aspect and doesn’t work as similar to Quality assurance.
Quality assurance vs. quality control:
Quality control only refers to the functionality of the system. Many software development companies will claim that they guarantee quality control by delivering an application that works, but without any criterion and a deeper QA program, it is difficult to measure how much maintenance the system will need in the future. Quality assurance comprehends both the processes and the quality of the system.. It typically involves a lot more measurements during the development process. In short, a QA process regulates for product quality, process quality, programmer knowledge, and infrastructure suitability.
Why does your software need a quality assurance process?
Research in Motion (RIM), the telecommunications company that pioneered the Blackberry, offers a cautionary incident in this regard. In October 2011, it suffered a 3 days email outage that affected customers across the globe. The cause was a cover malfunctioning of RIM’s backup system and primary system. Although they were able to restore access, it faced some long-term fallout such as lost subscriptions, several lawsuits, and low fame of its brand name’s credibility among the public. They could have avoided all of this damage if they had paid more attention to the quality.
As quality failure brings a huge impact, engineers and developers have created methods of Software Quality Management (SQM). It is a variety of platforms and applications that exist to make software development run more smoothly, lower the chances of defective products, and in general, keeps a sharp eye on system failure from occurring in future.
Better development process
Organizations gain following benefits from quality assurance program:
- Engineers can test source code and identify considerable improvements,
- Testers and software architects use it to assess the functionality of software applications
- Managers can use it to manage software development. During the QA process volumes of measurements are gathered and can be used to generate reader-friendly charts and graphs that show how systems are improving and also signifies where further improvement is needed. Even outside clients and customers can utilize the Quality Assurance process; the system will make it easier for them to verify that your developers are fulfilling their projects’ requirements.
Understanding the quality of a software product while it’s being developed is very beneficial for all the project stakeholders in different ways. Here’s how:
- Higher productivity
By gathering the data of your production processes, it clearly understands what needs to be done and assign each task to the individual who is best qualified to do it.
- Teams that run better
Everyone will get to know what is expected of them and how their efforts fit into the larger scheme. They will have less difficulty working among each other, and it will be easy to track their own progress, determining if anyone’s performance is not up to par, and sharing new ideas and best practices.
- Improved planning
The company will have the hard data that will be needed to clearly assess any given project’s status and to accurately predict its completion time.
What is SQM?
SQM as comprises of different three layers. Software Quality Assurance (QA) is the first layer. QA is an accumulated body of standards, regulations, and best practices that are used to assess its production processes and products on an ongoing basis. The second layer is a software quality plan (SQP) that lays out a set of standards, regulations, and procedures that are to be followed to achieve the project goals and reduce the expected risks. Lastly, there is a software quality control layer, which monitors the developing teams to ensure that they are clinging to QA requirements and the SQP.
A good software quality assurance program will maintain the quality of software products and cultivate a quality culture, in which everyone becomes an active participant in guaranteeing quality in both production and the finished products within the organization.
In a perfect world, the testing group is exceptionally qualified and the entire venture process keeps running as precision. So how does the fantasy testing process functions? We consider its stages beneath.
Stage 1: Requirement Gathering
It is the first phase which starts as soon as the SRS is shared with the testing team. The QA team identifies the scope of system testing at high levels and divides it into various functional modules. The team also identifies the types of testing required to perform different types of tests such as smoke testing, sanity testing, functional testing, regression testing, etc. The QA team analyzes the prerequisites and the environment details where testing is supposed to be performed on the system. The team gathers details about the testing priorities and lays down focus on the sequence of modules to be validated. It also identifies the requirement defects.
Requirement gathering is a process of documenting the links between the requirements and the work products developed to implement and verify those requirements. All of this is delivered at the final results of the life cycle.
The project plan is created at the very beginning of a project as it forms the basis of the project’s scope and deliverables that will be produced. The project plan is bidirectional, as it tracks the requirement forward by examining the output of the deliverables and backward by looking at the business requirement that was specified for a particular feature of the product.
The QA team analyzes the scope of automation of the system for regression testing. If automation is added in scope, the team decides which tool can be used, what functionalities will be covered as automation, the time-frame and the resource allocation involved for automation development. Once this analysis is completed, the QA team provides the Automation Feasibility Report to different stakeholders to provide sign-off.
Stage 2: Planning the Test
Planning the test outlines the strategy that will be used to test an application. It also outlines the resources that will be used, the test environment in which testing will be performed, and the limitations of the testing and the schedule of the testing activities. Generally, the Quality Assurance Team Lead will be responsible for writing a Test Plan.
A Test Plan includes the following.
- Introduction to the Test Plan document.
- List of the test cases included in testing the system.
- List of features to be tested as well as the assumptions.
- The sort of approach to be used while testing the system.
- List of deliverables that need to be tested along with the resources allocated for the testing of the system.
- Any risks involved during the testing process and a track of tasks and milestones to be achieved.
Various aspects of the Phase
Scope of Deliverables
Following activities need to be performed to conclude over the scope of deliverables −
- Identify suitable engagement and delivery model.
- Define test objectives, the scope of testing, testing phases and activities.
Estimation determines how much money, effort, resources, and time it will be required to build a specific system or product. Estimation is based on −
- Past Data/Past Experience in the estimation
- Available Documents/Knowledge of the system
These plans are indirectly and inversely proportional to the time taken by the testing team to complete a particular task. Increasing the number of resources will decrease the number of days of completion for a certain limit after that it will be allocated and increasing the resource will not have much impact and cannot lead to a decrease in the completion days.
- Planning by Project Manager
- Request raised by Project Manager
Entry and Exit Criteria:
- The basic entry criteria of this phase are the provision of Requirement Documents (updated version of unclear/missing/clarified requirements) along with Requirement Traceability Matrix.
- The exit criteria of this phase are the completion of Test Strategy/Test Plan Document and Test effort Estimation document.
Stage 3: Development of test cases
When the Test Plan is ready, the QA Team begins with the test cases development. The main purpose is to prepare test cases for an individual unit.
- The QA team writes the test case with a stepwise approach. The Test Case is then reviewed by a Business Analyst and after reviewing or rework on test cases in case modifications are required.
- Test cases should be linked with the Requirement Traceability Matrix to follow up on coverage of requirements if anything is missed.
Test Scenarios Identification
Scenarios ease the testing and evaluation of the complex system. The following strategies help in creating good scenarios −
- Enumerate possible users, their actions and their objectives.
- Evaluate users with the hacker’s mindset and list possible scenarios of for the system abuse.
Test Case Writing
A test case is a document, which includes test data, preconditions, expected results, and postconditions, developed for a particular test scenario in order to verify compliance against a specific requirement.
Test Data Preparation
Test Data is used to execute the tests on the system. Test data is designed to be precise and exhaustive to uncover the defects. To achieve these objectives, it is followed by a stepwise approach −
- Identify the test resources or requirements
- Identify conditions/functionality to be tested for the system
Activity Block Diagram
The following diagram depicts the different activities that form part of Test Case Development.
Entry and Exit Criteria:
- The entry criteria of this phase are that the activities in test planning should be finished and the test plan should be ready.
- The exit criteria of this phase are that the test cases should be signed off, the test data should be ready and the test scripts prepared if automation is in scope.
Stage 4: Setting up the environment for testing
Test environment configuration must mimic the production environment to uncover any environment/configuration related issues.
It is a combination of hardware and software environment on which the tests will be executed on the system.
- It is the most crucial aspect of the testing process for the system.
- Practically, the QA team cannot start actual work without having the right environment to test the system. It is an independent activity and can be started along with test case development.
- The readiness of the test environment can be validated by smoke testing, and performed by the QA team.
Activities Performed for Test Environment Setup
Design Test Environment
Following factors play an important role in designing of a test environment.
- Determine if the test environment needs archiving in order to make back-ups.
- Verify the network configuration.
Set Up of the Environment
Analyze the software and hardware requirements and get the official confirmation for setup of the test environment and configure to access the test environment.
Once the environment is set up and the QA team has the access to the software, a quick round of smoke testing should be performed for validation of test environment stability. If the results are as expected, the QA team can take a step to the next phase or else point out the differences and wait for deployment after fixes.
Entry and Exit Criteria:
- We can say that the Entry Criteria of this phase is the provision of a Test Plan, the readiness of Smoke Test cases and preparation of test data.
- The exit criteria of this phase are that the test environment should be ready and smoke testing should be performed successfully with expected results.
Stage 5: Test Execution
Test execution is the process of executing the code and comparing the estimated and actual results. Following factors need to be kept in mind for a test execution process −
- Based on a risk, select a subset of the test suite to be executed for this cycle.
- Assign the test cases in each test phase to testers for execution.
- Execute tests, report bugs, and capture test results continuously.
- Report test cycle findings and status.
Activities for Test Execution
System Integration Testing
The real validation of the software starts here. System Integration Testing (SIT) is a black box testing technique that evaluates the compliance of the system against specified requirements and test cases prepared.
System Integration Testing is usually performed on the subset of the system. The testing can be performed with minimum usage of testing tools, verified for the interactions exchanged and the behavior of each data field within an individual layer is also investigated. After the integration, there are three main states of data flow −
- Data state within the integration layer
- Data state within the database layer
- Data state within the Application layer
While performing testing, the QA team finds these types of defects and these need to be reported to the concerned team members.
Once a defect is reported and logged, it should be mapped with the concerned failed/blocked test cases and corresponding requirements in Requirement Traceability Matrix. This mapping is done by the Defect Reporter. It helps to make a proper defect report and analyze the impishness in the product. Once the test cases and requirements are identified with the defect, stakeholders can analyze and take a decision on whether to fix/defer the defect based on priority and severity.
It is an execution of a previously failed test against AUT to check whether the problem is resolved. After a defect has been spotted, re-testing is performed to test the system under the same environmental conditions.
It is a black box testing technique that consists of re-executing those tests that have an impact due to code changes. These tests should be executed as often as possible throughout the software development lifecycle.
Entry and Exit Criteria:
- The entry criteria of this phase are the completion of the Test Plan and the Test Cases Development phase, the test data should also be ready.
- The validation of the Test Environment setup is always recommended through smoke testing before officially entering the test execution.
- The exit criteria require the successful validation of all Test Cases; Defects should be closed or deferred; test case execution and defect summary report should be ready.
Stage 6: Reporting Defects
Defect Life Cycle is also known as Bug Life Cycle which is the journey of a defect, the cycle which a defect goes through during its lifetime. It varies from organization to organization and also from project to project, as it is governed by the software testing process and also depends upon the tools which are being used.
Defect Life Cycle – Workflow
The following diagram depicts the workflow of a Defect Life Cycle.
States of a Defect Life Cycle
- New − Potential defect that is raised and yet has to be validated.
- Assigned − It is against a development team to be addressed.
- Active − The Defect is addressed by the developer and the investigation is under progress. At this stage, there are only two possible outcomes – Deferred or Rejected.
- Test / Fixed / Ready for Retest − The Defect is fixed and ready to test.
- Verified − The Defect that is retested has been verified by QA.
- Closed − The final state of the defect that can be closed after the retesting or can be closed if the defect is duplicate or NOT considered as a defect.
- Reopened − When the defect is NOT fixed, the QA reopens/reactivates the defect.
- Deferred − When a defect cannot be addressed in the particular cycle it is deferred to the future release.
- Rejected − A defect can be rejected for only three reasons – a duplicate defect, NOT a Defect, Non-Reproducible.
Stage 7: Test Closure
A check against the existing test criteria is very essential to claim that the test is now terminated. Before terminating the test process, the product quality has to be measured against the test completion criteria.
Activities involved in the closure of the Test Cycle.
Test Completion Report
It is a process, where the test metrics are reported in designed format to update the stakeholders. This enables them to take an informed decision.
Test Completion Report contains the following information.
- Test Summary Report Identifier
- Summary Results
- Planned vs Actual Efforts
- Sign off
Test Completion Matrix
Upon completion of testing, various matrices should be collected to prepare the reports of the test. The criteria for preparing the reports include the following −
- Number of Tests to be Executed
- Number of Tests Passed
- Number of Test Failed based on each module
- Number of Test Defects elevated during the execution cycle
- Calculating Quality Index of the Build
While executing a test case, re-testing defects and performing regression test case, the test results statement should be saved and can be produced along with the test cycle closure documents to support the completion of test execution.
The articulated segments can be screenshots, database query results, recording, log files, etc.
Entry and Exit Criteria:
The entry criteria of this phase are that the execution of the test case is complete, test results are available and the defects report is ready.
The criteria for test completion includes −
- Specified coverage has been achieved.
- No showstoppers or critical defects
- Very few known medium or low-priority defects. These do not let the usage of the product get affected.
The exit criteria of this phase are the provision of test closure reports and preparation of matrices which are later signed off by the client.
In business and in life, people achieve goals when they determine the steps they need to be taken which is measured by their own step-by-step progress. If the goal is efficiency in operations and software products that satisfy the customers, then a quality assurance program, whether self-owned or one implemented by the provider, is critical to success.
Vikash Kumar working at Tatvasoft, a custom software and software development outsourcing company. From coming technical background He likes to share different topics on development.