With the increasing complexity of software development, more and more companies have started exploring the pros and cons of Agile, and how it can help them deliver software quickly and iteratively. In fact, the definition of Agile development says that it is centered on “delivering customer value product frequently, each time adding or enhancing a small feature”. As a result, this brings in a lot of challenges for every team member in an Agile team, especially testers.
In an Agile project, in contrast to the waterfall model, QA teams can’t wait for the software to get developed first before testing it. With Agile, testers need to be familiar with the requirements of the application and how it will be implemented by the developers. They are closely involved in each sprint and in all stages of software development.
- When the sprint starts, the QA team is involved in requirement analysis, and seeking clarifications on requirements from the client or the Product Owner.
- When developers start developing items for the sprint, the QA team prepares the scenarios to be tested and the test cases for the sprint items.
- Finally, the QA team tests the items for the sprint.
Challenges in QA for Agile Projects
Working as a QA person in an Agile team is challenging. I have handled QA for Agile projects for some time now, and faced the following challenges:
- Changing requirements: Last minute changes in requirements are a very common scenario in an Agile project. But if requirements change towards the end of a sprint when there is no time left, it becomes an overhead.
- One-line user stories: Sometimes the author of the user stories may have some idea of what features are required, but the in-depth details of the requirement are not clear. In such situations, we get a high level user story in the form of a single line. With user stories like this, it becomes challenging for a QA person to cover all the scenarios in test cases.
- Absence of developer comments in a task/user story: When a task or user story is implemented, it is passed over to QA for testing. Here, it becomes very important for the developer to write a note for QA stating what has actually been implemented, along with the deployment details and URLs if applicable. This saves a lot of time and effort for QA.
- Lack of communication: Communication is a very important aspect in an Agile project. Without effective communication, no process can work. At times, due to lack of communication, major issues or bugs are not identified early. For example, code for a specific functionality is updated by the dev team, and this is not communicated to QA. The new code could introduce a bug, and the product may end up going to the client with the bug.
- Frequent regression cycles: As code gets pushed by developers continuously, the likelihood of new code breaking existing features is much higher. To overcome this, testers need to run the regression tests very frequently, which is a time-consuming task.
- Agile becomes waterfall: Most often, testers face this challenge. They wait for stories to come to them for testing, and somehow, all the stories become available only towards the end of the sprint.
How to Overcome These Challenges
Working in such a challenging position has taught me many lessons. Here’s how I overcame the challenges I was facing:
- No doubt the QA person in an Agile project needs to be able to respond to changing requirements, but there are few things that can be of great help. First, the QA person should perform risk analysis and test the highest priority functionalities first. Secondly, automation scripts can help in running regression tests to see if other areas of code are affected.
- QA people need all the minute details of each requirement to start testing. So, start with high level scenarios first, and then approach the test cases. Ask as much questions as you need to, and clear your doubts rather than waiting to get full clarification about the feature.
- In team retrospectives, communicate the importance of dev comments to all team members. If comments are still missing sometimes, keep reminding the developers. In this way, slowly it will become a habit for developers to assign tickets with comments to QA.
- Ensure effective communication with the team. Engage with developers and the product owner on a continuous basis.
- Automation skills can be a great help in an Agile project. Automating regression tests can save you a lot of time. Selenium is the most popular browser automation tool. Jmeter is another tool which is easy to learn.
It’s easy to see that being a QA person, especially in an Agile project, takes a lot of dedication and courage. What have your experiences been like? Share your learnings with us in the comments below.