Agile Testing Life Cycle
The agile testing life cycle starts with user story analysis and ends with test closure. Let us look at the testing phases in detail.
User story Analysis: In this phase testing team understands the user stories in terms of testing perspective and identifies the testable requirement. If any requirement is missing or having a conflict with the previous requirement then they will follow up with various stakeholders like Business Analyst, Technical leads, etc. to understand the requirement in detail. The clarifications against the requirement are raised which is also one of the deliverables in the Agile Testing process.
Plan and Estimate: In this phase estimation is provided for the assigned backlog in the sprint (of course after resolving clarifications from stakeholders). The testing approach is defined for the sprint to test the assigned backlogs. Test plan for the sprint is created and the testing schedule is prepared which includes test case creation, execution, and evaluation task is made.
Test Design: In this phase test cases are created for testing the backlogs of the sprint. The test cases created are mapped against the backlogs and are reviewed by SME(Subject Matter Expert). After the SME approval, the test cases are marked as Ready for execution. Test data is created with which the test cases have to be executed. The test environment setup is also done at this phase for the test case execution to take place.
Test Execution: In this phase, the test cases are executed and any defect found, is raised and assigned to the developer who implemented that backlog/feature. The bugs are prioritized based on the impact it has on the product and after the developer fixes the defect, retesting is done. Regression testing of all the affected area is also done at this phase to ensure new development did not break any existing functionality. The test execution report is prepared and shared across the team.
UAT Testing: After the test cases are executed and passed and all the critical and high priority defects are fixed the build is moved to the UAT environment. The initial round of testing is performed by the test lead who validate the UAT build and give approval. The build is then sent to the customer for testing and verifying the implemented backlog. Test Summary report is prepared for the sprint by the test team and shared with all the stakeholders. After getting approval from the client, the build is moved to the production environment.
Test Closure and Retrospection: The meeting is held between testing team members to evaluate the test process and fact-checking is done on ‘What all went good’, ‘what went wrong’, and ‘what all can be improved’ from the current as input to upcoming test cycles.
Agile Testing Pyramid
Testing Pyramid is a framework that helps in creating high-quality software. It helps in reducing the time required to identify the change that has got introduced and resulted in breaking the code. It is also helpful in building a more reliable test suite.
The testing pyramid is also referred to as the test automation pyramid. It suggests the composition of tests that should be included in an automated test suite. It also traces the sequence and frequency of these tests. The main goal is to ensure that code changes do not disrupt existing features.
The test pyramid operates in three layers based on the return on investment (ROI) offered by automating that particular type.
Level 1: Unit Test
This type of Unit test forms a solid foundation for understanding whether a new code is working correctly. The largest part of the pyramid structure typically includes unit testing which represents the idea of testing from user story acceptance criteria to automated tests.
- The majority of the testing is done using automated tests at the unit and story (functional) level. It involves testing small units of code.
- They are the least expensive to write and maintain, and they provide great value to the team.
- It gives us confidence that the product built is right, or the change introduced is right (delivers the requested functionality with high quality).
- When a unit test fails, it is relatively easy to identify what code must be reviewed and fixed
It is expected to run, many scenarios like happy path, edge cases, error handling, etc. from unit tests. It should be written as quickly as possible with the new features introduced. These tests are required to validate each user story and passing them is a key part of the definition of done.
Thus, by the end of sprints, there would be a solid base of new unit tests that are critical to run and verify if the new code is implemented correctly and meets expectations. From the next sprints, these unit tests become regression tests.
Level 2: API/Integration Test
Integration tests are the second layer of the test automation pyramid. The interaction between the two modules forms the basis of the test. Thus, the focus is on validating the interaction of a piece of code with the other code (external components). Here components could be external APIs, databases, dependencies, etc.
Here most of the business logic and processes are tests. These tests can also be automated and ultimately becomes part of the regression suite. Since integration tests involve interaction with external services, they will run slower than unit tests.
Level 3: GUI Test
Considering the fact that it captures the top of the pyramid thus, UI Testing is very small. They are costly, more difficult to prepare, maintain with higher execution time. It more focusses on usability testing. Here only the critical tests, system workflows, transaction messages are automated.
After running the UI tests, manual and exploratory testing can be conducted. It focusses on testing a large variety of user scenarios and workflows. The end to end testing of the software is performed at this stage.