In this post, I try to bust one of the most common myths in Agile Software Development: “Having a QA (Quality Assurance Tester) in our team is optional, devs can test on their own, right?” 🤷♀️ Well, I think it might be possible in “very special” scenarios but would not be very effective…
In my early years as a dev, I once thought “Why do we need a QA if I as a dev build & test my work but QA just… test?” 🤔 (this was one of the main reasons why this role caught my attention and why I decided to invest and get into that world) a world that has a lot of flavors and what is more important: is more than “try to break things” 😏.
Let me tell you why.
An Agile Development team 💡
Is a group of people that work together to create software that should meet customer needs and expectations. A team that communicates with each other constantly and where everyone is responsible for ensuring the software quality.
Long-story-short in Agile testing 👀✨
As soon as one iteration starts, developers start to code and the QA starts creating the test cases (both of them use the user story acceptance criteria). Once the unit created by the dev gets to the QA hands, he will execute those created test scenarios and perform some exploratory testing (or a regression test which can be automated since test cases may be repetitive) if needed. Also, some user stories may require performance or reliability testing (i.e.: a given test execution can’t exceed a certain limit time or a certain number of operations may fail less than a certain amount of times).
A QA brings their unique perspective to the team and they can transfer testing knowledge to the whole team by closely working with:
- Developers, agreeing on the testing strategy about what would be testable or not. Also, provide test results, communicate potential defects (or even fake ones before reporting them) which helps to mitigate risks by removing defects early.
- Business stakeholders, helping them create acceptance tests and giving them guidance when the UAT starts. Letting them know why their participation is important before releasing the product.
The feedback the team receives in Agile shorts iterations is vital because it contributes to building a valuable product. So, let’s summarize how all team members can provide insights on testing (because when a QA is part of a team, the quality is not only their responsibility):
- in XP (Extreme Programming) best practices include TDD (Test-Driven Development) ATDD (Acceptance-Test-Driven Development) or BDD (behavior-driven development) which can be useful to carry out testing across the different test levels. The benefit here is that these approaches follow the early test execution before writing the code.
- in SCRUM, pair testing is one of the best practices (and one of my forever favs) where two team members get together to perform a test (tester+dev, two testers, tester+product owner).
Another testing approach could be mind mapping which is very useful to describe test data (or when onboarding a new QA in the middle of an ongoing project!).
Now that we are in the context of SCRUM, let’s dig a little deeper here…
As stated in the Scrum Guide:
“Scrum recognizes no titles for Development Team members, regardless of the work being performed by the person”.
So a Scrum Team is a self-organizing team where there would be one or more testers and those testers should “sit together” with devs/designers/scrum master/product owner and be constantly communicating the testing progress and findings so that the team will be able to respond to any changes (which promotes transparency and courage 💗).
Let’s talk about why a QA is important in a team:
- A tester must be committed to question and evaluate the product’s behavior and characteristics against customer expectations by using ISO Quality Standards.
- A good QA tester can make a difference. If you are new in this world, then tap here to start your ISTQB self-study.
- You need to be willing to speak up. Testers should participate from day zero and should not be afraid to ask questions (How would the user feel about this? How can we make the user’s experience better?) communicate defects or even suggest potential improvements to the team.
So, what about the developers’ testing VS QA’s testing? 😐
Testing is more than just running a few tests to ensure that things work. It involves the focus of the application, how the features interact with each other satisfying the business needs. The QA team can’t be isolated in order to achieve their goal. Developers are very busy implementing the best solution to the business situation. So both teams, QAs & devs need to work together to create quality software.
- A strong development team creates and runs unit tests in order to ensure that their developed unit has been built correctly before sending it to QA. Doing this with pair programming, TDD, Code Reviews, and Continuous Integration by providing rapid feedback, isolating, and resolving issues early.
- A QA team ensures that all the isolated units that have been built behave together as expected and meet the business needs and users’ requirements.
Reasons for not having a QA in a team 🤯
As I mentioned at the beginning of this post, there may be some specific cases where a QA might be optional, I personally consider the following ones:
- When incorporating a QA member to your team you should take care of which skills are required for that QA profile. This is because not all the projects will need manual or automated testing only. Some of them will prioritize usability testing or strong performance testing. So be careful which QA profile you are looking for. Without having this into consideration, QA and devs could perceive “noise” and have delays given the high learning curve or having issues to be on the same page.
- I think that testing Big Data in Agile teams is a pretty good challenge because it can be very difficult to fit the testing operations within the short development iterations that typify agile processes, as mentioned in this useful article testers and their innovative skills for testing massively are a critical factor for the business need success. So even when your dev team can handle the quality from their side, you should have a QA in your team BUT you better invest for a good one, a specialist one… a subject matter expert or let the dev team be happy without a QA.
- Hmm, even when there are no testers in a team, you’re gonna have the real testers (customers) when releasing your product. So it’s up to you if you want to gather defects from testers or directly from the end-users mwahaha.
Thank you for reading me! I’m gonna let you here some additional resources of the testing importance in real life because is not only for software! Your car, your iPhone, and the plane we would like to take right now to travel, are tested by QA specialists! 🥰 (and of course, QAs as all human beings make mistakes but it is part of the journey!) 🎉
“The best tester isn’t the one that finds the most bugs, but the one that manages to get the most bugs fixed” – Cem Kaner
About the author
Graduated from Computer Science (made in UCA El Salvador) with 5+ years of agile development background she’s a QA enthusiastic & Agile caretaker. She is currently a Scrum Master in Applaudo Studios.