<?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>Software Configuration Management and Agile Software Development &#187; testing</title>
	<atom:link href="http://accurev.com/blog/tag/testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Thu, 17 May 2012 15:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Agile Kids Say the Darndest Things</title>
		<link>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/</link>
		<comments>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 16:15:45 +0000</pubDate>
		<dc:creator>lorne cooper</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Enterprise Agile]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2915</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>I hope I don’t end up with a seized engine on the side of the road, but if I do, I’ll know I should have had that oil change. I hope I don’t end up on the Worst Dressed List, but if I do, at least I’ll know I should have given away those old [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>I hope I don’t end up with a seized engine on the side of the road, but if I do, I’ll know I should have had that oil change. I hope I don’t end up on the Worst Dressed List, but if I do, at least I’ll know I should have given away those old shirts.  I feel sorry for those on the “Worst Agile Implementation” list who don’t even know they’re there.</p>
<p>In the past few months I’ve had the privilege of talking to approximately fifty organizations about their Agile implementation.  Most of them are doing well, and many of them have great insights about how they customized Agile to fit their process requirements.  But some of them really Say the Darndest Things.</p>
<p><strong>&#8220;We do Scrum, it’s just the rest of the company doesn’t.&#8221;</strong></p>
<p>“So first we break the requirements specification into pieces and call each of the pieces a story.  Then we do our iterations and pass them off to the release team.  We’d sure like to get Product Management, QA, and the customer involved, but they don’t want to.”</p>
<p>There are a lot of places an Agile approach can add value, and I’d hate to adopt a “waterfall approach to going Agile”, but you’re really not doing Scrum.  The biggest chunks of value, the incremental use of customer feedback, and going from “completed state” to “completed state” in each iteration are lost if you can’t get more support.</p>
<p><strong>&#8220;We’re Agile until the development is done.&#8221;</strong></p>
<p>More than once I’ve been speaking with an earnest development leader who’s describing the Scrum process.  They’ll launch in, with obvious pride, and tell me how they’ve gone to two week iterations, do standup meetings, <em>and</em> work from a backlog.  “Terrific!  And how do you do QA?”</p>
<p>Oh, yes, of course they do QA, silly!  In fact, they demo the completed development to the QA team every sprint review and send it off to get tested.  Sometimes, unfortunately, QA actually finds some bugs that need fixing.  So that’s why they put the sprint on hold for a while to fix the bugs and loop them back into QA “’cause we don’t want to wait an entire sprint before they can restart the testing.”</p>
<p>The other side of this one is the guys that take the old “Release Tail” loophole for all it’s worth.  “Yes, Lorne, we’ve been agile for three years now.  We do Scrum, unit testing, standups, and play in the World Series of ‘Planning Poker’.  We do that for about six weeks, or until the release.  Then we have a three month release testing tail, which follows a ‘modified Scrum process’ … the project leader estimates the amount of work on each bug QA finds, and assigns it to a developer.  Sure, sometimes we have to work on new functionality during the “release testing tail” … you can’t expect the customer to stop needing improvements for three months!”</p>
<p>Folks, I don’t think I’m sharing any great trade secret when I tell you the QA process needs to be completed before the story is considered “done.”  I don’t want to be Klaus Fuchs of Scrum, but here’s the secret: <strong>you’re going to have to invest more in testing up front.</strong><strong></strong></p>
<p><strong>&#8220;We do continuous integration every night.&#8221;</strong></p>
<p>I blame the education system: how’s an engineer supposed to know what “Continuous” means when we have “social promotion!”  Now some people understand the idea of continuous integration, and made a conscious effort to make it more “Discrete”.  Some companies I talked to had broken builds that lasted for a week.  You’d rather have a child repeating “Mummy” every 30<sup>th</sup> of a second before you’d like to get an email every five minutes saying the “Build Failed.”  I get it.  And if the email was going to your boss too, well, you don’t have to be Dogbert to know that’s a bad idea.</p>
<p>Builds are going to fail.  Get used to it.  The problem is not that the build failed, but that you couldn’t fix it.  Good practices are to have the team drop what they’re doing when the build fails and hop on fixing it.  If they can’t fix it, it needs to get escalated *pronto*.  Better is to have the team do local builds and unit testing before they check in.  Best Practices are to divide up the build process by team and stage of development, so your team only pollutes itself, not the rest of the development org.</p>
<p><strong>&#8220;We don’t need training since we can use the internet.&#8221;</strong></p>
<p>Uh huh. So I guess the schools will be shutting down any day now.  Not that the Internet might not turn out to be a useful aid someday, but the software development process is a hands-on activity.  And similar to other hands on activities, like dancing or carpentry, you can’t learn to do it by reading a book.  You’re going to need to get some experience with the process before you understand how to run a sprint review or a stand up, how to estimate stories, and how to work with your QA partner.</p>
<p>Now if you’re a hobbyist and working for free, your time is cheap, and there’s no reason not to use trial and error as a learning method.  But if you’re getting paid, and your work is important, you really don’t want to waste four sprints figuring out what someone can help you get right in sprint two.</p>
<p>I’m hoping my surgeon, pilot, and barber got a few lessons before it was my turn.</p>
<p><strong>Finally…</strong></p>
<p>No one has to pass a test to call themselves “Agile,” nor should they. Agilistas don’t have a monopoly on the right way to develop software.  But when people believe they’ve made it to Agile without using critical Agile concepts like time boxing development or getting to “done”, they’re missing the real value.</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/' addthis:title='Agile Kids Say the Darndest Things '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/11/28/agile-kids-say-the-darndest-things/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Continuous Integration: What’s Not to Love?</title>
		<link>http://accurev.com/blog/2010/07/29/continuous-integration-love/</link>
		<comments>http://accurev.com/blog/2010/07/29/continuous-integration-love/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 20:03:06 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[AgileCycle]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[agile cycle]]></category>
		<category><![CDATA[agile software development]]></category>
		<category><![CDATA[automatic testing]]></category>
		<category><![CDATA[build application]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2161</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/07/29/continuous-integration-love/' addthis:title='Continuous Integration: What’s Not to Love? ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>It seems like everyone loves continuous integration.  I’ll come out and say it- I love continuous integration! When we talk about the most widely adopted Agile practices, this one comes up the most.  Its positive benefits as a feedback mechanism provide a quantum leap forward in how development organizations think about their code.  I find [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/07/29/continuous-integration-love/' addthis:title='Continuous Integration: What’s Not to Love? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/07/29/continuous-integration-love/' addthis:title='Continuous Integration: What’s Not to Love? ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><h2><span style="font-weight: normal; font-size: 13px;"><span style="color: #000000;"><span style="color: #000000;">It seems like everyone loves continuous integration.  I’ll come out and say it- </span><strong><span style="color: #000000;"> I love continuous integration! </span></strong><span style="color: #000000;">When we talk about the most widely adopted Agile practices, this one comes up the most.  Its positive benefits as a feedback mechanism provide a quantum leap forward in how development organizations think about their code.  I find it very difficult to see any downside in doing continuous integration, seriously what’s not to love?</span></span></span></h2>
<p><span style="color: #000000;">Modern day continuous integration servers have 3 functions: Detect if a new build is needed, execute build, and notify people of the results. This is a great way of facilitating feedback to developers and allowing them to adapt and resolve problems.</span></p>
<p><span style="color: #000000;">But there’s something lurking in the shadows that nobody is talking about, maybe because people aren’t even aware that it’s a problem. Maybe it’s because we don’t want to ruin our love affair with CI and we’re all in denial.</span></p>
<p><span style="color: #000000;">What happens when those builds are done? What about the rest of “it”?</span></p>
<p><span style="color: #000000;">When I say “it” what I really mean is:</span></p>
<p><span style="color: #000000;">Most development environments include such things as complex application servers, automatic testing, release processes, compliance, audits, databases, 3</span><sup><span style="color: #000000;">rd</span></sup><span style="color: #000000;"> party libraries, build dependencies, code analysis, unit tests… and another 1,000 other things I don’t have enough space to list here. How can you deal with this? Getting feedback to my dev team is a great targeted way to let people know code is broken, but isn’t this feedback useless if you can’t get the product out the door?</span></p>
<p><span style="color: #000000;">If I take an example build lifecycle of an application which is:</span></p>
<p><span style="color: #000000;">1.)    Build Application</span></p>
<p><span style="color: #000000;">2.)    Test</span></p>
<p><span style="color: #000000;">3.)    Deploy to environments (DB) (APP SERVER) &lt;- by hand</span></p>
<p><span style="color: #000000;">4.)    Test</span></p>
<p><span style="color: #000000;">5.)    Redeploy (DB) (APP SERVER) (PROD) &lt;-by hand</span></p>
<p><span style="color: #000000;">This may seem like easy in this example, but if we took all of these steps in the real world, this could represent hundreds of servers.  And this process will have to be repeated for every version of the product.</span></p>
<p><span style="color: #000000;">The crux of this issue is that if any of these steps are not performed 100% correctly, it translates to real dollar$ lost for the organization. These operations have to perform like clockwork.</span></p>
<p><span style="color: #000000;"><span style="color: #000000;"> </span></span></p>
<h2><span style="color: #000000;">Taking Continuous Integration to the Next Level</span></h2>
<p><span style="color: #000000;">This is why I believe bringing continuous integration to the next level starts with the concept that the build produced from the CI server is just the beginning. Setting up a simple CI server and producing a build is easy, but managing it through the rest of its life is the real trick.</span></p>
<p><span style="color: #000000;">In a real example of this, we could take</span></p>
<p><span style="color: #000000;">1.)    Build</span></p>
<p><span style="color: #000000;">2.)    Run automated tests</span></p>
<p><span style="color: #000000;"> </span></p>
<ul>
<li><span style="color: #000000;">If test succeeds: Deploy to to environments (DB) (APP SERVER)</span></li>
</ul>
<ul>
<li><span style="color: #000000;">If test fails: Notify dev team</span></li>
</ul>
<p><span style="color: #000000;">3.)    Manual Testing in QA environment</span></p>
<p><span style="color: #000000;">4.)    Approval process</span></p>
<p><span style="color: #000000;">5.)    Redeploy (DB) (APP SERVER) (PROD)</span></p>
<h2><span style="color: #000000;">Using AgileCycle RM</span></h2>
<p><span style="color: #333333;"><strong><span style="color: #000000;"> </span></strong><span style="color: #000000;">In this scenario I’m taking a version of the results from a CI build, run automated tests on them, monitor the test output and wait for success or failure. If there is success then deploy all components of the application, this includes a database components and a java war component. The build will then sit in QA for manual testing until its marked approved by the QA team, managers and operations team for deployment to production.</span></span></p>
<p><span style="color: #333333;"><span style="color: #000000;">The idea here is if we automate these processes and decisions based on build, automated tests and approval process, you can produce code quickly and at a more rapid pace. If you can produce a clockwork-like automation around</span> your build/test/deploy related processes, your team can spend time on what’s most important: Getting code out the door.</span></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/07/29/continuous-integration-love/' addthis:title='Continuous Integration: What’s Not to Love? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2010/07/29/continuous-integration-love/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Something&#8217;s A-Twitter in My Backing Stream</title>
		<link>http://accurev.com/blog/2010/06/22/twitter-backing-stream/</link>
		<comments>http://accurev.com/blog/2010/06/22/twitter-backing-stream/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 13:49:02 +0000</pubDate>
		<dc:creator>amonty</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[agile team]]></category>
		<category><![CDATA[backing stream]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[promote]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[trigger]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[unit testing]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=1917</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>One of the cornerstones of any successful organization is communication. On Agile teams, we often meet to share information, update one another on progress, to reflect on that progress and discuss how the process can be improved. These interactions, be they stand-up or retrospective meetings, provide this information at regular intervals. But what if you [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>One of the cornerstones of any successful organization is communication. On Agile teams, we often meet to share information, update one another on progress, to reflect on that progress and discuss how the process can be improved. These interactions, be they stand-up or retrospective meetings, provide this information at regular intervals. But what if you need &#8220;real-time&#8221;  information sharing?</p>
<p>Consider the concept of &#8220;one piece flow&#8221;, often treated as the holy grail of engineering process purists. Lean/Kanban fan boys live to talk about this at conferences, and in the isle outside my cube. The idea is that a single &#8220;workpiece&#8221; at a time moves through the workflow. In the software development process, this is rarely limited to a single item, but instead is throttled by WIP limits to minimize the bottlenecks in the process. For example, the number of items worked on by developers is limited so that the count of items designated &#8220;ready for test&#8221; is kept at a manageable level. As a tester on an agile team, I&#8217;d like to know as soon as an item is moved from the &#8220;wip/development&#8221; phase to the &#8220;test/validation&#8221; phase.</p>
<p>Consider the following basic stream structure -</p>
<p style="text-align: center;"><img class="size-medium wp-image-1931 aligncenter" title="Simple stream structure" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-300x171.png" alt="Simple Stream Structure" width="300" height="171" /></p>
<p>In an ideal model, testers would be notified as soon as an issue is promoted from the <em>WIP</em> stream to the <em>Validation</em> stream. This model assumes that the project is utilizing <a href="http://www.accurev.com/" target="_blank">AccuRev</a> <em>change packages</em> to track work items as issues. Having a distinct stream for validation purposes simplifies the job of the tester. All issues that exist in this stream have been unit tested by developers, passed basic regression tests, and are ready to be explored, validated, and promoted to the next stage in the workflow.</p>
<p>So, how can this level of communication be achieved? <strong>AccuRev triggers!</strong> The rest of this post will demonstrate how the <em>server post-promote</em> trigger could be used to provide updates using arguably the king of &#8220;What&#8217;s Happening?&#8221; &#8211; <a href="http://twitter.com">Twitter</a>.</p>
<h2>Why use Twitter in your Backing Stream?</h2>
<p>Why not? Sure, you could use e-mail. But who wants more e-mail? Tweet it, and let them aggregate the information for you. Team members can follow the account, or not. Pointy-haired managers that dream of pie charts and love visibility can subscribe to an RSS feed, that you don&#8217;t have to manage. Lastly, if you&#8217;re an agilista, you&#8217;re already hip and trendy, (and let&#8217;s face it, you probably  already tweeted about the awesome presentation on Lean that you saw at the latest Agile conference).</p>
<h2>The Server Post-Promote Trigger</h2>
<p>I am not going to go into the gory details of the <a href="http://www.accurev.com/developer-training-advanced.html" target="_blank">AccuRev trigger system</a>. Here&#8217;s what you need to know.</p>
<ol>
<li>The trigger can be written in whatever language you like. In this example, I use Ruby.</li>
<li>The trigger needs to be registered with the AccuRev server, and associated with the depot for your software project.</li>
</ol>
<p>For this exercise, I wrote a quick script called <em>tweet_post_promote.rb</em>. The first step is to register this script with AccuRev.</p>
<p><em>&gt;accurev mktrig -p SoftwareProject server-post-promote-trig ~/dev/ruby/tweet_post_promote.rb</em></p>
<p>Once registered, the trigger will now fire for all promotes in the SoftwareProject depot. Let&#8217;s take a look at the contents of the script.</p>
<p><em>#!/usr/bin/env ruby</em></p>
<p><em>require &#8216;rubygems&#8217;</em></p>
<p><em>require &#8216;crack&#8217;</em></p>
<p><em>require &#8216;twitter&#8217;</em></p>
<p><em>ACCUREV_DIR = &#8220;/sandbox/amonty/accurev/&#8221;</em></p>
<p><em>ACCUREV_STORAGE = &#8220;#{ACCUREV_DIR}storage/&#8221;</em></p>
<p><em>ACCUREV_SITE_SLICE = &#8220;#{ACCUREV_STORAGE}site_slice/&#8221;</em></p>
<p><em>USER = &#8216;ValidationBot&#8217;</em></p>
<p><em>PASS = &#8216;password&#8217;</em></p>
<p><em><br />
</em></p>
<p><em>def load_trigger_data(file)</em></p>
<p style="padding-left: 30px;"><em>xml = &#8221;</em></p>
<p style="padding-left: 30px;"><em>File.open(&#8220;#{ACCUREV_SITE_SLICE}#{file}&#8221;) do |f|</em></p>
<p style="padding-left: 60px;"><em>xml = f.read</em></p>
<p style="padding-left: 30px;"><em>end</em></p>
<p style="padding-left: 30px;"><em>Crack::XML.parse(xml)</em></p>
<p><em>end</em></p>
<p><em><br />
</em></p>
<p><em>def twitter_get_auth(user, pass)</em></p>
<p style="padding-left: 30px;"><em>httpauth = Twitter::HTTPAuth.new(user, pass)</em></p>
<p style="padding-left: 30px;"><em>Twitter::Base.new(httpauth)</em></p>
<p><em>end</em></p>
<p><em><br />
</em></p>
<p><em>def main()</em></p>
<p style="padding-left: 30px;"><em>hash = load_trigger_data ARGV[1]</em></p>
<p style="padding-left: 30px;"><em>if hash["triggerInput"]["stream1"] == &#8220;Validation&#8221; then</em></p>
<p style="padding-left: 60px;"><em>changePackageIssue = hash["triggerInput"]["changePackages"]["changePackageID"]</em></p>
<p style="padding-left: 60px;"><em>update_string = &#8220;Issue #{changePackageIssue} just promoted to stream #{hash["triggerInput"]["stream1"]}&#8221;</em></p>
<p style="padding-left: 60px;"><em>twitter = twitter_get_auth(USER, PASS)</em></p>
<p style="padding-left: 60px;"><em>twitter.update update_string</em></p>
<p style="padding-left: 30px;"><em>end</em></p>
<p><em>end</em></p>
<p><em>main if __FILE__ == $0</em></p>
<p>This script is very simple. It makes use of the Ruby gems crack and Twitter. Essentially, the script takes the XML trigger file (provided as <em>ARGV[1]</em>) and loads it into a hash. Then the script checks to see if the stream being promoted to is our <em>Validation</em> stream. If so, it uses the twitter gem to update the status on our <em>ValidationBot</em> account.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1945  aligncenter" title="Something's a-Twitter in my Backing Stream" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-2-300x43.png" alt="Something's a-Twitter in my backing stream" width="300" height="43" /></p>
<p>A more useful example is to provide a link to the AccuRev Web UI Issue screen.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-3.png"><img class="size-medium wp-image-1949  aligncenter" title="Something's a-Twitter in my Backing Stream" src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-3-300x80.png" alt="Something's a-Twitter in My Backing Stream" width="300" height="80" /></a></p>
<p>This way, anyone subscribing to the feed can click on the link and open the issue in the AccuRev Web UI.</p>
<p style="text-align: center;"><a href="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-4.png"><img class="size-medium wp-image-1950  aligncenter" title="Something's a-Twitter in my Backing Stream- anyone subscribing to the feed can click on the link and open the issue in the AccuRev Web UI." src="http://www.accurev.com/blog/wp-content/uploads/2010/06/Screenshot-4-300x249.png" alt="Something's A-Twitter in My Backing Stream" width="300" height="249" /></a></p>
<p>This is a small example of how AccuRev triggers can be used to increase communication on your team. Testers can follow the <em>ValidationBot</em> account and be notified via their favorite Twitter client whenever an issue is promoted to the validation stream and they need to begin work on it. This could obviously be extended to include additional information (actual file changes, for example). That is, of course, if you can fit it into 140 characters. <img src='http://accurev.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Somethings A Twitter in My Backing Stream" /> </p>
<p>For more information on AccuRev triggers, please see the <a href="http://www.accurev.com/download/docs/4.7.4b_books/AccuRev_4_7_Admin.pdf">Administrator&#8217;s Guide</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2010/06/22/twitter-backing-stream/' addthis:title='Something&#8217;s A-Twitter in My Backing Stream '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2010/06/22/twitter-backing-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Force Testing</title>
		<link>http://accurev.com/blog/2007/10/19/force-testing/</link>
		<comments>http://accurev.com/blog/2007/10/19/force-testing/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 20:10:00 +0000</pubDate>
		<dc:creator>dave</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[force testing]]></category>
		<category><![CDATA[funcional testing]]></category>
		<category><![CDATA[functional test]]></category>
		<category><![CDATA[mocks]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[unit testing]]></category>
		<category><![CDATA[white box]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/2007/10/19/force-testing/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/19/force-testing/' addthis:title='Force Testing ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>There are a variety of testing methods: White Box. TDD. Mocks. Unit. Stress. Functional. Taste. Flight. Load. and more&#8230; It&#8217;s Friday&#8230; Here&#8217;s my favorite test courtesy of Boeing&#8230; check out the 777 Wing Force Test. /happy testing/ &#8211; dave<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/19/force-testing/' addthis:title='Force Testing '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/19/force-testing/' addthis:title='Force Testing ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>There are a variety of testing methods: White Box. TDD. Mocks. Unit. Stress. Functional. Taste. Flight. Load. and more&#8230;</p>
<p>It&#8217;s Friday&#8230; Here&#8217;s my favorite test courtesy of Boeing&#8230; check out the <a href="http://www.youtube.com/watch?v=Ai2HmvAXcU0" target="_blank">777 Wing Force Test</a>.</p>
<p>/happy testing/ &#8211; dave</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2007/10/19/force-testing/' addthis:title='Force Testing '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2007/10/19/force-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

