Welcome to EMC Consulting Blogs Sign in | Join | Help

Simon Bennett's Blog

The Three Ages of Scrum for Team System Bugs

The new bug model in Scrum for Team System 3.0 might look obvious at first, but it's taken a long while getting to where it is. Before I start delving into how the new bug model works, it's worth taking some time to describe what came before it.

Almost by coincidence, each of the three major versions of Scrum for Team System have had a different bug model, this represents both an evolution in how teams are becoming more Agile as well as a reflection of how powerful and expressive TFS is becoming as an ALM meta-process platform.

NOTE: It's worth noting that although VSTS itself only gets hierarchical work items with 2010, we've always modelled a pseudo hierarchy with our process template. Some people took to it, others didn't. Everybody however understood with the release of Task Board for Team System however, because that visualised the parent - child relations between the work items. Please keep in mind when I'm talking about 2005 and 2008 that there was always a "conceptual" parent child hierarchy even thou this wasn't explicitly enforced or supported by TFS at the time.

Version One for TFS 2005

The Version One series was our first attempt at a process template and was purely designed for our own in house use (Conchango having discovered Scrum in about 2003 through consultants still with us today such as Howard van Rooijen and Stuart Preston and of course our ex-CTO lately Global Head of Agile Colin Bird).

For Version One, it was decided that developers during the Sprint would either be working on new work (SBI's) or fixing broken existing work (Bug's) - and so it seemed logical to have Bugs as "children" of Product Backlog Items (PBI's)

It looked like this:

Version One Bug Model

And people accepted it readily. Mainly because it mapped to what they were already doing. Testers could raise bugs against PBI's and assign them to developers.

If you wanted to raise an "out of Sprint" bug - for example one raised by a customer, you were supposed to create a new PBI in good Scrum fashion, but because the hierarchy was implied and not actual, a lot of people just used the Bugs as they came.

It's also worth noting that back in 2005, this was a process template in the true sense of the word, some people used it as was (because it was complete), but many people modified before using it on a real project.

 

Version Two for TFS 2008

By 2008 Conchango was pleasantly surprised by the external take up of the template and was keen to produce something for the forthcoming TFS 2008 - and let's just say that Microsoft was enthusiastic for us to do so too!

The Iteration Path was now available for use by 3rd party templates so it felt time to re-address the general implementation of the template.

One of the key areas troubling Colin at the time was that the existing bug model wasn't "very Scrum".  Experience had shown that it encouraged people to raise bugs "in sprint" instead of talking to each other. So he took the existing model and flipped it on it's head.

Taking the Scrum mantra of "bugs are prioritised by the Product Owner along with all other work" to heart he "promoted" bugs to the PBI level and worked out a "Scrum Pattern" for how the team would work on In Sprint bugs.

So we went from the model shown above to the following:

 image

Which resulted in Backlogs that looked like this:

image

So this was great for Product Owners and for bringing into TFS Bug sightings from customers. It also gave projects the much prized single work stream of new features and bug fixes. Finally Scrum for Team System was pure Scrum.

But what were you supposed to do if you found a bug in the middle of a sprint?

This is where the "Ready for Test" state on the SBI (Sprint Task) was born. This state allowed teams to decide which Sprint Tasks were testable and which were not - and thus "self organise" and trust each other to do the right thing (or put more simply, "Do Scrum").

Teams were meant to "iterate" backwards and forwards between In Progress and Ready for Test on their Sprint Tasks until they were at the required quality to be considered releasable as a potentially shippable increment of code. It looked something like this:

image

So this was great for Scrum teams and a nightmare for Scrum-butters.

It wasn't perfect however, although I've worked with many teams who really "got" this way of working, where I personally ran into problems with this approach was when the test resource was off shore and more significantly in a different time zone, or in the dreaded "works on my machine" syndrome. Modern software is complex and often difficult to debug, so I felt the need for a "richer payload" during the Sprint - even sometimes just to remind *Myself* of problems that I'd found, so I could reset my context the next day.

I was feeling the need for the ability to raise a bug in-sprint, but the agilist in me knew it was wrong. I also knew that adding back in an in-Sprint bug type had the real potential to mess up a team's ability to develop good and productive agile practice if their old fall back of raising a bug rather than working together to complete the PBI was sitting in the corner making beckoning motions.

So I started to think...

Version Three for TFS 2010

The bug model you see in 3.0 was in fact originally destined for Version 2.3 however it's implementation is far richer in 2010 and so we've focused on that first. You'll see 3.0 come out into production before you see 2.3 released (unless we hear some demand for us to do otherwise)

Shortly after the launch of 2.2 was when I started to get fully Test Obsessed and becoming a hard task master about always always always having Acceptance Tests on Backlog Items, especially those utilising User Stories. The payoff for this discipline was amazingly good, and so I began on a quest to add a new Work Item Type to Scrum for Team System - the Acceptance Test.

Previously, Backlog Items in Scrum for Team System had a free form plain text field for "Conditions of Acceptance" - which was a nod to Mike Cohn's "Conditions of Satisfaction" which was his attempt to make the term "Acceptance Tests" more palatable to those business types who woke up one morning to find themselves as Product Owners. So technically we had it covered.

The problem was, that it was a bit invisible and you couldn't really do anything with it. I wanted something stronger; something I could report on, something I could see and something that I could have red and green flashing lights on to let me know what was going on. Nothing but a WIT was going to cut it.

In my mind and on my prototype, In-Sprint Bugs then became "Failures" which was something an Acceptance Test could have, and it was good. (But not released)

At about this time I went to PDC 2008 in Los Angeles as a guest presenter with Lori Lamkin and Sunder Raman from Microsoft (there is a video on Channel 9 if you look hard enough) - on Agile Software development - and I saw TFS 2010 for the first time.

So from that point it became clear, Product Backlog Items were to be "tested by" Acceptance Tests and Acceptance Tests were to be "failed by" Bugs.

Using TFS 2010 named linkages we get the following:

image

So why Bug Report?

If you've stuck with me this far the answer should hopefully be obvious. In Version One, Bugs were Sprint Backlog level Work, you could assign hours to them and burn them down. In Version Two, they were Product Backlog Level Work, you could story point them, assign Sprint Tasks to them which could then burn down. But in Version Three, they're just Bug Reports - they optimised to let you capture all the information about a Bug, but you can't "do" them, like you used be able to "do" both previous "bug" types, it's for this reason that we now refer to them as "Bug Reports" (even if your copy of Beta 1 says, "Bug" for which I apologise!)

I'll explain more on how to actually use the 3.0 QA system in the next post.

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

DP_Scrum said:

Thank you for the Post explaining the progression of Bugs in the 3 versions.

We are currently using TFS 2008 & had a query on Bugs being on the same level as PBIs? How would TFS track Bugs associated with a PBI as we did in TFS 2005 & also roll up the hours from SBI - Tasks & SBI - Bugs that relate to the same Product Feature? Consequently, PBI can be marked as done even if there are bugs not fixed under the functionality. Is this by design?

October 29, 2009 11:20
 

Jon said:

Did you ever get to the post to "explain more on how to actually use the 3.0 QA system"?

April 19, 2010 18:50
 

TLI said:

We've actually been just fine with Version 2 of Bugs in TFS WITH ONE EXCEPTION.  We are oftentimes charged with resolution of a Bug in multiple versions of the software and there is no good way to both manage and track this.  

When a parent Bug is assigned to an Iteration Path (usually the latest version of the software currently in Development), I've assigned SBI(s) that work is conducted against within the same Iteration Path.  However, I also create SBI(s) against a different (older) version of the software (via a different Iteration Path) to account for the same Bug being addressed in other versions.  This is cumbersome and requires manually rolling up SBI --> Bug research in order to manage and track all the versions that a specific Bug has been addressed in.  Reporting simply doesn't work.  

Any plans to either let Bugs be assigned to multiple Iteration Paths or is there a smarter way to do this that you can help me out with?  The ability to copy and link Bugs each other within a true parent-child relationship could possibly help but the reporting needs to be there.

Thanks in advance (and keep up the good work - Agile and Scrum are the way to go!!).

--todd

April 19, 2010 21:11
 

simon.bennett said:

Hi Jon,

Most of the "How to QA" stuff will actually find it's way into the Guidance for Version 3. But since we support MTM, and MTM doesn't really allow for a great deal of customisation by the template, the concepts are not really that far off - however we use some different terminology than does MSF Agile and MSF CMMI.

Kind Regards,

Simon

April 21, 2010 17:09
 

mo said:

i'm new to agile and the org I work in is really a mess. I've been charged with cleaning them up but they like everything broken down to the enth degree and well, I work long hours to make it happen.  I'm learning loads from your site but recommend sticking with the VS 2008 for TFS as there are still a lot of issues with 2010 that if you have internal tools that you utilize will have to be re-coded IF possible to work with 2010.  My insider advice - is don't go bleeding edge on this one if you track everything in TFS.

Back to my hunt for burn down and glide path charts...:)

May 10, 2010 00:07

Leave a Comment

(required) 
(optional)
(required) 
Submit

About simon.bennett

Simon has been delivering Software Projects ranging from $300M F-16 mission simulator programmes through to hosted web applications across Australia, Asia, the middle east, USA and Europe. The last 11 years have been focused on delivering solutions in an Agile Fashion. Since moving to the UK, Simon worked as project manager in online gaming before taking a position as a CTO in the Finance Sector where he successfully ran on and offshore development using Agile Methods. Simon currently works for EMC Consulting (through their acquisition of Conchango) as the Head of the Lean, Agile & Systems thinking group and is also the Product Owner for the Scrum for Team System TFS Process Template. Follow Simon on Twitter: @cgosimon
Powered by Community Server (Personal Edition), by Telligent Systems