In the past few years, we have a seen a dramatic shift in software development cycles within the IT industry. Most organizations have moved from the traditional Waterfall approach to the Agile approach or choose to have a hybrid model suiting their development and delivery needs. This shift has helped organizations to embrace an iterative approach, have continuous development, and keep testing in each phase to build a more robust product. Instead of the old exemplar, where the testers goal involves finding defects at the end of a lengthy waterfall cycle, the new goals include continuously preventing defects and helping ship products faster. In this post, I will be sharing with you how a Quality Assurance Analyst performs Agile Testing and their role in an Agile team. I am also going to share with you some strategies used to test in an agile environment and that I have found to be successful.
What is agile testing and why is it important?
It is difficult to speak on Agile testing and not sound like that we are speaking about Agile development. They are done in tandem, require continuous interaction with one another and together complete the ideas of agile methodology.
Agile testing is a software testing practice that a QA follows in a dynamic environment where testing requirements keep changing according to client needs. It is done in parallel with development activities where the testing team receives frequent application codes from the development team for testing purposes.
It introduces QA into the project as early as possible to foresee issues, write and execute test cases, and uncover any gaps in requirements. With the project divided into iterative stages, testers are able to add focus to the development process and provide rapid, continuous feedback. As a result, complex issues are prevented or solved quickly. Agile testing also provides more flexibility, quicker releases, increased productivity, and cost efficiency.
What is the role of a QA in an Agile team?
Testing is everyone’s responsibility in Agile. The criterion for quality must be maintained throughout the cycle. While business analysts focus on creating detailed user stories, developers focus on developing quality code, it is the QA’s responsibility to refine the acceptance criteria for each user story, test the completed functionality in each sprint from the client’s perspective, and ensure all previously completed functionality has not regressed. QA roles and responsibility are not only limited to testing in Agile, but it also involves the following:
- QAs work closely with product owners, business analysts and development team to understand the product being developed, who it is intended for and what the product’s success criteria will be.
- They dive deeper into the acceptance criteria created by the business analysts to write test cases, visualize the workflow, create a happy path, test standard items, and conduct negative testing.
- An experienced QA is also keenly aware of the scope of the release and set their test boundaries accordingly.
- Testers must be communicative with the team and ask questions while testing which allows them to identify requirement gaps or get outstanding questions answered. Communication and collaboration with the team is crucial as it helps testing become more accurate and reliable. It also helps produce the required pace to move faster with early testing feedback and increased quality.
- As a member of an agile team, a tester should always be in sync with the project team by attending sprint planning sessions to identify possible problem areas and daily stand-ups to promote collaboration. Attending sprint retrospectives gives an opportunity to identify weaknesses and determine solutions within the team. Attending sprint review or product demo meetings allows the tester to see how the new feature works and gives them the opportunity to ask the developers important questions.
- Documenting test scenarios and test executions with evidence is important for testers but it should be minimal and concise.
What are the strategies that a QA uses to perform Agile Testing?
Every organization has different approaches and strategies that they use to test applications. Agile methodology believes in preparing only enough documentation to support the immediate needs of the team. As such, QAs will prepare just enough high-level documentation for test strategies and plans to guide the team. Below are the few strategies that I follow when preparing to test in Agile:
- Having a set plan before testing begins is extremely important. Plan your time and test cases before you start testing and this will let you dive into testing soon as the application is deployed.
- I use a combination of manual and automation testing. Automated testing helps me speed up my regression tests with pre-build regression suites and manual testing helps me when I must do more focused testing.
- As a tester I always believe in smoke testing the main or basic functionalities as soon as the application is deployed which helps me identify any showstopper bugs sooner rather than later.
- Perform acceptance tests which are derived from acceptance criteria to build a better test coverage. Each acceptance criteria can have one or more acceptance tests and are focused on set conditions.
- Flow efficiency testing helps determine if the users can navigate seamlessly through the product. It helps in identifying if any part of the flow is confusing and helps to determine if you need to add or remove any steps.
- Validation of business rules and data definitions are an important part of testing.
- Doing exploratory testing allows the testers to follow an undefined path and find hidden risks and defects within the application.
- Conducting regression testing is a vital part of agile testing. Regression testing ensures that the tested functionalities are working as expected after new features are introduced.
- Using cross browser testing is extremely important for agile testing, as a tester can quickly test multiple devices and browsers in limited amount of time.
- Having real time messaging apps like Slack and Zoom allows everyone on the team to be connected and quick turnaround for important questions.
What are the Benefits of Agile Testing?
- Agile testing is cost-effective. It saves time and money.
- It reduces documentation.
- It is flexible and highly adaptable, and changes can be implemented quickly.
- When you implement agile testing, the team quickly becomes aware of existing gaps in requirements or technology used, and they can find a workable solution sooner rather than later.
- Continuous communication aids in the ability to get defects resolved quickly.
- Agile testing provides a way for receiving constant feedback from the end user.
- Daily Agile meetings help to determine issues in advance and get a resolution faster.
What are the drawbacks of Agile Testing?
The continuous nature of agile development processes raises a few testing drawbacks as well:
- Even though it is not encouraged in Agile, sometimes there can be change in requirements or stories can be dropped from the sprint which changes the scope of testing.
- Since the documentation is minimal in Agile and projects are fast paced, knowledge transfer can become a big issue when someone who is unfamiliar with the project is added to the team.
- Agile testing will simply not work if there is lack of communication between developers, testers, and product owners.
- Getting all the tests done for the current iteration/sprint is one of the biggest challenges for testers.
Agile testing is unstructured when compared to the waterfall approach, but because of the minimal planning it is suitable for smaller projects. It improves product quality, lowers the risk of bug leakage, and helps development teams to release software in shorter cycles. In agile testing, shippable features of the product are delivered to the clients at the end of an iteration. Frequent releases make client’s happy and increases client satisfaction.
Happy Clients = Happy Organization!