Saturday, July 9, 2016

Adopting modern ways of testing in the era of agile methodology

As we are moving from traditional waterfall model to agile methodology, with its incremental and evolutionary approach of delivering value to businesses, many more challenges are coming into the picture, for testers.

 Historically, IT organizations were filled with large number of documentation. QA role was only involved at the very end of the project once all coding is complete. On these projects, the QA role was limited to write and execute test cases which verify that the application does exactly what the requirements document says.

However, now the QA role in the modern era is not just about executing test cases and reporting bugs but QA team participate and fulfill a variety of responsibilities conjointly with other team members. They are involved right from the very beginning of a project where they work closely with business analysts and developers.

This article focuses on explaining how the QA role performs agile testing and the place of importance they hold on entire development cycle. However the path to high-performance agile testing isnt that easy or quick. Before adapting the testing process in the agile environment one need to have a look at the below-stated points, which may help them to deal with the changes and challenges coming across the way of development process and understand the areas where we need to work on.

There are many great professionals who share similar views of how development and testing should work and cope up with each other. Here I tried to steer and optimize the building process of intellectual testing culture.

1. Work as a catalyst

Testers should focus primarily on activities that contribute quality software. Ideally, the modern tester should not to perceived as someone who slows down things, but as a catalyst. 
Testers in the past were not aware of the business risk, impact of delay in releasing date etc., which is not good for business. Testers should not put testing in the center of their world, but to let the release be in the focal point and then everything else around comes naturally. 

 2. Focus on context

Although there is no universal formula on how to be an ideal agile tester but one must be familiar with the context of the project as testing and testers role are so context sensitive. Successful agile tester in one company could seriously fail in a different company if they do not synchronize with the new environment. I would say the biggest trap, not only in agile environment, is ignoring the context.

3. Mind mapping instead of large documentation

Mind mapping is a simple technique for drawing information in diagrams, instead of writing it in sentences. It provides a very good overview of quite complex structures in the present scenario of agile development where changes in requirements take place very often. You may quickly scan the mind map and find interesting relations. Also it helps to create/maintain good picture of the process/structure in your head.

4. Build a cross functional team

In the modern era the QA role is not a separate team that tests the application being built. Instead the Scrum team is a cross-functional team where developers, business analysts and QAs all work together. It resembles adding variety of flavors to food in order to serve the perfect one. Having mix is always proven to be the best strategy.

5. Providing acceptance criteria for user stories

One of the primary responsibilities for the QA role is to get involved in writing acceptance criteria for user stories from their testing experience. Based on what the team learns during each sprint.

Developers, who tend to focus mostly on the happy path of the user story, may fail to cover all possible scenarios. Including testers right from the beginning, when user stories are estimated, can help the team think beyond the happy path. This helps the team produce a more realistic estimate since both happy and unhappy paths have been considered.

6. Pairing up with developer

In agile environment, the closer the tester gets to developers, the more exciting the job can get. If a tester acts like we are all on the same side in the team, he or she can strongly influence the processes, pre-coding activities (preventing problems), releasing strategy etc.

The QAs can pair up with developers for writing unit test cases and for discussing acceptance criteria. This results in the clarity of requirements. The increased clarity that results from working together will reduce the questions and doubts developers often encounter during coding time, which produces greater efficiency and a big time savings for developers and testers as well.

7. High degree of automation support required

As the new functionality added in each sprint, the number of test cases will also continue to grow. This increases the total amount of functionality and code to be tested in every sprint, as new code will be added while the old will still need to be regression tested. Simply put, automated tests are the only way to achieve high test coverage in each sprint in order to provide high quality and rapid feedback that we seek when we are working with Agile.

Conclusion

While QAs still write tests and report bugs, they also support many other roles and responsibilities on the team. They hold very important place in the team and are involved in the project right from the very beginning.