A Software Manager’s Guide to Defining Testing in an Agile Age
 

A Software Manager’s Guide to Defining Testing in an Agile Age

on

  • 2,773 views

 

Statistics

Views

Total Views
2,773
Views on SlideShare
2,772
Embed Views
1

Actions

Likes
4
Downloads
98
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Laurie Williams, a professor at North Carolina State University, recently conducted a survey to find out which principles and practices are used by agile teams. According to the survey respondents, these five characteristics were widely held to be associated with agile. Let’s take a quick look at each of them.
  • Agile requires fast delivery of working software. To meet this goal, they have to work fast at the beginning. Rather than meticulously planning out all of the business needs, organizing them, and carefully designing out all aspects of the software, they get just enough of the business needs, and do just enough of the design, to code a few features at a time. What makes this work is regular feedback from the users.It’s interesting to note that this approach is the very antithesis of the one promoted by software engineering practitioners over the years. Their mantra was that if you planned long enough and well enough, coding should just be almost a footnote at the end of the process.
  • We can collect all of our metrics, all of our measures of productivity, and keep all of our complex schedules, but ultimately the only measure that counts is working software features. That means that those features deployed are of high quality, and that users are productively using them.
  • Frequent delivery means that there’s not a significant gap in what the users think they need, and are able to try out at least some of it. Depending on the Agile process used, new features may be delivered anywhere from every week to every month. This enables the users to have fast access to critical features, while enabling the project team to get timely feedback.
  • Had to include the Rosie the Riveter poster.What does motivation have to do with it? Motivated people do more than build software. They understand the domain, talk to the users, and make decisions on the fly that benefit the project and software. By giving motivated professionals key roles, you shape the project with their energy and focus on success.
  • We’ve all made poor decisions on projects, through inexperience or lack of good information. We would like to not make such mistakes in the future, by analyzing and learning from those in the past. In an Agile project, most of those mistakes are recent. At least some we realized and had to correct along the way.Agile teams take the time at the end of a project to reflect on what went right and what went wrong. This is similar to some of the lessons learned done at the end of traditional projects, but because these are Agile, the lessons tend to be closer in time.
  • One of the most important topics for any team deciding to adopt an Agile process is the role of testing. Testing in traditional processes is very well-defined; however, the extensive and detailed planning inherent in those processes maps poorly to any Agile process.There’s no one answer to this question, because every project is different. But there are some guidelines that managers and project leaders can use to integrate testing in such a way that testers are equal contributors to the project, and the software produced is of high quality.
  • The first thing to remember is that being Agile doesn’t mean that quality takes a back seat. Quality remains a high priority, and the developers aren’t in a good position to ensure quality, because they are writing the code. This means there is a role for testers, albeit not using the traditional testing processes.Testers have to reinvent those processes, and in doing so reinvent themselves.
  • How can testers reconcile the need for quality but not for extensive test planning? Can we save any part of the planning process?
  • So where should the focus of testers be? Probably the best prescription is to follow the lead of Agile developers – do enough to get you started, then iterate on each phase of the testing process to refine it more as the project progresses.Start with planning – do enough planning to understand the project and user stories. Devise initial testing strategies focused on the first user stories selected. Be ready to participate when developers start coding.Iterate on testing – Don’t expect that you’re going to have comprehensive coverage, at least not right away. Make decisions on the most important aspects of the application for the user, and focus on testing those at first. Over time, if there are hardening iterations or features that depend on other features, you can expand your test coverage.Iterate on quality – Because you won’t have comprehensive testing, your initial efforts at quality will be approximations. Like developers iterate on features, testers also iterate on quality, improving over time.
  • To make the iterative approach work, you have to have testers directly involved at the very beginning. They are members of the team, not professionals who sit to one side in their own world. They need to know the users and the problem domain in order to know what to test and how to test it. And they need to do more than that; they need to get underneath the user story in a way not required of the developers, in order to know how a feature will be used, and what is important to the user.
  • Here’s where testing and Agile come together. Testing remains an important part of the process. But without requirements to analyze and test plans to write, you have to look at what the user says is important. This means studying the user stories, and going back to the product owner and asking questions. You can’t be passive; you have to actively seek out opportunities to learn more about the domain to have more effective testing.
  • That’s right, testers can’t sit back and be passive. That role may work in traditional processes, where testers maintain professional separation from the development process. In Agile, testers have to be an integral part of the developer process. They bridge developers to the users, and take active responsibility for application quality.
  • To take an leadership role, and be involved from the beginning, testers also have to work alongside developers. They need to understand the tactical decisions developers are making while writing code, so that they understand the underlying structure of the application and the reason why it works as it does. This will accelerate the ability to develop tests that focus on those features.
  • You have to automate to test in an Agile process. At first, this may seem to be a contradiction, as Agile processes are intended to be lightweight, but there is no substitute for the speed that selective automation delivers. Further, automation allows testers to collect data to measure aspects of the process. This enables them to iterate on testing and quality, by knowing where to place their future efforts.
  • There are a couple of different aspects to automation. First is automating the process in general. This refers to things like user stories/feature descriptions and bug tracking. The second is testing in particular, like test management and automated functional testing.The key to employing automation in Agile is that you are looking to accelerate repetitive manual processes, so you have to make sure your tools and strategies are lightweight.There needs to be a balance here. The costs of automation, in terms of learning and administration, can’t outweigh the benefits.
  • You can use process automation tools to track user stories and features, the feature backlog, and for defect tracking. While Agile is typically described as using 3 by 5 cards for recording and tracking user stories, in actual projects that just doesn’t cut it. These need to be available to all project participants, and they need to be able to track any changes that have been made to the stories. Once again, you don’t want to make a career out of tracking user stories, but you need to focus on the things the team and the organization need to move forward.
  • Testing automation includes test management, automated functional and regression testing, and load testing. Test management refers to defining tests, tracking test execution, and collecting and analyzing data. Any tests and testing has to be tracked in some way, for efficiency’s sake, but the automation can’t overwhelm the actual testing.Automated functional testing is a challenge, because you typically have to manually execute the test once to automate it. At a minimum, it’s good to automate all tests, even though you may be only re-executing the ones that fail initially.Load testing can be tied with automated functional testing, which is another reason to automate functional tests, so those tests can be used as actions for load testing. Ideally, load testing can be a key indicator of whether to use one or more iterations solely for the purpose of paying down debt of the existing feature set (often called hardening iterations) instead of paying down debt in an iteration that implements new features.
  • Ensure that testers take the lead on the development and execution of functional, regression, and acceptance test cases, and perform these tests throughout Agile sprints, and prior to application deployment. Because Agile tends to blur the line between writing code and testing code, the independence testers bring to the process is essential.
  • Enable testers to work side-by-side with developers as coding decisions are made, both to appropriately reflect the intentions of the user stories and to enable testers to gain insight into development issues that may impact quality.
  • I’ve spent some time on automation here, and I can’t stress enough how important it is to be able to use automation to accelerate activities in an Agile process. One caution – don’t get bogged down in the tool; instead, focus on the goal of speed and efficiency.
  • In sum, testing is essential in Agile projects, and in fact can work well in Agile processes. Application quality is the factor that brings them together. To do so, testers need early involvement and must become partners with both users and developers.

