What testers do in agile?
coders + testersIn a perfect agile team, there are no people called as developers and testers. Entire team contributes to development and testing. So this article is non-existent in a perfect world. But in the real world, where developer (actually coders) and testers were in existence before agile came, this article finds a valid place. Development team does not mean coders. Software development comprises of coding and testing. So till now, we were mistakenly calling the "coder" and "developers". My view is "developers" = "coders" + "testers". So when we say development team in agile, we really mean coders and tester and any other roles which are required to achieve the say do ratio.
In non-agile environment, the role of a tester includes analysis, test case design test case writing, and test case execution. He is involved right from the project initiation stage up to when the project is closed.
However, in agile environment his role primarily is to work as part of a development team, and to ensure that quality is built into a product by working closely with the product owner. This helps the tester get more details out of the story cards. It will be difficult for the development team to meet the acceptance criteria and consider a story "done" if the tester does not engage him/herself with the product owner. The role of a software tester in an Agile environment goes beyond “just testing” and logging bugs.
Change in the mindsetHistorically, testing activities have happened at the end of the coding effort because the tester’s responsibilities included proving the requirements were met, ensuring the software worked, and finding bugs in the mostly finished product.
The Agile Manifesto says to focus on individuals and interactions over processes and tools.
This means that as testers, there is a need to work as members of the team and to engage with others within the team, regardless of titles. If you see a task that needs doing and you have the skills to do that task, then just do it (regardless of the task is of coding, database, GUI or testing).
In agile environment testers are part of the delivery team and should try to be involved from the beginning of the project. Testers should have the ability to “switch hats” and be involved to support and assist the team. In fact, this article should be renamed as "Coders role in agile", because coders are equally confused about their role.
Roles/Tasks/Responsibilities of a tester in agile team (What do testers do in agile team?)
1) Participation in sprint planningThe tester is responsible for providing estimations about data creation, test case writing, test case execution, automation scripting tasks, setting up environments, etc. The tester needs to estimate creation of any complex environments, or any major improvements for the automation framework. Testers point of view should span current sprint as well as next sprint.
2) Making stories "Ready"The tester need to participate in writing acceptance criteria for each story for the next sprint along with the product owner. Alternatively, tester can create acceptance criteria for the user stories for the next sprint and help the product owner to balance his/her workload. The tester can accommodate his thoughts regarding standards, user experience, possible performance issues, and future bugs. This makes the stories "Ready" for next sprint planning.
3) Update acceptance criteriaThe tester can have meetings with the PO in between the sprint and share his observations and reservations about the acceptance criteria (AC) and according to PO comments update the AC.
4) Writing and Executing of test casesTester writes test cases for the user story or the bigger feature, This task includes writing and review of the test cases.Test cases should be executed manually at least once when each user story is done. Manual verification will give us a set of bugs, an idea about limitations and how critical a test case is. On the other hand, this practice will determine the automation candidates for the next sprint. This should include smoke, system, functional, non-functional test cases.
5) Test automationAutomation is the key to make team successful in agile environment. The changes need to be tested quickly and responding to change is the principle. The tester can start automation scripting before coders finish coding for the current sprint. At first, all our tests will fail, but gradually as programmers finish their work, our suite will pass. Automating them is easier than automating user interfaces, and they're easier to maintain as well. Automation can be achieved using tools such as SoapUI, Jmeter, etc.
6) Exploratory testingExploratory testing will find bugs that no automated test will ever find. There is nothing that compares with the tester's creativity, and we should apply this kind of testing once every sprint. It would be better if we document the exploratory testing scenarios once those are done. So that in next sprint these can be automated.
7) Participate in sprint ritualsOnce testers start participating ACTIVELY in all the sprint rituals like demo, retro, planning, the question "What should I do in this scrum team" never arises.
Hiring a tester for agile or scrum teamWhat characteristics you should look for while hiring a tester for your agile team or scrum team? For that matter, not just tester but any team member in agile should have below characteristics. So the same applies to the tester in agile:
Cross-functionalThe team members no longer work as separate teams like development teams and testing teams, instead they are all part of one agile team which helps the them to build a work item end-to-end and they take accountability of the outcome. Your tester should have sufficient knowledge about logic (e.g. while loops, if..then..else, For loops, Switch statements), which will help him to go beyond black box testing.
Self-organizingThe team is self-directed to make own decisions. The team manages themselves to understand each other and is expected to make the right calls at the right time without external command and control from the management. Your tester should re-organize himself/herself to help the team achieve say-do ratio.
Co-locatedThe team is expected to sit together along with Scrum Master and Product Owner. Your tester should be seating with the team.
CollaborativeTesters and developers mingle together to behave as "One" Team without specialization partitions along with the Product Owner and Scrum Master. Your tester must be collaborative in nature.
EmpoweredThe team takes their own operational and technical decisions regarding development and testing looping Scrum Master and Product Owner. The team’s empowerment may be disturbed if the Manager exercises command and control from outside. Your tesrer, when empowered, must have ability to take right decisions at right time creating win-win situations.
CommittedThe teams along with testers are committed to the product quality to satisfy the Product Owner and customer needs. Your tester must show committment and must be able to stretch in difficult situations.
TransparentThe daily status is displayed on the Agile task board and burn down chart. Your tester must know the agile manifesto and must be able to understand metrics in agile. S/he should be able to re-organize based on the metrics' output.
CredibleThere is always a mutual trust and accountability that must be built with the team members and stakeholders. The test strategy must be transparent and filled with integrity. Your tester must be able to contribute to such test strategy.
AdaptiveResponding to change is one of the most important activities that maximize the business value in agile. Your tester must demonstrate adaptive nature while reponding to the changes in requirements.
- The tester with an “agile testing mind-set” is customer-focused, results-oriented, craftsman-like, collaborative, creative, eager to learn, and passionate about delivering business value in a timely manner.
- For the tester in agile, Attitude is important, and it blurs the lines between testers, programmers, and other roles on an agile team.
- Agile testers apply agile values and principles such as feedback, communication, courage, simplicity, enjoyment, and delivering value in order to help the team identify and deliver the customer requirements for each story.
- Agile testers add value to their teams and their organizations with their unique viewpoint while working on the user stories and team-oriented approach.