<?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>Tooth of the Weasel</title>
	<atom:link href="http://angryweasel.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://angryweasel.com/blog</link>
	<description>notes and rants about testing and quality from alan page</description>
	<lastBuildDate>Mon, 14 May 2012 17:37:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Systems, observation, and motorcycles</title>
		<link>http://angryweasel.com/blog/?p=454</link>
		<comments>http://angryweasel.com/blog/?p=454#comments</comments>
		<pubDate>Mon, 14 May 2012 17:37:35 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=454</guid>
		<description><![CDATA[Our family spent a bunch of time this weekend cleaning out the garage and taking care of a variety of long neglected household tasks. One thing I’d been meaning to do for over a year now is to get my Ducati up and running again. Between picking kids up (need a car for that), and [...]]]></description>
			<content:encoded><![CDATA[<p>Our family spent a bunch of time this weekend cleaning out the garage and taking care of a variety of long neglected household tasks. One thing I’d been meaning to do for over a year now is to get my Ducati up and running again. Between picking kids up (need a car for that), and riding my bike to work most of last summer, it’s probably been 18 months since I started the thing. Keep in mind, that Ducati’s are fickle machines to start with, but I figured I’d work on it for a while before calling someone to load it on a truck and haul it to the shop.</p>
<p>The first thing I did was drain the gas tank. I couldn’t recall if I added fuel stabilizer, but after that long, I can pretty much guarantee that the fuel was bad. I took the bad gas to the hazardous waste site (open on Sunday from 9-5!), picked up some new fuel, headed home, and gassed the Duc up.</p>
<p>I had the battery on a battery tender, but was still slightly surprised that it still had some starting power in it. Unfortunately, the engine just wouldn’t turn over. I double checked the fuel line (clear) and then pulled the spark plugs. The plugs were a little dirty, so I swapped them with a spare set from the toolbox.</p>
<p>Still nothing.</p>
<p>Sitting on the bike, I took a moment to think through how the engine worked. The starter was working, gas was flowing, but the engine wasn’t starting. Fortunately, I have a carbureted engine, and know what all (or most) of the engine workflow. There could still be bad gas still in the system, or there could be a problem with the carburetor. But neither of those seemed likely. I tried starting it one more time, and the engine just wouldn’t kick in.</p>
<p>While thinking through it some more, I noticed that I forgot to reattach one of the spark plug caps. I reattached it and…still nothing.</p>
<p>But – the behavior (i.e. engine sound) was identical with and without the spark plug cap attached – which pretty much guarantees that the spark plugs weren’t firing. I took them out one more time, cleaned them, and this time, checked the gap. For some reason, my spares were gapped really narrow (hint – always check the gap – even on brand new spark plugs selected for your vehicle). I widened the gap a few millimeters to spec, put them in and…</p>
<p>Vroom!</p>
<p>I immediately grabbed my helmet and gloves and went for a spin, and the bike ran great. No stalls, backfires or stutters. It probably still needs some more air in the tires and an oil change, but it sounds and runs just like a Ducati should.</p>
<p>In the end, this was just another debugging and diagnostic problem – much like the problems I face almost every day. The key points to remember are:</p>
<ul>
<li><strong>Know the system</strong>, and <em>think</em> about the system. When software (or Ducatis) fail, think through the entire system to note where failures may be occurring</li>
<li><strong>Observe what’s going on</strong> – Products (and engines) fail for a reason. Chances are that there are unnoticed clues to the behavior you are seeing, so remember that anything you see may be helpful.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=454</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Test Responsibility</title>
		<link>http://angryweasel.com/blog/?p=451</link>
		<comments>http://angryweasel.com/blog/?p=451#comments</comments>
		<pubDate>Mon, 07 May 2012 17:20:45 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Careers]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=451</guid>
		<description><![CDATA[I apologize in advance for yet another exploration of what testers do. More and more, I feel that Brent is right, and Test is a 4 Letter Word, but I feel we (whatever we want to call ourselves) can advance through discussion of our roles and responsibilities. A few weeks ago, I was talking to [...]]]></description>
			<content:encoded><![CDATA[<p>I apologize in advance for yet another exploration of what testers do. More and more, I feel that Brent is right, and <a href="http://testastic.wordpress.com/2012/04/30/test-is-a-four-letter-word/">Test is a 4 Letter Word</a>, but I feel we (whatever we want to call ourselves) can advance through discussion of our roles and responsibilities.</p>
<p>A few weeks ago, I was talking to a colleague about team responsibilities. As an exercise, he was trying to come up with a two word action that described what a discipline was responsible for – the action that you can count on. For development, we agreed quickly on ‘quality code’. There’s certainly more that a developer does, but given the two word action requirement, I can live with our conclusion.</p>
<p>The interesting conversation occurred when we discussed test. My initial answer was ‘provide information’ – is accurate – but not the right answer (for me, at least). I love and hate the notion of tester as information provider. We do generate data (and ideally actionable data) as a side effect of our testing, but that description makes it appear as if test has no power or responsibility for decision making – which I also find wrong. We are not gatekeepers of quality or safety nets, and we’re probably not going to block a release, but I think that testers need to do much <em>more</em> than passively provide information.</p>
<p>My colleague countered with a phrase completely on the opposite end. He proposed ‘sign off’ – that the responsibility of test was to ‘sign off’ on the product (and in order to sign off, we’d generate information, make decisions, etc.) As you can imagine, I didn’t like this description. I’m not against test weighing in on the sign off decision (or any other decision), but I dislike the idea of sign off being the <em>primary</em> responsibility<em>.</em> (Note – Catherine Powell has a nice article on the <a href="http://blog.abakas.com/2012/04/decision-safety-net.html">Decision Safety Net</a> on her blog)</p>
<p>I don’t have a great answer yet for the responsibility of test. I like the idea of the <em>role</em> of test as an accelerant of quality – most of what I do has the end result of improving efficiency of and effectiveness of test and development work. ‘Accelerate Quality’ <em>almost</em> works for me, but I can’t say it’s the two word action that a tester should be responsible for. I’ll figure something out, but I’m open for ideas if you have them</p>
<p>I don’t have a time machine, but I think one positive note from this thought exercise is that I don’t think many (experienced) testers would list the primary action of a tester as ‘write tests’ or ‘find bugs’. At least not <em>too</em> many…</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=451</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>New Testing Ideas</title>
		<link>http://angryweasel.com/blog/?p=449</link>
		<comments>http://angryweasel.com/blog/?p=449#comments</comments>
		<pubDate>Tue, 24 Apr 2012 16:57:55 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=449</guid>
		<description><![CDATA[I was checking out test conference programs, and found a list of talk titles I found intriguing (this is a sampling of titles from the conference). I’m curious to know how interesting and innovative you think this conference would be. The Art and Science of Load Testing Internet Applications Model-Based Testing for Data Centric Products [...]]]></description>
			<content:encoded><![CDATA[<p>I was checking out test conference programs, and found a list of talk titles I found intriguing (this is a sampling of titles from the conference). I’m curious to know how interesting and innovative you think this conference would be.</p>
<ul>
<li>The Art and Science of Load Testing Internet Applications</li>
<li>Model-Based Testing for Data Centric Products</li>
<li>Successful Test Management: 8 Lessons Learned</li>
<li>Managing User Acceptance Tests in Large Projects</li>
<li>Architectures of Test Automation</li>
<li>Testing Rapidly Created Web Sites</li>
<li>Measuring Ad Hoc Testing</li>
<li>The Habits of Highly Effective Testers</li>
</ul>
<p>There are definitely a few interesting topics above, and I’d probably attend all of the sessions if I went to the conference. Unfortunately, it’s too late to register, as the conference I pulled these titles from is <em>nearly twelve years old</em>.</p>
<p>I’ve complained in the past about the lack of new ideas in testing, but despite a massive amount of idea-regurgitation, I think software testing is edging up on a growth spurt. It takes a bit of “cooking” to come up with new Ideas (good ideas, at least), and two of the biggest ingredients seem to be falling into place.</p>
<p>First off, ideas take time to germinate. Testers are beginning to stay in testing longer (you’ll still see half or more of conference attendees with a year or less of testing experience), but anecdotal information, along with my testing spidey-sense tells me that we have more testers staying in test longer than we did a decade ago. With the experience, comes the ability of these testers to draw on enough experience and experiment long enough to bring new ideas to fruition.</p>
<p>Big ideas are often collisions between smaller ideas. You little tool or approach may not be much on it’s own, and my idea for short-circuiting the fizzbazz is a novelty at best. But when we discover each other’s ideas, a new idea may emerge (use the fizzbazz within your approach to make magic happen). In order to enable these collisions of small ideas, we need people with ideas – but we need a network to get those ideas to happen. The degrees of separation and the size of networks is massively larger than it was a decade ago. I think testing is ready to foster idea collision on a massive scale.</p>
<p>I could go on, and on…and I will – but not now. </p>
<p>I’ll be giving a talk on <strong><em>Where (Testing) Ideas Come From</em></strong> as part of the <a href="http://www.eurostarconferences.com/content/free-virtual-software-testing-conference">Eurostar Virtual Software Testing Conference</a>. Register for free (‘cause I’m all about making money :}) and hear more of my crazy ideas.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=449</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Secrets of SDET Success</title>
		<link>http://angryweasel.com/blog/?p=446</link>
		<comments>http://angryweasel.com/blog/?p=446#comments</comments>
		<pubDate>Wed, 18 Apr 2012 21:28:24 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=446</guid>
		<description><![CDATA[In case you missed it, I blogged about testers at MS over at the Expert Testers blog (which is probably a blog you should add to your blog roll if it’s not there already).]]></description>
			<content:encoded><![CDATA[<p>In case you missed it, I <a href="http://experttesters.com/2012/04/17/secrets-of-sdet-success/">blogged about testers at MS</a> over at the Expert Testers blog (which is probably a blog you should add to your blog roll if it’s not there already).</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=446</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploring Test Roles</title>
		<link>http://angryweasel.com/blog/?p=444</link>
		<comments>http://angryweasel.com/blog/?p=444#comments</comments>
		<pubDate>Wed, 04 Apr 2012 20:41:33 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=444</guid>
		<description><![CDATA[I’m not quite sure why, but once again I’m writing about test roles. I don’t know of another job in the world where discussions like these are common. On the other hand, I don’t know of a job in the world where people are so passionate about what they do (and don’t do) as part [...]]]></description>
			<content:encoded><![CDATA[<p>I’m not quite sure why, but once again I’m writing about test roles. I don’t know of another job in the world where discussions like these are common. On the other hand, I don’t know of a job in the world where people are so passionate about what they do (and don’t do) as part of their role. I’ll chalk it up to the continued growth of the role and see if I can convince myself to finish this and post it before I stop myself.</p>
<p>Here’s the short version for those already bored with the topic. Roles that testers play on teams vary. They vary a lot. You can’t compare them. That’s ok, and (IMO) part of the growth of the role. I find it disturbing and detrimental when testers not only assume that their version of testing is “the way”, or that some roles (or people in those roles) do not qualify as testing.</p>
<p>And now for the longer version…<strong>&#160;</strong>The recent test is dead meme (which interestingly, <em>won’t die</em>) brought to light (in semi-dramatic fashion) that in <em>some</em> situations, <em>some</em> traditional “test” roles don’t exist anymore. It wasn’t originally phrased that way, but if you looked under the covers, that’s all that was there. I’m still surprised that so many people got stuck on the three-word catch phrase and couldn’t see the value in the statement. But if they did, I suppose I may not be spitting out this blog post.</p>
<p>Last year, I had a surprisingly popular post about <a href="http://angryweasel.com/blog/?p=293">My Job as a Tester</a>. I’ve changed roles since then, and I’ve been thinking about an update, but for a variety of reasons, I’m just not ready yet. The biggest reason is that although I’ve been on the team for five months now, my role is still evolving. Once it settles into a bit of a groove (and as other factors resolve), I’m sure I’ll post a recap.</p>
<p>Recently, I’ve been working a lot on pieces of implementation of test infrastructure for my team. Although I’m still heavily involved in testing strategy and test “stuff”, the goal of most of my current work is to <em>enable</em> good testing. Since I sometimes describe my role as <em>an improver of tests, testers, and testing</em>, I’m still on target with my own vision. </p>
<p>While reflecting recently on what I’ve been doing vs. what [anyone else] does as a tester (and catching up on reading, I pondered the fact that what I’m doing now isn’t really testing as “traditionally” defined (whatever that means). However, what I do <em>is</em> making testing better – but am I more of a “productivity engineer” than a tester?&#160; <a href="http://testastic.wordpress.com/2011/12/24/the-testers-job/">Brent Jensen has this description</a>:</p>
<blockquote><p><font style="background-color: #ffffff">A tester’s job is to accelerate the achievement of shippable quality</font></p>
</blockquote>
<p>By that definition, I suppose I’m right on the money. But I know there are people (who will likely tell me I’m damaging the craft, or that I’m mean to them) who don’t call what I do testing – I’m cool with that. I still like my job and my business card still says “Tester”.</p>
<p>By far, my favorite favorite thing to do as a tester is design tests. I love the challenge of crafting a suite of tests that enable team members to make well-informed decisions about product quality (at least that’s the plan). Testers in this role may be part of a whole-team approach where they have a test/quality focus, but have shared team goals. Or, there may still be “devs” and “testers”, but the wall between the two is minimal, and everyone works together (most of the time, at least) to make sure the product achieves both shipping and quality goals. Brent’s definition works pretty well for this role too.</p>
<p>Design overlaps execution. The Think-Design-Execute loop is tight in good testing – this is true whether it’s entirely, partially, or non-automated (or inversely, entirely, partially, or non-manual).</p>
<p>Which leads me to two test roles that, while they definitely exist, I could say they’re dead to me. But they’re not really dead – I know that. What they are is more…irrelevant. Given what I do, where I do it, and a smattering of other context indicators, two test roles are off of my radar.</p>
<p>The first is the test-automation only role. I think the role of taking manual test scripts written by one person and then automating those steps is a bad practice. I know some people like to do this stuff, but I think it’s a waste of time. What you end up with are tests that either should have been automated in the first place, or tests that should <em>not</em> be automated. Fortunately, while I acknowledge that these roles exist, I’m happy to&#160; work in a world where these roles do not exist. </p>
<p><font style="background-color: #ffffff">For lack of a better term, I’ll call the final role “waterfall-tester” – even though I know this role exists at some (fr)agile shops as well. This is the when-I’m-done-writing-it-you-can-test-it role. Test outsourcing is the most common manifestation of this role, but it exists anywhere where testers only provide value at the end of the cycle. I know <strike>great</strike> fantastic testers who love this role, and I’ve been in this role myself in the distant past. Today, however, I don’t want to think about testing something where my contribution hasn’t been part of the end-result from the earliest stages. Again, while I fully acknowledge that testers live in this role, I’m happy that it isn’t part of my testing world.</font></p>
<p>In the end, I’m not exactly sure what this means to anyone but me. As I’ve mentioned (and tweeted) before:</p>
<p><a href="http://angryweasel.com/blog/wp-content/uploads/2012/04/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://angryweasel.com/blog/wp-content/uploads/2012/04/image_thumb.png" width="502" height="73" /></a></p>
<p>Which really says, that in nearly a thousand words, I’ve (once again) told you nothing new.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=444</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>So Long, Tester Center</title>
		<link>http://angryweasel.com/blog/?p=439</link>
		<comments>http://angryweasel.com/blog/?p=439#comments</comments>
		<pubDate>Wed, 28 Mar 2012 20:30:18 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=439</guid>
		<description><![CDATA[&#160; Earlier today, Ron posted the following about the Microsoft Tester Center: So Long, Tester Center. There’s nothing I can say that Ron didn’t say – it was a fun effort – just hard to do without any full time support (and as our individual jobs got more complex and demanding). The good news, is [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Earlier today, Ron posted the following about the Microsoft Tester Center: <a href="http://blogs.msdn.com/b/testercenter/archive/2012/03/28/so-long-tester-center.aspx">So Long, Tester Center</a>.</p>
<p>There’s nothing I can say that Ron didn’t say – it was a fun effort – just hard to do without any full time support (and as our individual jobs got more complex and demanding).</p>
<p>The good news, is that I (and many others) remain passionate about sharing some of the cool ideas and innovations coming out of Microsoft. The smartest testers in the world work here, and if you pay attention, you may just get some unique sneak peaks into some of the coolest testing approaches, tools, and ideas in testing you’ll ever see.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=439</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Robots are Taking Over</title>
		<link>http://angryweasel.com/blog/?p=437</link>
		<comments>http://angryweasel.com/blog/?p=437#comments</comments>
		<pubDate>Tue, 20 Mar 2012 16:33:09 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Careers]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=437</guid>
		<description><![CDATA[Probably not news to most of you, but the local company that sells everything under the sun just bought a robotics company (Amazon Acquires Kiva Systems). Normally, I don’t blog about news stories, but on the way to work this morning I heard an interesting discussion on a local talk radio station. It turns out [...]]]></description>
			<content:encoded><![CDATA[<p>Probably not news to most of you, but the local company that sells everything under the sun just bought a robotics company (<a href="http://www.bloomberg.com/news/2012-03-19/amazon-acquires-kiva-systems-in-second-biggest-takeover.html">Amazon Acquires Kiva Systems</a>). </p>
<p>Normally, I don’t blog about news stories, but on the way to work this morning I heard an interesting discussion on a local talk radio station. It turns out that there are people up in arms over the purchase because using robots in the warehouse puts people out of jobs. To be clear, I don’t like people losing their jobs either – but bear with me for another paragraph.</p>
<p>The arguments continued with comments like, “The robots can’t do all of the warehouse work – sometimes you need to use your brain to find a misplaced item”, or, “You will still need people to verify <em>with their eyes</em> that the right items were selected”. Others countered with comments like, “The robots can work 24 hours a day”, and, “You’ll still need people to program the robots and give them directions”.</p>
<p>I laughed out loud in my car as I realized that these people calling into the radio station were having the same discussion many people have about test automation.I won’t rehash or expand, but I will summarize with two blurbs of less than 140 characters each:</p>
<p><a href="http://angryweasel.com/blog/wp-content/uploads/2012/03/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://angryweasel.com/blog/wp-content/uploads/2012/03/image_thumb.png" width="569" height="153" /></a></p>
<p>Since I didn’t use the word test in those tweets, I think my comments apply to Amazon’s (probable) warehouse changes as well.</p>
<p>I was happy to hear that a few callers recognized that robots (and automation) can be used to solve left-brained monotonous work – and do it pretty well. The future of work is (IMO) creative work**, and (again, IMO), automation (and robots) are what we need in order to enable us to find the time and insights to develop our creative thoughts into game-changing innovation.</p>
<p>And that sure beats doing the boring shit.</p>
<p>&#160;</p>
<p>**Daniel Pink wrote a whole book on this concept:&#160; <a href="http://www.amazon.com/gp/product/1594481717/ref=as_li_ss_tl?ie=UTF8&amp;tag=hwtsam-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1594481717">A Whole New Mind: Why Right-Brainers Will Rule the Future</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=hwtsam-20&amp;l=as2&amp;o=1&amp;a=1594481717" width="1" height="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=437</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oops, I Did it Again</title>
		<link>http://angryweasel.com/blog/?p=432</link>
		<comments>http://angryweasel.com/blog/?p=432#comments</comments>
		<pubDate>Mon, 19 Mar 2012 16:14:49 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=432</guid>
		<description><![CDATA[Here’s a story I hear often. The names have been changed to prevent the guilty. Jake had barely taken a sip of his steaming coffee when he saw that thirty-two of the automated tests failed in last night’s test pass. “Crap, I’m slammed today”, thought Jake, “I don’t have time to look at thirty-blanking-two failures”. [...]]]></description>
			<content:encoded><![CDATA[<p>Here’s a story I hear often. The names have been changed to prevent the guilty.</p>
<blockquote><p><i>Jake had barely taken a sip of his steaming coffee when he saw that thirty-two of the automated tests failed in last night’s test pass. “Crap, I’m slammed today”, thought Jake, “I don’t have time to look at thirty-blanking-two failures”. Without a second thought, Jake clicked the ‘re-run failures’’ button on the web page that displayed results and turned his attention back to his coffee. After finishing his coffee and filling a second cup, Jake was happy to see that twenty-five of the failing tests now passed. “Must be a flaky environment”, thought Jake as he took a big swig of coffee and got to work investigating the seven remaining failures.</i></p>
<p><i>&#160;</i></p>
<p><i>A few weeks later, Jake was sitting in in a meeting to go over a few of the top the live site failures reported by customers and the operations folks. Ellen, the development manager was walking through the issues and fixes, and throwing in a little lightweight root-cause analysis where appropriate. “These three”, she began “caused a pretty bad customer experience. When we first looked at the errors, we figured it had to be an issue with the deployment environment, but we discovered that we could reproduce all of these in our internal test and development environments as well.” Jake’s stomach sunk a bit as Ellen continued. “It turns out that although the functionality is basically broken, it will work some of the time. I guess our tests were just lucky.” </i></p>
</blockquote>
<p>In some versions of this story, Jake steps up to the plate and takes responsibility. In other versions, he <em>merely </em>learns a lesson. In a few versions of the story, Jake calls the whole thing a fluke and goes through the same thing later in his career.</p>
<p>The point of this story is simple. <strong>Every test failure means something</strong>. The failure <em>may </em>mean a product failure. It <em>may </em>mean you have flaky tests. When you start to <em>assume</em> flaky tests or environments, you’re heading into the land of <a href="http://www.codinghorror.com/blog/2005/06/the-broken-window-theory.html">broken windows</a> and product failures you <em>could</em> have found earlier (actually, you probably did – you just ignored them).</p>
<p>Great testers rely on trustworthy tests. The goal is that <u>every</u> failed test represents a product failure, and any tests that fall short of that goal should be investigated and fixed – or at the very least updated with diagnostic information that lets you make a quick confident decision about the failure. <strong>Relying on test automation for any part of your testing is pointless if you don’t care about the results and look at failed tests <u>every time they fail</u>.</strong> </p>
<p>Yes, I know. Your situation is unique, and you have a business reason for ignoring failed tests. My first response when I hear this claim is that you’re probably wrong. Probably, but not definitely – but don’t let flaky tests get through your reality filter. Otherwise, you’ll be sitting in Jake’s shoes before you know it.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=432</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Recharged, reloaded, and a lot of reading</title>
		<link>http://angryweasel.com/blog/?p=429</link>
		<comments>http://angryweasel.com/blog/?p=429#comments</comments>
		<pubDate>Fri, 02 Mar 2012 17:41:02 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Me]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=429</guid>
		<description><![CDATA[I spent last week lounging on the beaches of Maui with my family. I didn’t stay completely away from work or the interwebz, but after a day or so of sun and fun,I did manage to unwind enough to lose track of days of the week. I spent a lot of time reading on the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://angryweasel.com/blog/wp-content/uploads/2012/03/WP_000812.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 2px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="WP_000812" border="0" alt="WP_000812" align="right" src="http://angryweasel.com/blog/wp-content/uploads/2012/03/WP_000812_thumb.jpg" width="337" height="253" /></a>I spent last week lounging on the beaches of Maui with my family. I didn’t stay <em>completely</em> away from work or the interwebz, but after a day or so of sun and fun,I did manage to unwind enough to lose track of days of the week. </p>
<p>I spent a lot of time reading on the beach (and fell in love with my Kindle again). I made it through four books (one was a re-reading of a cheesy LOTR rip-off I originally read thirty years ago, but it was fun). </p>
<p>First on my reading list was <a href="http://www.amazon.com/gp/product/0307887898/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307887898">The Lean Startup: How Today&#8217;s Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=angryweasel-20&amp;l=as2&amp;o=1&amp;a=0307887898" width="1" height="1" /> by Eric Ries. Quite a few colleagues recommended the book, and I thought it was good. Two things made this a good (but not great) book for me. The first is that there’s not really anything new in the book (at least for those who have paid passive attention to lean and agile movements over the past few years). Even so, the abundance of stories about iterative practices in a variety of industries more than make up for the repetition. I was also a bit put off by what came across as author arrogance as well. There was just a bit too much self-promotion sprinkled throughout the book for me to fully enjoy it. YMMV, so I’d still recommend this book.</p>
<p>Next up was <a href="http://www.amazon.com/gp/product/007148499X/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=007148499X">Influencer: The Power to Change Anything</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=angryweasel-20&amp;l=as2&amp;o=1&amp;a=007148499X" width="1" height="1" /> by Kerry Patterson. We have an internal course at MS based on the book. I haven’t taken the course, but I’ve heard enough about the concepts to want to know more (for sick reasons beyond my control, I read a lot about organizational change and organizational learning). The gist of this book (like many others in the category) is that you can solve problems by changing behavior. The value in the book is in the model they use to describe the different ways one can enable behavioral change. I liked that the model divides the concepts into Motivational and Ability groupings – it reminds me of what Michael Lopp calls “The Skill and the Will”[1]. I read <a href="http://www.amazon.com/gp/product/0385528752/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0385528752">Switch: How to Change Things When Change Is Hard</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=angryweasel-20&amp;l=as2&amp;o=1&amp;a=0385528752" width="1" height="1" /> earlier this year, and think it’s a bit better book if you’re just going to read one book on organizational change, but the two books complement each other quite well.</p>
<p>The final book I read on the trip was <a href="http://www.amazon.com/gp/product/0060888229/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0060888229">Monday Morning Mentoring: Ten Lessons to Guide You Up the Ladder</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=angryweasel-20&amp;l=as2&amp;o=1&amp;a=0060888229" width="1" height="1" />. First off, I’ll admit that I’m a big fan of business fiction – especially when done well. There were no plot twists in the book, nor anything radical, but for me, it was a page turner (or button pusher in my case). The story documents progress (and setbacks) as a young exec meets with a business guru over the course of ten Monday morning mentoring sessions.</p>
<p>[1] <a href="http://www.amazon.com/gp/product/159059844X/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=159059844X">Managing Humans: Biting and Humorous Tales of a Software Engineering Manager</a><img style="border-bottom: medium none; border-left: medium none; margin: 0px; border-top: medium none; border-right: medium none" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=angryweasel-20&amp;l=as2&amp;o=1&amp;a=159059844X" width="1" height="1" /> – is a fantastic book on management and IMO, essential reading for people managers.</p>
<p><strong>DISCLAIMER:</strong> The above links are all amazon associate links (meaning that if you click the link and buy a book, Amazon credits me a few cents. I pull down the associate links automatically, but if you want to buy the books straight away, just go to Amazon directly and search for the above.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=429</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Learning is Dead</title>
		<link>http://angryweasel.com/blog/?p=425</link>
		<comments>http://angryweasel.com/blog/?p=425#comments</comments>
		<pubDate>Sun, 19 Feb 2012 04:26:50 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=425</guid>
		<description><![CDATA[Inspiration for my blog posts often comes from whatever’s evoking emotion in my life (annoyances, victories, gripes, etc.). Three things happened today that ensured that I’d write this post. Here’s the story of a question from a seven year old, a phone call, and an email. The first incident was a common one. My son [...]]]></description>
			<content:encoded><![CDATA[<p>Inspiration for my blog posts often comes from whatever’s evoking emotion in my life (annoyances, victories, gripes, etc.). Three things happened today that ensured that I’d write this post. Here’s the story of a question from a seven year old, a phone call, and an email.</p>
<p>The first incident was a common one. My son asked me what the circumference of the earth was (ok – he didn’t use the word ‘circumference’, but that’s what he asked). Like a trained seal, I grabbed my smart-phone and looked it up. This was stupid, because a) I knew the answer, and b) even if I didn’t, I know enough about distances between locations and longitude to come up with a fairly accurate approximation.</p>
<p>Just a bit later in the morning, I had a short interview with a journalist from my university – apparently they’re hard up for stories and are reaching out to alumni for gossip. At one point, the journalist asked something like, “What advice do you have for students today?”. I gave a long answer that said (more or less), “A university isn’t a vocational school. Although you may get caught up in the rat race of learning facts and writing papers, to be successful in the ‘real world’<i>, you need to know how to learn</i>.” I also (<a href="http://angryweasel.com/blog/?p=125">once again</a>) credited my Methods of Musical Research course and Dr. Snedeker for teaching me how to learn and for fueling my own passion for learning.</p>
<p>Less than thirty minutes later, I received an email response to a verbal request. I asked someone to research a topic and see if they could find any <u>interesting</u> papers that could foster additional discussion on the topic. They replied with a link to paper that shows up as the top link in Bing when searching on the exact phrase as the topic I presented. I expected my colleague to look at academic papers, and perhaps explore the references in those papers, or to find experts in the field and see what they wrote. I expected them to research…but I guess to them, ‘search’ was enough.</p>
<p>Perhaps I’m just being an old fart, but the serendipity of these three events launched a thought that scared the crap out of me. In these days of search engines and Wikipedia, <strong><i>I wonder if anyone knows how to think anymore</i>.</strong> Knowledge is much more than learning or regurgitating facts. The learning that happens when you move knowledge from <em>something you don’t know</em> to <em>something you do know</em> is trivial compared to when you add <em>discovering what you don’t know you don’t know</em> to the top of the stack (1). I’m scared that too many people (not just testers) are happy with on-demand fact finding rather than true learning and discovery. </p>
<p>It could be just me – perhaps I spend so much time reading and trying to learn because that’s what works for me, and that on-demand learning is the true future. But if that’s true, I worry what kind of future that will be.</p>
<p>(1) For more on this theory of knowledge acquisition, read Philip Armour’s original paper on the topic <a href="http://www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf">here</a>, or my takes, <a href="http://angryweasel.com/Articles/Abolition%20of%20Ignorance.pdf">here</a>, <a href="http://angryweasel.com/blog/?p=84">here</a>, and <a href="http://angryweasel.com/blog/?p=348">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=425</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The Secrets of Leadership</title>
		<link>http://angryweasel.com/blog/?p=422</link>
		<comments>http://angryweasel.com/blog/?p=422#comments</comments>
		<pubDate>Fri, 10 Feb 2012 17:28:05 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=422</guid>
		<description><![CDATA[Yesterday, Michael Larsen posted a review of Weinberg’s book, The Secrets of Consulting. I’ve been meaning to share a few thoughts about this book for at least year, so I thank Michael for spurring me to finally share my thoughts and experiences with TSoC. If you haven’t read this book, I bet it’s because the [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Michael Larsen <a href="http://www.mkltesthead.com/2012/02/book-review-secrets-of-consulting.html">posted a review</a> of Weinberg’s book, <a href="http://www.amazon.com/gp/product/0932633013/ref=as_li_ss_tl?ie=UTF8&amp;tag=angryweasel-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0932633013">The Secrets of Consulting</a>. I’ve been meaning to share a few thoughts about this book for at least year, so I thank Michael for spurring me to finally share my thoughts and experiences with TSoC.</p>
<p>If you haven’t read this book, I bet it’s because the title scared you away. You’re probably thinking, “I’m not a consultant, this book is irrelevant”. For those thinking that, or for any others reading right now, I’ll tell you this. I have read (and in some cases studied), over 40 books on leadership – and this is one of the best I’ve ever read on the subject.</p>
<p>When people get to “<a href="http://angryweasel.com/blog/?p=163">Senior” roles at Microsoft</a>, one of the things we expect is an ability to influence without authority, work through others, and basically make those around you better. For our introverted tech geeks, this is often a big wall to climb. Inevitably, when one of these Senior non—manager folks tracks me down and asks, “How can I get better at influence?”, or “How can I get others to accept my ideas?”, I hand them a copy of this book (I’ve done my best to pad Mr. Weinberg’s royalties with the dozen or so copies of this book I’ve purchased over the years). You see, being a good consultant, and being a good leader are pretty much the same thing. Some of my takeaways are below (adapted heavily to my usage over the years).</p>
<p>Good consultants know how to define the real problem at hand – they see what’s there, and what’s not there, and come up with a solution (or multiple solutions). I would hope, that if you’re a leader, you’d do the same.</p>
<p>Good consultants are humble – they don’t pretend to know it all, and know when to admit when they don’t. Your fee (or your title if you’re not a consultant) doesn’t mean you’re always right. It does mean, however, that you always need to help the team improve.</p>
<p>Establish and maintain trust. I can’t say enough about how much I value trust as a leadership attribute. The chapter on trust is critical for any leader.</p>
<p>Worry about the accomplishment, not the credit. This one rings home at MS, where our (ahem) review system often drives people to focus on credit rather than outcomes. The punch line, is that in my experience, the weight of the accomplishment always outweighs the weight of who did what. Just worry about making your projects successful, and the rewards will follow.</p>
<p>And given the hundred or so bullet points of wisdom sprinkled throughout the book, I’d say the meta-takeaway is that you have a good leadership toolbox. If something doesn’t work, doing it again louder won’t help – do something different. Use another leadership tool, or experiment. Nobody has time (or money) for a one-trick pony.</p>
<p>Now – to be fair, several points in the book are specifically for consulting – but if you read this book looking for leadership advice, that’s exactly what you’ll find (and you’ll barely notice the n/z sections).</p>
<p>What are you waiting for – go learn how to be a leader.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=422</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Exploring Test Automation</title>
		<link>http://angryweasel.com/blog/?p=412</link>
		<comments>http://angryweasel.com/blog/?p=412#comments</comments>
		<pubDate>Sun, 05 Feb 2012 19:27:05 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=412</guid>
		<description><![CDATA[&#160; I try to read a lot about testing in blogs, articles, books etc. A few days ago, I came across this quote, and it struck me in an odd way. “Commonly, test automation involves automating a manual process already in place that uses a formalized testing process” The source doesn’t matter, as it turns [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>I try to read a lot about testing in blogs, articles, books etc. A few days ago, I came across this quote, and it struck me in an odd way.</p>
<blockquote><p>“Commonly, test automation involves automating a manual process already in place that uses a formalized testing process”</p>
</blockquote>
<p>The source doesn’t matter, as it turns out that sentence was copied directly from the <a href="http://en.wikipedia.org/wiki/Test_automation">Wikipedia article on Test Automation</a>. I’ve been at Microsoft for a long time now, and although I do try to stay connected with testing outside of the Borg, sometimes I notice that *my* view of a subject is quite different than what’s “commonly” understood.</p>
<p>Or, maybe not – but let me try to explain my concerns here a bit more.</p>
<p>I’m all for saving time and money, but I have concerns with an automation approach based entirely (or largely) on automating a bunch of manual tests. Good test design considers manual and computer assisted testing as two different attributes – <em>not sequential tasks</em>. That concept is such an ingrained approach to me (and the testers I get to work with), that the idea of a write tests-&gt;run tests manually-&gt;automate those tests seems fundamentally broken. I know there are companies that have separate test automation team that do exactly this, and I think it’s a horrible approach.</p>
<p>Let’s use the <a href="http://angryweasel.com/blog/?p=335">Numberz Challenge</a> as an example. I know right away that I’m going to perform some manual tests (e.g. make sure the app can launch and close (original version had a bug here), verify look and feel, color choices, etc.). These sorts of tests could be automated, but I generally don’t for a few specific reasons.</p>
<ul>
<li>The oracle for look and feel is difficult. Automated testing based on comparing screen colors or app dimensions is fragile. A pair of eyes for a few seconds every once in a while is much cheaper. <i>There are, of course, exceptions, and if you’re convinced you can pull this off, just make sure you calculate the time spent investigating failures (and potential false positives) into your ROI calculation. I know many teams who have successful UI automation systems, but many more who have a bunch of test auto-crapation.</i></li>
<li>Most systems I work on – and certainly everything that has a UI, gets at least a tiny bit of usage from the product team or a small pilot group before rolling out widely. If the screen is pink, or the font somehow changed to Comic Sans, it will be noticed without the need for an automated test.</li>
</ul>
<p>When I look at something like Numberz, I also see where I need to use the power of a computer to answer some of the questions I have. For example, I know I need a large enough data set to be confident of the random algorithm, and I know I need extensive pattern matching to ensure that the next number is never predictable. Doing this manually is impossible (or a waste of time depending on what you try to do).</p>
<p>Now I imagine this scenario in the write-test-then-automate-it workflow.</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> Test Case Steps:</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> 1) Launch App</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> 2) Press the Roll! Button </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> Verify:</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> 1) Ensure that none of the numbers is less than 0 or greater than 9</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span> 2) Ensure that the total field is correct</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span> Repeat this test at least 10 times</pre>
<p><!--CRLF--></div>
</div>
<p>Now, the “automator” comes along and writes this test:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> Loop 10 times</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>   App.Launch (“numberz.exe”)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>   Button.Click(“Roll”)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>   // Validate numbers are within range </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>   // Validate correct total</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &quot;Courier New&quot;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> End Loop</pre>
<p><!--CRLF--></div>
</div>
<p>From what little context I have from the interwebs, this appears to be a common scenario &#8212; but we’ve missed the critical aspects of testing this app (testing randomness / predictability). <em>What we haven’t done at all in this situation is <strong>test design</strong></em>. To me, test design is far more holistic than thinking through a few sets of user tasks. You need to ask, “what’s really going on here?”, and “what do we really need to know?”. Automating a bunch of user tasks rarely answers those questions. (Note – it does answer <em>some</em> questions, so if you have a good system and tests you can trust, by all means don’t stop what you’re doing).</p>
<p>Where I think I have my big disconnect is in the definition of test automation. When I think of test automation, I don’t think of automating user tasks. I think, “How can I use the power of a computer to answer the testing questions I have?”, “How can I use the power of a computer to help me discover what I don’t know I don’t know?”, and “What scenarios do I need to investigate where using a computer is the only practical solution?”. </p>
<p>Perhaps test automation is purely the automation of manual tasks, and I’m attempting to overload the word. I know some folks prefer the term “computer assisted testing”, and I suppose that’s fine too.</p>
<p>To me (and I’m sure I’ve used this line before), <i>it’s just testing</i>. But please <strong>stop</strong> thinking of test automation as the step that follows test design, and start thinking of test design first.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=412</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Skeptics Dilemma</title>
		<link>http://angryweasel.com/blog/?p=404</link>
		<comments>http://angryweasel.com/blog/?p=404#comments</comments>
		<pubDate>Sat, 28 Jan 2012 02:19:16 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=404</guid>
		<description><![CDATA[For testers, being skeptical is generally a good thing. When someone says, “Our application doesn’t have any reliability errors”, I, for one, am skeptical. I’ll poke and prod and (usually) find something they haven’t thought about. There’s power in skepticism. Last year, I led a team of testers in performing code reviews of production code. [...]]]></description>
			<content:encoded><![CDATA[<p>For testers, being skeptical is generally a good thing. When someone says, “Our application doesn’t have any reliability errors”, I, for one, am skeptical. I’ll poke and prod and (usually) find something they haven’t thought about. There’s power in skepticism. Last year, I led a team of testers in performing code reviews of production code. My hypothesis was, that while developers perform code reviews thinking, “Does the code do what it’s supposed to do”, testers think, “In what conditions will the code <em>not </em>do what its supposed to do. You can insert the comment about testers being pessimistic (or overly pessimistic) here, but in general, the tester mindset is to question statements that seem…well, <em>questionable</em>. </p>
<p>But it’s easy to go overboard with skepticism. Time and time again, I hear good testers apply their skepticism broadly and liberally. Some (paraphrased) quotes I’ve heard recently include:</p>
<ul>
<li>“Model-based testing is interesting, but it doesn’t work in a lot of places”</li>
<li>“I’m skeptical of static analysis tools – sometimes they have false positives”</li>
<li>“Metrics are evil, because someone may use them to measure people”</li>
</ul>
<p>I agree whole heartedly with each of these quotes. However, I worry that folks are throwing <a href="http://en.wikipedia.org/wiki/Throw_out_the_baby_with_the_bath_water">the baby out with the bathwater</a>. Model-based testing (just an example), is a wonderful test design technique for stateful test problems. Although occasionally someone will screw up the value of MBT by claiming that it’s the only test approach you’re ever going to need, it’s just another technique (and the <u>perfect</u> technique given the proper context). Static analysis tools are also awesome, but aren’t perfect It’s <em>good to measure <u>some</u> things </em>too, but sure, one can screw it up.</p>
<p>I’m trying to think of anything in my life that works perfectly in every situation, but I’m coming up empty. I run into situations nearly every day where someone has a good idea that will obviously work <em>most </em>of the time – but not always. Given these situations, we could just send them back to the drawing board telling them, “I’m skeptical of your approach, because it won’t work in situation z”, but it’s probably a better idea to have a conversation about the limitations, understand where and when the approach may fail, and discuss mitigation or workarounds. Instead of throwing out the idea of running static analysis tools because of the potential false positives, <em>discuss</em> the false positive problem. Find out what causes them. Tweak the configuration. Do whatever you need to do to ensure the <em>value</em> of the approach.</p>
<p>Over the years, I’ve found value in some pretty stupid approaches. It seems that we should be able to find more value from some the ideas frequently discounted.</p>
<p>Even if we’re skeptical.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=404</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>In search of code quality</title>
		<link>http://angryweasel.com/blog/?p=402</link>
		<comments>http://angryweasel.com/blog/?p=402#comments</comments>
		<pubDate>Thu, 19 Jan 2012 23:03:10 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Quality]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=402</guid>
		<description><![CDATA[I’ve been thinking recently about what ‘code quality’ and what the phrase means. How does someone identify the difference between low quality code and high quality code (or medium quality code)? In my quest for knowledge, I discovered a few interesting things. I discovered the Spinellis book, Code Quality: The Open Source Perspective. I haven’t [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been thinking recently about what ‘code quality’ and what the phrase means. How does someone identify the difference between low quality code and high quality code (or medium quality code)? </p>
<p>In my quest for knowledge, I discovered a few interesting things.</p>
<p>I discovered the Spinellis book, <em>Code Quality: The Open Source Perspective</em>. I haven’t read this yet, but I ordered it, and looks like it will be interesting.</p>
<p>I found an article on coupling metrics on the IBM site. The reading here was good, as I discovered they have a <a href="http://www.bing.com/search?q=site%3Aibm.com+%22in+pursuit+of+code+quality%22&amp;qs=n&amp;sk=&amp;form=QBRE">series of articles</a> on code quality.</p>
<p>I found a few references to analysis tools for JavaScript (some lint-like stuff)</p>
<p>Over in the high brow world of the linkedin groups, I saw a bunch of people referencing code coverage as an indicator of code quality.</p>
<p>Nothing earth shattering, but some good information, and enough to get me thinking about what *I* think code quality is – and what it is <em>not</em>. I think it may be impossible to define code quality in a way that everyone will agree with &#8211; but that doesn&#8217;t mean I shouldn&#8217;t try.</p>
<p>We have <em>some</em> metrics that can give us an <em>idea</em> about code quality. Quality code doesn&#8217;t have any compiler warnings (ideally at the highest warning level), and it&#8217;s clean from static analysis errors and warnings. Complexity metrics such as cyclomatic complexity (basically, the number of paths through a function), or dependency metrics such as fan-in and fan-out can also be indicators of code quality.  </p>
<p>But – let’s make it clear that while I’m a (big) fan of those <em>indicators</em>, that’s all they are. Running clean with static analysis tools does nothing to ensure code quality – or product quality either (I <a href="http://angryweasel.com/blog/?p=295">ranted a bit about this</a> a few months back). In fact, I guarantee you that I could write (or show you) a piece of software that compiles with the highest warning levels set and passes any static analysis tool with flying colors…that still sucks.&nbsp; </p>
<p>One thing definitely unrelated to code quality is code coverage. All code coverage tells you is what percentage of your code you haven’t tested at all. If you squint and have a few drinks, you can pretend a little that high coverage rates from unit tests prove code quality…but once you sober up you’ll realize that all you have are unit tests that exercise some amount of your code.  </p>
<p>But we <em>can</em> go beyond code analysis tools. Testability (can I observe and control program flow), and Maintainability (“Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live.” <a href="http://c2.com/cgi/wiki?CodeForTheMaintainer">ref</a>) are critical to code quality. Given a good reviewer, <a href="http://www.osnews.com/story/19266/WTFs_m">Thom Holwerda’s comic</a> is also spot on – <em><strong>the only valid measurement of code quality is WTF’s per minute</strong></em>. </p>
<p>As I think about this, I find my mind wandering back to Pirsig. Quality and care are two different ways of looking at the same thing. Quality comes from care, so perhaps what I want to measure is the <em>care </em>put into coding. The fact that a developer <em>wanted</em> to compile at a higher warning level or turn on more static analysis checks, or that they <em>cared</em> enough to get the testers input on testability, or a peer’s advice on maintainability may be the best ways to measure code quality of all. </p>
<p>So now, perhaps, I’m in search of a way to discover and measure care.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=402</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My new world</title>
		<link>http://angryweasel.com/blog/?p=399</link>
		<comments>http://angryweasel.com/blog/?p=399#comments</comments>
		<pubDate>Mon, 16 Jan 2012 04:21:06 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[Writing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=399</guid>
		<description><![CDATA[Twenty-twelve has been a heck of a year so far. The day job has been keeping me swamped, but the work, the challenges, and the scope feel perfect – I’m having a great time, and I couldn’t ask for anything more in a job. Historically, most of my blog posts come from experiences or inspiration [...]]]></description>
			<content:encoded><![CDATA[<p>Twenty-twelve has been a heck of a year so far. The day job has been keeping me swamped, but the work, the challenges, and the scope feel perfect – I’m having a great time, and I couldn’t ask for anything more in a job.</p>
<p>Historically, most of my blog posts come from experiences or inspiration from my day job (despite those who seem to think that every snide comment I make is about them, my snide comments are almost entirely about people I work with). While I’m sure that will continue to be the case, I’m still pretty deep in ramp up mode, and it turns out that the bulk of the work I need to do right now is solving a variety of test infrastructure and code issues. While I find this sort of work exciting to <em>perform, </em>I find it dreadfully boring to write about (apologies to all those who enjoy writing about these things).</p>
<p>But I do enjoy writing, and even as I write this trivial little blurb (a blurb that will turn into a blog post in about five minutes), I realize that I have a huge backlog of items <em><u>not</u></em> contrived from my day-to-day work that I can draw from in order to satisfy my need to write and share a few times a week.</p>
<p>Meanwhile, some chunks of my work are about things that I can’t blog about. In some ways, those are the most exciting. I have plans to share some of my thoughts on this when it’s appropriate, and I think it will be an interesting exercise (and hopefully, interesting reading when I can share). We’ll see what happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=399</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011 year end roundup</title>
		<link>http://angryweasel.com/blog/?p=397</link>
		<comments>http://angryweasel.com/blog/?p=397#comments</comments>
		<pubDate>Fri, 23 Dec 2011 15:39:55 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=397</guid>
		<description><![CDATA[I’ve been on vacation (whatever that means) for almost a week now, and don’t plan to post again until 2012. To help fill in the break (and for anyone new to my blog), I thought I’d share some stats and popular posts from the last twelve months. I wrote 60 blog entries in 2011. Some [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been on vacation (whatever that means) for almost a week now, and don’t plan to post again until 2012. To help fill in the break (and for anyone new to my blog), I thought I’d share some stats and popular posts from the last twelve months.</p>
<p>I wrote 60 blog entries in 2011. Some of the more popular posts (in no particular order) were:</p>
<ul>
<li><a href="http://angryweasel.com/blog/?p=293">My job as a Tester</a></li>
<li><a href="http://angryweasel.com/blog/?p=298">What is Testing?</a></li>
<li><a href="http://angryweasel.com/blog/?p=325">Test Design for Automation</a></li>
<li><a href="http://angryweasel.com/blog/?p=335">Numberz Challenge</a></li>
<li><a href="http://angryweasel.com/blog/?p=284">Beyond Regression Tests</a></li>
<li><a href="http://angryweasel.com/blog/?p=305">R-E-S-P-E-C-T</a></li>
<li><a href="http://angryweasel.com/blog/?p=277">Judgment in Testing</a></li>
<li><a href="http://angryweasel.com/blog/?p=278">Lost in the weeds</a></li>
</ul>
<p>I did a bit of speaking in 2011 (although, as usual, more than I planned). I was a <a href="http://www.pnsqc.org">pnsqc</a>, at Intel in Israel, and at the Swiss and German Testing Day conferences. I also attended the second Writing About Testing conference (and had a great time).</p>
<p>Next year, I’m trying (again) to speak and travel less, blog about the same amount, and keep having fun working on the Xbox team. For everyone who’s read or posted a comment, thank you for supporting my silly addiction to writing. I hope I’ve given you something to think (or complain) about.</p>
<p>Best wishes for the holidays and 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=397</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Ballad of the Senior Tester</title>
		<link>http://angryweasel.com/blog/?p=388</link>
		<comments>http://angryweasel.com/blog/?p=388#comments</comments>
		<pubDate>Fri, 16 Dec 2011 21:21:07 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Testing]]></category>
		<category><![CDATA[Test Careers]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=388</guid>
		<description><![CDATA[I’m a Senior Tester, don’t you know Been testing software for five years or so I got bills to pay and need a better job… Looking for jobs with ‘Senior’ in the name Gotta’s admit, they’re all pretty lame Looks like I’m over-qualified… Someone (non-Microsoft) asked me recently what a “Senior Tester” does. I told [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><span style="background-color: #ffffff;">I’m a Senior Tester, don’t you know</span></p>
<p><span style="background-color: #ffffff;">Been testing software for five years or so</span></p>
<p><span style="background-color: #ffffff;">I got bills to pay and need a better job…</span></p>
<p><span style="background-color: #ffffff;">Looking for jobs with ‘Senior’ in the name</span></p>
<p><span style="background-color: #ffffff;">Gotta’s admit, they’re all pretty lame</span></p>
<p><span style="background-color: #ffffff;">Looks like I’m over-qualified…</span></p></blockquote>
<p>Someone (non-Microsoft) asked me recently what a “Senior Tester” does. I told them that I knew in the context of Microsoft, but really had no idea if the term meant <em>anything</em> in the industry. After a quick (and painful) trip to a jobs website, I was able to confirm that the ‘Senior’ title doesn’t carry a lot of weight. Consider some of these quotes – all from positions advertised as “Senior Tester”, or “Senior QA Tester (on a side note, wtf is a QA Tester?):</p>
<ul>
<li>With minimal direction writes scripts and executes test cases during functional/system/integration testing.</li>
<li>Modify existing test plans and testing information to correct errors, to adapt to new test scenarios, upgraded interfaces and performance enhancements.</li>
<li>Monitor bug resolution efforts and track successes.</li>
<li>Participates in analysis and design walkthroughs, as well as team meetings</li>
<li>The Senior Tester will work extensively with the Test Lead to provide test estimates</li>
<li>Complete knowledge of QA Best Practices and the full Testing SDLC</li>
</ul>
<p><span style="background-color: #ffffff;"> </span></p>
<p>Let me rant on the last bullet point first. Actually, never mind – anything I can say is something you’ve probably already thought.</p>
<p>As for the first five bullet points, are those really considered “Senior” activities? I was surprised that being able to cross the street by themselves or washing their hands after using the bathroom weren’t required attributes. Then again, I’ve been sheltered in the world of Microsoft for the past 17 years (and as a noob in a startup for 2 years before that), so my world view of testing has limitations.</p>
<p>So, let me talk about what I do know. Here at the evil empire, we have standard titles for all roles (<a href="http://angryweasel.com/blog/?p=163">more details on test titles are here</a>). As I mentioned in the link (which I know you haven’t read yet), we have a “Senior SDET” title at MS, and this is where we expect testers to exhibit some leadership skills (they learn how to find the bathroom by themselves at a much lower level). To be clear, leadership does not mean management. ‘Senior’ is the minimum level where we like people (who are interested) to move into management roles, but we have hundreds of non-managers at the Senior level (about 8% of the total test population if you’re curious).</p>
<p>My random search for Senior test roles wasn’t entirely in vain. Consider the following:</p>
<ul>
<li>Experience with leading testing efforts on integrated teams and developing and implementing sound testing methodologies</li>
<li>This is a senior role that includes evaluating existing automated testing process and recommending improvements</li>
</ul>
<p>Now those seem a little better – now the role requires some leadership and decision making, so let’s look a bit closer at these a few other attributes I expect to see in Senior testers at MS.</p>
<ul>
<li><strong>Decision Making</strong> – senior testers make confident decisions, and do not rely on consensus for making (most) decisions.</li>
<li><strong>Influence</strong> – Dwight Eisenhower said, “Leadership is the art of getting someone else to do something you want done because he wants to do it.”  Senior testers make their team better through influence rather than mandates – they are the <a href="http://en.wikipedia.org/wiki/Point_guard">point guard</a> of the test team.</li>
<li><strong>Network </strong>– senior testers use their network to find answers (or knowledge), and connect their teammates with their network (i.e. tester matchmaking)</li>
<li><strong>Credibility </strong>– senior testers don’t proclaim they’re a leader, and <span style="text-decoration: underline;">no</span> title demands respect. Leaders know that respect as a leader comes through establishing credibility with their team and peers. For me, the moment you <em>demand</em> respect as a leader is the moment you <em>lose</em> my respect as a leader.</li>
</ul>
<p>That’s not an exhaustive list, and each of those points could be (and may be) a post unto its own. But that’s what ‘Senior Tester’ means to me (In my sheltered life). Undoubtedly, your definition is different, and that’s fine. Regardless of where your opinions lie, I hope this provides some food for thought on your own views of what ‘Senior’ means.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=388</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Changes, Three Ps, and More Changes</title>
		<link>http://angryweasel.com/blog/?p=387</link>
		<comments>http://angryweasel.com/blog/?p=387#comments</comments>
		<pubDate>Thu, 08 Dec 2011 17:42:19 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[Test Careers]]></category>
		<category><![CDATA[Xbox]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=387</guid>
		<description><![CDATA[A little over five weeks ago, I got a new job (one of the things I find great about MS is that one can change jobs completely without going through the hassle of filling out new forms). In that five weeks, I was in Germany for four days, and off for two days for Thanksgiving, [...]]]></description>
			<content:encoded><![CDATA[<p>A little over five weeks ago, I got a new job (one of the things I find great about MS is that one can change jobs completely without going through the hassle of filling out new forms). In that five weeks, I was in Germany for four days, and off for two days for Thanksgiving, so technically today is my (…counting on calendar…) 23rd day on the Xbox team.</p>
<p>Admittedly, I’m still in the honey-moon phase, but I’m having a great time. But life just doesn’t seem to be as fun without a surprise here and there, and this career move wasn’t without exception. More on that later – but let’s first consider a bit of career advice.</p>
<p>One tidbit of career advice I often give is “The 3 Ps”. When you’re looking for a job (or evaluating your current position), you need to consider the <strong>Product</strong>, the <strong>People</strong>, and the <strong>Person</strong>.</p>
<ul>
<li><strong>Consider the Product</strong> – You’ll be more motivated and excited about your work if you have interest in the product (or the technical challenges regarding that product). On the corporate applications side of Microsoft, I honestly think that <a href="http://microsoft.com/lync">Lync</a> (my old group) is freakin’ cool, but there’s no understating the sexy coolness of Xbox and Kinect either. </li>
<li><strong>Consider the People</strong> – Nobody wants to work with a bunch of jerks. I don’t want to work with people who don’t care about their jobs. I happened to know dozens of people working on XBox (I worked with many of them on Windows 95 &amp; Windows 98), and all are great people. When I was considering the move, I chatted with people on the team that I didn’t know – and they all had this <em>vibe</em> of loving what they do. To me, that’s the sign of a good team to work on.</li>
<li><strong>Consider the Person</strong> – We all have to work for <em>someone</em>. Take time when considering a new position to make sure that whoever you report to (and ideally, <em>their</em> manager) are on the same page as you; and will support you and help you grow. </li>
</ul>
<p>To me – the <em>Person</em> part of the equation is critical. I’m in a rare position at Microsoft – we don’t have many testers at my level who do not manage teams. Managing someone like me, and communicating my value (or lack of value) appropriately is a challenge. Because there are few of us extra-senior testers, there are <u>very </u>few managers who have experience using us effectively. I selected my last manager based on this criteria, and when I moved to Xbox, I used the same criteria. It was hard to leave a team where I had the 3 Ps, but the time was right, and I took the time to ensure that I would have the 3 Ps on my new team as well.</p>
<p>Three days into my new job, my manager called me into his office and said, “Welcome to the team – we’re having a re-org”. The details of the re-org aren’t important, but they make perfect business sense, and I’m excited about the change. Unfortunately, the manager I had carefully selected wasn’t going to be my manager any more – and with the upcoming release of the <a href="http://majornelson.com/2011/12/05/a-letter-from-marc-whitten-a-new-xbox-360-experience/">new dashboard</a>, I wasn’t sure where I was going to land until a day or two ago.</p>
<p>So – with one manager on the way out, and another yet to be defined, I fell back on what I seem to do best – I did whatever I wanted. In the land of Xbox, I suppose that could mean a whole lot of Skyrim and Forza, but I dug deep into some testing challenges, looked at engineering systems, got to know people and basically spent a whole bunch of time figuring out how the org and technology work. I once considered a position at a company full of young folks where someone suggested that I spend at least a month or two “doing whatever I wanted” until I figured out what I <em>really</em> wanted to do. My recent experience wasn’t quite as directed as that, but I find it interesting that concept seems to repeat throughout my career.</p>
<p>The good news is that I’ve met with my new boss a few times, and I think we’ll work very well together. We’re still figuring out exactly what I’ll do (which is perfectly ok), but I’m completely comfortable with how he wants to use me, and although he’s still a bit of an unknown to me, I’m pretty confident my 3 Ps are still in place. I’m excited, and a little scared (another bit of good career advice), so I know I’m in the right place.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=387</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Just Fix It (mostly)</title>
		<link>http://angryweasel.com/blog/?p=386</link>
		<comments>http://angryweasel.com/blog/?p=386#comments</comments>
		<pubDate>Mon, 05 Dec 2011 18:20:22 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=386</guid>
		<description><![CDATA[Chris McMahon’s latest post (Just Fix It) proposes that as far as bug tracking goes, the best course of action is to skip the “tracking” part of the workflow and “Just Fix It.” I’m a huge fan of this approach and think that for the most part, tracking a large number of bugs in a [...]]]></description>
			<content:encoded><![CDATA[<p>Chris McMahon’s <a href="http://chrismcmahonsblog.blogspot.com/2011/12/just-fix-it.html">latest post</a> (Just Fix It) proposes that as far as bug tracking goes, the best course of action is to skip the “tracking” part of the workflow and “Just Fix It.” I’m a huge fan of this approach and think that for the most part, tracking a large number of bugs in a big fat bug system (and often overemphasizing the church of the bug curve) pretty much <em>encourage</em> a test-last / test-quality-in workflow. </p>
<p>I see this concept come up frequently, and I’ve noticed a bit of a trend. Teams that follow Just Fix It love it. Teams that prefer to fix bugs later are sure that the concept won’t work for their team, and that they need the curve and tracking data in order to ship their (undeniably unique) product. As a side note, one fun thing I’ve talked a few teams at Microsoft into doing is to pair on bug fixes – when Joe-Tester finds a bug, he Tells Kathy-Developer about the issue, and then the two of them pair-program the fix. I could write a whole post on why this is so cool, but I’ll leave it at that for now.</p>
<p>In short, I’m a huge fan of Just Fix It, but as usual, the totality of overlap of agreement between Chris and I is about 93%. </p>
<p>For example, let’s say on Monday, Alex-Tester notices that the froobnozzle isn’t working. He tells the developer, who fixes the problem immediately. Tuesday, Beth-Tester notices that the froobnozzle doesn’t work when interacting with another part of the system. She tells the developer, who fixes the problem right away. Over the following days and weeks, <strong>a lot</strong> of problems are discovered with the froobnozzle. The froobnozzle, is, in fact, a piece of crap held together by the 1s and 0s version of spit and duct tape. A bug tracking system let’s you see (I hate to say this out lout…) <em>trends</em> of <u>where</u> errors are. Bugs don’t appear randomly sprinkled throughout a product – they tend to congregate in clumps. Knowing where the clumps are can guide further testing, or risk decisions.</p>
<p>Source control <em>almost</em> mitigates this concern, but unless you have a diligent comment policy for check-ins, you probably won’t be able to differentiate between a “I was adding <em>new </em>code or functionality” check-ins vs. “I was fixing shit I broke” check-ins.</p>
<p>But I won’t go as far as to say you need a bug tracking system. As Chris describes it, and as most people use them, a bug system is really a work-item tracking system anyway. If you track work items on post-its or notecards, bugs should work the same way. As far as trends go, I think a simple tic-mark system would work just as well. When you discover a problem with the froobnozzle, write it on the board and put a tic-mark next to it. When a component gets <em>n</em> number of tics, schedule refactoring time, or do a design review (or both). Alternately, look at the components with the highest number of tics during the retrospective or sprint planning and review those for potential re-work.</p>
<p>But other than that, yeah. Just Fix It!</p>
<p><em><strong>Note</strong>: I would have posted this as a comment on Chris’s blog, but I, for one, find the comment forms on blogspot completely unusable.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=386</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A bit of trouble shooting</title>
		<link>http://angryweasel.com/blog/?p=380</link>
		<comments>http://angryweasel.com/blog/?p=380#comments</comments>
		<pubDate>Wed, 30 Nov 2011 21:35:38 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=380</guid>
		<description><![CDATA[I posted a few months ago regarding my move to using a virtual machine as my “mail” machine. I’m still a huge fan of that approach, but in my new job (the really cool one working on the Xbox team!), I’m running Win7 rather than server as my main machine. I looked into using an [...]]]></description>
			<content:encoded><![CDATA[<p>I posted a few months ago regarding <a href="http://angryweasel.com/blog/?p=316">my move to using a virtual machine</a> as my “mail” machine. I’m still a huge fan of that approach, but in my new job (the really cool one working on the Xbox team!), I’m running Win7 rather than server as my main machine. I looked into using an internal hosted VM server solution, but since the solutions I found are used primarily for testing, performance wasn’t quite what I wanted (or what I was used to).</p>
<p>Let me outline the problem. I don’t look at email or twitter or my rss feed all of the time – in fact, most of my electronic communication time occurs when I’m compiling / building (I could use that time <a href="http://xkcd.com/303/">to have a sword-fight</a>, but I find it better to at least <em>pretend </em>I’m productive). I love to group the “non-essential” stuff together, and when I’m waiting on a build, it’s the perfect time to write email, documents, tweet (or sometimes blog).</p>
<p><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/image.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 8px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/image_thumb.png" width="404" height="284" /></a>The problem is, that when I’m compiling, my <strong>12 cores </strong>are pretty busy. This makes reading email, or doing pretty much anything else that would like more than a few time slices of cpu power sort of suck.</p>
<p>I have two computers (a desktop and a laptop), so I have an option of using my laptop for those tasks while the compiler elves are taking over my computer, but given the choice of using a 24” monitor and a full size ergonomic keyboard over a 13” monitor and compressed keyboard, which would you choose? To be fair, I adore my laptop (Lenovo X200s) – but I adore it because it’s small and I can use it anywhere (including on an airline tray table while the monster man in front of me leans his seat all the way back for 8 hours straight). But it’s not a computer I like to write large documents or presentations on.</p>
<p>The solution, as many have already guessed, is to connect to my laptop via terminal server and use it from my desktop machine. The overhead of TS is small enough, that I barely notice a perf problem even at peak memory and cpu usage. The TS session even stretches my desktop to 1920&#215;1080, so it’s a pretty sweet setup. All that is good (and somewhat obvious), but few things in life ever go without a hitch.</p>
<p>Despite how much I <em>wanted</em> to love the setup, I noticed that my connection would drop frequently – and then it would take a minute until I could reconnect. I powered through it for a day or two (I tell myself that I was subconsciously gathering clues). Then finally, I found the clue that led me in right direction. I listen to music on Zune quite a bit while I work (I configured terminal server to play audio on the server machine (my laptop), so I select songs from the TS session on my desktop, and listen through headphones connected to my laptop). So…I noticed that whenever my computer disconnected, I lost audio a few seconds later. The first few times this happened, I (ignorantly) assumed that <em>because </em>I lost the TS connection, I also lost the audio. Then it hit me that since the audio is playing on my laptop, I should never lose audio…unless the network connection was lost.</p>
<p>Losing the TS connection and losing audio were both symptoms of the same root cause (lost network connection) – the only thing left to figure out was why two computers on the same subnet were losing their connection.</p>
<p>I took a look at power management settings to ensure that my laptop wasn’t suspending, but all was good. My next step was to look at my adapter settings to see if the network adapter was powering down for some reason. Sure enough, there was a setting named “System Idle Power Saver” that was enabled. I disabled the setting, and I’ve only had one dropped connection all week.</p>
<p>This example may sound more like yak-shaving than testing, but I’ve always liked the trouble shooting aspect of testing. Going beyond “here’s a problem”, to “here’s what (probably) caused the problem” is, in my opinion) an important skill for testers.</p>
<p>Oops – my build is done – time to get this posted.</p>
]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&#038;p=380</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