A Software Manager’s Guide to Defining Testing in an Agile Age A Software Manager’s Guide to Defining Testing in an Agile Age Presentation Transcript

  • © 2011 Seapine Software, Inc. All rights reserved.
    A Software Manager’s Guide to Defining Testing in an Agile Age
    A Seapine Software Webinar
    Peter VarholSolutions Evangelist, Seapine Software
  • Agenda
    What Does it Mean to Be Agile?
    Principles of Agile Development
    Integrating Testing into Agile Development
    Testing and Automation
    Making Testing Count with Agile
    Summary and Questions
  • What Does It Mean to Be Agile?
    Satisfy the customer through early and continuous delivery of valuable software
    Working software is the primary measure of progress
    Deliver working software frequently
    Build projects around motivated individuals
    At regular intervals, the team reflects on how to become more effective
  • What Does It Mean to Be Agile?
    Early and continuous delivery of software
    Requirements less formal – user stories
    Iterative development cycle
    One week to one month
    Working software at the end of each
  • What Does It Mean to Be Agile?
    Working software is the primary measure of progress
    User stories translated to features
    Features delivered after each iteration
  • What Does It Mean to Be Agile?
    Deliver working software frequently
    One week to one month
    Timeframe continues to shorten
  • What Does It Mean to Be Agile?
    Build projects around motivated individuals
    Developers, testers, users
  • What Does It Mean to Be Agile?
    Reflect on how to become more effective
    Don’t keep making the same mistakes
  • Integrating Testing into Agile Development
    There’s not one single prescription
    Agile methodologies promote short release cycles
    Every project is unique
  • Assignment: Reinvention
    Quality is a high priority
    But testing can’t plan like it used to
    Needed: a new approach to testing
    Testers have to reinvent themselves and their craft
    A path to value
  • Integrating Testing into Agile Development
    Reinventing testing for Agile
    Testers remain essential to quality
    A long lead time before active testing is infeasible
    How to reconcile test planning with up-front execution
    Can planning be saved?
  • Integrating Testing into Agile Development
    Iterate on planning
    Keep pace with development
    Iterate on testing
    Manage risk so that the most important features and actions are well-tested
    Iterate on quality
    Measure your quality
    Improve it in the next iteration
  • Integrating Testing into Agile Development
    Early involvement by testers
    Testers need to work directly with product owners
    Must understand the user needs
    Get underneath the user story
  • Integrating Testing into Agile Development
    Focus testing on features that make a difference to users
    No requirements to analyze
    No time for comprehensive test plans
    Learn what the users need
    Make sure those features work
    Users sign off, testers validate
  • Integrating Testing into Agile Development
    Ensure that testers take the lead
    Take responsibility for application quality
    Become an interface to the user community
    Work with developers as equal partners
  • Integrating Testing into Agile Development
    Enable testers to work side-by-side with developers
    Testers need to know about tactical development decisions
    This is especially important in Agile projects without formal requirements
  • Integrating Testing into Agile Development
    Make automation an integral part of testing
    Agility and automation work hand in hand
    Accelerate testing to show agility
    Data collection and analysis essential
  • Testing and Automation
    Automate both process and testing
    Agile methodologies are lightweight
    But tools are essential for speed and flexibility
    Tools accelerate repetitive manual processes
    But tool overhead can’t outweigh benefits
    Easy to learn and use
    Provide easily digestibleinformation
  • Testing and Automation
    Process Automation
    User story tracking - Hint: 3 x 5 cards don’t cut it
    Feature backlog
    Defect tracking
  • Testing and Automation
    Testing automation
    Test management
    Automated functional and regression tests
    Automated load testing – valuable for assessing design and coding practices
  • Testing and Automation
    5-minute Demo
  • Making Testing Count with Agile
  • Making Testing Count With Agile
    Ensure that testers take the lead on the building and execution of functional, regression, and acceptance test cases
    Independence from development helps ensure objective evaluation
  • Making Testing Count With Agile
    Enable testers and developers to make coding decisions together
    Helps prioritize testing
    Guide development in decision-making
  • Making Testing Count with Agile
    Automate to achieve speed and efficiency
    Use tools when there is a clear advantage
    Don’t get bogged down with configuring and maintenance
    Focus on the goal
  • Summary
    Agile methodologies and testing work well together
    Quality is the common factor
    Testers need earlier involvement, more interaction with users and developers
    An independent voice of quality
    Automation makes testing feasible
    Repetitive activities are accelerated
  • For More Information
    Seapine Software – www.seapine.com
    “Testing in an Agile Age” Whitepaper http://bit.ly/hiGtkk
    Agile Expedition – www.seapine.com/exploreagile
    The Seapine View - http://blogs.seapine.com/
  • © 2011 Seapine Software, Inc. All rights reserved.
    Thank you