Agile methodologies have been around for almost 20 years, but for many organizations, they are not working.  Instead, they are increasing the IT expenditures year over year and slowing the SDLC, not speeding it up.  Most organizations are Wagile – “Wannabe Agile” – failing to achieve Agile even after investing heavily into Agile Coaches, DevOps Partners and implementing the textbook team structure of a Scrum Master, a Product Owner backed by a Development Team.  In our experience, what most are missing is the role QA must play in an Agile environment for the full cultural shift to take place and the holy grail of speed to market to be achieved.

Based on the State of DevOps survey, “Quality is everyone’s responsibility in an Agile – DevOps driven world”. Many may question then why do we need to invest in quality when we have Test-Driven Development? Yes, quality is everyone’s responsibility, and much rework can be avoided by involving experienced QA experts in the process from the beginning – playing a hyper-critical and strategic role in the success of this framework.  While the structure and responsibilities of the QA organization need to change to fit the needs of the Agile world, excluding dedicated QA in the journey is a large cause of the vast number of Wagile companies out there.

The challenges we face

“WannabeAgile”, “Waterfallish”, “Agilish”, or “Almost Agile” are the terms we hear when asked about Agile maturity from most CIO’s and CPO’s.  So, what are the biggest challenges in this dynamic landscape and how can we address them?

  1. Business/Product don’t feel comfortable with the quality of the product and so tend to put the brakes on because they are the ones that take the brunt of the quality issue.
  2. Inability of agile teams to deliver a stable build to deploy on time with ever-changing customer demands.
  3. Inability to achieve accelerated Time to Market (TTM).

The solution? Out with the old, in with the new

The best way to resolve these challenges is by making a tactical cultural shift in Quality Management.  Let go the traditional/Waterfall QA mindset and approach.  Instead, embrace the new structure of QA by installing standardization, governance and alignment across various Scrum Teams (Agile Technical Teams).  

1. Enterprise Grade TDD (Test Driven Development): The top reason for organizations to be stuck in the Wagile phase, is that different development teams produce unsynchronized code in each iteration, making the functionality testable and deployable only after many iterations were developed. The best way to address this is by having the entire enterprise synchronized in a way that will ensure each iteration produces a testable, deployable unit. This is achieved by implementing the following:

  • Assigning a QE architect as part of the grooming team, which will break the functional requirements into separate testable units. This will allow ensuring all SCRUM teams work in tandem, and each iteration produces a unit of code that can be tested and deployed.
  • Combined with the following steps, this will also ensure that not only development produces a testable unit, but the code will be in proper quality and progression automation can be produced in parallel to writing the code.

2. Quality Enabler (QE) in the room (on the scrum): Have a realist – a dedicated Quality Advocate for In-Sprint Testing – as a part of the development team who continuously partners with the Product/Business, Development and Operations teams. They would primarily concentrate on helping the team discuss how they are going to test each feature before they build it, how they will design the code for testability and operability, helping every team member learn some basic testing skills and also concentrating on customer end-to-end experience by validating business processes when systems integrate.

  • The QE plays an active role starting Sprint 0 – Day 1 in writing test cases and building the test suites by reviewing the acceptance criteria of the existing user stories. This would equip them to understand all the dependencies and know the product better.
  • The QE helps resolve unclear requirements, identify hidden assumptions in the acceptance criteria, validate the value add for the features and identify bugs early, which is far less costly than defects discovered in production. These folks – QE’s, coming from a classic testing background, know what to watch out for, how to most effectively catch issues and catch them early.
  • The QE provides valuable feedback during feature release deployments. Hence, they become a Vital Lever – Quality Enabler by collaborating and making sure the highest quality standards are met. This builds a vote of confidence for Business/Product to convert the “Potentially Shippable Product” into a “Shippable Product”.

3. Quality Management Office (QMO): a governance structure to ensure that quality standards are defined and followed across disparate teams. In addition, the central QMO team holds those roles that require economy of scale and do not make sense to assign to each of the projects individually. Speed is enabled by splitting tasks into small bite sizes, while quality and consistency are ensured by central oversight regarding standards and measurement of results.

  • QMO maintains a uniform quality level and set of standards and practices through generations of products and employee changes.  It provides an independent voice for the quality without being handicapped by a conflict of interest when testers are integrated into Agile teams.
  • QMO plays a strategic role in Business/Product discussions and helps them make an informed technical decision regarding risk-reward tradeoffs. This benefits the entire team as they stay focused on completing work in short iterations rather overcommitting and under-delivering.
  • QMO maintains shared services teams that are allocated to projects “Just In Time” per need, to enjoy economy of scale. These teams include security testing, performance testing, environment, test data management etc.
  • QMO establishes a strong community of practice and provides a scalable and flexible parallel structure across various teams.  It also carries on-demand responsibilities of maintaining and executing sanity test suite, regression test suite and E2E automation test suite.

4. Test Automation Strategy for Continuous Delivery: a test strategy that uses a build pipeline to automatically ensure correct functioning and health of applications in production-like scenarios. The frequent changes in the business needs, fueled by a continuous test automation strategy, are closely connected with Agile development practices, continuous delivery and DevOps culture.

  • Leverage “The Test Automation Pyramid” by Mike Cohn to successfully implement a test automation strategy. This strategy includes automated unit, integration – service layer testing (features/components, services and API) – and E2E testing for the entire set of the product line. The strategy comprises of a pragmatic approach while writing tests with different granularity, testing more at the low end of the pyramid and having fewer tests the more high-level you go.
  • Automated testing at each level equips teams to test rigorously after every sprint/iteration/release (on demand) and thus lessen future risks by lowering the chances of failure in production. It also provides better test coverage, detects bugs quicker and diminishes repetitive tasks by cutting down the chances of frequent breakdowns. This would significantly reduce the cost and make up for the investments made into achieving automated testing.
  • If implemented correctly, the test automation strategy enables agile technical teams to adapt for drastically shortened feedback loop and adds greater agility to the entire project. It improves the team velocity in the long run, decreases the testing timelines and helps achieve speedy time to market (TTM) with confidence.

To summarize, to increase the Agile maturity of your organization – establish Enterprise Grade TDD, have a realist in the room – a Quality Enabler (QE) – build a Quality Management Office (QMO) and implement a Test Automation Strategy for Continuous Delivery.  Remove the “W” from “Wagile” and become “Agile” by investing in QA and embracing these changes.