As the final installment in this series I will continue on the thread of testing methodologies in Agile environments. Testing is perhaps the most important component of software engineering, particularly when we’re releasing on six-week cycles. As discussed in my last blog, integration is continuous with Agile, so we’re spared the bloody integration points that punctuate waterfall releases. Given the heavy reliance on developer testing in Agile, it becomes extremely important that every developer has everything they need relative to test environments. Here is what to start with:

  • Regardless of whether the need is physical hardware, software tools, or a data center replica, plan for such resources up front and bear the cost.
  • Leverage virtual machines wherever possible. Find a QA or test engineer with demonstrated VM skills and invest in a VM management console.
  • Align QA test engineers very closely with the development team. Seat them in the same pod if possible.

The Achilles heel to testing in an Agile environment is functionality that arrives late in the six-week cycle. We handle this in a couple of different ways:

  1. Functionality that arrives late in the six-week cycle is conditionally enabled. Default = off.
  2. Engineering must own up when a feature or function is not ready. While this is never greeted as good news by sales or product teams, the feature or function will always make the next train.

By now seasoned developers will notice that I have yet to mention automated testing. The reason for this is that automated test development can never really keep up with a six-week development cycle. That said, automated testing is very useful for regression testing, particularly for features and functions which have well-defined APIs and are relatively stable. A continuous thread of test automation development follows along behind the six-week release trains, which frees up QA test engineers to focus exclusively on testing requirements for new functionality.

The true test of when it all comes together is when stable releases become possible on 24 hours notice. Done properly, Agile will get you there.

jpeebles