Today we are doing many thing in the name of Agile, the list keeps getting wider and wilder as I communicate with clients during the coaching or training assignments. I reckon nobody wants to get into such mess, the intentions are pure, wanting to do things in better way but the wise thing to do is stop right whenever we catch the anti-pattern. In the words of my physics teacher from 10th standard, anti-pattern for me is “Apply, Apply.. No Reply”, you are doing what you think is right yet can’t seem to see the benefits. And more we are focusing upon scaling Agile up and blowing it to a proportion which can put Waterfall bureaucracy and rigidness to shame, it’s making tinies even worse. But I shall share my views on Agile scaling in another article, here I wish to focus on Agile QA anti-patterns that I come across sometimes in funny and mostly in serious unfunny situations discussing “Agile transformation gone wrong, can you fix it?” kind of assignments that I get to face. Disclaimer: I am also going to recommend few Agile Testing training which I genuinely think can make a difference, how do I know? Because I have seen so, before and after scenarios leading to specific, measurable results. So here it is…
Agile QA Anti-patterns – 1
- Testing team not part of Scrum meetings
- Testing as a phase within Sprint
- Testing efforts not taken into account for estimates
- Creating too many test cases too early
- Manual regression pack taking too long to run
- Definition of Done not clear for testing activities or not being met
- No separation for DoDs at the Task, Story, Sprint and Release levels
- Too much Story-centric testing and missing the System level focus
- Too much Testing Technical Debt
- Relying on “Test Hardening Sprints” to complete pending testing
CP-MAT (Certified Professional – Master Agile Testing)
CP-MAT training deals with these anti-patterns in a practical manner.
During the training you are immersed into the Agile project with multiple sprints and code drops, you learn by doing and undoing from the mistakes of the past. The major take aways are as below:
- Learn to integrate testing into the sprint and avoid doing testing as a phase.
- Refine Acceptance Criteria to generate light weight tests
- Differentiate how old ways of testing may not work in swift moving agile projects
- Learn optimized test design – utmost necessary to reduce defect leakage in a project where time is always a constraint.
- Mind Map Test Design Technique
- Pairwise/Combinatorial Test Design Techniques
- Exploratory Testing
- Increasing agility in finding defects
- Real Agile Project (Multiple Drops, Multiple Sprints)
- Learn to collaborate and evolve test strategy
- Practical Exam to strengthen and evaluate the learnings
Agile QA Anti-patterns – 2
- No Agile Test Automation strategy in place
- No Regression testing strategy in place
- No collaboration among the ”three amigos” (Business, Developers and Testers)
- No refactoring or let’s do it later attitude with no accountability.
- Writing tests before implementing logic, writing flaky tests.
- Testers not involved in systems design process
- Having shallow Acceptance Criteria which has no quality perspective
- Too much focus on GUI test automation (no API testing)
- Ran all tests, found bugs hence my part is done mindset
- Simply taking the requirements and not fully understanding the underlying needs
- No Unit Testing, no goal for test first approach
- Wrong tool selection or using the tool in wrong way
- Creating too rigid, unmaintainable test automation scripts
- Too many tests yet code coverage goal is not achieved (or not tracked)
CP-AAT (Certified Professional – Automation Agile Testing)
CP-AAT training deals with these anti-patterns in a practical manner.
CP-AAT enables to effectively start doing Test Automation in an Agile or DevOps Testing world.
You are given the high level stories (or epics), as the part of an Agile team you develop stories, acceptance criteria and features that will be driven using Cucumber (BDD) or FitNesse (ATDD). As a testers you learn to see the project from the perspective of BAs, Developers and understand the collaborative nature of the entire process. The other major take aways are as below:
- Hands-on BDD, ATDD and TDD
- Practice automation from concept to regression and test hardening iteration using:
- Real Case Study
- Real tools like – Cucumber, FitNesse, Selenium, Jenkins
- Understand the holistic role that automation can play in an Agile projects
- Helps Agile teams fit automation planning, designing and execution as part of agile iterations.
- 3 Amigos (PO+Dev+QA) collaborate and generate BDD scenarios for N+1 sprint
- Review the stories with PO for N+1 sprint and design test cases for given Acceptance Criteria
- Dev does TDD for the current sprint N and refactors based upon the gap analysis from sprint N-1
- Dev and QA collaborate for the steps code for stories from N+1 sprint
- QA executes the features developed in current sprint and runs steps automation code.
- QA analyses the code coverage analysis metrics and plans for N+1
Agile QA Anti-patterns – 3
- We are doing Continuous Integration so we are Agile anyway
- No automated code quality analysis
- No plans for shift-left the Security and Performance Testing
- Testers working on wrong version of code, no build verification
- Test environments are not “productions-like” leading to “works at my machine”
- No unified reporting and dashboards
- No versioning and testing of code from Infrastructure as Code
- No Automated builds, Automated environments, Automated testing and Automated Deployments.
- No automated binary artifacts and documents generation
- No Continuous Integration of Test automation code
CP-DCT (Certified Professional – DevOps Continuous Testing)
CP-DCT training deals with these anti-patterns in a practical manner.
CP-DCT gives hands-on experience to implement Continuous Testing in DevOps delivery pipeline
Right from grooming the stories to going live with application monitoring tests, you do code analysis, code coverage analysis of your tests, integrating the code, CI dashboards and much more. You get the experience and learn the testers pervasive role across the DevOps process pipeline.
- Version Control the Test Artifacts and Scripts. (Git)
- Evaluate and document the Acceptance Criteria in test executable format. (Cucumber)
- Understand the SCM for the system (Gitlab)
- Code quality and code coverage analysis (Cobertura)
- Create Sanity Test packs
- Create Self-service nightly builds (Maven)
- Create delivery pipelines for various test and production environments using containerization (Artifactory, Docker, Ansible)
- Experience the pervasive testing during entire DevOps process from writing user stories to end user deployment (Cucumber)
- Test Automation as side effect of user story refinement (Junit, Selenium)