What is Agile?
Download Gartner's latest software testing research
Agile is a software development methodology focused on rapid, incremental delivery of working software. It's designed to make software development more responsive to rapidly-evolving business needs. The term "Agile" was introduced in 2001, with the publication of the Agile Manifesto.
Agile emphasizes the following 4 values:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
Moreover, Agile advocates following 12 core principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity--the art of maximizing the amount of work not done--is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Waterfall vs Agile
Agile was born as a response to the limitations of the waterfall software development methodology, which dominated the industry for decades:
- Requirements had to be fully-specified from the start, but business requirements often changed before the product was completed.
- Change was costly. It took months to produce a working product. If major changes were needed at that point (because business requirements evolved, major implementation issues were detected during tested, requirements were not properly specified, etc.), it was usually too late to respond.
- Late-discovery of defects was inefficient and risky. Testing was often tacked on at the very end of the process, when the completed application was "thrown over wall" to QA. Defects discovered at this point were extremely costly and time-consuming to fix (see Scott McConnell's famous diagram for details).
Agile: What Testers Need to Know
Agile has proven to have a significant impact on software testers:
- The time available for testing has gone from months or weeks to days.
- Testers no longer get a 100% completed application to test. Multiple "user stories" are being implemented in parallel, and each user story needs to be tested as soon as it's completed.
- Agile development teams like to "fail fast"and want testing performed on each build (as part of the Continuous Integration process).
- Many Agile teams are "cross-functional," so developers and testers are on the same team and collaborate much more closely than they did in the past.
Top Resources on Agile and Software Testing
Here are some resources that are popular with testers who want to learn more about Agile:
- 5 Ways Agile Testing Is Different from Traditional Testing: It’s the distinctions between agile and traditional software development approaches, as well as the adaptability of testers in these very different environments, that makes agile testing different from traditional testing. Agile demands more from its testers, and, in turn, it values them more, too. Let’s look at five main things that make an agile tester’s life different from that of a traditional tester.
- Engineering higher quality through agile testing practices: QA teams are responsible for executing test plans. With agile testing, they can sustainably deliver new features with quality. Learn best practices here.
- Agile Testing: A Practical Guide for Testers and Agile Teams: Two of the industry’s most experienced agile testing practitioners and consultants, Lisa Crispin and Janet Gregory, have teamed up to bring you the definitive answers to these questions and many others. In Agile Testing, Crispin and Gregory define agile testing and illustrate the tester’s role with examples from real agile teams. They teach you how to use the agile testing quadrants to identify what testing is needed, who should do it, and what tools might help. The book chronicles an agile software development iteration from the viewpoint of a tester and explains the seven key success factors of agile testing.
- Test Automation for Agile and DevOps: Trends and Challenges: Learn how to master test automation for Agile and DevOps strategies by watching this on-demand webinar series.
- Agile is All About Change…Why Does Testing Remain the Same? When your organization adopts Agile and DevOps, you recognize that your development processes and infrastructure will need to change. However, one critical change is commonly overlooked. Agile and DevOps also require a testing change towards Continuous Testing—not just automating manual testing, but also optimizing and expanding upon traditional UI test automation. If traditional testing processes aren’t transformed for modern development processes, there’s a high risk that your Agile and DevOps results will fall short of expectations.