Risk is an event of uncertainty in projects. There are various testing challenges like proper selection, allocation and simulation of test environment. Often risks surface in determining the effort to cover various test conditions, and the way of sequencing resulting tests that optimizes the effectiveness and efficiency of the testing.
Agile projects embrace less quality risks than the traditional projects, if all the best engineering practices preached in Extreme Programming are put in use. Given the shorter time cycles, some techniques which improve the product quality may be put to use.
In Agile Projects, the quality risk is likely to take place at couple of places. In fact, it is the responsibility of every team member to rise risks in agile. Anyone in agile team can raise a risk during the scrum ceremonies and propose mitigation strategies for the same.
- Release planning: The Product Owner who knows the system functionality end-to-end explain the high level risk he/she foresee and the team assesses them.
- Iteration planning: the whole team goes through every user story and find out the quality risk associated with them.
Few examples of quality risks are:
- No test data or incorrect test data to test specific application (a functional risk related to accuracy)
- Slow system response to user input data (a non-functional risk related to efficiency and response time)
- Screens that with no boundary conditions and business logic (a non-functional risk related to usability and understandability)
In the iteration planning, the estimation of tasks take place in the task board which are prioritized in the order of the quality risks associated by them. Tasks with higher risks priority are one with high priority, need more effort. Similarly tasks with lower risk priority with less effort may be deferred to later part.
Listed below is an example of quality risk process during iteration planning,
- All team members, including testers get into iteration planning meeting.
- The prioritized backlog items are displayed on the task board for the current iteration.
- Considering the quality characteristics, identify the quality risks items with each of them.
- With each identified risk, categorize the level of risk and impact in terms of number of defects that may surface.
- Map the testing effort based on the level of risk
- Based on the level of risk and its quality characteristic, select the appropriate technique to mitigate the risk.
The tester takes appropriate actions to address the risk during the iteration execution, which may include the aggregate number of features, their behaviors; quality attributes that affect customer or end user. The team may be mindful of any additional unknown information related to quality risks that was discovered during the execution and appropriate adjustments are made. Adjustments can also come in the form of new risks that shows up, evaluating and changing the level of existing risks and mitigation activities that support the adjustments.
Quality risks need to be planned for mitigation before the test execution. For example, if problems with the user stories are found during risk identification, the project team can thoroughly review user stories as a mitigating strategy.