In traditional software development projects with clear departments and defined roles, people tend to see their responsibilities as limited to the boundaries of their position.
Siloed teams are not able to see the systemic view of the whole application delivery since:
- they associate themselves with their position (e.g. of tester, developer or analyst) rather than the business goals
- their departments became an invisible boundary and they are not able to see what's happening on the other side.
Siloed departments lose the vast opportunity to help and collaborate with each other and prevent problems and bugs from happening in the first place.
Agile methods break departmental silos and encourage collaboration across cross-functional specializations where developers and testers work together. The mission of an agile team becomes to shape and create products people love and solve their problems in the best possible way.
In this context, agile testing is an approach to build quality in from the start: a principle of lean agile development where everyone on the team contributes towards quality.
If you find yourself in a siloed role or department, here are 3 ways that you can encourage your team to “build quality in” from the start.
Start with a mindset change
While working in an agile team, when cross-functional roles break the boundaries of their department and start working in one team with a common goal of meeting the sprint goal and getting to the end-user as fast as possible to receive the feedback, it affects their dynamics of working together as well.
“A considerable change in an agile team is when the goal of delivering quality software doesn't remain constrained to testers. Instead, the entire team becomes responsible for delivering quality software and everyone collaborates to achieve this goal.”
Another major change is to see testing as an activity rather than a phase. An activity done by everyone on the team and NOT by just designated testers. Instead of throwing the code over the fence to the testers, developers and testers work in tandem to build a defect free product.
Instead of tracking defects, the whole team tries to prevent defects. This leads to the next point.
The tester is no longer the last line of defense
In an agile world, testers are not the last line of defence for quality anymore. Because of this, it doesn’t make sense to call a tester "QA" (Quality Assurance Engineer) as everyone in the team has to assure quality with their individual contributions from day one.
Developers don't just write code anymore and leave the functional checking part to the testers. Apart from writing the required code, developers write automated micro, integration and functional tests as part of their work.
The role of a tester is no longer to find as many defects as they can. Instead of reacting (finding and fixing) bugs, the focus shifts to prevent bugs from happening in the first place.
Let's try to understand this with a scenario.
A developer pushes the code to the repository which creates a potential automated build. This resultant binary of the build is then picked up by a tester. The tester then deploys it on a testing environment, sets up the reference data for testing purposes and eventually finds defects. The tester then communicates the defects to a developer. The developer fixes it and asks a tester to validate it again. Then this whole cycle repeats.
Do you see the problem here? Finding and fixing defects doesn't deliver any business value. It's much better to avoid that from happening in the first place.
That's exactly where the role of a preventive tester comes into place.
Agile tester - a preventative tester
The traditional mindset that testers are solely there to find defects, is obsolete. With agile principles in mind, the goal is to build quality into the code from the beginning, and not just test it later. You don’t focus on finding and putting defects into a tracking system; you avoid creating defects in the first place.
According to Shigeo Shingo, a Japanese industrial engineer specialized in quality control:
“There are two kinds of inspection: inspection after defects occur and inspection to prevent defects. If you really want quality, you don’t inspect after the fact, you control conditions so as not to allow defects in the first place."
Instead of waiting for defects to happen, an agile tester collaborates with developers early in the project, even before writing a single line of code. Testers come up with test scenarios based on the acceptance criteria of the user story and have a discussion with developers who are going to work on that user story.
This conversation is all about having a shared understanding around the test cases between those who are going to work on that user story. During this conversation, developers may suggest some missing test scenarios and also suggest how exactly each test scenario may get automated through micro, integration and functional test cases.
With this conversation, developers now have a shared understanding about the functional correctness and they strive to meet all of the test scenarios through automated tests or otherwise.
In this scenario, by the time the code reaches a tester, all of the test scenarios would ideally already be met and testers should not be able to find even a single defect around those test scenarios. This gives testers time to focus on doing improvements like exploratory testing, system testing, performance testing, and security testing.
Adopt an agile approach to build quality in from the start
If you find yourself in an organization where the focus is on finding defects or rewarding the “defect of the day” it’s time to rethink the focus of testers. Through an agile workflow, quality is no longer the sole responsibility of testers. The focus of testers shifts from defect finding to defect prevention. This way, your entire team works together, even before writing a single line of code.
In an agile team, a tester has a holistic vision of the entire product functionality, and works with the developers towards a shared understanding of functional correctness, and encourages developers to also work towards that quality goal.
Agile Testing with Xray
Did you know that Jira provides the foundation for managing software projects in an Agile way by promoting collaboration, transparency, estimation, commitment and flexibility?