We are delighted to have this expert blog post from Nishi Grover Garg, a Testing Consultant and Agile Trainer for over ten years. Nishi will talk about what we can learn from the Agile manifesto from a testing perspective but equally from a QA one too.
Agile testing leaves very little time for documentation. It relies on quick and innovative test case design rather than elaborate test case documents with detailed steps or results. This mirrors the values of Exploratory Testing. When executed right, it needs only lightweight planning with the focus on fluidity without comprehensive documentation or test cases.
From a QA viewpoint, we can learn from the Agile Manifesto key goals; communication, efficiency, collaboration and flexibility. If you improve your QA team in these areas, it will have a positive effect on your QA strategy and company growth.
The Manifesto for Agile Software Development forms the golden rules for all Agile teams today. It gives us four basic values, which assure Agilists a clearer mindset and success in their Agile testing.
Although these values are mostly associated with Agile development, they equally apply to all phases, roles and people within the Agile framework, including Agile testing. As we know, Agile testers’ lives are different, challenging and quite busy. They have a lot to achieve and contribute within the short Agile sprints or iterations, and are frequently faced with dilemmas about what to do and how to prioritise, add value and contribute more to the team.
The frequent nature of development in Agile teams means the testing methods used need to respond to change quickly and easily. In that way, Agile testing shares some important characteristics with exploratory testing.
Let’s examine the four values of the Agile manifesto to find the answers to an Agile tester’s dilemmas and improve their testing efforts:
1. Individuals and interactions over processes and tools
Agile places a high emphasis on teams, people, communication and interactions over formal processes or preferences for specific tools.
Agile testers will interact with developers, fellow testers, business analysts, the scrum master and product owners during the course of their tasks of the sprint. These interactions are what bring out the most value and agility for the team. They deserve more focus than any formal process that will slow you down or hamper the team’s creativity. On occasion, you will need a particular process or tool to be enforced, but the best way to adopt them is to grant the team the flexibility to decide the best time and how to use them.
For example, when adopting a new test management tool in our Agile project, we knew that the team members had been using Microsoft Excel and were comfortable writing tests in spreadsheets for their first drafts.
So, it was left up to them to:
- use whatever was their preferred method of test creation
- decide when and how to add their tests on to the test management portal
The most important aspect was that we took ownership before release and tracked their status for completion. Keeping it simple helps the most complex tasks to be completed sooner and better.
2. Working software over comprehensive documentation
Agile values working software more than documents, so we always look at ways to keep the documentation lean and ‘just enough’ while concentrating on real value creation.
Agile testing leaves very little time for documentation. The test design and specification process needs to be quick and effective while leaving the maximum time for test execution, exploration and defect finding. So, the focus must be shifted away from having elaborate test case documents with detailed steps or results. Testers may rely on one-liner scenarios acting as test scripts and also use techniques like mind maps, checklists and error guessing for quicker and more innovative test case design.
3. Customer collaboration over contract negotiation
Agile has a business-centric outlook wherein user satisfaction takes precedence over everything else. Agile testers apply the same approach to their practices, constantly looking out for the customer’s best interests and needs. An Agile tester questions everything based on their perceptions of the user’s actual requirements, convenience and satisfaction.
They challenge the:
- Software functionality
- Placement and performance of the feature
- Load conditions
- Usability of the application
- Resource utilisation
The majority of these tenets may not be explicitly defined in the user story being tested, but the Agile tester’s mind is constantly questioning all software attributes, owing to the mindset of collaboration with the user rather than just fulfilling their part of the contract.
4. Responding to change over following a plan
The entire purpose of Agile is centred on changing requirements and having the flexibility to accept and address these changes within the software development lifecycle. Agile testing bears the brunt of this. Testers in Agile teams are constantly burdened by rework, regression overloads and automation challenges, leading to the retesting of the same functionalities over and over again.
Agile testers must be smart enough to accept these changes and bring fresher approaches to their testing strategy by:
- Using more unit-level and API testing
- Relying less on GUI-level tests, so that changes made on the front end don’t impact most of the tests
- Providing behaviour-driven development (BDD) practice and tools that can help translate their requirement user stories directly into automated scripts; this also helps maintain the sanity of the scripts if there are any changes to the requirements
- Creating a robust automation framework and building test suites for acceptance and regression test packs which can help minimise their rework and save valuable time for more creative testing
As an Agile tester or QA leader, you may be constantly faced with dilemmas. At such times, remember to look towards the Agile Manifesto as your guide, and you will receive the answers on how best to align your processes, efforts, time and strategies and achieve your maximum potential.
We hope you enjoyed this guest blog post from Nishi. Check out her blog for more insight into software testing, Agile, DevOps and more!