The Agile development methodology, which emphasizes immensely on the active involvement of clients during the development stage of the projects, is being well accepted in the software development industry. Pushing the traditional waterfall process behind, Agile methodology is being lauded for the streamlined approach it brings to a project’s development.
Agile brings a far clearer picture of the requirements to the development team and of development progress to the client or the customer. The different components of Agile like scrum meetings, retrospective meetings, client calls and estimation meetings allows a better understanding of requirements between business analyst (the proxy product owner), the client (actual product owner), developers and the testers.
This communication loop functions much faster in Agile than in the traditional waterfall model. Our previous blog on How Agile Development Methodology Leads to a Foolproof Delivery will explain to you more on this.
But all these advantages at the development and communication end are also coupled with some key challenges at the tester’s end. It is evident that testing is a very important aspect of software development. Being a tester of Waterfall model, switching to Agile can be a daunting experience. But accepting that as a challenge and following different practices to handle these challenges is your way.
The new process includes sprint grooming and seizing meeting. Providing estimations on testing a story was not a regular feature in traditional Waterfall model. Earlier it worked like this: “Give me a specification, I will review it, plan my test strategy and then test it at the end after receiving a build from the development team.” On the contrary, in Agile, there is no large-scale specification provided. The product and its understanding will evolve during the development and the testing approach needs to be modified on a regular basis. This turns out to be a big challenge for the testing team. Likewise, there are some more.
In the current blog, we will identify some of these major challenges for you and also the ways to overcome them to deliver your best.
1. Lack of Descriptive Requirement Specification Documents
There are no big documents to specify the detailed requirements. There are only small pieces of information. These could be notes taken during short meetings or team discussions. The basic requirements come from the client through calls or any document mentioning the basic layout. Here, building a long roadmap for testing the project becomes challenging. As a tester, you need to be highly dependent on the developers to monitor every small progress/ change made in the code.
Attending the story estimation meeting gives more clarity on the complexity of the product. You need to understand the product complexity not as a tester but as a team member. Verifying the requirements gathered by the proxy product owner (business analyst) and building scenarios around it, discussing the risk factor before the development begins, is the right way to handle this challenge. These steps can make the life of a tester easy. This also helps a tester take individual lessons to meet the client’s expectations better, ultimately.
2. Unexpected Last Minute Changes In Requirements
Agile follows an incremental and iterative model. Here, the possibilities of sudden change in requirements from the client’s end remain too high. These unexpected and unscheduled changes may affect the overall development plan and that of the testers too. A change in requirement can be majorly due to two reasons: A. Changes made by client as per his/her business needs or B. Changes made by development team due to some complexity/limitations of the technology used. Accordingly, the old scenarios to test/verify the changing features might not be sufficient (or can eventually become invalid too). In other words, it is a moving target from tester’s point of view.
As a solution to this, you need to try and understand the product from customer’s point of view (or the business point of view). You need to consider all the possible risks and updates that you might come across. A product is always based on some existing technology. Hence, it becomes crucial for you to always keep is mind the basics of that technology. This will help you combat this challenge.
Consider the following example:
In one of our projects based on Agile Methodology, the client wanted the content to be in French, as well. But due to some resource crunch at the Client’s end, the translation (which we were going to receive from Client) remained pending till the day of the release. Receiving the translation at the last moment could have delayed our implementation and leading to a further delay in testing.
But with proper team meetings and discussion with other team members, we came up with an idea. We created a new template for pages and emails in French without using the French language (as we had not received it yet from the Client). We simply prefixed the English content with “FR_”. For instance, for the following text in English – “Login below to access the website”, we ensured that it displayed as “FR_Login below to access the website”, each time a user opted for a change in language. While testing we had to make sure that whenever French content was to be displayed, it showed up with the prefix “FR_”. This helped us perform the testing in a timely manner.
We were through with the testing and simply changed in content of the template later.
3. Limitations In Technical Skills and Automation
In Agile, the test cases need to be updated regularly because the criteria keep on changing as per client’s requirement and based on that code at the backend.So, maintaining the full coverage of test cases remains a big challenge.
It is mandatory for developers to perform the coding by strictly adhering to the criteria specified in the story by Product Owner. So, understanding the criteria in the story with using mutual discussions and then writing the test cases / automation scripts as per that will always help a tester cover maximum scenarios.
4. Communication Gaps
Communication is the most important part of Agile environment. In an environment where all the teams are working simultaneously, miscommunication can lead to an improper understanding of requirements and thereby affecting the development. In traditional Waterfall model, the Business analyst used to draft the SRS and after the development team used to test it. So, for the developers and testers to come on the same page used to be the most time-consuming part. Scrum meeting plays a very important role here. Scrum meeting is a daily activity where every team member has to report following:
- What I did yesterday
- What will I be doing today
- What are the problems faced
Discussing this with team members will always help a tester to understand that what a Product Owner wants a developer to build. Based on that a tester can plan his/her work (test scenarios) and can even discuss with the team the approach to test complex or technical requirements.
5. The Need For Continuous Testing
In Agile, testing is not done in a single phased manner. It is an activity which starts from beginning and continues to the end. In the earlier stage, a tester needs to come up with scenarios that can be risky in future. When stories come to testing, tester has to verify the same. The tester has to not only take care of the current new behavior but also make sure that the old code is not broken (a situation where old functionality stops working due to implementation of new code).
In earlier stage, when a feature is still under discussion, the tester can work closely with the developer to understand the way the feature is going to be implemented. This can help a tester plan the scenarios and also the behaviors that an end user will follow. This helps a tester create smooth test cases. You, as a tester, need to make sure that all the major and critical information has been shared in the acceptance criteria by a business analyst and development team is aware of all the mentioned criteria.
6. Increased Testing Backlog With Every Release
Agile is a methodology where a software company delivers a basic workable product every 3 to 4 weeks and then improves upon the same with continuous implementation of new features. This entails multiple releases. With every new release the scope of testing increases at the end as all the previous released sprints are supposed to be working fine.
An automation script plays an important role here. With the completion of each sprint, you need to keep on creating and updating the automation scripts. In that way, after a new code is implemented on old code, execution of automation scripts will provide the stability report. It helps tester and development team in identifying the areas affected by new deployment and also cuts down on the time consumed in manual verification of the features.
The Agile development methodology leads the way to a foolproof software delivery and increasingly becoming a favourite for companies that focus on client satisfaction the most. Its features like active involvement of the product owner in development cycles and flexibility in adapting to unexpected changes in the requirements (based on changing business needs) are being lauded by the clients worldwide. However, the role of software testers in such projects turns out to be highly challenging. But combating these challenges contribute heavily to the high quality of the final product delivered.