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

<channel>
	<title>Testing Thoughts &#187; Nerd T35t1ng</title>
	<atom:link href="http://testing.gershon.info/category/nerd-t35t1ng/feed/" rel="self" type="application/rss+xml" />
	<link>http://testing.gershon.info</link>
	<description>Things to share about Software Testing</description>
	<lastBuildDate>Tue, 11 May 2010 22:40:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>STAREast 2010 &#8211; Bugs on a Plane!</title>
		<link>http://testing.gershon.info/201005/stareast-2010-bugs-on-a-plane/</link>
		<comments>http://testing.gershon.info/201005/stareast-2010-bugs-on-a-plane/#comments</comments>
		<pubDate>Tue, 11 May 2010 22:40:55 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[heuristic]]></category>
		<category><![CDATA[hiccupps]]></category>
		<category><![CDATA[insights]]></category>
		<category><![CDATA[interesting]]></category>
		<category><![CDATA[physical]]></category>
		<category><![CDATA[plane]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[stareast]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[trip]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/?p=285</guid>
		<description><![CDATA[The style on this post is like no other I wrote. But it&#8217;s great fun. Last month I visited the STAR East conference. It was over two weeks ago, which on the internet age makes it old news. I follow my own clock, however, and will start posting about STAR East only now. Scott Rosenberg [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 75%;">The style on this post is like no other I wrote. But it&#8217;s great fun.</span></p>
<p>Last month I visited the <a title="STAR East" href="http://www.sqe.com/stareast/Schedule/Default.aspx" target="_self">STAR East conference</a>. It was over two weeks ago, which on the internet age makes it old news.<br />
I follow my own clock, however, and will start posting about STAR East only now. <a href="http://www.wordyard.com/">Scott Rosenberg</a> would call this type of blogging &#8216;history&#8217; instead of &#8216;journalism&#8217; (<a href="http://www.wordyard.com/2010/05/03/no-more-bouncers-at-the-journalism-club-door/"><em>link</em></a>), and it sounds just as fine.</p>
<p>In next blog posts, I&#8217;ll write about what happened at STAR. What happens in Orlando doesn&#8217;t stay there.<br />
But on this one, it&#8217;s a bit about what happened in <strong>the way</strong> there.</p>
<p>For some time before travelling, I&#8217;ve been thinking about physical problems that resemble computer bugs. &#8220;Spirits in the material world&#8221;. For example:</p>
<table>
<tbody>
<tr>
<td><img class="alignnone size-thumbnail wp-image-286" title="roofbottle" src="http://testing.gershon.info/wp-content/uploads/2010/05/roofbottle-250x183.jpg" alt="" width="140" /></td>
<td>In this picture you can (<em>barely</em>) see a water bottle that was forgotten by a worker on my neighbors&#8217; roof. Just like a programmer would forget a temporary variable she invented to get some refreshment from the code inherent limitations, a worker will forget his own refreshment once it isn&#8217;t  needed anymore.</td>
</tr>
</tbody>
</table>
<p><span id="more-285"></span></p>
<table>
<tbody>
<tr>
<td><img class="alignnone size-full wp-image-287" title="urinals" src="http://testing.gershon.info/wp-content/uploads/2010/05/urinals.jpg" alt="" width="140" /></td>
<td>This other picture is of a bathroom urinal row. I bet the urinals looked beautiful in the catalog, with their slim form that doesn&#8217;t stand out of the wall too much. But when &#8220;implementing&#8221; the bathroom, not only the beauty is lost when you build the necessary dividers, but the very same low-footprint of the urinals makes the rest of the environment unclean.<br />
How many times a company/developer makes a bad decision of, say, a coding library, just to discover that the very &#8216;flexible&#8217; API promised by it is the part that gives them most trouble? How many times they decide to retrocede the and change the library?</p>
<p>Ok, ok, tasteless example.</td>
</tr>
</tbody>
</table>
<p>It seems that the same thinking process that makes a programmer/tester miss a detail when coding/testing happens in any other aspect of real life. I&#8217;m reading &#8220;<a href="http://whywemakemistakes.com/book.php">Why we make mistakes</a>&#8221; by <a href="http://whywemakemistakes.com/author.php">Joe Hallinan</a> and this idea seems to be congruent with many examples.</p>
<p>Well, with that mindset, it&#8217;s a sure thing that I would find bugs on my trip. Not because the trip was bad &#8212; au contraire, it was a mostly pleasant journey. But analyzing things and trying to assess their value is a good exercise for testers.</p>
<p>To make the exercise better, I decided to categorize the bugs and problems into the 8 parts of the <strong>HICCUPPS</strong> mnemonic consistency heuristic for analyzing a bug. It is a great way of building yourself an oracle to assess a potential problem, and I learned about it first from <a href="www.developsense.com">Michael Bolton</a>&#8216;s &#8220;<a href="http://www.developsense.com/articles/2005-01-TestingWithoutAMap.pdf">Testing without a Map</a>&#8221; article, highly recommended.</p>
<p>A quick explanation of the heuristic: One method of assessing any phenomenon is by comparing its consistency to a different (<em>but comparable</em>) source. The 8 aspects this mnemonic suggests are:</p>
<table>
<tbody>
<tr>
<td colspan="4">Is the phenomenon consistent with a comparable idea in:</td>
</tr>
<tr>
<td><strong>H</strong></td>
<td>History (<em>e.g. the same function in the past</em>)</td>
</tr>
<tr>
<td><strong>I</strong></td>
<td>Image (<em>e.g. what the company would like customers to think of it</em>)</td>
</tr>
<tr>
<td><strong>C</strong></td>
<td>Comparable products (<em>e.g. the competitor&#8217;s <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>)</td>
</tr>
<tr>
<td><strong>C</strong></td>
<td>Claims (<em>e.g. a user manual statement</em>)</td>
</tr>
<tr>
<td><strong>U</strong></td>
<td>Users’ expectations (<em>e.g. what users have become used to</em>)</td>
</tr>
<tr>
<td><strong>P</strong></td>
<td>Product itself (<em>e.g. the same function elsewhere</em>)</td>
</tr>
<tr>
<td><strong>P</strong></td>
<td>Purpose (<em>e.g. the aim of this very function</em>)</td>
</tr>
<tr>
<td><strong>S</strong></td>
<td>Statutes (<em>e.g. a certification check</em>)</td>
</tr>
</tbody>
</table>
<p>To illustrate better the method and to share the fun of travelling, here goes a list of interesting events encountered on the trip:</p>
<p><strong>[<span style="text-decoration: underline;">H - History</span>] Airlines/Airports are stingier than in the past</strong></p>
<p><strong> </strong>It&#8217;s been a long time since I last travelled. So my recollection on how it works left me with some expectations, like having free carts at the airport, or having free peanuts during short flights, or having free headphones in the long ones.<br />
Surprise: A cart costs US$4.00, a headphone costs US$5.00, and peanuts only if you brought from home! I was lucky I had my headphones in the carry-on case, but would be disappointed if I had to pay for airline ones.</p>
<p>This is interesting: Is that a problem? Is it a bug? Well, certainly it is inconsistent with the (far) history of tourist aviation, but it may be a good business decision. And fixing a bug (or deciding something is one) is a business decision.</p>
<p><strong>[<span style="text-decoration: underline;">I - Image</span>] Airlines seem to content with poor software</strong></p>
<p><strong> </strong>US Airways have a personal in-flight video system for each passenger (<em>on long flights</em>). It is great, has a touch-screen and showcases movies, music, even TV shows.<br />
But the system is slow. It&#8217;s so slow that you often get confused by what it is doing &#8212; Is it stuck? Should I press again? Which of my last clicks is he processing now?</p>
<p>A funny thing is that at the beginning of the flight, the attendant announces: &#8220;please expect a delay after pressing the buttons on screen, it is part of the normal operation of the system&#8221;. What? In the age of iPad and other rapid touch-screens, is it really part of normal operation? I observed the other travellers, and saw at least two that were frantically pressing the screen waiting for answer.<br />
We all also hope that the cockpit controls respond faster&#8230;</p>
<p><img class="alignleft size-thumbnail wp-image-290" title="linuxplane" src="http://testing.gershon.info/wp-content/uploads/2010/05/linuxplane-250x187.jpg" alt="" width="250" height="187" />This one has two interesting points:<br />
- I had a glimpse of the system rebooting when the aircraft landed. It is a Linux based system, and has a quote in its boot sequence that would make any software tester laugh (<em>I laughed</em>): &#8220;<code>All bugs added by David S. Miller</code>&#8221; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , which turns out to be a real line in the Linux Kernel (<em><a href="http://en.wikipedia.org/wiki/David_S._Miller">David is a programmer for RedHat</a></em>). Great attitude, Dave!<br />
- US Airways have, apparently, tested a different in-flight system, that is not available on A330 aircrafts. According to <a href="http://www.youtube.com/watch?v=Mikb9DmEnDM">this review</a>, it is much faster.</p>
<p><strong>[<span style="text-decoration: underline;">C - Comparable Products</span>] Top storage is smaller in international flights?</strong></p>
<p><strong> </strong>The overhead storage in the transatlantic trip was only deep enough to have the luggagge stored sideways. Good? Bad? Well, we don&#8217;t know (<em>yet</em>).<br />
The storage (<em>called overhead bin in the lingo</em>) is made by a company called <a href="http://www.cdzodiac.com/documents/11x17_CutawayPoster.pdf">C&amp;D Zodiac</a>, and they look very professional and thorough. So the storage space is good? We still don&#8217;t know.</p>
<p>One thing we can do, is to try to learn from comparison: The domestic flight had an overhead bin too, but in this case the carry-on luggage fit on its length too, almost twice the depth of the other.<br />
How come? International flights have much longer duration, and it is normal that people will bring larger/more carry-on (<em>sandwiches? Games? Stuff for the kids?</em>). So why is storage room smaller in international flights? A bug?<br />
OTOH, on domestic flights more people are expected to bring only a carry-on (<em>they stay less time at their destination</em>), so maybe there are more/bigger carry-on on these flights. So what? No bug?</p>
<p>And that is exactly the point of interest here:<br />
The mnemonics/heuristics don&#8217;t tell you a definite answer, but they help you to think.</p>
<p><strong>[<span style="text-decoration: underline;">C - Claims</span>] Where&#8217;s the Kosher food?</strong></p>
<p><strong> </strong>US Airways cancelled my flight back, but I will not complain about that.<br />
However, they did claim that there would be an acceptable solution, and that  the airport hotel would be able to provide Kosher meals. And none of these claims stood to the truth.</p>
<p>The airport hotel had no Kosher preparation, and US Airways made it very difficult to find an acceptable solution. It took three hours of phone calling and walking between their offices until they agreed to provide suitable meals from outside.</p>
<p>A claim, even a verbal one, is a claim that your customer will expect you to fulfill.</p>
<p><strong>[<span style="text-decoration: underline;">U - User Expectations</span>] What&#8217;s with the default volume settings?</strong></p>
<p><strong> </strong>The aforementioned in-flight entertainment system had many settings. One of these was the volume setting, controlling how loud the movie you are seeing is.<br />
However, this setting was re-set for every movie, which means that every time you moved to a different TV show, it will be at a loud volume again!<br />
And I think (<em>I did not ask for tools to verify it at the time</em>) that every time the attendant/pilot talked on the announcement system, even when it was during a movie, the volume was at the loud volume &#8211; again.</p>
<p>My expectation, as a user of the system, is that once I set a volume level for one show, it stays on that level for other shows. I got startled by loudness once and again.</p>
<p><strong>[<span style="text-decoration: underline;">P - Product Itself</span>] Now, where can I change the diapers?</strong></p>
<p><strong> </strong>This is my favorite one.<br />
Bathroom stalls at airplanes have this platform that you can detach from the wall and use it horizontally to change the diapers of your little kid.<br />
Bathroom stalls at airplanes also have this new foamy liquid soap, strongly attached to the</p>
<p><img class="size-thumbnail wp-image-289 alignleft" title="diapers" src="http://testing.gershon.info/wp-content/uploads/2010/05/diapers-250x187.jpg" alt="" width="250" height="187" />But, as you can see on the picture, the soap was installed right in the place where the platform should be based on. There is no way to use the support in order to lay the platform down.</p>
<p>So this is a perfect example of two parts of a system that are inconsistent with themselves &#8212; or, in this case, not only inconsistent, but the feature added later, practically nullifies the original feature.</p>
<p><strong>[<span style="text-decoration: underline;">P - Purpose</span>] Is your seatbelt fastened? Is it? Not?</strong></p>
<p>I noticed during the flight that the flight attendants had to check if passengers had their seatbelts fastened. So they went from passenger to passenger, trying to discern if the seatbelt is locked or not. Not always an easy task, as passengers are usually holding things or use a blanket.</p>
<p>But if this &#8220;check seatbelts&#8221; function exists, why isn&#8217;t the automatic system of the aircraft aiding? Why isn&#8217;t there a little row of LED lights that show which seatbelt is fastened and which isn&#8217;t? Attendants would (<em>maybe</em>) have it all much easier.<br />
It appears to me that without this simple system (<em>hey, </em><strong><em>cars</em></strong><em> have it</em>) the aircraft system is not serving its purpose in every way it could.</p>
<p><strong>[<span style="text-decoration: underline;">S - Statutes</span>] This page intentionally left blank</strong></p>
<p>This one is missing. Because:</p>
<ul>
<li>I don&#8217;t think I noticed anything that was against a statute or law.</li>
<li>It would be irresponsible to suggest things that are against the law in this (<em>or other</em>) industry &#8212; especially as I am not a domain expert.</li>
</ul>
<p>As you see, a 12 hours flight is a lot of time&#8230; These are my notes from trip to (<em>and back from</em>) Orlando.<br />
I am interested in learning about other methods you use to analyze bugs/value in the physical world. Share in the comments!</p>
<p>Now let me start that post about the actual STAR East lectures and networking&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/201005/stareast-2010-bugs-on-a-plane/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Finding Nemo &#8211; Solving Pradeep&#8217;s software testing challenge (an exploratory approach)</title>
		<link>http://testing.gershon.info/201002/nemo-solving-exploratory-approach/</link>
		<comments>http://testing.gershon.info/201002/nemo-solving-exploratory-approach/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 12:39:06 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Ask the Tester]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[Test Riddle]]></category>
		<category><![CDATA[answer]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[exploratory]]></category>
		<category><![CDATA[exploratory testing]]></category>
		<category><![CDATA[exploratory testing example]]></category>
		<category><![CDATA[pradeep]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[riddles]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[solving]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[testing solution]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/?p=154</guid>
		<description><![CDATA[Back on December, Pradeep Soundararajan set a challenge up in his blog. He built an application with the description below: This was an interesting exercise. What took my interest in this one? - First of all, I liked Pradeep&#8217;s post about learning to code. Learning to code is an important skill for a tester. I [...]]]></description>
			<content:encoded><![CDATA[<p>Back on December, <a href="http://testertested.blogspot.com/">Pradeep Soundararajan</a> set a <a href="http://testertested.blogspot.com/2009/12/why-testers-need-to-learn-to-write-code.html">challenge up in his blog</a>.<br />
He built an application with the description below:</p>
<p><a href="http://testing.gershon.info/wp-content/uploads/2010/01/cmdnemo.jpg"><img class="alignnone size-full wp-image-122" title="cmdnemo" src="http://testing.gershon.info/wp-content/uploads/2010/01/cmdnemo.jpg" alt="" width="534" height="130" /></a></p>
<p>This was an interesting exercise.<br />
What took my interest in this one?<br />
<strong>- First</strong> of all, I liked Pradeep&#8217;s post about learning to code.<br />
Learning to code is an important skill for a tester. I can relate to it because I am trying to learn <a href="http://en.wikipedia.org/wiki/Windows_PowerShell">PowerShell</a>. I program in some languages (<em>C#, C++, PHP, VbScript&#8230;</em>) and have a programming background (<em>after my Computer Systems Engineer degree, the &#8216;natural&#8217; path was to code, and I worked as a programmer for many years before finding Software Testing</em>), but PowerShell has <a href="http://dirtsimple.org/2004/12/python-is-not-java.html">different approach and paradigms</a> and learning it will definitely be fun.<br />
<strong>- Second</strong>, I had an impromptu vacation day, and I thought it would be educational to use it for a peer testing puzzle. I thought I could win this one quickly (<em>I was mistaken, it took me long</em>). <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So I downloaded Pradeep&#8217;s application, and got to work!<br />
Rather than just trying to solve the puzzle, I looked at it as if the mission was:<br />
&#8220;<code>This is commercial 'roulette' style game. Stakeholders want to know it the game logic can be broken/learnt, which could mean a substantial loss of money when people start winning every time.</code>&#8221;</p>
<blockquote><p><strong>Testing Hint:</strong> Cem Kaner says &#8220;<code>Testing is an empirical, technical investigation of a product, done on behalf of stakeholders, with the intention of revealing quality-related information of the kind that they seek</code>&#8220;. So it is important to set straight what is the information to seek. Which kind of bugs to look for?</p></blockquote>
<p>In this blog I describe my attemp to answer this question in an exploratory way.<span id="more-154"></span></p>
<p>Now, Stop the press!<br />
You may want to go to <a href="http://testertested.blogspot.com/2009/12/why-testers-need-to-learn-to-write-code.html">Pradeeps post</a>, download <a href="http://interviewsandjobs.com/testertested/fnemo_1.7.6.exe">the file</a>, and try it for yourself before reading my solution. This post will be waiting right here when you&#8217;re done. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8230;</p>
<p>Here is the report of what I did, the line of thinking during my experiment, and the conclusion:</p>
<ul>
<li>1. First, I ordered my environment to allow efficient and organized work:
<ol>
<li>Increased the <a href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/commandpromptoptions.mspx?mfr=true">Screen Buffer Size</a> of the Command line I was using to 500 (<em>it turned out that I would do well on less, even half, than that (</em>see point 2.b<em>). But it didn&#8217;t hurt</em>).</li>
<li>Renamed the executable to be shorter and without number version: <strong><code>ren fnemo_1.7.6.exe fnemo.exe</code></strong></li>
<li>Changed the prompt to something shorter, cleaner, and that gave me context about this task against the other Cmd lines windows open: <code><strong>prompt $Cfnemo$F$S$G</strong></code></li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing Hint:</strong> Organizing your testing environment before you start will likely help you during your tests. After you&#8217;re in the heat of fight, it will be harder to stop and get organized.</p></blockquote>
<ul>
<li>I tried some basic executions of the program, to grasp the feeling of what it does and how hard it is to find Nemo. This also taught me what are the messages returned by the application when Nemo is found, and when Nemo isn&#8217;t found. They&#8217;re &#8220;<strong>Found Nemo this time!, Nemo Gill Bubbles SharkTooth Flow Phamplet Stinger</strong>&#8221; and &#8220;<strong>Ah! bad luck, didnt find Nemo this time!</strong>&#8221; respectively.
<ol>
<li>I also learnt that Pradeep used Perl and <a href="http://www.indigostar.com/perl2exe.htm">Perl2Exe</a> to do the app.</li>
<li>Additionally, the application clears the screen at every execution, so the big command line buffer is not so helpful.</li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing Hint:</strong> Planning or scheduling your testing before you experiment a bit with the software <strong>can </strong>be done. But you risk being completely wrong in your assumptions about the app. In our case, there were no big surprises, but there could be.</p></blockquote>
<ul>
<li><a href="http://testertested.blogspot.com/2009/12/why-testers-need-to-learn-to-write-code.html?showComment=1260335959722#c6013367471319656833">Sarmila commented</a> on the <a href="http://testertested.blogspot.com/2009/12/why-testers-need-to-learn-to-write-code.html">Challenge page</a> about disassembling the executable. Although by learning all the assembly one can learn about the rules that move the fishes around, it would be <strong>extremely </strong>difficult and overkill. But this made me think on how Perl2Exe works… Maybe it just wraps the Perl interpreter and the Perl script together? If so, what if the script is stored internally in clear? I tried to open the app in an <a href="http://sourceforge.net/projects/npp-plugins/">Hex editor</a>, but no, the Perl script isn&#8217;t in clear text there, it is obfuscated.
<ul>
<li>I also tried the useful <a href="http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx">Strings</a> tool by SysInternals. My intention was to see if, maybe, the array of fishes could be seen at the app code, in order to learn the initial order of fishes. It couldn&#8217;t.</li>
<li>That ended my cheating session <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , from here on I used only a black box functional approach.
<ul>
<li>Well, it is not really cheating because there were no rules against that. If you do a full reverse engineer of the code, the answer is legit too. But I preferred the straightforward exploratory approach: learning from the software functionality as I use it, and use this learning to redirect my next steps.</li>
</ul>
</li>
</ul>
</li>
<li>.</li>
<li>By now, I knew that Nemo changed places between plays.
<ol>
<li>Nemo also change places between invalid parameters (which may or not be a bug).</li>
<li>Moreover, the other fishes change places too, even their placement related to Nemos&#8217; placement changes.</li>
<li>So I tried to see if Nemo will return to the same place in any consistent way or number of times. Running that is easy, you just enter &#8220;3&#8243;, &#8220;3&#8243;, &#8220;3&#8243;… and count where Nemo was found and where he wasn&#8217;t.
<ul>
<li>I discovered there is regularity (for &#8220;3&#8243;, its every 2, 3, 17, 5, 10, 5…), but the regularity was irregular enough, and also changed for different positions. This was likely a consequence of the real logic, rather than the logic itself. This correlates to the movement of fishes, but does not cause it.</li>
</ul>
</li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing Hint:</strong> Take note of your steps while testing. Using the <a href="http://sessiontester.openqa.org/">Session Tester</a> tool is a great idea. For this session, I used <a href="http://office.microsoft.com/onenote">MS OneNote</a> because it supports rich text, and I could use tables.<br />
Is that like saying that rich texts helps rich tests? <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p></blockquote>
<ul>
<li>Another detail that helped me in the game was knowing the developer and the purpose of the challenge. This puts a lot of content in the context. Pradeep is a rather playful <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and would put some tricks into it.
<ol>
<li>First I tried to see if Nemo could sometimes be in any placement bigger than 7 (there are 7 fishes, places 1 to 7, but there were no rules as to where the fishes were limited to be).</li>
<li>I tried in a toss of up to 220 attempts, and Nemo wasn&#8217;t in place 8 even once. So I let this idea on StandBy for now.</li>
<li>Then I tried&#8230; what if the &#8220;<code>Minimum attempts</code>&#8221; input at the beginning of the app affected where Nemo appears?
<ul>
<li>10 is the default for the &#8220;<code>Minimum Attempts</code>&#8220;. Nemo is at place 1 at the beginning there.</li>
<li>11 attempts chosen: Nemo is at place 1 at the beginning too. Maybe it does not affect?</li>
<li>12 attempts chosen: Nemo is at place 4! Bingo!</li>
<li>13, 14, 15, 16 showed that the original places were cycling at &#8217;3&#8242; intervals. That means that when trying to find Nemo on the default 10 attempts, it will be in the same placements as 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52…</li>
</ul>
</li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing Hint:</strong> let the test and what you learn during the testing guide you. New information you find should set you in a new direction.</p></blockquote>
<ul>
<li>You&#8217;re seeing that &#8220;220 attempts&#8221; above, and thinking if I really entered each number manually.
<ol>
<li>By this time, I decided that I was in need of some automation to insert inputs to the application.</li>
<li>The original app had no apparent automation capabilities, so I decided to use the internal input redirection of the Command line:
<ul>
<li>By using the &#8220;<strong>&lt;</strong>&#8221; operator, I could redirect an input file &#8220;<strong>input.txt</strong>&#8221; to the app using &#8220;<strong>fnemo.exe &lt; input.txt</strong>&#8220;</li>
<li>I extended that to &#8220;<strong>fnemo.exe &lt; input.txt &gt; output.txt</strong>&#8220;, which gives us with a complete dump of results that can be searched with Notepad.</li>
</ul>
</li>
<li>We had an easy automation now, and this can help our sapient testing. I was exploring, and using automation to help me try different things help me explore my possibilities and get a bigger picture of the situation when needed.</li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing Hint:</strong> Don&#8217;t be afraid of automation. It can help you talk with the software in different ways and interact with it differently. It helps a lot with data generation and logging, too. <strong>Another hint:</strong> Never let the automation take control of the testing. It is there to help you, not to drive the effort.</p></blockquote>
<ul>
<li>With the knowledge and tool I had so far, I did a lot of trials in order to find where Nemo is at each iteration. This could give me a hint if he moved in any regular or consistent manner.
<ul>
<li>So I made a big file of winning moves (<em>a lot of trial and error went in it</em>).</li>
</ul>
</li>
<li>.</li>
<li>It was now time to model the results:
<ul>
<li><strong>First attempts at modeling</strong> the results:</li>
<li>I got this: Nemo&#8217;s position: <strong>1, 3, 5, 3, 2, 7, 3, 4, 7, 4, 4, 1, 5, 5, 2, 5, 6&#8230;</strong>
<ul>
<li>Nemo was certainly jumping around without any clear regularity, even when I did it twice the times there was no repetition.</li>
</ul>
</li>
</ul>
</li>
<li>On the <strong>Second modeling attempt</strong>, I tried to see if a more visual model could help:</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>X</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>X</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>X</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>X</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>X</td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td>X</td>
</tr>
</tbody>
</table>
</li>
<li>Even in a table with many more results, it made no sense.</li>
</ul>
<li>.</li>
<li>I changed my approach. Looking only at Nemo was not giving enough insight. Plus, I knew the other fishes moved along, so there might be a hint in their placement.
<ul>
<li>I got this table:</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td>Stinger</td>
<td>SharkTooth</td>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
</tr>
<tr>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
</tr>
<tr>
<td>Stinger</td>
<td>SharkTooth</td>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
</tr>
<tr>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
</tr>
<tr>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
<td><strong>Nemo</strong></td>
</tr>
<tr>
<td>Phamplet</td>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
</tr>
<tr>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
</tr>
<tr>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
</tr>
<tr>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
</tr>
<tr>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
</tr>
<tr>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
</tr>
</tbody>
</table>
</li>
<li>That didn&#8217;t look good. Nemo moved spuriously, and the other fishes either jumped aimlessly or stayed at their place. Nothing made much sense.</li>
</ul>
</li>
<blockquote><p><strong>Testing Hint:</strong> When you look at a problem or thing, different models will give you different view and different details. Multiple viewpoints help &#8212; keep changing the viewpoint until you learn enough.</p></blockquote>
<p>One interesting thing that happened by this time, is that in my manual trials, I was finding Nemo pretty easily.<br />
Intuitively, I was seeing a pattern on the game, a pattern that was not conscious or explicit. It was as if my mind had already learned the rules without noticing them.<br />
It reminded me of what <a href="http://www.douglasadams.com/">Douglas Adams</a> wrote in <a href="http://en.wikipedia.org/wiki/Dirk_Gently's_Holistic_Detective_Agency">Dirk Gently&#8217;s Holistic Detective Agency</a>:<br />
&#8220;<code>A ball flying through the air is responding to the force and direction with which it was thrown, the action of gravity, the friction of the air which it must expend its energy on overcoming, the turbulence of the air around its surface, and the rate and direction of the ball's spin.<br />
And yet, someone who might have difficulty consciously trying to work out what 3 x 4 x 5 comes to would have no trouble in doing differential calculus and a whole host of related calculations so astoundingly fast that they can actually catch a flying ball.<br />
People who call this instinct are merely giving the phenomenon a name, not explaining anything.</code>&#8221;</p>
<ul>
<li>I still thought that looking at the other fishes will bring the breakthrough needed.
<ol>
<li>In order to learn the movement of the fishes, I did a table of their placement in relation to Nemo at every run.
<ol>
<li>i. This is what I got:</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
</tr>
<tr>
<td><strong>Nemo</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
</tbody>
</table>
</li>
<li>See anything interesting? The rows repeat themselves alternatingly! So the fishes were not really moving around, they were following Nemo!
<ol>
<li>My take is that Pradeep has two different arrays: One for <strong>Odd</strong> rows, the other for <strong>Even </strong>rows.
<ol>
<li>This may not be true, but it doesn&#8217;t matter for us. When testing, we not always know what exactly the programmer wrote in the code, but we infer a mental model. If it suits the needs, it is a good model even when not the real thing.
<ol>
<li>Many times I think these fake mental models are even better than the real thing. It’s the best way for them to act as an intuitive Oracle when analyzing an application.</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ul>
<blockquote><p><strong>Testing hint: </strong>When you learn and infer about software, you make assumptions and a mental model of what the software does inside itself. This model <strong>does not need to be an exact depiction </strong>of the code underneath the app. As long as it answers your questions, and you change this model constantly as you learn, it is good.</p></blockquote>
<ul>
<li>From this part on, I started to analyze Even rows and Odd rows separately.
<ul>
<li>Bingo! Seeing the pattern was easy now.</li>
<li><strong>Odd</strong> rows follow this cyclic sequence: <strong>+4, +4, +1</strong></li>
<li><strong>Even</strong> rows follow this cyclic sequence: <strong>+0, +4, +4</strong></li>
</ul>
</li>
<li>.</li>
<li>But what with the differences when using different &#8220;<code>Minimum Attempts</code>&#8220;?
<ul>
<li>A quick look at the tables I had gathered showed that they follow the same rules, but start at different places.</li>
</ul>
</li>
<li>.</li>
<li>At the end of this trials, these are the set of rules that allow me to know where&#8217;s Nemo at any given time:</li>
<li><strong>a. Where does Nemo start?</strong>
<ol>
<li>&#8220;<code>Minimum Attempts</code>&#8221; of 10, 13, 16, 19…</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> </td>
<td><strong>Place 1</strong></td>
<td><strong>Place 2</strong></td>
<td><strong>Place 3</strong></td>
<td><strong>Place 4</strong></td>
<td><strong>Place 5</strong></td>
<td><strong>Place 6</strong></td>
<td><strong>Place 7</strong></td>
</tr>
<tr>
<td><strong>First Line</strong></td>
<td>Nemo</td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td><strong>Second Line</strong></td>
<td>Stinger</td>
<td>SharkTooth</td>
<td>Nemo</td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
</tr>
</tbody>
</table>
</li>
</ol>
<ol>
<li>&#8220;<code>Minimum Attempts</code>&#8221; of 11, 14, 17, 20…</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> </td>
<td><strong>Place 1</strong></td>
<td><strong>Place 2</strong></td>
<td><strong>Place 3</strong></td>
<td><strong>Place 4</strong></td>
<td><strong>Place 5</strong></td>
<td><strong>Place 6</strong></td>
<td><strong>Place 7</strong></td>
</tr>
<tr>
<td><strong>First Line</strong></td>
<td>Nemo</td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
</tr>
<tr>
<td><strong>Second Line</strong></td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
<td>Stinger</td>
<td>SharkTooth</td>
<td>Nemo</td>
<td>Phamplet</td>
</tr>
</tbody>
</table>
</li>
<li>&#8220;<code>Minimum Attempts</code>&#8221; of 12, 15, 18, 21….</li>
<li>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td> </td>
<td>Place 1</td>
<td>Place 2</td>
<td>Place 3</td>
<td>Place 4</td>
<td>Place 5</td>
<td>Place 6</td>
<td>Place 7</td>
</tr>
<tr>
<td>First Line</td>
<td>Flow</td>
<td>Phamplet</td>
<td>Stinger</td>
<td>Nemo</td>
<td>Gill</td>
<td>Bubbles</td>
<td>SharkTooth</td>
</tr>
<tr>
<td>Second Line</td>
<td>Stinger</td>
<td>SharkTooth</td>
<td>Nemo</td>
<td>Phamplet</td>
<td>Gill</td>
<td>Bubbles</td>
<td>Flow</td>
</tr>
</tbody>
</table>
</li>
</ol>
</li>
<li><strong>b. Where does Nemo go?</strong>
<ol>
<li>i. &#8220;<code>Minimum Attempts</code>&#8221; of 10, 13, 16, 19… Follow this cyclic rule, starting at step 1.</li>
<li>ii. &#8220;<code>Minimum Attempts</code>&#8221; of 11, 14, 17, 20… Follow this cyclic rule, starting at step 2.</li>
<li>iii. &#8220;<code>Minimum Attempts</code>&#8221; of 12, 15, 18, 21… Follow this cyclic rule, starting at step 3.</li>
<li><strong>Odd Rows: +4 | +4 | +1</strong></li>
<li><strong>Even Rows: +0 | +4 | +4</strong></li>
</ol>
</li>
<li>.</li>
<li><strong>How do I know it is right? </strong>
<ul>
<li><strong>Proof! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong> I built another automation aid: An Excel spreadsheet that can tell you the position of nemo in all trials given an initial &#8220;<code>Minimum Attempt</code>&#8220;. It works!</li>
<li><strong>You can download the spreadsheet to try it </strong><a href="http://testing.gershon.info/wp-content/uploads/2010/02/FindingNemoForPradeep.xls"><strong>here</strong></a><strong>.</strong> Choose any number of initial attempts, it will tell you all Nemo&#8217;s position accurately.</li>
<li>Is this the real logic behind Pradeep&#8217;s challenge? It may not be. It is probable that pradeep did something else, much simpler, and that only <strong>translates</strong> into this. However, this answers the mission of predicting Nemo&#8217;s moves.
<ul>
<li>I am sure that analyzing the findings above one can discover what was really that Pradeep did. I&#8217;ll just ask Pradeep on a mail for a suggestion. <strong>Testing hint:</strong> You can always reach out to the developer and ask him about his software and/or code! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
</li>
</ul>
</li>
</ul>
<blockquote><p><strong>Testing hint:</strong> Again, your mental model doesn&#8217;t always needs to be exact. As long as it works and answers the questions you have. Keep in mind that this mental model should be flexible and evolve with your knowledge.</p></blockquote>
<ul>
<li><strong>Conclusion sent to the &#8216;roulette&#8217; stakeholders:<br />
Until a higher amount of randomness is added to the game, it is too risky to release the game as is now. A malicious player can find the logic of the game after some hours of work, and a pair of smart malicious players in even less time.</strong></li>
</ul>
<p>Thanks Pradeep, for the nice challenge.<br />
It was a very nice experiment, and I learnt a lot. The best part, for me, was organizing my thoughts in this report, and I hope you like it too.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/201002/nemo-solving-exploratory-approach/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Software Testing is Funny! with Demetri Martin</title>
		<link>http://testing.gershon.info/200912/testing-is-funny-with-demetri-martin/</link>
		<comments>http://testing.gershon.info/200912/testing-is-funny-with-demetri-martin/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 15:56:59 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[comedy]]></category>
		<category><![CDATA[demetri]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[joke]]></category>
		<category><![CDATA[martin]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/?p=68</guid>
		<description><![CDATA[One best friend of mine introduced me to Mitch Hedberg and Demetri Martin, great one-liner comedians. They are/were two funny men!! Three, actually, if you count my friend which is also funny.  After hearing the disks for over a year, not only the jokes aren&#8217;t any less funny, but I&#8217;ve started to find subliminal testing [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right;">
<div id="attachment_78" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-78 " title="Demetri Martin" src="http://testing.gershon.info/wp-content/uploads/2009/12/402006martin1-150x150.jpg" alt="" width="150" height="150" /><p class="wp-caption-text">Demetri Martin</p></div>
</div>
<p>One best friend of mine introduced me to <a href="http://en.wikipedia.org/wiki/Mitch_Hedberg">Mitch Hedberg</a> and <a href="http://en.wikipedia.org/wiki/Demetri_Martin">Demetri Martin</a>, great one-liner comedians. They are/were two funny men!! Three, actually, if you count my friend which is also funny. </p>
<p>After hearing the disks for over a year, not only the jokes aren&#8217;t any less funny, but I&#8217;ve started to find <a href="http://en.wikipedia.org/wiki/Subliminal_Message">subliminal testing messages</a> in them <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .<br />
I&#8217;m writing down these &#8220;insights&#8221; because I find value in them. And even if they fail to teach you something&#8230; Hey! At least the jokes are pretty funny! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
So here go some favorite quotes, and their parallel in testing: </p>
<p><span id="more-68"></span> </p>
<p>. </p>
<blockquote><p><strong>1)</strong> &#8220;<code>A drunk driver is very dangerous. So is a drunk backseat driver, if he’s persuasive!<br />
'<em>Dude, make a left.</em>'<br />
'<em>But those are trees…!</em>'<br />
'<em>Trust me...</em>'</code>&#8220; </p></blockquote>
<p>We are testers. As such, most of the time we aren&#8217;t driving the company: Essential operational decisions are made by someone else (<em>project manager, product owner, CEO, whatever you call him</em>).<br />
But if we are not the drivers, our position is certainly close to this of a backseat driver: we have our maps, good knowledge of the area and our experience; and we give advice that is used to take real decisions. So <strong>don&#8217;t be a drunken backseat driver, it&#8217;s dangerous!</strong> If you are inebriated by an obsessive desire to fix a bug, or by a personal quest against/for colleague, by a blind belief in a set of metrics or a unfounded trust in a <a href="http://www.developsense.com/articles/2004-09-ComparativelySpeaking.pdf">fictitious</a> &#8220;Best Practice&#8221;, you&#8217;ll be taking your company directly into the trees.<br />
 <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  And, as with any drunk person&#8230; Whenever your judgment isn&#8217;t objective&#8230; At least recognize/admit that you may be drunk! Will make it easier for everyone else. </p>
<p>. </p>
<blockquote><p><strong>2)</strong> &#8220;<code>I used to play sports... Then I realized you can <em><strong>buy</strong></em> trophies. Now I'm good at everything!</code>&#8220; </p></blockquote>
<p>A plaque, a crown, a card, a trophy&#8230; It is common to find people who treasure &#8220;victory symbols&#8221;, I know I do. They prove you&#8217;ve mastered a skill.<br />
Trophies are nice and great, but only if they are accompanied by skills and real world practice. Trophies that can be attained without these traits are just empty cups<a href="http://www.imdb.com/title/tt0317219/quotes">*</a>. </p>
<p>One should beware when dealing with &#8220;achievement symbols&#8221;&#8230; At times, acquiring the symbol does not mean acquiring the achievement or skill too!<br />
For example, just as buying the trophy doesn&#8217;t make Demetri good at tennis, getting a testing certification won&#8217;t make a tester good at testing&#8230; The certifications syllabi try to teach only specific lexicon and terms definition, but not the real practice of testing, because they don&#8217;t/can&#8217;t cover the interactions between persons and players.<br />
For some people, the joke could be read as &#8220;<code>I used to practice and study... Then I realized you can pass a certification. Now I can prove mastership - without the effort of gaining it!</code>&#8221; Be sure to be from the ones who keep learning and carrying the skill. </p>
<p>. </p>
<blockquote><p><strong>3)</strong> &#8220;<code>I am afraid of sharks, but only in a water situation. If I saw a shark on the street, I'd be like '<em>What? F#*k you!</em>'<br />
It's funny, that's like the opposite of how I am with lions!</code>&#8220; </p></blockquote>
<p>What&#8217;s the Best Practice for dealing with sharks? &#8220;Escaping&#8221; or &#8220;screaming&#8221;, right?<br />
What if the shark&#8217;s on the sand? Or dead? Not hungry? Not dangerous? You have an anti-bite clothe? Anti-shark cage? Suddenly the &#8216;Best Practice&#8217; looks more like a <a href="http://www.developsense.com/articles/2004-09-ComparativelySpeaking.pdf">&#8216;so-so advice&#8217;</a>, uh? </p>
<p>The business of testing isn&#8217;t different. By looking at our surroundings and context, we can learn important details about our problems &#8211; and only then we can try to find an action path that solves it.<br />
Without the context analysis, we may come with solutions that don&#8217;t address the <strong>real</strong> problem or does it badly. One size only seldom fits all. </p>
<p>. </p>
<blockquote><p><strong>4)</strong> &#8220;<code>If I have to move up in a building, I choose the elevator over the escalator. Because one time I was riding the escalator and I tripped. I fell down the stairs... for an hour and a half.</code>&#8220;</p></blockquote>
<p>Automation is all nice and fine&#8230; Until you trip on it! Then it takes long time to recover from the fall (<em>you could be long done by this time</em>) and the fix to the system can be so crooked that it lets you prone to further tripping.<br />
The elevator is a much more robust automation (<em>not only it goes up and down, but it is much safer to trip in it <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>).<br />
Anyway, who said you have to automate? An equally good way to go up and down is the stairs! You don&#8217;t need to wait for them to come, they are as quick as you need (<em>or can make</em>) them to be, you can stop to look around or change direction in the middle of the way, they don&#8217;t limit weight or number of users and they are never out-of-order.<br />
Slipping, well, can hurt a bit <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Just remember that manually doing things gives you many opportunities a machine cannot provide. </p>
<p>. </p>
<blockquote><p><strong>5)</strong> &#8220;<code>I saw a sign on this door; it said, '<em>Exit Only</em>'. So, I entered it and went up to the guy working there, and I was like, '<em>I have some good news. You have severely underestimated this door over here by, like, 100%, man!</em>'</code>&#8220;</p></blockquote>
<p><img class="alignleft size-thumbnail wp-image-82" title="Exit Only" src="http://testing.gershon.info/wp-content/uploads/2009/12/c-exitsigns1-125x150.jpg" alt="" width="90" height="108" />Labeling is a natural instinct: The Bible depicts Adam naming animals as his first action in Eden, and Aristotle has been <a href="http://en.wikipedia.org/wiki/Aristotle#Classification_of_living_things">classifying everything</a> since the 300 BC.<br />
But the labels we use can limit ourselves or our tools.<br />
&#8220;<code>I'm a tester, I can't code</code>&#8220;.<br />
&#8220;<code>I'm an engineer, I can't sell</code>&#8220;.<br />
&#8220;<code>I'm a newbie, I can't help</code>&#8220;.<br />
Good news! You&#8217;ve underestimated yourself by at least 100%! </p>
<p>. </p>
<blockquote><p><strong>6)</strong> &#8220;<code>I want to make a revolving door that says '<em>Pull</em>' on it, just see how obedient people are.</code>&#8220; </p></blockquote>
<p>Meeting a Test Case that says “<code>1) Reach to revolving door</code>”, “<code>2) Pull the door to open</code>”. What do you do?<br />
Maybe nothing is wrong. Maybe there are good reasons to make people walk backwards at the entrance.<br />
Or maybe there isn&#8217;t, and then, who&#8217;s decides? The test case? The design? The developer? The tester?<br />
What are <strong>your ways to discover about the door</strong> product and its users before deciding on obeying or not?</p>
<p>. </p>
<blockquote><p><strong>7)</strong> &#8220;<code>I was walking down the street, and this guy waved to me. Then he came up to me and said, '<em>I'm sorry, I thought you were someone else.</em>' I said, '<em>I am.</em>'</code>&#8220; </p></blockquote>
<p>Wow, that&#8217;s a funny joke! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Beginning a task with a very clear objective is usually a good thing &#8211; but failing to identify or even acknowledge alternative outcomes may not be.<br />
A good friend was working in an academic project, trying to prove a theory about the nature of lasers. However, while progressing in the research, the calculations made clear that the theory wasn&#8217;t right. He was desolated &#8211; all this work and nothing to publish! He failed, momentarily, to notice that demonstrating a theory wrong has as much scientific value as proving it right, and the publication will advance science just as well.<br />
Testing present us with many similar situations. We can start a test chasing a specific bug, and miss other bugs that may appear. Or we can keep our mind open for different outcomes, and grow your tests as we go from these outcomes. A different bug <strong>is</strong> hiding there, believe it <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
<p>. </p>
<blockquote><p><strong>8 )</strong> &#8220;<code>My plumbing is all screwed up. Because it turns out, I do not own a garbage disposal.</code>&#8220; </p></blockquote>
<p>How many times we rely on a garbage disposal when we don&#8217;t have one?<br />
- Don&#8217;t worry, release it that way, we have a fantastic relationship with this customer. <em>What if you don&#8217;t?</em><br />
- It&#8217;s fine to release that way, the customer has a great quality assurance team and they&#8217;ll catch it if there&#8217;s a problem. <em>What if they don&#8217;t?</em><br />
- No problem, we can work Sundays &#8212; our testing department understands our needs and won&#8217;t care. <em>What if they do care?</em><br />
- This looks like a very nasty bug. But customers will always have the underlying framework, so it is fine. <em>Will they always?</em> </p>
<p><em>.</em> </p>
<blockquote><p><strong>9)</strong> &#8220;<code>I'm in a weird position, because I like rainbows, but I'm not gay. So whenever I go out wearing a rainbow shirt, I have to put '<em>Not gay</em>'. But I'm not against gays, so under that I'll have to put '<em>... but supportive</em>'. It's weird how one group of people took refracted light. That's very greedy, gays.</code>&#8220; </p></blockquote>
<p>Once in a while a group of people will come, wrap common sense ideas in a new named package, and claim ownership, which is as reasonable as taking sole ownership of refracted light. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I could parallel this one to many things or groups, but I chose one where this happens with a lot of enthusiasm&#8230; The Agile movement.<br />
Suddenly, you can&#8217;t focus on customer and organize a software project in a change-adapting way, without being called Agile. That group just took no-nonsense practices that had been used for decades and re-branded them as if they had invented it! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Don&#8217;t get me wrong &#8211; it is my opinion that what Agile preaches are often-good-practices-for-many-contexts and there are testimonies of companies, projects and souls being saved from a bureaucracy and poor quality hell by adopting Agile as a new approach. But this does not mean that anyone who is delivering quality in a &#8220;release early release often&#8221; way is <strong><span style="text-decoration: underline;">A</span>gile</strong>.<br />
For example, even being a total newbie and never part of an Agile team until now, my personal testing approach focus on happy customers, working software, individual interactions and change &#8212; without me needing to be an <strong><span style="text-decoration: underline;">A</span></strong>gilist.<br />
More experienced great people had practiced all that, and test-first, and XP for decades. </p>
<p>More than that, not only the practices&#8217; refracted light was taken, but even the word &#8220;agile&#8221; itself was expropriated <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8211; see James Bach&#8217;s note at his <a href="http://www.satisfice.com/blog/archives/51">&#8216;Who stole Agile&#8217; post</a>. </p>
<p>&#8212;&#8212;<br />
Hope you enjoyed the article, or at least Demetri&#8217;s jokes.<br />
If you have more insights and funny stuff to share, don&#8217;t hesitate to contact me &#8211; I promise to laugh.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200912/testing-is-funny-with-demetri-martin/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Testing questions and the Laws of eCommerce</title>
		<link>http://testing.gershon.info/200911/testing-and-knowing-the-law-of-ecommerce/</link>
		<comments>http://testing.gershon.info/200911/testing-and-knowing-the-law-of-ecommerce/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 13:08:15 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Ask the Tester]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[commerce]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[legal]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20091130/testing-and-knowing-the-law-of-ecommerce/</guid>
		<description><![CDATA[(Disclosure: I am not a lawyer!) (Request: Are you a lawyer? Please send me corrections ) Matters related to law, and all the discussions around it, interest me much &#8212; especially when related to Software. This made me read about the subject and keep contact with the legal representatives within the company I work for. This also [...]]]></description>
			<content:encoded><![CDATA[<p>(<em>Disclosure: I am not a lawyer!</em>) (<em>Request: Are you a lawyer? Please send me corrections <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>)</p>
<p>Matters related to law, and all the discussions around it, interest me much &#8212; especially when related to Software.<br />
This made me read about the subject and keep contact with the legal representatives within the company I work for. This also motivated me to learn and lecture about the legal guidelines in software development adopted by our company, and to lecture about legal matters on software in general at the last <a href="http://www.sigist.org.il/">Israeli SIGiST</a> conference.<br />
Most important than all, this made people share with me a lot of comments, questions and stories pertaining to the law.</p>
<p>For example, one colleague brought to my attention a case in which he and some friends had bought a PlayStation 3 in the local Office Depot website for 220NIS &#8211; when the normal price is almost tenfold! They believed it was some special sale promotion, but at the end Office Depot announced it as a typing mistake and cancelled the sale after it had been acknowledged (<em>sale confirmation by email</em>). <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /><br />
(<em>There is an article about the episode in Hebrew </em><a href="http://www.ynet.co.il/articles/0,7340,L-3769212,00.html"><em>here </em></a><em>if you want to see it</em>).</p>
<p>What is my opinion on the legal aspects of the story? I was asked.<br />
I don&#8217;t have one, as I am not a legal professional, I answered. I am, though, a Testing professional, and here is the tester rambling I sent by mail commenting the occurrence:</p>
<p><span id="more-65"></span>&#8212;&#8212;<br />
In fact, electronic transactions are special and different that normal stores. They can be built without any human interaction whatsoever, and the lack of human monitoring can bring new and unexpected problems.<br />
Note that I can’t have an official Legal opinion, as I am not a lawyer. I’ll just write what I learn.<br />
A usual understanding in contract law is that once both parts show agreement to the deal, then the deal is closed and valid (<em>I think a lawyer would explain this by stating that there is a mutual offer <strong>and acceptance</strong> of goods or services</em>). Such agreement is shown, for example, by accepting the payment money.<br />
In such a case as this story, the electronic sale often includes a debit in the buyer&#8217;s Credit Card (<em>that turns into a credit at the cancellation of sale</em>). If a service provider accepts payment for a service, he is in obligation to provide the service at the agreed terms. If he didn’t agreed to the terms, he would not have taken the payment. So in our case the fact that a payment transaction was completed supposedly forces the two parts to honor it (<em>the store should not cancel the delivery just as you should not cancel the money debit</em>).</p>
<p>However, apart from the amateur philosophy, we can find a bit more of info in the net about this sort of things&#8230;<br />
a) Not only the payment debit can be viewed as a contract acceptance, but also the confirmation mail you receive when buying online can be seen as such, depending on what it writes.<br />
b) The Terms of Service of the website can be used for or against the store, depending on their presence and the judge interpretation of them.</p>
<ul>
<li>For example:</li>
<li>Buy.Com (<em>huge company, 290 million revenue</em>) announced at $164 a $588 monitor. They tried to cancel the sales, and lost more than $60000 in a lawsuit (<a href="http://news.cnet.com/2100-1017-221466.html">CNET link</a>).</li>
<li>On the other hand, Amazon.Com (<em>huger, 19 billion revenue</em>) announced at $11 a $449 handheld (<a href="http://news.cnet.com/Amazon-wont-honor-pricing-mistake/2100-1017_3-993246.html">CNET link</a>). They cancelled the sales successfully, claiming that the Terms of Use state that <code>there is no binding contract until the <strong>confirmation of shipment arrives</strong></code>.</li>
<ul>
<li>Buy.Com had no such protection in their terms, and after the lawsuit they updated the terms to include “<code>have the right to refuse or cancel any such orders whether or not the order has been confirmed and your credit card charged</code>”.</li>
<ul>
<li>If it will always help? Not sure. In <a href="http://news.cnet.com/2100-1017-221466.html">this link</a> a representative of the <a href="http://www.ftc.gov/">FTC</a> says that it will depend greatly on the state the lawsuit is taking place.</li>
</ul>
</ul>
</ul>
<p>In the US, there is a concept of “<code>loss of bargain</code>”, that could allow one to buy the PS3 at normal price and sue for the difference (<em>which represents the bargain lost due to the store&#8217;s malpractice</em>). Of course, if the judge identifies the buyer as having bought it to exploit a weakness or obvious typo, the attempt can backfire&#8230;</p>
<p> </p>
<p>Now that we learned some principles of the domain&#8230; We go for the most important&#8230; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
As I said, I have no legal opinion, but <strong>I do have a tester opinion</strong>.<br />
First, this shows (<em>again</em>) that there is no final answer in the law yet for new technologies and new problems.</p>
<p>And I now know that for assessing risk on an e-store product, one has to answer these questions too:</p>
<ul>
<li>Does the system have any protection against mistakes</li>
<ul>
<li>This can be done by issuing an alert if there is a big discrepancy after:</li>
<ul>
<li>comparing the product to similar ones</li>
<li>or comparing to the previous price</li>
<li>or comparing to the price in the normal (brick) store</li>
</ul>
</ul>
<li>Does the system require a manual human confirmation before sending the payment or confirmation mail?</li>
<ul>
<li>This can be bad for a large operation, but for small-medium business, can be a good way of catching mistakes</li>
</ul>
<li>Does the system alerts the administrator if there is a sudden surge in the purchases of a newly added product?</li>
<li>Do the Terms and Conditions protect the company in case of mistakes?</li>
<li>Are the Terms and Conditions clear to the end user? At least in a visible place?</li>
<li>Is the user obliged to mark an acceptance to the Terms during log-on, or it is just a link in the page footer?</li>
</ul>
<p>These are some of the questions I would ask when faced with such a product. There are more, certainly &#8212; please share your own ones in the comments or by email <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8212;&#8212;<br />
One last comment&#8230; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Sometimes the typos make the prices higher than the norm&#8230; See this picture, a real example from Amazon <strong>selling </strong><a href="http://www.amazon.com/ENGTX285-TOP-HTDI-1GD3-GeForce/dp/B001S2PXJ2"><strong>this $400 card</strong></a><strong> for a whopping $5 million</strong>!! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  That&#8217;s a lot of money for a graphics card&#8230;<br />
<a class="imagelink" title="400 card" href="http://testing.gershon.info/wp-content/uploads/2009/11/400card.jpg"><img id="image64" alt="400 card" src="http://testing.gershon.info/wp-content/uploads/2009/11/400card.thumbnail.jpg" height="120" /></a><br />
Hummm&#8230; would they cancel <strong>this </strong>sale as a mistake too? <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200911/testing-and-knowing-the-law-of-ecommerce/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Job Description</title>
		<link>http://testing.gershon.info/200903/job-description/</link>
		<comments>http://testing.gershon.info/200903/job-description/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 10:35:35 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090312/job-description/</guid>
		<description><![CDATA[I was reading a job position offering these days for a &#8220;QA engineer&#8220;. There was the usual mumbo jumbo of the required traits (&#8220;BSC in computer science or equivalent&#8220;, &#8220;Worked directly with R&#038;D department&#8220;) and advantage points (&#8220;General knowledge of at least one mainstream (programming) language&#8220;), and one of the requirements lines said &#8220;Testing methodologies: [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading a job position offering these days for a &#8220;<strong>QA engineer</strong>&#8220;.<br />
There was the usual mumbo jumbo of the required traits (<em>&#8220;<font face="courier new">BSC in computer science or equivalent</font>&#8220;, &#8220;<font face="courier new">Worked directly with R&#038;D department</font>&#8220;</em>) and advantage points (&#8220;<font face="courier new">General knowledge of at least one mainstream (programming) language</font>&#8220;), and one of the requirements lines said &#8220;<font face="courier new">Testing methodologies: STD, STP</font>&#8220;.<br />
I got curious to know what these methodologies are and what the TLA mean, so I called the company offering the job:<span id="more-49"></span></p>
<blockquote><p>&#8211; Hi, Nancy? (<em>Name changed. And she wasn&#8217;t the testing manager, she was from the HR.</em>)<br />
&#8211; Yes.<br />
&#8211; Hi, my name is Shmuel and I saw you&#8217;re offering a software testing position, the &#8220;QA engineer&#8221; opening&#8230;<br />
&#8211; We have it, right.<br />
&#8211; I saw that one of the requirements is to know the STD and STP methodologies, and I was wondering what are STD and STP.<br />
&#8211; Well, if you have no experience on that, then the position is not relevant to you.<br />
&#8211; No, no, I guess the experience is fine; it is just that the announcement made me curious. These acronyms can mean many things, you know? So I want to know how your company understands them.<br />
&#8211; They mean specification documents.<br />
&#8211; Does STD stand for Software Test Documentation? What does the STP mean?<br />
&#8211; No, ST<strong>D</strong> is for <strong>S</strong>oftware <strong>T</strong>est <strong>D</strong>esign, and the <strong>P</strong>&#8230; Well, both mean specification documents.<br />
&#8211; Why design? Is that the specification of the tests to run, of the testing system, or of the product?<br />
&#8211; Why don&#8217;t you just look up the meanings on Google?<br />
&#8211; I tried right before calling you. The acronyms are all over the web, but they have different meanings too (*).<br />
&#8211; Listen, these are very important topics, if you don&#8217;t know them the position is not relevant. They&#8217;re very important, and very well known.<br />
&#8211; I see. Thanks you Nancy!<br />
&#8211; Thanks, bye bye.</p></blockquote>
<p><strong>Very important and well known.</strong> Well, I guess I&#8217;ll put them in my list of things to learn&#8230; As soon as I decide which meaning I want them to have…</p>
<p>Let&#8217;s see. I guess two of the best &#8220;methods&#8221; I use in testing are:</p>
<p><font color="#000080"><strong>STD &#8211; Software Test Drawing:</strong> Scribbling in a whiteboard (<em>pen+paper are good too, but my experience shows whiteboards are much better</em>). This is especially useful when you&#8217;re working with someone else. With some squares and circles explanations become simple, concepts become clear, people can point when they talk, you can easily delete mistakes, and the best part is that usually there is always a joke at the end of the process. Whiteboard scribbling is a major testing tool for me.</font></p>
<p><font color="#000080"><strong>STP &#8211; Software Test Peer (<em>or Pal</em>): </strong>If you are like me, your brain is constantly storming <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Nothing beats thinking out loud or talking to peers and fellow testers/developers about the challenges you face &#8212; more often than not you&#8217;ll learn about a direction you hadn&#8217;t thought of or about a tool that can help. Works fantastically with STD <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</font></p>
<p>I may start an &#8220;Alphabet of Really Useful Software Testing Things&#8221; &#8212; please contribute on the comments.</p>
<p>(*) In fact Google says D and P apparently can mean Design, Documentation, Development, Performance, Process, Plan, Programming&#8230;Pick your own definition. Most companies seem to accept STP as Software Test Plan, though.I still like that anyone can pick the definition that best suits his needs or business, though. So I&#8217;ll stick to mine <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><em>Note to my employer: No, I am not looking for a job elsewhere yet <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</em></p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200903/job-description/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On certified testers and being certifiable, and on non native english speakers :)</title>
		<link>http://testing.gershon.info/200902/on-certified-testers-and-being-certifiable-and-on-non-native-english-speakers/</link>
		<comments>http://testing.gershon.info/200902/on-certified-testers-and-being-certifiable-and-on-non-native-english-speakers/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 10:29:42 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090227/on-certified-testers-and-being-certifiable-and-on-non-native-english-speakers/</guid>
		<description><![CDATA[I like the SQE. SQE brings columns by Michael Bolton almost monthly on the Better Magazine. They also arrange the nice STAR conferences (hadn&#8217;t the opportunity to participate yet, but I will eventually) and store a large number of articles online of all testing flavors. Today morning I was greeted by an Email from SQE: The subject read [...]]]></description>
			<content:encoded><![CDATA[<p>I like the <a href="http://www.sqe.com/" target="_blank">SQE</a>.<br />
SQE brings columns by <a href="http://www.developsense.com/" target="_blank">Michael Bolton</a> almost monthly on the <a href="http://www.bettersoftware.com/" target="_blank">Better Magazine</a>. They also arrange the nice <a href="http://www.sqe.com/conferences/" target="_blank">STAR conferences</a> (<em>hadn&#8217;t the opportunity to participate yet, but I will eventually</em>) and store a large number of <a href="http://www.stickyminds.com/index.asp" target="_blank">articles online</a> of all testing flavors.</p>
<p>Today morning I was greeted by an Email from SQE: The subject read &#8220;<strong>Are you certifiable?</strong>&#8220;.<br />
My first reaction was to discuss the term. If I am certifiable? <strong>I?</strong> In my mind, I was arguing whether a person can be considered certifiable or maybe the topic of certification is the one certifiable.<br />
As in &#8220;Software Testing is (<em>or not</em>) a certifiable topic&#8221; against &#8220;Johnny is a certifiable (<em>or not</em>) software tester&#8221;.</p>
<p>I was puzzled over the confusing choice of words:</p>
<p><span id="more-47"></span>A lot of good people (<a href="https://www.rbcs-us.com/UserContent/Articles/ISTQB%20Certification%20_Update%200308_%20_2_.pdf" target="_blank"><em>Rex Black</em></a><em>, in a moderated way </em><a href="http://www.pstestware.nl/data/uploads/be_file/file_location/Todays%20Testing%20Innovations%20-%20Lee%20Copeland.pdf" target="_blank"><em>Lee Copeland</em></a><em>, Michael Stahl (link to </em><a href="http://www.stickyminds.com/sitewide.asp?ObjectId=10191&#038;Function=DETAILBROWSE&#038;ObjectType=CP&#038;sqry=%2AZ%28SM%29%2AJ%28MIXED%29%2AR%28relevance%29%2AK%28simplesite%29%2AF%28Security%29%2A&#038;sidx=151&#038;sopp=25&#038;sitewide.asp?sid=1&#038;sqry=%2AZ%28SM%29%2AJ%28MIXED%29%2AR%28relevance%29%2AK%28simplesite%29%2AF%28Security%29%2A&#038;sidx=151&#038;sopp=25#authorbio" target="_blank"><em>an unrelated article</em></a><em>)&#8230;</em>) support certification, and a huge lot of good people think that either the software testing arena is immature to certify, or the certifications out there are inadequate, or both (<a href="http://www.satisfice.com/blog/archives/36" target="_blank"><em>James Bach</em></a><em>, </em><a href="http://www.developsense.com/2007/12/why-i-am-not-yet-certified-eurostar.html" target="_blank"><em>Michael Bolton</em></a><em>, </em><a href="http://blogs.msdn.com/james_whittaker/archive/2008/09/11/on-certificiation.aspx" target="_blank"><em>James Whitaker</em></a><em>, </em><a href="http://www.kaner.com/pdfs/OpenCertRequirements.pdf" target="_blank"><em>Cem Kaner</em></a>&#8230;). For transparency&#8217;s sake (<em>so you get the context of this rambling</em>), while I admire and have learned a lot from the first ones, the last ones are personal heroes (<em>ok, Michael Stahl is a hero+guru too <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>).</p>
<p>So we did not even come to an agreement if the craft itself is certifiable, and you are talking about certifiable persons? How does that work?</p>
<p>.</p>
<p>.<br />
At this moment I stopped musing and went to the <a href="http://www.visualthesaurus.com/" target="_blank">dictionary</a>:</p>
<p><img alt="certifiable.jpg" src="http://testing.gershon.info/wp-content/uploads/2009/03/certifiable.jpg" /><br />
Ok, my guess on the meaning of the work was correct: &#8220;<font face="courier new">a certifiable fact</font>&#8220;, &#8220;<font face="courier new">capable of being guaranteed</font>&#8220;.<br />
So was the other meaning, about certifiable persons: &#8220;<font face="courier new">endorsed authoritatively as having met certain requirements</font>&#8221; (<em>in our case, an exam with multiple choice memory questions</em> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).<br />
But wow. That one in the middle is a curious meaning! &#8220;<font face="courier new">fit to be certified as insane (and treated accordingly)</font>&#8221;<br />
<strong>Certifiable == Insane.</strong> And while I don&#8217;t see a problem with insane people being ISTQB certified and vice-versa, it made it even a weirder word choice.</p>
<p>I had to search more in the internet to see that this &#8220;are you certifiable&#8221; idiom is a bit common in english. Microsoft even has a game with this name <a href="http://www.microsoft.com/click/areyoucertifiable/" target="_blank">here</a>.</p>
<p>So it was a joke! Ah, all a joke, but they kept me thinking.<br />
I guess that most of the non-native speakers of the SQE newsletters didn&#8217;t get the joke. And they were this close to being offended (<em>depends on the culture one comes from</em>).<br />
SQE (<em>and all</em>), it was good as an excuse for me to post the links for certification articles, but pay attention to your publications&#8217; audience! It takes a lot of time to get your jokes overseas <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200902/on-certified-testers-and-being-certifiable-and-on-non-native-english-speakers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Insights &#8211; The Graphing Calculator</title>
		<link>http://testing.gershon.info/200902/testing-insights-the-graphing-calculator/</link>
		<comments>http://testing.gershon.info/200902/testing-insights-the-graphing-calculator/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 10:44:59 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090213/testing-insights-the-graphing-calculator/</guid>
		<description><![CDATA[I&#8217;ve recently heard The Graphing Calculator Story, a ~54:00 min long Google Tech video on YouTube. On it, Ron Avitzur tells the story of the development of his (and Greg&#8217;s) Graphing Calculator, an impressive mathematical software that shipped with Mac computers for years. What&#8217;s special about the story? Well, he did it at Apple, but [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently heard <a href="http://www.youtube.com/watch?v=Dl643JFJWig" target="_blank">The Graphing Calculator Story</a>, a ~54:00 min long Google Tech video on YouTube. On it, Ron Avitzur tells the story of the development of his (<em>and Greg&#8217;s</em>) <a href="http://www.PacificT.com/Products.html" target="_blank">Graphing Calculator</a>, an impressive mathematical software that shipped with Mac computers for years.<br />
What&#8217;s special about the story? Well, he did it at Apple, but for free (<em>his contract was already closed</em>), and in secret (<em>Apple had cancelled the project</em>). As he says, sneaking into the building and volunteering for an eight billion dollar corporation. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I enjoyed the story very much. It is very exciting to see the passion he had (<em>has</em>) for his software and how he was committed to it. Plus, Ron is a great story teller.<br />
The graphing calculator had all the ingredients of a cool app. It <a href="http://catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ar01s02.html" target="_blank">scratched a developer&#8217;s personal itch</a>, and is a great example of <a href="http://markbernstein.org/NeoVictorian.html" target="_blank">NeoVictorian computing</a>: built for people, built by people, crafted in workshop, inspired.<br />
Actually, if we&#8217;re commenting on NeoVictorianism, Ron was one that really &#8220;<font face="times">woke up one day to find himself <a href="http://markbernstein.org/NeoVictorian.html" target="_blank">living in the software factory</a></font>&#8220;. The night got very cold, they said the factory is going to close and he should move somewhere else. The cool part? He kept doing his individual craftsmanship inside the corporation. Secretly.</p>
<p><span id="more-46"></span></p>
<p>Now to our matter, testing. He&#8217;s got some very good comments on Software Testing (<em>which he calls in the story as QA. Not his fault, but ours</em>). So nice comments, that I&#8217;ll just transcript:<br />
At (<em>~20:24</em>), &#8220;<font face="times">Our biggest problem was QA</font>&#8220;. &#8220;<font face="times">Fundamentally, you can&#8217;t do your own QA &#8212; it&#8217;s a question of seeing your own blind spots</font>&#8220;, and &#8220;<font face="times">it is expensive to do it well</font>&#8220;.<br />
At a moment in the story, two testing engineers came to offer help, as in their official work &#8220;<font face="times">they were really bored because they spend lots of times developing automatic test tools and now they&#8217;re at the point where they push the button and the test starts in the morning and they come back in the evening to see which API&#8217;s break</font>&#8220;.<br />
These testers were successful because they badly wanted to explore the new software, and also because they had good mathematical experience/background &#8212; closely fit skilled testers!</p>
<p>Ron later speaks about usability (<em>~35:57</em>).<br />
He describes the process of the usability studies they conducted after they&#8217;ve been programming with users in mind. Ron (<em>which understands well the importance of usability: &#8220;<font face="times">In a classroom, any time spent frustrated with the computer is time taken away from teaching</font>&#8220;</em>) says that even after all the attention to usability they had, they were surprised by the results of the study: &#8220;<font face="times">Sitting behind a two-way mirror, watching first-time users struggle with our software, reminded me that programmers are the least qualified people to design software for novices. Humbled after five days of this, Greg and I went back and painstakingly added feedback to the software, as if we were standing next to users, explaining it ourselves.</font>&#8221; In the movie, he adds that they were &#8220;<font face="times">pounding on the glass</font>&#8221; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  and that &#8220;<font face="times">all engineers should be forced to go through this, watching real users actually trying to use their software</font>&#8220;.</p>
<p>There&#8217;s another interesting comment at the very beginning (<em>~02:30</em>). Ron comments on how straightforward typewriting work was on the firsts Macs, and how a newbie could go from zero to full speed in less than 5 minutes on <a href="http://en.wikipedia.org/wiki/MacWrite" target="_blank">MacWrite</a>.<br />
This is very curious: Even today, the computer is more useful as a typewriter than anything else. The uses had varied much, and nowadays professionals use the computer for every nitty-gritty important detail, but still, the first thing that comes to mind to most people when they think &#8220;computer&#8221; is &#8220;writing&#8221;. From journals to books to presentations, my perception is that the only thing people can do (<em>on a computer</em>) with no complex instructions is publishing. Want to <a href="http://en.wikipedia.org/wiki/Desktop_publishing" target="_blank">publish</a>? Open this app and start typing. But you want to <a href="http://en.wikipedia.org/wiki/3D_software" target="_blank">render a 3D object</a>? <a href="http://www.lsba.org/2007MemberServices/LOMAPMaterial/Picking%20the%20Best%20Law%20Office%20Software.pdf" target="_blank">Search for a court lawsuit</a>? Build a <a href="http://en.wikipedia.org/wiki/Database_software" target="_blank">repository of data</a>? Out of luck, will take years to learn it well.<br />
Our hardware has evolved, and the purposes we use the computer for have changed too. But the form has stayed the same as 30 years ago. And (<em>not</em>) surprisingly, the interfaces of our apps still resemble the interface of that first MacWrite. Time to change how we interact with computers? I hope so. <a href="http://www.sciencedaily.com/" target="_blank">Science Daily</a> had long ago an <a href="http://www.sciencedaily.com/releases/2002/10/021010072402.htm" target="_blank">article</a> that said &#8220;<font face="times">While much about the computer has changed over the last three decades–greater power, faster speeds, more memory&#8230; – what has not changed is the user interface.</font>&#8221; They offered a <a href="http://en.wikipedia.org/wiki/Gesture_recognition" target="_blank">gesture interface</a> proposition, and other technologies like <a href="http://en.wikipedia.org/wiki/Multi-touch" target="_blank">multitouch</a> or <a href="http://en.wikipedia.org/wiki/Brain-computer_interface" target="_blank">brain-controlled interfaces</a> are being researched. From my part, I&#8217;m ready to test the new paradigm as soon as it&#8217;s ready <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>This is the <a href="http://www.youtube.com/watch?v=Dl643JFJWig" target="_blank">full video</a>, this is the link for the <a href="http://www.pacifict.com/Story/" target="_blank">graphing calculator storry in text form</a> (<em>10 min instead of 55 <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>), and go here for a <a href="http://www.youtube.com/watch?v=yJKZERN5mt4" target="_blank">demo of the product</a> at Apple&#8217;s launch.</p>
<p>Enjoy, and please let know your testing thoughts in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200902/testing-insights-the-graphing-calculator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuart&#8217;s introductions to Fitnesse, FitNesse Series (Part 2)</title>
		<link>http://testing.gershon.info/200811/stuarts-introductions-to-fitnesse-fitnesse-series-part-2/</link>
		<comments>http://testing.gershon.info/200811/stuarts-introductions-to-fitnesse-fitnesse-series-part-2/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 13:47:07 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[FitNesse]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20081128/stuarts-introductions-to-fitnesse-fitnesse-series-part-2/</guid>
		<description><![CDATA[Hi. Writing the Fitnesse posts turned to be harder than I thought. I do have a bit of tests ready for the triangle case, but not enough text to make an interesting post. As I&#8217;m not using Fitnesse in my day-to-day work, it makes it harder to bring cool insights or to explore on the framework. But [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image9" height="90" alt="FitNesseLogo" src="http://testing.gershon.info/wp-content/uploads/2007/04/fitnesselogo.gif" />Hi.</p>
<p><a href="http://testing.gershon.info/category/nerd-t35t1ng/fitnesse">Writing the Fitnesse posts</a> turned to be harder than I thought.<br />
I do have a bit of tests ready for the triangle case, but not enough text to make an interesting post. As I&#8217;m not using Fitnesse in my day-to-day work, it makes it harder to bring cool insights or to explore on the framework.</p>
<p>But I just discovered someone who not only uses Fitnesse at work, but also writes articles about Fitnesse that give the Fitnese feeling:</p>
<p><span id="more-44"></span>Stuart writes at <a href="http://working-thought.blogspot.com/">http://working-thought.blogspot.com/</a>.<br />
It seems as if his company has been trying Fitnesse for a while, and they&#8217;re over the initial pains. Now they&#8217;re on more advanced pains <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , but with apparently good results.</p>
<p>If you &#8216;ve already seen the <a href="http://fitnesse.org/FitNesse.TwoMinuteExample" target="_blank">Two Minute Example</a> at the <a href="http://fitnesse.org/">Fitnesse page</a>, then you know what Fitnesse if used for.<br />
Then start reading from &#8220;<a href="http://working-thought.blogspot.com/2008/06/fitnesse-for-dummies.html">Fitnesse for Dummies</a>&#8221; at Stuart&#8217;s blog (<em>and laugh at the ilarious GenericFixture.jar error page</em>). There are further posts later, like the very insightful <a href="http://working-thought.blogspot.com/2008/10/i-hate-fitnesse-fitnesse-rocks.html">love/hate relationship</a> with Fitnesse.</p>
<p> </p>
<p>As for me, the post I liked most was the one about <a href="http://working-thought.blogspot.com/2008/06/automate-this.html">test automations</a>, that has nothing to do with Fitnesse, but explains well many of the web-app testing tasks.</p>
<p>I wish luck to Stuart, and who knows? Maybe I&#8217;ll get back at posting about Fitnesse somewhen. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200811/stuarts-introductions-to-fitnesse-fitnesse-series-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testers don&#8217;t think like Developers think like Computers</title>
		<link>http://testing.gershon.info/200806/testers-dont-think-like-developers-think-like-computers/</link>
		<comments>http://testing.gershon.info/200806/testers-dont-think-like-developers-think-like-computers/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 20:10:28 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20080616/testers-dont-think-like-developers-think-like-computer/</guid>
		<description><![CDATA[We all are told constantly not to think like a programmers. We&#8217;ve told other people dozens of times &#8220;Don&#8217;t you think like a programmer. We don&#8217;t care why the software does it &#8211; it is still wrong&#8221;. For testers, thinking like developers is evil. If you think like a programmer, you&#8217;ll start excusing the software [...]]]></description>
			<content:encoded><![CDATA[<p>We all are told constantly not to think like a programmers.<br />
We&#8217;ve told other people dozens of times &#8220;Don&#8217;t you think like a programmer. We don&#8217;t care <strong>why </strong>the software does it &#8211; it is still wrong&#8221;.</p>
<p><a href="http://www.amazon.com/gp/product/1400082471?ie=UTF8&#038;tag=testithoug-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1400082471"><img title="Dreaming in Code" alt="Dreaming in Code" src="http://ecx.images-amazon.com/images/I/51Klh6hn1KL._SL160_.jpg" align="right" /></a></p>
<p>For testers, thinking like developers is evil. If you think like a programmer, you&#8217;ll start excusing the software and will forgive the system&#8217;s bugs.</p>
<p>I am reading the very cool book &#8220;Dreaming in Code&#8221; by Scott Rosenberg, and I just understood a little bit more on why&#8217;s so bad sharing the developers mindset.</p>
<p><span id="more-36"></span></p>
<p>Scott starts its book with Chapter 0, a common practice in computer literature. When enumerating the reasons, he explains that &#8220;Programmers count from zero, not from one. (&#8230;) Why do programmers count from zero? Because computers count from zero!&#8221; and that developers are taught to think like computers.</p>
<p>This is a very interesting and basic concept.<br />
Dr. Parnas in his &#8220;Strategic Defense System&#8221; paper (<em>a real favorite of mine</em> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) has a whole chapter called <strong>Why conventional software development does not produce reliable programs</strong>, in which he clarifies this problem &#8212; developers thinking (<em>or trying to think</em>) like a computer:</p>
<blockquote><p>As we continue in our attempt to &#8220;think like a computer&#8221;, the amount we have to remember grows and grows. The simple rules defining how we got to certain points in a program become more complex as we branch there from other points. (&#8230;) Because one needs to remember so much (&#8230;), new problems are created when old problems are corrected.</p></blockquote>
<p>The beauty in all this is that Testers should not exercise the programming rationale (<em>when analyzing a software</em>) because they&#8217;ll be mimicking the rationale of the very same software they are testing. They are limiting themselves to what the program knows about itself, instead of expanding their logic to people-centered matters &#8212; i.e. how the software will be used and what it is really meant to do.</p>
<p>Back to &#8220;Dreaming in Code&#8221;, Scott has an almost poetical way of writing the concepts developed by Dr. Parnas.<br />
Because computers think from zero, &#8220;programming include little offsets, translations of &#8216;+1&#8242; or &#8216;-1&#8242;&#8221;, he says. So:</p>
<blockquote><p>There&#8217;s a space between (&#8230;) the way the machine counts and thinks and the way we count and think. When you search for explanations for software&#8217;s bugs and delay and stubborn resistance to human desires, that space is where you&#8217;ll find them.</p></blockquote>
<p>Poetry. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200806/testers-dont-think-like-developers-think-like-computers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Set the butterflies free &#8211; now I am collecting quotes</title>
		<link>http://testing.gershon.info/200806/set-the-butterflies-free-now-i-am-collecting-quotes/</link>
		<comments>http://testing.gershon.info/200806/set-the-butterflies-free-now-i-am-collecting-quotes/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 19:59:17 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Test Annotations]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20080608/set-the-butterflies-free-now-i-am-collecting-quotes/</guid>
		<description><![CDATA[I&#8217;ve started a quote collection. Many times I want to quote someone but I just don&#8217;t remember how exactly the phrase was. Or remember the quote but am not certain on the source&#8230; I am fond of quoting. Not sure why, but I like to quote. I guess it gives some legitimating to what I am saying. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started a quote collection. Many times I want to quote someone but I just don&#8217;t remember how exactly the phrase was. Or remember the quote but am not certain on the source&#8230;</p>
<p>I am fond of quoting.<br />
Not sure why, but I like to quote. I guess it gives some legitimating to what I am saying. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, the quote collection is available at this address: <a href="http://testing.gershon.info/quote-collection/">http://testing.gershon.info/quote-collection/</a>. It will grow slowly, please check it regularly.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200806/set-the-butterflies-free-now-i-am-collecting-quotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BotT: Excel 2007 has algebra difficulties&#8230;</title>
		<link>http://testing.gershon.info/200805/33/</link>
		<comments>http://testing.gershon.info/200805/33/#comments</comments>
		<pubDate>Sun, 04 May 2008 22:40:20 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Bug of this Time]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20080504/33/</guid>
		<description><![CDATA[Do you use MS Office 2007? Well, then you probably noticed that Excel multiplies &#8220;850 x 77.1&#8243; as &#8220;100,000&#8243; instead of &#8220;65,535&#8243;. Uh, you didn&#8217;t notice? Well neither did I until I read it all over the internet. See the post on SlashDot for scoop, and see its comments for some good laughs. There are [...]]]></description>
			<content:encoded><![CDATA[<p>Do you use MS Office 2007?<br />
Well, then you probably noticed that Excel multiplies &#8220;850 x 77.1&#8243; as &#8220;100,000&#8243; instead of &#8220;65,535&#8243;.</p>
<p>Uh, you didn&#8217;t notice? Well neither did I until I read it all over the internet.<br />
See <a title="the post on SlashDot" href="http://it.slashdot.org/article.pl?sid=07/09/24/2339203" target="_blank">the post on SlashDot </a>for scoop, and see <a title="SlashDot comments" href="http://it.slashdot.org/comments.pl?sid=307215&#038;threshold=1&#038;commentsort=0&#038;mode=thread&#038;pid=0" target="_blank">its comments</a> for some good laughs. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>There are explanations all around about how this bug came to appear in Excel.<br />
The best one is probably <a title="Explaining the Excel Bug" href="http://www.joelonsoftware.com/items/2007/09/26b.html">Joel&#8217;s one</a> (<em>you may remember Joel from </em><a title="my post on Joel on Software" href="http://testing.gershon.info/20070425/annotated-joel-on-software-bad-reasons-not-to-test/"><em>this post</em></a>).<span id="more-33"></span></p>
<p>Go and read it. Joel is very deep in there and explains why the binary calculations can be confusing, and how the binary notation standards may or not help you developing better software.</p>
<p>I say &#8220;<em>go and read it</em>&#8221; because I&#8217;ll not repeat his explanation here <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I will, however, quote the best parts from the questions at the end &#8212; very insightfull!</p>
<p>First insight is a matter for pondering about bugs, small bugs and the perils of fixing such:</p>
<blockquote><p><strong>Q: Isn&#8217;t this really, really bad?<br />
</strong>A: IMHO, no, the chance that you would see this in real life calculations is microscopic. Better worry about getting hit by a meterorite. Microsoft, of course, will be forced to tell everyone &#8220;accuracy is extremely important to us&#8221; and I&#8217;m sure they&#8217;ll have a fix in a matter of days, and they&#8217;ll be subjected to all kinds of well-deserved ridicule, but since I don&#8217;t work there I&#8217;m free to tell you that the chance of this bug actually mattering to you as an individual is breathtakingly small.<br />
(&#8230;)<br />
And let&#8217;s face it &#8212; do you really want the bright sparks who work there now, and manage to break lots of perfectly good working code &#8212; rewriting the core calculating engine in Excel? Better keep them busy adding and removing dancing paper clips all day long.</p></blockquote>
<p>Second insight, on the perils of automated tests (<em>an automated test sees only what you ask it to see, hence it has blind spots and will not report for side-effects!</em>).<br />
(<em>Of course, as Joel says, it is doubtfull that manual tests would ever exercise rare/random calculations</em>):</p>
<blockquote><p><strong>Q: Shouldn&#8217;t they be testing for these kinds of things?</strong><br />
A: I&#8217;ll bet that most of the numeric testing done on the Excel team is done automatically with VBA code. Cells containing this value display as 100,000, but from VBA, they&#8217;re going to look like 65,535 (since the number would be passed into the Basic runtime in binary, before the display formatting.) I&#8217;m sure there&#8217;s plenty of code to test display formatting, but with a bug like this that only happens on 12 out of 18446744073709551616 possible floating point binary numbers, it&#8217;s unlikely that any set of black-box tests would cover this case.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200805/33/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Triangle problem as a starting point &#8211; FitNesse Series (Part 1)</title>
		<link>http://testing.gershon.info/200707/the-triangle-problem-as-a-starting-point-fitnesse-series-part-1/</link>
		<comments>http://testing.gershon.info/200707/the-triangle-problem-as-a-starting-point-fitnesse-series-part-1/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 19:14:46 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[FitNesse]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070704/the-triangle-problem-as-a-starting-point-fitnesse-series-part-1/</guid>
		<description><![CDATA[Which came first, the chicken or the egg? And after all, why would any of them cross the road? That question is as old as time. How would you test a program which can return the type of a triangle based on the side widths? That question is as old as me. In 1979 (yes, I [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li>Which came <strong>first, the chicken or the egg</strong>? And after all, why would any of them cross the road?<br />
That question is as old as time.</li>
<li>How would you test <strong>a program which can return the type of a triangle based on the side widths</strong>?<br />
That question is as old as me.</li>
</ul>
<p><a title="The Art of Software Testing" href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Fo%2FASIN%2F0471469122%3Fpf%5Frd%5Fm%3DATVPDKIKX0DER%26pf%5Frd%5Fs%3Dcenter-6%26pf%5Frd%5Fr%3D0TD64REN2A91HA0GT9Y6%26pf%5Frd%5Ft%3D101%26pf%5Frd%5Fp%3D278843901%26pf%5Frd%5Fi%3D507846&#038;tag=testithoug-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325" target="_blank"><img id="image14" height="96" alt="The Art of Software Testing cover image" src="http://testing.gershon.info/wp-content/uploads/2007/07/theartoofsoftwaretesting.jpg" /></a>In 1979 (<em>yes, I am that young <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em>), <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Fexec%2Fobidos%2Fsearch-handle-url%3F%255Fencoding%3DUTF8%26search-type%3Dss%26index%3Dbooks%26field-author%3DGlenford%2520J.%2520Myers&#038;tag=testithoug-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Glenford J. Myers</a><img style="margin: 0px; border: medium none" height="1" src="http://www.assoc-amazon.com/e/ir?t=testithoug-20&#038;l=ur2&#038;o=1" width="1" border="0" /> wrote what was to be the first classic book on Software Testing.<br />
Called &#8220;<a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2Fo%2FASIN%2F0471469122%3Fpf%5Frd%5Fm%3DATVPDKIKX0DER%26pf%5Frd%5Fs%3Dcenter-6%26pf%5Frd%5Fr%3D0TD64REN2A91HA0GT9Y6%26pf%5Frd%5Ft%3D101%26pf%5Frd%5Fp%3D278843901%26pf%5Frd%5Fi%3D507846&#038;tag=testithoug-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">The Art of Software Testing</a><img style="margin: 0px; border: medium none" height="1" src="http://www.assoc-amazon.com/e/ir?t=testithoug-20&#038;l=ur2&#038;o=1" width="1" border="0" />&#8220;, this book is very old, and written with old software in mind &#8211; most technologies and methodologies existing today were not dreamed of back then.<br />
Well, it turns out the principles of software &#8211; <em>from writing it to testing it</em> - are still pretty much the same. Software is still written on sort of punchcards, the punchcards just got more complex and flexible&#8230; <strong>The book content is surprisingly relevant for today&#8217;s testers</strong> &#8211; so much, that it was updated only once in almost 30 years.<br />
<strong>If you haven&#8217;t, read the book.</strong> Unfortunately, I have read it only partially meanwhile.</p>
<p>Maybe the most known contribution of Mr. Glenford in this book is the <strong>testing self-assessment challenge</strong> in the introduction.</p>
<p><span id="more-13"></span>It goes like this:</p>
<blockquote><p>A Software is given, which receives three inputs (<em>numbers</em>) that define the size of a triangle&#8217;s sides. The SW can, then, categorize the triangle in one of these categories: Equilateral, Scalene, Isosceles or Invalid.<br />
How many test cases can you build for testing this triangle?<br />
The more heterogeneous the cases the better, and: The more effective, better yet.</p></blockquote>
<p>Myers brings then an assessment criteria. If the test cases you came up fit into enough categories such as the ones below, you are in a good way:</p>
<ul>
<li>Test cases that represents a valid scalene/isosceles/equilateral triangle.</li>
<li>Test cases that represent valid isosceles triangles such that there are all three permutations of two equal sides.</li>
<li>Test cases in which one side has a zero value, or negative value.</li>
<li>Test cases that represent invalid triangles.</li>
<li>&#8230; </li>
</ul>
<p>The example is famous, because it grasps clearly the distance between coding and testing. Writing such a program may take about 30 minutes of work to a programmer (<em>I did <a href="http://www.gershon.info/testing/files/Triangle_FitNesse_Part01.cs" target="_blank">this first version</a> in 20 minutes</em>), but testing the program can be a never-ending task.</p>
<hr /><img id="image9" height="90" alt="FitNesseLogo" src="http://testing.gershon.info/wp-content/uploads/2007/04/fitnesselogo.gif" />How would we use Triangle Problem?           </p>
<p>We will use this problem as the <strong>example to do all the acceptance tests from FitNesse</strong>.</p>
<p>We&#8217;ll have this DLL &#8211; based on <a href="http://www.gershon.info/testing/files/Triangle_FitNesse_Part01.cs" target="_blank">the C# code above</a> &#8211; and we will connect this to our FitNesse server. We will then start checking inputs and outputs. All this in Part 2 of the FitNesse Series!</p>
<hr />The triangle exercise is now all over the internet.<br />
You can read about it in the following links:            </p>
<ol>
<li><strong>Google Search &#8211; &#8220;software testing triangle equilateral&#8221;<br />
</strong><a href="http://www.google.com/search?q=%22software+testing%22+triangle+equilateral">http://www.google.com/search?q=%22software+testing%22+triangle+equilateral</a><br />
You&#8217;ll find most of what&#8217;s online and cool here.</li>
<li><strong>Example with working application (!) for you to test:<br />
</strong><a href="http://www.testobsessed.com/2007/03/21/testing-triangles-a-classic-exercise-updated-for-the-web/">http://www.testobsessed.com/2007/03/21/testing-triangles-a-classic-exercise-updated-for-the-web/</a><br />
Quality Tree Software&#8217;s Elisabeth brought the triangle to the   attention of all again when she posted it on her website.<br />
The working example by Elisabeth: <a href="http://www.testobsessed.com/exercises/triangle.html">http://www.testobsessed.com/exercises/triangle.html</a></li>
<li><strong>Challenge Definition by Alex Samurin<br />
</strong><a href="http://www.geocities.com/xtremetesting/TriangleTest.html">http://www.geocities.com/xtremetesting/TriangleTest.html</a><br />
Alex has a short explanation of the original problem as it was presented by Myers.</li>
<li><strong>Malik&#8217;s Code Inspections<br />
</strong><a href="http://codeinspections.blogspot.com/">http://codeinspections.blogspot.com/</a><br />
Malik summarizes in two paragraphs the two most interesting points on the abovementioned application by Elisabeth: Floating point calculations and sorting algorithms.</li>
<li><strong>The exercise, Bollywood style <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
</strong><a href="http://venkatreddyc.wordpress.com/2007/03/24/taking-on-testing-triangles-a-classic-excercise/">http://venkatreddyc.wordpress.com/2007/03/24/taking-on-testing-triangles-a-classic-excercise/</a><br />
Venkat has written some insights (<em>in a dramatic voice</em>) on the triangle javascript app. I recommend this one, because the pace and steps are <u>very didactic</u>.</li>
<li>Last but not least <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> :<br />
<strong>My post on it</strong>: <a title="A Triangle mystery (not the Bermuda's)" href="http://testing.gershon.info/a-triangle-mystery-not-the-bermudas/">A Triangle mystery (not the Bermudas&#8217;)</a>. I turned this post into a page/article, &#8217;cause it is a useful subject.<br />
Pay attention, I am not trying to really test the triangle application. This is new stuff &#8211; we are using the triangles to test the FitNesse framework! Go for it!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200707/the-triangle-problem-as-a-starting-point-fitnesse-series-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FitNesse Series in Testing Thoughts (Part 0)</title>
		<link>http://testing.gershon.info/200703/fitnesse-series-in-testing-thoughts-part-0/</link>
		<comments>http://testing.gershon.info/200703/fitnesse-series-in-testing-thoughts-part-0/#comments</comments>
		<pubDate>Wed, 07 Mar 2007 22:44:47 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[FitNesse]]></category>
		<category><![CDATA[Nerd T35t1ng]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070510/fitnesse-series-in-testing-thoughts-part-0/</guid>
		<description><![CDATA[Do you FitNesse? I&#8217;ll (as soon as I get to do a lot of things I want to get done) post some impressions and examples on FitNesse, the cool tool for cool testers. What I plan to do: Install and set a FitNesse setup; Make a simple standard easy program &#8211; the System Under Test! Start [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image9" height="90" alt="FitNesseLogo" src="http://testing.gershon.info/wp-content/uploads/2007/04/fitnesselogo.gif" /><strong>Do you FitNesse?</strong></p>
<p>I&#8217;ll (<em>as soon as I get to do a lot of things I want to get done</em>) post some impressions and examples on FitNesse, the cool tool for cool testers.</p>
<p><strong>What I plan to do:</strong></p>
<ol>
<li>Install and set a FitNesse setup;</li>
<li>Make a simple standard easy program &#8211; the System Under Test!</li>
<li>Start testing and making the program better with FitNesse.</li>
<li>And <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  all this, with screenshot goodness!</li>
</ol>
<p><strong>When will that be?</strong></p>
<ul>
<li>Ouch. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  It may take a long time. Let&#8217;s talk about this again on July&#8230;</li>
</ul>
<p> </p>
<p><strong>Meanwhile:</strong> &#8220;FitNesse is designed to support acceptance testing rather than unit testing in that it facilitates detailed readable description of system function&#8221;. More information can be read in <a href="http://www.fitnesse.org/" target="_blank">FitNesse&#8217;s website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200703/fitnesse-series-in-testing-thoughts-part-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
