Conference Presentations

Agile Testing: Uncertainty, Risk, and How It All Works

Teams that succeed with agile methods reliably deliver releasable software at frequent intervals and at a sustainable pace. At the same time, they can readily adapt to the changing needs and requirements of the business. Unfortunately, not all teams are successful in their attempt to transition to agile and, instead, end up with a "frAgile" process. The difference between an agile and a frAgile process is usually in the degree to which the organization embraces the disciplined engineering practices that support agility. Teams that succeed are often the ones adopting specific practices: acceptance test-driven development, automated regression testing, continuous integration, and more. Why do these practices make such a big difference? Elisabeth Hendrickson details essential agile testing practices and explains how they mitigate common project risks related to uncertainty, ambiguity, assumptions, dependencies, and capacity.

Elisabeth Hendrickson, Quality Tree Software, Inc.
You Can't Test Quality into Your Systems

Many organizations refer to their test teams and testers as QA departments and QA engineers. However, because errant systems can damage-even destroy-products and businesses, software quality must be the responsibility of the entire development team and every stakeholder. As the ones who find and report defects, and sometimes carry the “quality assurance” moniker, the test community has a unique opportunity to take up the cause of error prevention as a priority. Jeff Payne paints a picture of team and organization-wide quality assurance that is not the process-wonky, touchy, feely QA of the past that no one respects. Rather, it's tirelessly evaluating the software development artifacts beyond code; it’s measuring robustness, reliability, security, and other attributes that focus on product quality rather than process quality; it’s using risk management to drive business decisions around quality; and more.

Jeffery Payne, Coveros, Inc.
Critical Incidents While Testing in Scrum

Scrum frameworks deliver working code in time-boxed sprints. Many communities find Scrum to be a wonderful balance between discipline and agility because it tames turbulence and focuses teams. However, Scrum requires dramatic rethinking of the traditional role of testing in a development project. Rob Sabourin explores critical testing incidents in Scrum projects-key turning points, difficult decisions, major problems, brilliant successes, and dismal failures. Rob identifies key skills, practices, and techniques used to confidently deliver working code each sprint. Rob shows how testing is implemented by teams in different organizational, business, and technical contexts. His findings raise important questions and identify some novel solutions. Do we really need testers in Scrum? Learn how teams solve tough security, performance, reliability, scalability, usability and regression testing challenges.

Robert Sabourin, Amibug.com
Peer Code Review: An Agile Process

Peer code review is one of the most effective ways to find defects-but is it agile? Because agile teams loathe heavy process, code review practices can easily fail. However, lightweight peer code review aligns well with the central tenets of agile-keeping feedback close to the point of creation, increasing team velocity by finding defects faster, and improving collective code ownership through frequent collaboration. Gregg Sporar shares recent research on code review practices and describes an agile code review approach-how much time to spend, which code to review, how much code to review at a time, how to set goals, the value of annotation, and more. After comparing four styles of code review-pair programming, over-the-shoulder, email, and tool-assisted-Gregg gives specific advice for creating review checklists and dealing with the social effects of code review in an agile environment.

Gregg Sporar, Smart Bear Software
Focused Continuous Testing

Continuous testing is a practice that involves automatically running tests after every program change. Just as modern IDEs provide instant feedback about the code's syntactic correctness, continuous testing gives you instant feedback about the semantic correctness of the code. Continuous testing has a profound impact on the way you use test-driven development (TDD) and continuous integration (CI). TDD provides rapid feedback through the frequent execution of a small set of related tests. CI provides broader feedback on a less frequent basis. Continuous testing combines the immediacy of TDD with the breadth of CI to redefine the experience of developer testing. Rod Coffin describes the history, theory, practice, and daily application of continuous testing, including its application on different platforms, and his ongoing experiences with continuous testing on real-world systems.

Rod Coffin, Improving Enterprises
Source Code Analysis in the Agile World

Agile practitioners know that achieving high velocity in iterations requires a pinpoint focus on code quality. The death of many projects can be traced to an out-of-control defect queue being pushed uphill from one iteration into the next. Source Code Analysis has emerged as an effective technology that plays an integral role in achieving defect-free code within a contained cost and effort. However, the actual benefits achieved are dependent on when and how the technology is applied, and how broadly it is used by team members. Gwyn Fisher describes how developers can make automated code inspection and other related technologies such as regular refactoring and peer review part of their daily routine, resulting in more stable iterations, increased team velocity, and more predictable delivery.

Gwyn Fisher, Klocwork, Inc
Dealing With Defects: The Agile Way

In agile development, software defects are everyone's responsibility. One tenet of agile is that defects should be fixed "as soon as possible" rather than documented as an inventory of "stuff" that doesn't work yet. Janet Gregory examines the sometimes vexing question agile teams have for dealing with a defect-should we "fix it now and forget it," "fix it now and track it," or "record and track it?" She explores why, regardless of which choice is made, you should write a test case to verify the fix is correct. Find out how those test cases can become a valuable record about defect history. Learn ways to track defects in a simple system to help the agile team discover process problems and potential improvement opportunities. By dealing with defects effectively, your team will be able to shift its focus from defect repair toward defect prevention.

Janet Gregory, DragonFire Inc.
Agile Development Practices 2009: Seven Key Factors for Agile Testing Success

Agile development presents unique challenges for testers and test teams. Working in short iterations, often with limited written requirements, agile development teams can leave traditional testers behind. Common testing-related activities-such as user acceptance testing, testing inter-product relationships, and installation testing-require different approaches to work within agile projects. Lisa Crispin presents seven key factors for testing success within agile projects – using a whole team approach, adopting an agile mindset, automating regression testing, collaborating with customers, providing and obtaining feedback, looking at the big picture, and building a foundation of core agile practices. Learn how to overcome cultural and organizational obstacles to successful testing and discover the critical factors for delivering maximum value to your business.

Lisa Crispin, Ultimate Software
Testing Without Constraints: Service Virtualization

While today's distributed software architectures such as SOA, Software-as-a-Service, and Cloud Computing offer organizations increased agility and new reuse opportunities, they also increase the risk of costly software problems due to constant change and increasing complexity. System testing is constrained by dependency on critical services, systems, and data that may be unavailable or too costly to use. A new approach, Service Virtualization (SV), allows test teams to create “virtual worlds” that emulate software behavior and model functional, data, and performance characteristics in the target production environment. Testers can capture, model, and configure target environments while decreasing their need to access production systems and costly "pay as you go" services.

Rajeev Gupta, iTKO Lisa
Automated Test Design: Its Time Has Come

With model-based test design, you first create a high-level functional model of the system to be tested. The model is the input to an automated test generation tool that creates the test designs and associated test scripts. Recently available commercial, automated test generation tools are making automated test generation a practical and powerful alternative to manual test design. Antti Huima discusses the advances in modeling methods, test generation tools, and the implications for test design productivity, quality, and overall test process efficiency. He explains the differences between “modeling for implementation” and “modeling for test” that make model-based test design applicable to both new and existing systems. Antti uses real-world examples to demonstrate automated test design tools and presents the results achieved deploying these tools.

Antti Huima, Conformiq Inc.

Pages

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.