<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Tooth of the Weasel</title>
	
	<link>http://angryweasel.com/blog</link>
	<description>notes and rants about testing and quality from alan page</description>
	<lastBuildDate>Sun, 19 Feb 2012 04:26:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ToothOfTheWeasel" /><feedburner:info uri="toothoftheweasel" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Learning is Dead</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/Cwbv50eYBCc/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/Cwbv50eYBCc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=425</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=425</feedburner:origLink></item>
		<item>
		<title>The Secrets of Leadership</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/5aOuxS356mk/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/5aOuxS356mk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=422</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=422</feedburner:origLink></item>
		<item>
		<title>Exploring Test Automation</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/7HL7bMWk0NA/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/7HL7bMWk0NA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=412</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=412</feedburner:origLink></item>
		<item>
		<title>The Skeptics Dilemma</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/agS2eXdriME/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/agS2eXdriME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=404</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=404</feedburner:origLink></item>
		<item>
		<title>In search of code quality</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/fzP-4wnAUNg/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/fzP-4wnAUNg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=402</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=402</feedburner:origLink></item>
		<item>
		<title>My new world</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/jbbGeP5fqT0/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/jbbGeP5fqT0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=399</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=399</feedburner:origLink></item>
		<item>
		<title>2011 year end roundup</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/ehmTOUzP1Z4/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/ehmTOUzP1Z4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=397</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=397</feedburner:origLink></item>
		<item>
		<title>The Ballad of the Senior Tester</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/VJCDB9bjlUU/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/VJCDB9bjlUU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=388</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=388</feedburner:origLink></item>
		<item>
		<title>Changes, Three Ps, and More Changes</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/Th65A1B08yo/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/Th65A1B08yo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=387</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=387</feedburner:origLink></item>
		<item>
		<title>Just Fix It (mostly)</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/_fKhQg24xdE/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/_fKhQg24xdE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=386</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=386</feedburner:origLink></item>
		<item>
		<title>A bit of trouble shooting</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/BBwQ6c2Q0OI/</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>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/BBwQ6c2Q0OI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=380</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=380</feedburner:origLink></item>
		<item>
		<title>Activities and Roles</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/gfkOiTewW3U/</link>
		<comments>http://angryweasel.com/blog/?p=375#comments</comments>
		<pubDate>Sun, 20 Nov 2011 18:34:18 +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=375</guid>
		<description><![CDATA[I’ve been thinking about testing activities and tester roles lately, or more lately, since it seems to be a recurring topic on this blog. I have to admit that I remain a bit surprised how often testers argue about what is and what isn’t testing. So – let me throw a few examples of potential [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been thinking about testing activities and tester roles lately, or <em>more</em> lately, since it seems to be a recurring topic on this blog. I have to admit that I remain a bit surprised how often testers argue about what <em>is</em> and what <em>isn’t </em>testing.</p>
<p>So – let me throw a few examples of <em>potential </em>testing activities out there for discussion or comment. For the scenarios below, consider two questions:</p>
<ul>
<li>Does this describe a <em>testing activity</em>?</li>
<li>What <em>role</em> typically performs this activity?</li>
</ul>
<p><em>Alex</em> practices Test Driven Development. He consistently writes unit tests before implementing the code those unit tests verify. Over time, he’s built up a large set of unit tests that verify the correctness of all of the modules he owns. His unit tests give him the confidence to refactor or add functionality at any time. </p>
<p><em>Beth</em> works closely with another teammate to ensure that the code implementation is highly testable. This includes pairing on many of the coding tasks, as well as adding hooks or accessible interfaces to the implementation when necessary. Her work results in code that the team finds straightforward and easy to test.</p>
<p><em>Chuck</em> spends a lot of time analyzing code. Mostly, he’s a rock star code reviewer, and has found dozens and dozens of critical security and reliability issues in his team’s code base during the review process. He often uses tools and techniques like static analysis and complexity measurements in order to target his efforts. The whole team looks to him for critical code reviews, and he’s a mentor for many of the new team members.</p>
<p><em>Denise </em>painstakingly enters test cases into a test case management system, and then regularly runs subsets of those tests as dictated by her management. She likes the predictability and structure of this approach and his attention to detail makes her successful in her job.</p>
<p><em>Frank </em>finds product bugs by the handful. He uses a variety of test techniques, approaches, and tools to find several high quality bugs every day. Everyone on the team values his efforts, and many people on the team look to him for coaching on test approaches. His approaches are unscripted, but nobody doubts the effectiveness of his approach.</p>
<p><em>Fiona</em> spends most of her day writing automated regression tests, and is constantly learning new approaches to writing automation. She writes high quality, trustworthy code that has few false positive / false negatives, and has earned the respect of everyone on the team. She enjoys writing automated tests and is proud of her accomplishments.</p>
<p><em>Greg</em> works closely with the user experience and project management teams to ensure that the customer experience of his team’s product is of high quality. He frequently analyzes reports from customers and makes sure that all relevant team members know what the most critical issues customers are facing. He uses his broad knowledge of customer data to be influential on both product and test design.</p>
<p><em>Helen</em> is a bit of a tool-smith. Although her team uses a lot of open source tools, she writes the applications and utilities that stitches the tools into an end-to-end testing framework. She loves thinking “big picture” and ensuring that all of the components in the system work together seamlessly. She doesn’t perform any product testing, but her work enables many of the testing activities to be successful.</p>
<p>To me, I could make a case that each of the scenarios above describe a testing activity – but I could also make a case that many do not. I’ll leave my observations at that for now and see what happens in the comments.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/gfkOiTewW3U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=375</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=375</feedburner:origLink></item>
		<item>
		<title>Trip Report: German Testing Day</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/vqtORSQqUDY/</link>
		<comments>http://angryweasel.com/blog/?p=372#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:48:56 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=372</guid>
		<description><![CDATA[As I’m writing this (or at least starting to write this), I’m on a plane from Frankfurt to JFK airport in New York (where I will catch another flight home to Seattle). I was in Frankfurt for the first ever German Testing Day event. The event is put on by the same folks that put [...]]]></description>
			<content:encoded><![CDATA[<p>As I’m writing this (or at least <em>starting</em> to write this), I’m on a plane from Frankfurt to JFK airport in New York (where I will catch another flight home to Seattle). I was in Frankfurt for the first ever German Testing Day event. The event is put on by the same folks that put on Swiss Testing Day, so I knew it would go well. </p>
<p>For those interested, here’s a quick recap of the trip.</p>
<p><strong>November 6-7</strong></p>
<p>I flew from Seattle to Detroit, then on to Frankfurt. I just reached “Silver Medallion” status on Delta, so I got a free bump to economy-comfort class and an extra few inches of room on the Detroit to Frankfurt leg of the trip. I’ve been to Frankfurt at least a dozen times, but this was the first time I’ve left the airport (travellers in the audience already know that Frankfurt is a busy airline hub).</p>
<p>I arrived at my hotel (~10 kilometers or so outside of the downtown area) around noon. In an attempt to fight off jet lag, I dumped my bags and then set off to explore. The train station was a 5-minute walk away, and within 20 minutes or so I was in downtown Frankfurt. I took a break at a Starbucks (who apparently have free wireless worldwide these days) to sync my mail and do a bit of work before grabbing some dinner and heading back to my hotel to sleep.</p>
<p><strong>November 8</strong></p>
<p><font color="#2e2e2e">After a pretty good night of sleep, I had just 3 things on my agenda. <strong>1)</strong> Explore more of Frankfurt; <strong>2) </strong>Prep for my presentation; <strong>3)</strong> Meet the conference board for dinner at 8:00pm. </font></p>
<p><font color="#2e2e2e">I combined the first two by working at a coffee shop until I couldn’t stand the wooden seat anymore, then walking around Frankfurt until I couldn’t stand <em>that</em> anymore. </font><font color="#2e2e2e">Try as I might to park myself somewhere other than Starbucks, it was the only place I could find that had free Wi-Fi access. Coffee Fellows and O’Reilly’s pub both had free Wi-Fi, but they both required that I have a working mobile number (I asked about this at O’Reilly’s, and they said it was so they could track me down if I downloaded exceptionally large amounts of data).</font></p>
<p><font color="#2e2e2e">One interesting discovery was a “Hammering Man” sculpture, since we have something almost exactly the same in Seattle (I’ve discovered these are <a href="http://en.wikipedia.org/wiki/Hammering_Man">two of three Hammering Men in the world</a>).</font></p>
<p><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000507.jpg"><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="Frankfurt &quot;Hammering Man&quot;" border="0" alt="Frankfurt &quot;Hammering Man&quot;" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000507_thumb.jpg" width="180" height="240" /></a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/hamman.jpg"><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="Seattle Hammering Man" border="0" alt="Seattle Hammering Man" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/hamman_thumb.jpg" width="210" height="210" /></a></p>
<p><font color="#2e2e2e">By 4:00 or so, I was feeling a little drained, so I went back to my hotel to dump my laptop and take a quick nap before heading off to dinner. It was great seeing <a href="http://www.swissq.it/management-team">Adrian Zwingli</a> from <a href="http://www.swissq.it/">Swiss-Q</a> again and catching up with him. He’s such a passionate person and the perfect person to run these events. After a few beers and a plate of cheese Spätzle that was just a bit too rich to finish, we all headed back to the hotel.</font></p>
<p><strong>November 9</strong></p>
<p>After another fairly good night of sleep, I got up, prepped a bit more, then took a taxi to <em><a href="http://www.jahrhunderthalle.de/">Jahrhunderthalle</a></em> – the site of the conference. I gave the opening keynote of the conference (no pressure!) on <em>Test Innovation at Microsoft</em>. I haven’t given a talk on this topic before, and I had a huge number of insights and revelations during my preparation. I think this is a topic I will continue to develop (both test innovation in general, and sharing the amazing test innovations at Microsoft). The GTD folks got the first glimpse into some of the cool things MS is doing in testing – as well as some tips on how to make innovation happen (hint – you don’t start by saying, “I think I’ll innovate today!”). I felt like the talk went well, but also think that this is a talk I can repeat and improve on in the future as my own thoughts on the subject evolve.I did have quite a few people give me compliments on the talk during the day, but I also realize that people generally don’t track down a speaker to tell them that their talk sucked.</p>
<p>I spent the rest of the day listening in on some of the English talks at the event, and getting a bit of work done. A pair of presenters from eBay talked about test automation principles, and they had a good message (meaning that I agreed with what they had to say, and think they have a good approach). I talked to them a bit afterwards too, and they seem like great people too.</p>
<p>After the event, Sebastien Kernbach (Conference Head from Swiss-Q) one of his colleagues (a woman whose name I have, unfortunately, forgotten) and I had dinner together at the hotel before heading off to bed. Not a crazy night at all, but I was beat, and ready for sleep.</p>
<p><strong>November 10</strong></p>
<p>Time to fly home. I took the hotel shuttle to the airport, had some breakfast, and got on my flight. The connection at JFK went smoothly, and I was home, in my own bed by 9:00pm Seattle time.</p>
<p>Overall, I had a great time on the trip, and once again, the Swiss-Q folks showed me that they know testing and know how to create test events. I was honored to have been invited, and hope I have the opportunity to present at another of their events sometime in the future.</p>
<p>But for now, my travel schedule is completely empty, and I plan to keep it that way for as long as I can get away with it. </p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/vqtORSQqUDY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=372</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=372</feedburner:origLink></item>
		<item>
		<title>Career++</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/pta-RtwY0fY/</link>
		<comments>http://angryweasel.com/blog/?p=363#comments</comments>
		<pubDate>Tue, 08 Nov 2011 14:21:08 +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=363</guid>
		<description><![CDATA[Chris Mcmahon once (I think after reading this post) described me and my test role at MS as being like a “tenured professor” – that I have the freedom to choose what I do and choose how I go about it (as long as I show value). I enjoy this role, and think I’ve been [...]]]></description>
			<content:encoded><![CDATA[<p>Chris Mcmahon once (I think after reading <a href="http://angryweasel.com/blog/?p=293" target="_blank">this post</a>) described me and my test role at MS as being like a “tenured professor” – that I have the freedom to choose what I do and choose how I go about it (as long as I show value). I enjoy this role, and think I’ve been able to help a lot of my team members  become better testers.</p>
<p>But sometimes, even tenured professors are drawn by the lure of an insanely hard challenge. If bigger challenges weren’t available, I suppose tenured professors would stay in their jobs for decades (and I know that many of them do). However, I know of several of my own former professors who found new roles lured entirely by the challenge of the unknown. Even if Indiana Jones <a href="http://www.mcsweeneys.net/articles/back-from-yet-another-globetrotting-adventure-indiana-jones-checks-his-mail-and-discovers-that-his-bid-for-tenure-has-been-denied" target="_blank">would have been tenured</a>, I’d bet he’d have left his position if he had the opportunity for the right archaeological challenge.</p>
<p>So – even though I’ve only spent a relatively small amount of time with the <a href="http://www.microsoft.com/lync">Lync</a> team at Microsoft, the lure of the insanely hard problem has pulled me away. About a week ago, I began a new position on the Xbox team where I will work on some of the interesting challenges in testing the xbox platform, including a deep-dive into testing the Kinect device.</p>
<p>The Lync team was (and still is) awesome, and will always be one of my best memories of Microsoft. They will continue to be wildly successful without me (and to tell you the truth, the Xbox team would be successful <em>without</em> me too), but it’s the right move for me to make right now.</p>
<p>Along with my new job, I have a new office, a new desk, a new computer, and a new Xbox – and testing challenges I have no idea how to solve&#8230;yet. And I’m pretty excited about all of it.</p>
<p>More to come.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/pta-RtwY0fY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=363</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=363</feedburner:origLink></item>
		<item>
		<title>Test Innovation</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/qqzSOGYMHhM/</link>
		<comments>http://angryweasel.com/blog/?p=362#comments</comments>
		<pubDate>Tue, 08 Nov 2011 13:34:41 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=362</guid>
		<description><![CDATA[I’m in Frankfurt for a few days, and tomorrow (Wednesday), I am giving a keynote at German Testing Day on Test Innovation at Microsoft. At this point, I’ll give you a few moments to chuckle, laugh, or make snide remarks about the topic. I think I’ve heard it all before; “testers at MS just write [...]]]></description>
			<content:encoded><![CDATA[<p>I’m in Frankfurt for a few days, and tomorrow (Wednesday), I am giving a keynote at <a href="http://germantestingday.info/" target="_blank">German Testing Day</a> on <em>Test Innovation at Microsoft</em>.</p>
<p>At this point, I’ll give you a few moments to chuckle, laugh, or make snide remarks about the topic. I think I’ve heard it all before; “testers at MS just write automation all day”, “testers at Microsoft don’t care about quality”, or “testers at MS don’t get testing” (all quotes I’ve heard or read about MS testing – and all, interestingly, by people who have never worked at Microsoft). This post is, I suppose, inspired by my talk tomorrow, but is more of a general example than a reflection of the topics of tomorrow’s presentation.</p>
<p>I think our lack of open-ness in how we test and innovate in testing at Microsoft is (IMO) one of our biggest flaws as a company – or at least one of our biggest flaws in being a good member of the worldwide testing community. We tried to make a dent with <a href="http://msdn.com/testercenter" target="_blank">testercenter</a>, but that project is all but dead. A few of us who test at MS share what we do, but none of us do a great job sharing our innovations. I hope we can get better at that soon. The short and honest truth is that I can easily name at least fifty testers at MS whose testing skills and ability to innovate are equal or better than any tester you know. I suppose in a company of nearly 10k testers that’s not really a big deal, but it’s really hit home as I’ve prepared for this presentation. I have some ideas for getting some of these people and their ideas on the global radar, but for now, you’ll just have to trust me.</p>
<p>I’m probably not the right person to lecture (or write) about innovation, but I can tell you what kinds of innovative testing solutions tend to be successful (at MS at least). A lot of innovation starts with the “There’s got to be a better way” approach. The worst rut to get into in software development is the “we’ve always done it that way” syndrome. Innovative testers stop, look at the big picture, and ask, &#8216;”is there a better way to do this?” Some of the biggest test innovations at MS have been solutions that take something complex or difficult (or “impossible”), and making it brain dead simple. One tester created automatic filtering of code coverage reports based on a specific change set – in other words, he made it brain dead simple to know if you (or any tester) tested each changed line in a specific fix or feature addition. Some of our games testers have created a system that allow the bug triage team to navigate to the exact place in the game where an error occurs <em>from the bug tracking system </em>(and conversely, the ability to create a bug from the place in the game where the tester observed the error).</p>
<p>Other innovation happens when someone finds a way to implement a known idea into a testing process. Testing localization is a huge (and hugely expensive) task. Ross Smith (and a few of his cohorts) <a href="http://blogs.msdn.com/b/microsoft_press/archive/2009/07/31/portfolio-selection-and-game-theory-in-defect-prevention.aspx" target="_blank">had the idea</a> to optimize the task via crowdsourcing and gaming elements.The results have been phenomenal.</p>
<p>Eric Sevareid once said,</p>
<blockquote><p>The chief cause of problems is solutions.</p></blockquote>
<p>Many years ago, test systems at MS reached a level of maturity and scale that enabled teams to easily run <em>millions</em> of tests. These systems[1] were the culmination of several innovations, but eventually led to other problems. The prime example of a problem created by the test system innovation is the challenge of what to do with all of those failed tests. Think for a moment. If you run a million tests and have a 99% pass rate (I know, but this is just an example), you have <em>ten-thousand</em> failures to investigate. Automatic failure analysis (discussed in <a href="http://www.hwtsam.com">HWTSAM</a>) is an innovation that greatly reduces the time testers need to investigate automation failures (my stance is that automation is worthless unless every aspect of automation beyond test authoring is not also automated). We’ve also made great strides in test selection (let’s say you only had time to run five thousand of those million tests – which would you run?).</p>
<p>Of course, innovation occurs in the testing itself (as well as in the systems surrounding the testing). We’ve done amazing things with test generation, test design, and run time analysis.</p>
<p>Some of which I’ll share with the audience tomorrow – and likely in this blog sometime in the future.</p>
<p>&nbsp;</p>
<p>[1] <a href="http://angryweasel.com/Articles/Beautiful_Testing_chapter8.pdf">I described a test automation system in Beautiful Testing</a>.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/qqzSOGYMHhM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=362</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=362</feedburner:origLink></item>
		<item>
		<title>Israel Trip Report</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/egC2UC7P-GI/</link>
		<comments>http://angryweasel.com/blog/?p=360#comments</comments>
		<pubDate>Tue, 01 Nov 2011 20:17:50 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=360</guid>
		<description><![CDATA[This post isn’t really testing related, so skip it if that’s what you’re looking for. Late Saturday night, I returned from my first trip to Israel. I was invited to present at the Intel Software Professional’s conference in Tel Aviv a few months back, and I gave an updated version of my STAR East 2010 [...]]]></description>
			<content:encoded><![CDATA[<p>This post isn’t really testing related, so skip it if that’s what you’re looking for.</p>
<p>Late Saturday night, I returned from my first trip to Israel. I was invited to present at the Intel Software Professional’s conference in Tel Aviv a few months back, and I gave an updated version of my STAR East 2010 keynote on improving methods of gathering customer usage data. I also spent some time at Microsoft’s office and did a bit of sightseeing. It was a quick, but fun trip that I would do again in a heartbeat.</p>
<p>The long version follows.</p>
<p><strong>Monday &amp; Tuesday, October 24 and 25.</strong></p>
<p><span style="color: #2e2e2e;">My flight out of Seattle was mostly uneventful.As someone who hates to check bags, I was a bit bummed to find out that Lufthansa had a carry-on limit of 8 kilos (my non-full and size-appropriate bag was 10 kilos). I’ve had enough bad experiences with lost or delayed luggage that I prefer to carry-on for anything less than a week. In the end, it didn’t matter (more later).</span></p>
<p><span style="color: #2e2e2e;"> I flew from Seattle into Frankfurt, and arrived with just enough time to <strong>run</strong> to a different terminal and catch my flight. I had 5 or so minutes to spare, so I suppose I could have just jogged, but after the 11 hour flight, I needed a bit of exercise anyway.</span></p>
<p><span style="color: #2e2e2e;"><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000408.jpg"><img style="background-image: none; margin: 0px 0px 6px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="View from my hotel" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000408_thumb.jpg" alt="View from my hotel" width="244" height="184" align="right" border="0" /></a>I landed in Tel Aviv mid-afternoon on Tuesday. Since I sat in row 54 of an HFP (huge plane), I was just about the last person on our flight to arrive in a packed passport control room. After spending some time in the second slowest line, I switched to the actual slowest line and eventually was allowed into the country proper. By this time, my bag was off the plane and was one of the few left on the carousel, so I grabbed it, found a taxi, and went to my hotel.</span></p>
<p><span style="color: #2e2e2e;">I stayed at the Dan Panorama in Tel Aviv. After admiring my beach view and unpacking, I found something to eat and went to bed.</span></p>
<p><strong>Wednesday, October 26.</strong></p>
<p><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000412.jpg"><img style="background-image: none; margin: 0px 0px 6px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border: 0px;" title="Beach in Tel Aviv" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000412_thumb.jpg" alt="Beach in Tel Aviv" width="244" height="184" align="right" border="0" /></a>I used to never have a problem with jet lag. As yet another sign of my age, I didn’t get a great night of sleep, but at 5:30am I got out of bed and went for a run on the beach (or next to the beach). It was fantastic – perfect weather, the sound of the ocean, and a bit of blood pumping through my system gave me energy to face the day.</p>
<p>Microsoft Israel has offices in Haifa and Herzelia and I spent the day in Herzelia talking with testers in a variety of settings. Surprisingly, I had energy all day and had some good conversations (from my side at least – I hope the folks in Israel found the discussions helpful).</p>
<p>Then it was back to the hotel for dinner, a bit of work, and bed.</p>
<p><strong>Thursday, October 27.</strong></p>
<p><span style="color: #2e2e2e;">Once again, I didn’t sleep well (I can’t believe I claimed for years that jet lag was something I never worried about). The good news is that I finally finished reading Life -  the Keith Richards autobiography. It’s not the most well written book, but to me, it was a fascinating page turner. I’m not a huge fan of the entire Stones’ backlog, but to me, the 10-year period from Beggar’s Banquet through Some Girls is some of the best rock music ever made.</span></p>
<p><span style="color: #2e2e2e;">Since I’d given up on sleep, I loaded a dozen or so of the Rolling Stones singles from that period and went for another run on the beach. When I got back, I had breakfast, checked in with <a href="http://testing.gershon.info">Shmuel </a>(my host from Intel), and …went back to bed.</span></p>
<p><span style="color: #2e2e2e;"><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/This-is-Page-a-4.jpg"><img style="background-image: none; margin: 0px 14px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="Me Talking " src="http://angryweasel.com/blog/wp-content/uploads/2011/11/This-is-Page-a-4_thumb.jpg" alt="Me Talking - w/ my name in the bg" width="256" height="146" align="left" border="0" /></a>My presentation at Intel was in the afternoon, so I had time to get some rest, wake up, and prepare a bit more. From my point of view, the presentation went well – the audience seemed engaged and receptive, and I received good comments afterwards. I feel fortunate to have been invited and hope the folks at Intel found my presentation useful.</span></p>
<p><span style="color: #2e2e2e;">Shmuel and I went out to dinner, then we both called it a night.</span></p>
<p><strong>Friday, October 28.</strong></p>
<p><span style="color: #2e2e2e;"><a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000452.jpg"><img style="background-image: none; margin: 1px 0px 5px 14px; padding-left: 0px; padding-right: 0px; display: inline; float: right; padding-top: 0px; border-width: 0px;" title="The Western Wall" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000452_thumb.jpg" alt="The Western Wall" width="244" height="184" align="right" border="0" /></a>Shmuel picked me up Friday morning for some sight-seeing in Jerusalem. First stop was the fascinating (and somewhat depressing) <a href="http://en.wikipedia.org/wiki/Yad_Vashem" target="_blank">Yad Vashem</a> – the Holocaust Memorial. From there, we went to an open market, wandered a bit and had lunch. The final stop of the tour was Old Jerusalem and the <a href="http://en.wikipedia.org/wiki/Western_Wall" target="_blank">Western Wall</a>. I was fortunate enough to meet Shmuel’s wife and five children there as well. After a bit more wandering, I headed  back to Tel Aviv.<a href="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000429.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Market" src="http://angryweasel.com/blog/wp-content/uploads/2011/11/WP_000429_thumb.jpg" alt="Market" width="244" height="184" border="0" /></a></span></p>
<p><span style="color: #2e2e2e;">I had a plan for my Friday night, and I’m happy to say it worked out well. When I got back to my hotel, I took a 5-6 hour “nap”, and woke up (as I hoped), around 1:00am. After freshening up a bit, I took a 15 minute walk up to <a href="http://www.mikesplacebars.com/" target="_blank">Mike’s Place</a> to watch game 7 of the baseball world series. It’s a bit strange watching a baseball game that starts at 2:00am, but it was fun to be able to watch the game (go Phillies), and sort of surreal to walk back to the hotel along the beach at dawn after the game. </span></p>
<p><strong>Saturday, October 29.</strong></p>
<p><span style="color: #2e2e2e;">After showering at the hotel and packing, I left for the airport. Leaving Israel is an interesting experience. My “exit interview” was 20-30 <strong><em>minutes</em></strong> long and reminded me a lot of the police interviews you see on television and the movies. I pretty much told them what I did every minute I was in Israel and they doubled back once in a while to check my answers for consistency. I was tired, but had nothing to hide, so found the experience kind of fun. Once the interview was over, I checked in and made my way to the gate.</span></p>
<p><span style="color: #2e2e2e;">The flight home was long (made longer by delays in Newark due to the weekend snow storm), but I did eventually make it home and spent Sunday relaxing with my family. Monday would bring a whole new adventure (and stage) to my life, but I’ll save that for the next post.</span></p>
<p><span style="color: #2e2e2e;"> </span></p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/egC2UC7P-GI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=360</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=360</feedburner:origLink></item>
		<item>
		<title>It’s all just testing</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/MvCyZ7OwO3c/</link>
		<comments>http://angryweasel.com/blog/?p=349#comments</comments>
		<pubDate>Sat, 29 Oct 2011 07:19:01 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=349</guid>
		<description><![CDATA[I’ve been having one of those experiences where a lot of the random bits of flotsam on my radar are sort of converging. But I don’t know if it’s really convergence, or if I’m forcing it. I hope it’s the former, but time will tell. In my last post, I reflected on a wonderful article [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been having one of those experiences where a lot of the random bits of flotsam on my radar are sort of converging. But I don’t know if it’s <i>really</i> convergence, or if I’m forcing it. I hope it’s the former, but time will tell.</p>
<p>In <a href="http://angryweasel.com/blog/?p=348" target="_blank">my last post</a>, I reflected on a wonderful article from Phillip Armour. His breakdown of “tests that tell us what we know” (0OI tests), and tests that tell us what we don’t know we don’t know (2OI tests) aligns perfectly with something that’s been gnawing at me for a long time.</p>
<p>You see, I’m also bothered (and have been for years) to some extent by one of the more popular testing debates – the scripted vs. exploratory tests…and to top it off, I’m completely confused by the variety of reactions to the “test is dead” statement one of my old friends has been spouting about recently (I warned you about random thoughts floating in my head…)</p>
<p>But it’s kind of coming together for me – some of it as I write these paragraphs.</p>
<p>A part of the problem is that what I call testing is probably different than what you call testing. That’s also true if I turn it around – what you call testing is probably different than what I call testing. The difference is, that I don’t care what you call testing, and some of you<strike> care a lot</strike> get <i>really pissed off</i> when somebody calls something testing that doesn’t match your definition.</p>
<p>Testing, in some intersection of our combined testing definitions, contains a lot of 0OI tests. “When you enter 2 + 2 in the calculator, the display shall enter 4”, or “Save the file and ensure it is created”, or “When the user clicks the submit button without a user name, they shall receive an error message”. Many in the test community refer to these as “checks”, and I’m ok with that term, but to me, these are a <i>type</i> of test rather than something different than tests.</p>
<p>Whether you call these tests, checks, or 0OI tests (my current favorite), <b><i>I don’t want to do them</i></b>. It’s not just that 0OI tests bore me (because they bore me to tears), but because I think it’s fiscally irresponsible to push verification of mind-numbingly basic functionality so far downstream. In my opinion, developers should do this work, but I guess if any testers find 0OI tests entertaining, I’m sure there’s a lazy developer somewhere who’d like to hire you as his cabin boy. </p>
<p>Short story is that <em>0OI tests are dead to me.</em></p>
<p>And then there’s 2OI work – the kind of work good testers love to do. 2OI testing is the land of “I wonder what happens when…”, and “How can I get the program to…” tests. 2OI tests can be manual or leverage tools or automation. Any form of discovery (or new knowledge acquisition) about the software is 2OI testing.</p>
<p>Testers not infatuated with Armour the way I am typically call 2OI testing <em>exploratory testing</em> (true for both manual or automated 2OI tests). In <a href="http://mags.acm.org/communications/201110/?CFID=50254235&amp;CFTOKEN=18422259#pg32" target="_blank">Armour’s recent article on testing</a> that I mentioned in my previous post, he suggests that the sweet spot for 2OI (exploratory) effectiveness is about 50% – meaning that about half of your tests should discover product issues. If you’re finding less, you could vary your techniques, and if you’re finding more, you should back off the effort. I haven’t applied that concept yet when performing testing, but I plan to the next time I conduct a testing session.</p>
<p>But, the way I see it, <i>exploratory testing is dead too</i>. OK – that statement was overly controversial. What’s dead to me, is the <i>term</i> exploratory testing. To me, it’s just testing. <b><i><u>It’s all just testing.</u></i> </b>I wrote a <a href="http://blogs.msdn.com/b/alanpa/archive/2006/12/29/exploring-exploratory-testing.aspx" target="_blank">blog post once</a> about this subject (see last three paragraphs to avoid most of my snarkiness) – then one of the top practitioners of ET <a href="http://www.satisfice.com/blog/archives/496" target="_blank">wrote this post with a similar stance</a> – but it seems every tester in the world is still compelled to proclaim they are “exploratory testers”, because they like to use their brain while they’re testing. All of this is fine, of course, one can use whatever terms they like, but to me, at least, <i>it’s all just testing</i>. </p>
<p>Testers do some of it. Others do some more of it. Some of it’s dead to me, and perhaps none of it is dead to you. It doesn’t matter.</p>
<p><em>It’s all just testing.</em></p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/MvCyZ7OwO3c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=349</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=349</feedburner:origLink></item>
		<item>
		<title>Testing: Failing to Succeed</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/Y39ikNXZ2uI/</link>
		<comments>http://angryweasel.com/blog/?p=348#comments</comments>
		<pubDate>Mon, 24 Oct 2011 19:36:02 +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=348</guid>
		<description><![CDATA[…the paradox of testing: We want to find defects in the software under test, but we do not really want to find them&#34;.”Phillip Armour I often speak of Phillip Amour’s Five Orders of Ignoranceas they relate to software engineering (note; as of this writing, that link doesn’t work, but I don’t have another link to [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>…the paradox of testing: We want to find defects in the software under test, but we do not really want to find them&quot;.”Phillip Armour</p>
</blockquote>
<p>I often speak of Phillip Amour’s <a href="http://www-plan.cs.colorado.edu/diwan/3308-07/p17-armour.pdf" target="_blank"><em>Five Orders of Ignorance</em></a>as they relate to software engineering (note; as of this writing, that link doesn’t work, but I don’t have another link to his paper). I’ve mentioned the orders of ignorance <a href="http://angryweasel.com/blog/?p=84" target="_blank">on this blog</a>, and also in <a href="http://angryweasel.com/Articles/Abolition%20of%20Ignorance.pdf" target="_blank">this article for Better Software</a>. </p>
<p>Although I respect my readers, I know you won’t read those links, so let me briefly cover the orders of ignorance.</p>
<p><strong>0OI</strong> – Zero-Oh-I is <em>lack of ignorance</em>. It’s when you know something. I know, for example, that the first track on the Rolling Stone’s <em>Sticky Fingers</em> album is <em>Brown Sugar</em>. </p>
<p><strong>1OI</strong> – <em>lack of knowledge</em>. I don’t know (or remember) what the track is following <em>Brown Sugar</em>, but I could find the answer quickly.</p>
<p><strong>2OI</strong> – <em>lack of awareness</em>. You have 2OI when you don’t know what you don’t know. I know that there are Stones tunes that I’ve never heard before, but it would be impossible for me to make a list of Stones songs I’ve never heard before.</p>
<p><strong>30I</strong> – <em>lack of process</em>. You have 3OI when you don’t have a suitable method for discovering 2OI (for discovering what you don’t know you don’t know). </p>
<p><strong>4OI</strong> – <em>meta-ignorance.<strong> </strong></em>You have 4OI when you don’t know about the five levels of ignorance.</p>
<p>In the Better Software article, I attempted to stress how important the levels of ignorance are to software testers and software testing, and I frequently bring them up in conversations about testing. Recently, my mind was blown when Phillip Armour wrote an article specifically about the application of the levels of ignorance to software testing. A direct link (for those who have access to the communications of the ACM) <a href="http://dl.acm.org/citation.cfm?id=2001280&amp;CFID=49086211&amp;CFTOKEN=83382740" target="_blank">is here</a>. If not, I <a href="http://mags.acm.org/communications/201110/?CFID=50254235&amp;CFTOKEN=18422259#pg32" target="_blank">found a link here</a> which should get you to the article.</p>
<p>And for those of you who don’t click through, here’s a summary.</p>
<p>When we test to ensure requirements were implemented, or the stories function as expected, we are testing for 0OI. We know what pass and fail looks like, and we can create tests accordingly. The 0OI testing set may be large, but it’s bounded. A passing 0OI test doesn’t expose any new knowledge – it just proves what we thought we already knew.</p>
<p>Testers also perform a lot of 2OI testing. We explore or run dynamic tests on a system to help discover what we don’t know we don’t know. Testing for 2OI is an unbounded test set – the things that a system <em>might</em> do is infinite. This is where we need to devise tests <em>when we don’t know what we’re looking for</em>. (Note – we don’t test for 1OI because if we truly knew in advance what we didn’t’ know, we’d resolve the ignorance and conduct 0OI testing. </p>
<p>Another (shorter) way to think about this is that 0OI tests are <em>knowledge-proving</em> tests, while 2OI tests are <em>knowledge-acquiring</em> tests. </p>
<p>Armour goes on to discuss the theoretical information content for a test and optimal failure rates (which I’ll leave to you to read, as I’ve probably already butchered the content already). It’s good stuff full of great quotes, and I hope you check it out.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/Y39ikNXZ2uI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=348</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=348</feedburner:origLink></item>
		<item>
		<title>That’s not … &lt;insert activity here&gt;</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/XkTNbjvhOy8/</link>
		<comments>http://angryweasel.com/blog/?p=347#comments</comments>
		<pubDate>Tue, 11 Oct 2011 17:50:25 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=347</guid>
		<description><![CDATA[Last Tuesday, I went to a pub near my house to watch Sounders FC win their third straight US Open Cup. For most of the game, there were just three of us watching the match, but it was still a lot of fun to watch. With about five minutes left in the match (the Sounders [...]]]></description>
			<content:encoded><![CDATA[<p>Last Tuesday, I went to a pub near my house to watch Sounders FC win their third straight US Open Cup. For most of the game, there were just three of us watching the match, but it was still a lot of fun to watch. </p>
<p>With about five minutes left in the match (the Sounders were ahead 1-nil, and closing in on their second goal), a group of men came into the bar and filled 10-12 seats at a neighboring table. One of the men – I’ll call him Frank looked at the three of us watching the match, looked at the screen and claimed loudly, “<em><strong>That’s not a game!”.</strong></em> Apparently, that’s all of the commentary vocabulary Frank had, because he repeated the claim to his table-mates several more times during the remaining minutes of the match. </p>
<p>A part of me (perhaps the soccer hooligan in me?) wanted to confront Frank and ask him why he didn’t consider the most popular sport in the world to be a game, but I held my tongue and put my focus on watching the sounders score late to seal the game, and on their subsequent celebration.</p>
<p>But then I thought about Frank.I wondered what circumstances would lead to his statement. First off, soccer isn’t that popular in the US, so he’s certainly not the only one around who doesn’t value (what I see as) the beauty of the game. It also looked as if Frank and his friends came from a sporting event (it’s not softball season, but it could have been flag football). Perhaps Frank’s team lost, or he was frustrated with his performance. I don’t know many people who would purposely act as he did without some sort of other motivation. In short, there’s a lot going on with Frank I don’t know about, so I gave him the benefit of the doubt. Over time, I’m sure I’ll see Frank again, and as I get to know him (even solely via observation), I’ll get more insight into his motivations and know what drives his statements and social behavior.</p>
<p>This is how I try to behave at work. One of Microsoft’s core employee competencies is something called Interpersonal Awareness (which I prefer to call IPA). Most people <em>think</em> they’re pretty good at IPA because they get along with others, but that’s only a tiny scratch in the surface of IPA. In fact, I’ve stated on a few occasions that IPA is one of those skills that you’re not any good at until you realize that you’re not any good at it. When you think you have it down, you probably suck at it.</p>
<p>IPA is more than playing nice with others. It’s more than paying attention to how you come across. It’s reading people (including yourself), and adjusting to how you’re coming across based on reactions and words, while taking into account whatever may be motivating the people you’re interacting with – <em>in real time</em>. Yeah – I suck at it too, but that doesn’t mean I don’t work on it.</p>
<p>Let me try to bring it home. Think of your favorite “stupid” manager, “dumb” tester, or “egotistical” freak. Chances are, that those people are neither, stupid, dumb, nor egotistical. They have, however, acted that way and it caused you to react. There are two things going on here – you’re reaction and their behavior. Take a moment to think about why you had a negative reaction to whatever they did or said. Does it create more work for you? Does it violate your values? There’s a reason, and it’s worth it for you to take the time to understand why you reacted the way you did. </p>
<p>Now dig into the “stupid” manager’s statement. Perhaps he asked you to increase your code coverage percentage to some arbitrary number, and you think (rightfully) that increasing code coverage just to hit a number is s dumb idea. But first, take some time to think about <em>why</em> Mr. Pointy-Hair would have asked you that. Do you think his manager asked him? Do you think he thinks the number means something. Do you think he’s under any pressure himself that may have triggered him to ask, or is it something you think he’s valued in the past? Chances are, that Mr. PH isn’t stupid (despite his request). But until you know what motivated him to make the request, you can’t actually <a href="http://angryweasel.com/blog/?p=320" target="_blank">give him what he needs vs. what he (thinks) he wants</a>. You probably won’t guess motivations right away, but without practice, you’ll never figure it out.</p>
<p>Think about this the next time you read (or say) that something is dumb, stupid, idiotic, or even careless. I may be overly optimistic, but I don’t think there are nearly as many idiots in the world as some would lead you to believe. But smart people say dumb things all the time – and without understanding the motivation behind their statements, we can’t grow – as professionals, or as humans.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/XkTNbjvhOy8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=347</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=347</feedburner:origLink></item>
		<item>
		<title>Oh, the places I’ll go</title>
		<link>http://feedproxy.google.com/~r/ToothOfTheWeasel/~3/csg5YSOI8Ik/</link>
		<comments>http://angryweasel.com/blog/?p=346#comments</comments>
		<pubDate>Thu, 06 Oct 2011 20:02:04 +0000</pubDate>
		<dc:creator>Alan Page</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Software Testing]]></category>

		<guid isPermaLink="false">http://angryweasel.com/blog/?p=346</guid>
		<description><![CDATA[I’ve been attempting to travel less recently, and I’m happy to say that beyond early November, I have no (work related) travel plans anywhere on the horizon. For better or for worse, I’ve had a deluge of great opportunities converge over the next thirty days.(for those of you who may be experiencing déjà vu, I [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been <em>attempting</em> to travel less recently, and I’m happy to say that beyond early November, I have no (work related) travel plans anywhere on the horizon. For better or for worse, I’ve had a deluge of great opportunities converge over the next thirty days.(for those of you who may be experiencing déjà vu, I <a href="http://angryweasel.com/blog/?p=317" target="_blank">mentioned this travel spurt</a> a few months ago).</p>
<p>I’m off to Portland, Oregon tomorrow. I’m planning to spend the weekend goofing off before frantically updating my slides Sunday night. My <a href="http://pnsqc.org" target="_blank">PNSQC</a> presentation is Monday at 11:00, and I’ll spend the remainder of the conference trying to attend as many presentations as I can. </p>
<p>I return home on Tuesday evening, and on Wednesday morning, I’ll be giving a presentation on build verification tests for the <a href="http://www.softwaretestpro.com/Event/1138" target="_blank">STP automation summit</a>.</p>
<p>Then – after ten or so days of time at home, I’m off to Israel. I’ll be spending a day at Microsoft’s Israel office, and then giving a keynote at an Intel internal software conference. I’m honored to have been invited and am looking forward to my first trip to Israel.</p>
<p>I get home just in time for Halloween, but depart a week later for a keynote at German Testing Day. Again, I’m honored to have been invited and I’m excited both to attend, and about the topic I’ll be speaking about. </p>
<p>Frankly, this is probably more travel and presenting than a non-consultant should be doing, but I do believe there’s value in establishing and maintaining industry relationships, and I’m grateful that Microsoft supports my participation (and time away from work). As much as I know I’ll enjoy the travel and meeting so many testers, I know I’ll be glad when the flurry is over.</p>
<p>In between all of that, I have some interesting projects brewing at work – and I can’t wait to share more details…stay tuned.</p>
<img src="http://feeds.feedburner.com/~r/ToothOfTheWeasel/~4/csg5YSOI8Ik" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://angryweasel.com/blog/?feed=rss2&amp;p=346</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://angryweasel.com/blog/?p=346</feedburner:origLink></item>
	</channel>
</rss>

