The purpose of this article to share thoughts about software testing activities in the Scrum Agile framework. This article is divided in two main parts. The first part focuses on explaining the Scrum approach, who are the players, how are the plans transformed into actions, key ceremonies and what happens in a Scrum sprint. In the second part, I describe the software testing process followed in Scrum methodology and how it can be integrated within Scrum sprint.
Author: Samuel Maniraj, https://www.linkedin.com/in/s-a-m-u-e-l/
Agile is a popular and very successful software development model to deliver the products quickly into the hands of users with good quality. In an Agile approach like Scrum, high level software requirements or business needs are broken down into smaller units called epics and epics are even further divided into user stories. Each user story has defined acceptance criteria.
In Agile-based software development projects, teamwork matters and there is no concept of “I”. Agile focus on teamwork so “We” like the Scrum team. Agile projects are delivered in the form of sprints. A sprint is a timebox that could be 2 or 4 weeks long. During a Scrum sprint, a usable and potentially releasable software is created. We will discuss in detail the ceremonies that happen during a sprint later.
Agile software development integrates software testing into the development process, rather than keeping it as a separate phase. The team, including the product owner, takes responsibility for analyzing the user stories to define the acceptance criteria for each. The Scrum team’s members define together sprint goals for each sprint. While the development team starts the implementation of user stories, the testing specialists begin work on the test case design and review with product owner for sign off. This ensures that test coverage is as complete as possible. Upon test case review, the testers then begin to validate the developed user stories. The defects found during testing are logged and reviewed with the Scrum team.
“Software Testing is not only about finding defects in an application; it is a process that helps to bring quality from the way we define the software requirements till it goes to the actual users”
“Testing team don’t break software, testing team helps development team to fix the broken software”
“Testing process should explore the unexpected not only look for the expected”
Test automation plays the major role in delivering quality product. Implementing test automation frameworks for functional and regression testing benefits any Agile-based development projects as it brings value in identifying defects in early stages of software development lifecycle. Building the right automated testing framework depends on proper feasibility analysis with product and engineering teams, selecting the right tool and right framework. There will be lot of challenges in identifying, prioritizing and executing business scenarios within the sprint life cycle. The Scrum team should define different flavors of software testing techniques along with different layers for automation to deliver a quality product with in a sprint.
II. Getting Started with Scrum
Build a Team
Scrum is a framework that helps teams to work together and getting work done. Scrum encourages teams to learn through experiences, self-organize while working on a problem, and reflect on their wins and losses to continuously improve. Scrum is structured to help teams naturally adapt to changing conditions and user requirements, with re-prioritization built into the process and short release cycles so your team can constantly learn and improve.
In the Scrum framework, each sprint becomes a project in itself, and at the end of the sprint (which is commonly 2 or 4 weeks), there will be increments that are “done” will be delivered over to the user for implementation. The features that are not done or not accepted will be reviewed and re-prioritized for subsequent sprints.
The first step of the Agile transformation is to form a right team with Agile mindset.
“Being Agile is not about “processes and tools” but about “individuals and interactions”.
“Being Agile is about collaborative and transparent among the team members”.
The three roles in the Scrum framework are the product owner, the scrum master and the development team.
Product Owner: Who translates the user’s needs in the form of stories and works closely with the Scrum team. The product owner plays the major role in defining the epics and user stories. He is also accountable for the success of the team in realizing the project’s goals.
Scrum Master: Who is responsible for removing blockers to the team’s success. He is also responsible for the team to follow Scrum principles and rules. The scrum master works closely with the product owner and the team. He is also responsible for facilitating the daily scrum meetings.
Development Team: The team which does the actual work. They are responsible for finishing the product increments by the end of each sprint. The team is responsible for defining the acceptance criteria for the work to be done in the sprint. Software testers are part of development team.
Build a Product Roadmap
The product owner comes up with a vision along with stakeholders and converts the vision into a product strategy. A product roadmap is a high-level plan that communicates how a product is likely to evolve. The product roadmap typically covers several major releases or product versions to be broken down into sprints.
This is a very important step in the Scrum framework implementation. The product roadmap is done by the product owner, but should also include inputs from various other stakeholders in the project. The roadmap needs to be in place before you start planning out sprints.
An Agile product roadmap must remain flexible to better respond to emerging opportunities. However, it also must still provide clear direction for your team. This direction often appears through prioritization, by drawing a clear picture of what your company feels is the minimum lovable for your team to work on today versus what is likely to be the most valuable in the future.
The product roadmap should support the products’ vision and it should help the product owner to keep the project stakeholders aligned. The roadmap also makes it easier to coordinate the development efforts and it gives transparency in order to deliver business expectations.
The product owner actively works with the stakeholders to create a product backlog that contains requirements that can deliver value and also are prioritized as per the market need. A product owner takes up the ownership of the product backlog. A product backlog usually comprises two kinds of work items:
- Epics – High-level requirements that are very coarsely outlined without much detail.
- Stories – More comprehensive requirements for what should be done.
The product owner creates a high-level plan for the release of working software. Agile projects will have multiple releases, so you want to prioritize the features needed to get you to launch first.
Transforming the plan into Action
The product owner converts all the high level requirements into user stories and sets up the initial product backlog. Once the product owner is all set for sprint planning, He organizes a backlog grooming session to refine and prioritize the user stories for the first sprint.
The product owner and the team plan sprints in which specific tasks and goals will be carried out. A typical sprint lasts between 1–4 weeks and should remain the same length throughout the entire project as this enables teams to plan future work more accurately based on the previous sprints performance.
Sprint planning is a team effort, and therefore the product owner, and all team members should be present to voice their thoughts and concerns. Sprint planning takes place at the start of each sprint cycle.
The key ceremonies in the Agile Scrum framework a listed in the figure below.
III. Agile Testing Process
What happens in a Scrum sprint?
The sprint progress will be tracked through Scrum board on a daily basis. The scrum master organizes a daily stand-up meeting to identify the teams progress and impediments if any. The role of the scrum master is to remove the teams blockers and help the team to move forward to achieve the sprint goals.
The user stories prioritized in the sprint planning session will be ranked and prioritized for the sprints. The development team, including the testers, will have their own deliverables (tasks) created for User story.
Typical Agile Scrum Board has flowing stages,
User stories prioritized during sprint planning will be listed in the sprint backlog (To Do) as per the defined rank. The development team will start working on the development tasks associated to the story. The development teams moves the task to the Doing status once they started coding. After coding and unit testing, stories will be moved to Verify. The stories that don’t meet the acceptance criteria will be moved back to Doing. Stories that have passed testing will be moved to the Done stage after reviewing the acceptance criteria with the product owner.
The diagram below represents of how minimum lovable product is being prioritized, developed, verified and released in a short span of 2 or 4 weeks sprint cycle.
As we have mentioned it before, the testing activities in Agile happen within the development process. Testing should start right from the user story phase. As a team, each user story should have at least an acceptance criteria defined, reviewed and approved. Test scenarios will be derived based on the defined acceptance criteria. These are the main requirements for getting software testing done in the Scrum sprint.
Key Principles in an Agile Testing
- Ask right questions in grooming, Don’t assume.
- Bridge the gap
- Think out of the box, bring value to business through your test scenarios.
- Think and test like a user.
- Explore the unexpected.
- Test in all possible ways – front, middle and back.
- Playback your outcomes to product owner.
- Be transparent on the results, triage effectively.
- Help developers to fix the problems
- Don’t miss any Values
VI. Test Automation within Sprint
Implementing test automation within the Scrum sprint has its own pros and cons. The key part is identifying areas to automate. Automation should go hand in hand with development. You can build different layers of automated testing, focusing on individual components, integration and visual testing. The diagram below presents of how different layers can be implemented and what is the purpose of each layer and what it covers.
Setting Up Test Automation Framework
The key objective is to build a robust and reusable test automation framework that supports continuous integration. The framework should be flexible enough to adapt different Application Under Test [AUT] modules and execute different levels of automated tests that covers functional, API, UI/UX and End to End regression which will greatly reduce manual effort and increase test coverage.
Nowadays in the market, we have low code automation frameworks such as Tosca, Katlon, etc. These tools help us to setup the test framework up and running in less time as this does not involve heavy coding. These are model based test automation frameworks that use recording or inbuilt UI to setup the reusable page objects easily.
If your organization sticks onto open source frameworks, there are still pre-defined frameworks available like Selenide, Geb etc. to quickly setup a test automation framework. Even if they require some coding, they save a considerable amount of time to do initial setup.
How to Achieve Automation within a sprint?
- Identify Tests for Automation
- Collaborate and prioritize
- Take short cuts and use API’s
- Build objects what you need
The software testers work with the product owner to identify the business scenarios and to convert the business scenarios into a testable scenario with acceptance criteria. Each scenario should have test steps and what is expected out of each step. Discuss as a Scrum team and strategize each requirement and identify ways to automate in an easier way ex: using API’s.
Collaborate with product owner to define the priority for each test cases and start working based on priority. Analyze each test scenarios and build page objects what is needed for the test case rather building page objects for all the elements available in the page. Make sure the developers are using unique ids for each page elements that saves time in building Xpath.
The Scrum framework supports a collaborative working model where anyone can share their ideas, opinions to improve the process. Agile is more of a mindset and a culture. There will be many challenges while implementing an Agile approach like Scrum from scratch. Scrum is a framework that brings the benefits of getting product’s feedback in the early stage of the sprint life cycle. Through defined procedures and agile ceremonies and also following the processes as described above during the sprint life cycle and outside the sprint cycle, you can release faster the minimum lovable product into the users hands. Testing and test automation play a major role in developing quality code. Software testing should start right from the beginning. Testing is not about finding defects, it is all about bringing quality in deliverables through defined process and metrics.
About the Author
Samuel Maniraj has 12+ years of experience in software testing and he has been a Lead QA in software development projects using both the Agile and Waterfall approaches. He is passionate about bringing quality in deliverables through defined processes and metrics.