<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ryan norris &#187; Project Teams</title>
	<atom:link href="http://www.ryannorris.com/category/building-better-software/project-teams/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ryannorris.com</link>
	<description>managing software teams and delivering great results</description>
	<lastBuildDate>Fri, 25 Jun 2010 13:44:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Integrating Your QA Staff with Engineering in SCRUM</title>
		<link>http://www.ryannorris.com/2009/08/14/integrating-your-qa-staff-with-engineering-in-scrum/</link>
		<comments>http://www.ryannorris.com/2009/08/14/integrating-your-qa-staff-with-engineering-in-scrum/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 11:53:24 +0000</pubDate>
		<dc:creator>Ryan Norris</dc:creator>
				<category><![CDATA[Project Teams]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[beck]]></category>
		<category><![CDATA[delivery]]></category>
		<category><![CDATA[fowler]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.ryannorris.com/?p=88</guid>
		<description><![CDATA[As much as I love automated testing, I have come to live with the fact that teams migrating from waterfall approaches to development to SCRUM often try to maintain the team structures they are familiar with.  At times, this typically means an engineering staff that sucks at writing tests, and a QA staff that is [...]]]></description>
			<content:encoded><![CDATA[<p>As much as I love automated testing, I have come to live with the fact that teams migrating from waterfall approaches to development to SCRUM often try to maintain the team structures they are familiar with.  At times, this typically means an engineering staff that sucks at writing tests, and a QA staff that is still very much attuned to the finer grained edge and corner cases.  Each of these parts of your team adds value to a SCRUM project.  Integrating them to avoid bottlenecks, stay lean, and deliver with quality is a clever trick.</p>
<p><span id="more-88"></span>Engineers write code.  QA tests that code.  In the past, this baton model has been derived from extensive functional specifications and use case documents that break down the core, extension, and exception cases so that both the tests and software can be clearly defined.  In a waterfall model, this was functional as it mirrored the sequence of SDLC.  But SCRUM and most Agile processes really shun this kind of thinking and instead target flat teams that collectively own the deliverable.  As in a recent experience of mine, maintaining that same handoff creates all sorts of problems.  Acceptance and rejection of delivered stories occurs late in the game, QA is always in a rush to execute their tests, and product teams and development see QA as a bottleneck.  It&#8217;s tempting for management to look at this and begin to turn SCRUM into a series of miniature waterfalls.  But this is <strong>wrong.</strong> Instead, as with all things in SCRUM, the search for a solution needs to answer a few questions to make the possible actions palatable:</p>
<ol>
<li>Will the solution eliminate dependencies my team has?</li>
<li>Does this solution change the value that one set of skills adds to my team, or does it distribute it?</li>
<li>Will this solution be responsive to change?</li>
<li>Will this solution require extensive infrastructure to implement?</li>
</ol>
<p>Heroes <a title="Kent Beck" href="http://www.threeriversinstitute.org" target="_blank">Kent Beck</a> and <a title="Martin Fowler" href="http://www.martinfowler.org" target="_blank">Martin Fowler</a> will tell you that the best solution is to strive for full, automated testing.  I couldn&#8217;t agree more.  Manual testing, as Fowler recently said, should be considered &#8220;a human rights violation.&#8221;  It&#8217;s error prone, difficult to repeat, and handles regression poorly.  That said, there are some battles simply not worth fighting.  In larger, more established teams &#8211; this type of shift is glacial, largely because of the risk incurred by such a change in paradigm.  Pragmatism dictates that the value of your QA team be repurposed to continue to add value, though potentially in a different way.</p>
<p>If we can concede the anecdotal thought that most engineers are substandard at QA, then we can see a glaring gap on a SCRUM team.  Even full automated testing with xUnits and CI is going to relinquish some level of code coverage, particularly in legacy software that wasn&#8217;t designed to be tested 10 years ago.  It should be mandated in teams in this type of pickle that all future code adopt the best practices of TDD &#8211; even to the extent that older, less TDD-friendly technologies and architectures be phased out.  But as we engage a group of engineers in a methodology in which they may never have been educated, hired, or trained for &#8211; on the sidelines we have a group of people who have been identifying failure and success scenarios their entire careers &#8211; even if they aren&#8217;t engineers.  A QA team can be indispensible in this situation.</p>
<p>In your new, SCRUM-based project &#8211; QA no longer are the gatekeepers.  We can&#8217;t have multiple gatekeepers in SCRUM.  Instead we focus on delivery and acceptance, creating one gatekeeper &#8211; a single keeper of the truth: the product owner.  That role is intended to be their exclusive domain.  They are the most intimate with the domain, the most intimate with the user story, and the most knowledgeable of where value lies.  To vest these judgmental by proxy in a serial part of the development cycle only leads to confusion.  Who is really assessing value?  Who is ultimately going to decide whether or not a story can be delivered?  Who should decide whether it should be accepted?  The demographics of a SCRUM project exist to solve this very question.  Eroding the clarity of role simply detracts value.</p>
<p>So what does this mean?  QA can&#8217;t be relegated to the role of testing system.  They cannot be an analogue for some sort of software framework.  Our goal should be to migrate to full automation, even if that takes time.  This means that the role of QA changes to an engineering role.  Not in the software sense, but in developing the cases which need to be tested.  These will arise from:</p>
<ol>
<li>Conversational contributions to the story, noting and documenting constraints by guiding the product owner through different user experiences.  These can come out of user flows or non-functional prototypes.  But QA can add extensive value simply by contributing their ability to identify edge and corner cases that may not have been considered.  These may well not end up in our <em>confirmation</em> of the story, and it&#8217;s important for QA to recognize, just like with an engineer &#8211; that the value of a contribution in the conversation is to help shape the conversation, and not set requirements in the stead of the product owner.</li>
<li>Test cases derived from the constraints outlined in the conversation.  Take this user story:
<p><em>A user must be able to provide a credit card for payment of their order.  Each credit card must be validated with the issuer, and we will only accept credit cards from Visa and MasterCard.</p>
<p>Try it with Discover card.<br />
Try it with American Express.<br />
Try it with an invalid billing address.</p>
<p></em>This is the way that the product owner will ultimately accept the story.  The QA resource working on this story may write several test cases that test the edge and corner cases of the acceptance criteria, but they need to maintain an open conversation with the team to ensure they aren&#8217;t incidentally increasing scope by applying tests that go outside of the criteria.  So while the following test case is very likely to be something we&#8217;ll want to test:</p>
<p><em>Try a billing address where the street name is provided in all capital letters but matches the address on file which is entirely in lower case.  This is expected to be a positive case, with the validation succeeding.</p>
<p></em>This test would likely be considered an expansion of scope or otherwise invalid:</p>
<p><em>Try charging the card and ensure that we put a $5 hold on the card until the transaction is complete.</em></li>
</ol>
<p>So, in the cycle of the development of the story, the test cases serve as the outline for the engineer &#8211; as they should.  The engineer uses the tests to validate their code &#8211; or more effectively, runs their code against an automated test that implements the test case as defined by the QA specialist.  This helps improve quality and minimize risk by taking those decisions which we earlier agreed that engineers are poor at, out of their hands.  The test cases serve now as the same direction that the rest of the story does.  For those tests which remain manual for whatever reason, the effort to complete those tests can now be load balanced across the team, rather than vested in the hands of one point of failure in delivery.</p>
<p>Ultimately, this is what is so enjoyable about an Agile project.  Because it suggests solutions through it&#8217;s objectives, it&#8217;s possible to solve any execution concern by referring back to the principles that make Agile delivery successful.  Being able to respond to change, emphasize people and interactions, and prefer generalization over specialization is the guidance we can use to look at the role of the heroic QA team in a different light &#8211; a somewhat specialized engineering team that delivers artifacts that infuse delivery with the value that it may not be realizing in engineering, and not acting as a secondary source of truth for the team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ryannorris.com/2009/08/14/integrating-your-qa-staff-with-engineering-in-scrum/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
