Key Moments

Agile Testing

Google TalksGoogle Talks
Education5 min read63 min video
Aug 22, 2012|9,021 views|35|5
Save to Pod
TL;DR

Agile testing radically shifts the tester's role from 'last defender' to an integrated team member, emphasizing rapid feedback and waste reduction over traditional, rigid processes.

Key Insights

1

Agile testing demands testers deliver a continuous stream of information, starting testing on 'day one' of a project, unlike traditional models where testing is a late-stage phase.

2

Extreme Programming (XP), a highly disciplined methodology, involves developers writing automated unit tests before any code is written, ensuring a hundred percent automated test suite.

3

Traditional testing practices like strict change management, extensive documentation, and formal entry/exit criteria are considered 'anti-agile' because they resist change.

4

Agile teams aim to increase feedback speed and reduce waste, moving away from formal handoffs and towards collaboration, with everyone on the team responsible for quality.

5

Lightweight test documentation, such as checklists or mind maps, is preferred in agile to minimize waste and facilitate easier maintenance as requirements evolve.

6

On agile projects, developers and testers collaborate on test automation, leveraging testability hooks built by developers for unit tests to improve system-level test automation.

The surprising irrelevance of testers in early agile perceptions

The talk begins by challenging the traditional role of testers. Initially, agile concepts, particularly Extreme Programming (XP), were perceived as potentially making QA professionals irrelevant, with figures like Kent Beck suggesting testers were a throwback to outdated management styles. However, the speaker's personal experience on an XP project revealed the opposite: testers were not only relevant but deeply appreciated. The key takeaway was that agile environments necessitate a fundamental shift in how testing is approached, moving from a gatekeeper role to an integrated, supportive function within the development team.

Traditional vs. Agile Testing: A Clash of Philosophies

Traditional testing operates under a Waterfall-like model, characterized by distinct phases: analysis, design, coding, and finally, a compressed testing and bug-fixing phase before release. This approach leads to testers receiving software late in the cycle, often with tight deadlines and the heavy burden of being the 'last defender of quality.' Practices like strict change management, comprehensive documentation, formal entrance/exit criteria, and tool-centric automation were developed to control chaos in this context. However, these practices are inherently 'anti-agile' because they resist the fundamental agile principle of embracing change. Agile, conversely, emphasizes short iterations, continuous delivery of business value, and requires testers to provide a continuous stream of information from day one.

Extreme Programming: Discipline disguised as flexibility

Extreme Programming (XP) is highlighted as a highly disciplined agile methodology, contrary to the misconception that it's a 'license to hack.' Key XP practices include developers writing automated unit tests *before* writing any production code, ensuring a 100% automated unit test suite that runs continuously. This approach is further supported by continuous integration, which ensures code not only compiles but also functions together. Automated acceptance tests are also developed, serving as executable specifications and requirements. While XP teams tend to de-emphasize documentation due to its overhead, they focus on producing working software with maximum value for minimum cost.

Scrum and Lean: Complementary Agile Frameworks

Beyond XP, other agile methodologies are discussed. Scrum is presented as a project management-focused framework emphasizing visible progress through charts and tracking. While XP's strength lies in its development practices, Scrum provides the project management structure. Many organizations find value in combining XP's development practices with Scrum's project management approach. Lean principles, as applied to software development by figures like Mary Poppendieck, are also mentioned as a way to maximize value and minimize waste, making sense even if software seems distinct from traditional manufacturing.

The tester's evolving role: Supporting the team and customer

In an agile context, testers shift from being the 'last defender' to supporting either the developers in moving the project forward or the customers in verifying software acceptability. The 'customer' in XP has a specific meaning: a single voice representing the needs and accepting the product. Agile testers focus on increasing feedback speed and reducing waste by minimizing unnecessary byproducts, ultimately providing information to reduce risk. This collaborative approach contrasts sharply with traditional models where testers might operate independently.

Embracing change and minimizing planning horizons

Agile's attitude towards change is one of embracing it, rather than managing and controlling it. This necessitates minimizing duplication and planning for maintenance. A key principle is to avoid planning too far ahead, ideally no more than the next iteration, as requirements can change rapidly. Informal planning mechanisms like whiteboards and sticky notes are favored over rigid tools because they are easier to adapt. Test documentation should be kept lightweight, capturing the essence rather than excessive detail, to avoid the waste of unread, unmaintained documents. The goal is for work to be used and valuable.

Reducing handoffs and fostering collaboration

Agile testing emphasizes that the team is a single unit, not a series of independent departments, and everyone shares responsibility for the outcome. The traditional relay-race model with formal handoffs and strict criteria is replaced by collaboration. Even on XP teams, testers must actively guard against reverting to traditional habits and ensure testing tasks are prioritized alongside development tasks. Co-location is beneficial but not sufficient; testers must actively engage with the team to avoid isolation and remain visible contributors.

Rethinking 'signing in blood' and embracing automated testing

Formal sign-offs, often referred to as 'signing in blood,' are critiqued as rituals that foster blame rather than agreement. Agile seeks simpler conversations to achieve acceptance, such as team-wide exploratory testing at the end of iterations or weekly customer demos. Test automation is central, with developers automating unit tests and collaborating with testers on acceptance-level tests. This integration means testability hooks are often built into the code from the start, making automation easier and enabling earlier exploratory testing, even before external interfaces are fully ready. The distinction between tester and developer roles may blur, with the team as a whole being responsible for quality.

Common Questions

Agile testing focuses on delivering continuous streams of information and embracing change, contrasting with traditional testing's emphasis on strict change management and extensive upfront planning. Agile testing prioritizes rapid feedback loops and reducing waste, often integrating testing throughout the development cycle.

Topics

Mentioned in this video

More from GoogleTalksArchive

View all 88 summaries

Ask anything from this episode.

Save it, chat with it, and connect it to Claude or ChatGPT. Get cited answers from the actual content — and build your own knowledge base of every podcast and video you care about.

Get Started Free