<?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; Test Insight</title>
	<atom:link href="http://testing.gershon.info/category/test-insight/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>Should/Need Testers know how to Program (a Testing Question from Brazil)</title>
		<link>http://testing.gershon.info/201003/testers-know-how-to-program/</link>
		<comments>http://testing.gershon.info/201003/testers-know-how-to-program/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 23:55:16 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Ask the Tester]]></category>
		<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[diversity]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[qualification]]></category>
		<category><![CDATA[skills]]></category>
		<category><![CDATA[tester]]></category>
		<category><![CDATA[testers]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/?p=139</guid>
		<description><![CDATA[There&#8217;s a very active Brazilian software testing discussion mailing list in Portuguese, called DFTestes. When I say &#8220;very active&#8221;, I mean an average of 215 messages/month in 2009, and January 2010 has got more than 404 messages. Compared with other mailing list I participate, this is the most active one, and a tip of hat [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-278" title="coding" src="http://testing.gershon.info/wp-content/uploads/2010/03/program_code_s-250x250.jpg" alt="" width="250" height="250" />There&#8217;s a very active Brazilian software testing discussion mailing list in Portuguese, called <a href="http://br.groups.yahoo.com/group/DFTestes/">DFTestes</a>.<br />
When I say &#8220;very active&#8221;, I mean an average of 215 messages/month in 2009, and January 2010 has got more than 404 messages. Compared with other mailing list I participate, this is the most active one, and a tip of hat goes to the testers and list-admins that make the discussions interesting and vibrant.</p>
<p>Recently a <a href="http://br.groups.yahoo.com/group/DFTestes/message/6762">big argument was held</a> (<em>link in Portuguese, requires registration</em>) on <strong>whether &#8220;testers need to know programming&#8221; or not</strong>. I made some contributions to the discussion, and I&#8217;ll try to translate my point of view to English here.<br />
Please note that there were a lot of people participating, and the post below does not present the entire debate or even an entire opinion, just the messages I wrote as answers. I hope you enjoy them.</p>
<p>The proposed question was:</p>
<blockquote><p>Do testers need programming skills? Until a few years ago, most people would definitely answer NO&#8230; But I&#8217;ve known both people that seek testing jobs as an alternative to coding, and testers that write code routinely. So, do testers need or not to know programming?</p></blockquote>
<p><span id="more-139"></span><br />
&#8212;</p>
<p><strong><span style="text-decoration: underline;">Do testers need programming skills?</span></strong> My comments:<br />
The question as it is posed takes some assumptions that may be incorrect: Saying that &#8220;until a few years ago, most people would definitely answer NO&#8221; is like deciding the answer nowadays is YES <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
<strong>First</strong>, from other discussions on this (<em>there was one not long ago in the <a href="http://groups.yahoo.com/group/software-testing">software-testing</a> mailing list too</em>), it sounds more like whoever used to say &#8220;NO&#8221; a few years ago still says &#8220;NO&#8221;, and whoever used to say &#8220;YES&#8221; still says &#8220;YES&#8221; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . There was no significant technology or methodology novelty that caused a change in the approach to this (<a href="http://www.satisfice.com/kaner/?p=11"><em>Cem Kaner says</em></a><em> testing practice has evolved only a little over the years</em>).<br />
What does happen is that some people confuse the software testing we (<em>software testers</em>) do with the unit testing and other techniques that enhance and support development (<em>and are mostly done programmatically</em>). It is true that many testers work on this kind of tasks in their day-to-day, but I believe this is far from the essence of our job &#8212; and the <a href="http://www.developsense.com/blog/category/testing-vs-checking/">distinction of testing and checking</a> by <a href="http://www.developsense.com/">Michael Bolton</a> may help understanding that.<br />
<strong>Second</strong>; if anything, the advance of years made testing <strong>without</strong> programming knowledge even <strong>easier</strong>. <a href="http://en.wikipedia.org/wiki/Gerald_Weinberg">Jerry Weinberg</a> describes the tests he did at the beginning of his career as written in punch cards on assembly and given for the machine to execute. At these times, it was much harder (<em>bordering unfeasible</em>) to test an app without knowing to program in the language, or details about the data types and system limitations. With time the advancements in interfaces made it, if anything, much easier to test without programming knowledge. Moreover, most languages are today capable of more or less the same things, so when testing a web page most tests will be similar if it was written in PHP or ASP.NET, and many tests will be similar for an app written on C# or Delphi. And in order to learn about internal details, you don&#8217;t need to know the code either &#8212; memory, performance and process analyzers can help with detailed views about the resources used.</p>
<p>That&#8217;s not to say a tester should not know how to code <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Programming has many advantages to a tester:</p>
<ul>
<li>Being able to understand the type of problems that afflicts applications (<em>knowing &#8220;what the bug is doing to the program&#8221; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>).
<ul>
<li>Knowing about how software is built helps when building a mental model of the software functioning (<em>where does the program makes decisions? when does it asks for resource? how does it communicates with libraries?</em>).
<ul>
<li>Knowledge about the internal code of the application being tested does not necessarily helps, though. At times, this can be harmful as it limits the tests done more than it expands them. But this is another discussion, on the values of Black-Box testing and Glass-Box testing.</li>
</ul>
</li>
</ul>
</li>
<li>Gives the option to automate tasks or functions when these are needed in a test (<em>automated tests, automated loads, automated performance probes&#8230;</em>).
<ul>
<li>And as important, the creation of little tools that aid the testing process (<em>helping quick configuration of a system or gathering data for reports</em>) can help the whole team, and make a tester an important player in the group.</li>
</ul>
</li>
<li>It helps communication with developers. Programmers are human beings that are easy to talk to when you know their language <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8230; Being on the same speaking-context as them really helps. And as it happens in many other geek linguistic elites, some programmers will respect code-speakers more than non-speakers.</li>
</ul>
<p>So, should testers know how to program?<br />
Well, it definitely helps in many facets. My non-authoritative answer is that it helps so much that no tester should ignore this area, given the opportunity.</p>
<p>&#8212;</p>
<p>With so many advantages, <strong><span style="text-decoration: underline;">should we hire only the testers that know how to program</span></strong>?</p>
<p><a href="http://en.wikipedia.org/wiki/Cem_Kaner">Cem Kaner</a> commented once that he &#8220;will not accept M.Sc. or doctoral students if they have weak communication skills. My experience is that these are more important, for success in my lab, than programming skills&#8221;. Kaner&#8217;s vision, on the articles that he writes about recruiting (<a href="http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124"><em>this book</em></a><em>, and </em><a href="http://www.kaner.com/pdfs/JobsRev4a.pdf"><em>this article</em></a>), is that the teams should be heterogeneous and not everybody should have coding backgrounds &#8212; the &#8220;domain knowledge&#8221; about the area and business of the application are essential for effective tests.<br />
For example, when building a team for testing an app that does stock market transactions, which kind of player would you recruit? People who know how to program, or that know the stock market trade? The best answer, I believe Cem would say, is &#8220;people from both sides&#8221;. Personally, if I had to choose one of the extremes, I would pick the stock market expert. Hey, but he doesn&#8217;t know how to code!! Well, then end user doesn&#8217;t know either.<br />
In the comments to <a href="http://testing.gershon.info/200806/testers-dont-think-like-developers-think-like-computers/">Testers don&#8217;t think like Developers think like Computers</a> I was asked about recruiting programming testers, and this is the answered there (<em>notice the example reuse <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>):</p>
<blockquote><p>Coding isn’t a required background for testers. Coding skills will help on coding tasks, and sometimes with system understanding.<br />
But a diverse background will make the team thrive and explore the system in fruitful ways.<br />
A domain expert can bring much more value than a B.S. in Computer science.<br />
For example, when building an application for trading stocks, a tester with a buying/selling stocks background will find valuable information.<br />
(<em>See lesson 235 in “Lessons Learned in Software Testing” by Cem Kaner, James Bach and Bret Pettichord – “Staff the testing team with diverse background”</em>).</p></blockquote>
<p>Of course, there is no 1-size-fits-all, and different projects may require a different team profile. Just as different managers and different contexts may.<br />
In essence, I would agree that teams should be encouraged to hire non-coder testers. Or, if not encouraged, the practice should be considered perfectly acceptable.</p>
<p>Another point:<br />
When I instruct testers, one of my first instructions is that operating system, programming language or data base limitations don&#8217;t matter. Be careful of *why* the software does the things it does&#8230; What matters is what the user wants, and knowledge about technology limitations can often come in the way.<br />
In his article &#8220;<a href="http://www.developsense.com/blog/2009/09/letter-to-programmer/">A Letter to the Programmer</a>&#8220;, Michael Bolton comments that the limit of text entry in the chat window of Skype is 32768 chars and a little problem he found with that. In the comments, a programmer quickly jumps to say that 32678 is the standard limit with the text_box element! This programmer did not notice that <strong>this doesn&#8217;t matter</strong>. If there is a problem here, a user doesn&#8217;t want to know about API limitations &#8212; and testers with coding skills risk &#8220;believing the system&#8221; instead of &#8220;defending the user&#8221;.</p>
<p>&#8212;</p>
<p>But <strong><span style="text-decoration: underline;">what about TDD and Unit Tests?</span></strong></p>
<p>It was commented in the thread that job opening notices more often than not require knowledge in coding language and in automation tools. From this, one sees that the focus on automation is very strong when recruiting testers. But, is this due to a sincere attempt to increase value? This tendency can very well be focusing cost reduction instead (<em>which is good too, but can be harmful when done wrong</em>).<br />
This brings us back to the confusion commented above about the difference between &#8220;real tests&#8221; and tests (<em>checks</em>) done during programming that enhance and support development (<em>Unit Tests, TDD suites etc</em>). In this video commented on the thread (<a href="http://www.nomedojogo.com/2009/04/08/so-os-imaturos-nao-testam-o-video/"><em>here</em></a><em>, in Portuguese</em>) a programmer explaining <a href="http://en.wikipedia.org/wiki/Unit_testing">unit testing</a> and <a href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a> maintains that if you have great automatic tests that support your code, you don&#8217;t need a software testing team.<br />
Ouch, that is a big mix-up!<br />
When TDD tests are mixed up with the tests software testers do, testers are being approached as a programmer&#8217;s baby-sitter, looking over the developer shoulders to tell about coding errors. But our real function isn&#8217;t (<em>solely</em>) checking whether the &#8220;if x &lt; 20&#8243; was coded correctly, but to ask whether &#8220;20&#8243; is enough, and in what extreme business conditions there will be 23 required, or when each of these 20 data-structs will need to be bigger.</p>
<p>Programmers make well to test their code thoroughly before releasing for testing, that way we can skip the dumb tests and focus on the real questions the customer is not asking. As it happens, for these questions, most automatic checks are less valuable than manual tests &#8212; be it because the automation will not find a bug again, because these tests do not evolve together with the system, or because the automation is not thinking beyond its code. If one could automate everything a tester does and think, then it would have been done and we testers would be having an easy time supervising robots <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . But you can&#8217;t, sapient testing is a human&#8217;s thing. See what <a href="http://www.satisfice.com/">James Bach</a> writes in his article &#8220;<a href="http://www.satisfice.com/blog/archives/58">Manual Tests Cannot Be Automated</a>&#8220;.</p>
<p>(<br />
<em>Last, full disclosure:<br />
- I have a computer systems development engineer degree, and worked as programmer for many years. Knowing how to program in many languages helps my testing job every day.<br />
- Unrelated to this post, and not depending on me <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , most new hires in my department at work have background and/or formation in programming, this is a prerequisite.<br />
</em>)</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/201003/testers-know-how-to-program/feed/</wfw:commentRss>
		<slash:comments>2</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>Yay, another Happy New Testing Year!  A decade in review&#8230;</title>
		<link>http://testing.gershon.info/201001/yay-another-happy-new-testing-year-a-decade-in-review/</link>
		<comments>http://testing.gershon.info/201001/yay-another-happy-new-testing-year-a-decade-in-review/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:57:12 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[context driven]]></category>
		<category><![CDATA[decade]]></category>
		<category><![CDATA[forum]]></category>
		<category><![CDATA[happy]]></category>
		<category><![CDATA[important development]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[stackexchange]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[year]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/?p=142</guid>
		<description><![CDATA[This is our fourth Happy New testing Year post, after this one, this one and this one. :) So, a few hours before January is over, I&#8217;ll transpose here an answer to Testing.StackExchange about the last decade on testing: Question: What are the most important software testing developments of the decade? My Answer: The question asks about the most important [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-151" title="new_year_champagne_glasses_4" src="http://testing.gershon.info/wp-content/uploads/2010/01/new_year_champagne_glasses_4-250x233.png" alt="" width="134" height="115" />This is our <strong>fourth</strong> Happy New testing Year post, after <a href="http://testing.gershon.info/20070101/happy-new-testing-year/">this one</a>, <a href="http://testing.gershon.info/20080413/32/">this one</a> and <a href="http://testing.gershon.info/200901/happy-new-test…year-yet-again/">this one</a>. :)</p>
<p>So, a few hours before January is over, I&#8217;ll transpose here an <a href="http://testing.stackexchange.com/questions/360/what-are-the-most-important-software-testing-developments-of-the-decade/368#368">answer </a>to <a href="http://testing.stackexchange.com/">Testing.StackExchange</a> about the last decade on testing:</p>
<blockquote><p><strong>Question: What are the most important software testing developments of the decade?</strong></p></blockquote>
<p><strong>My Answer:<br />
</strong>The question asks about <strong>the most important</strong> developments&#8230; Not the best or the worst, the beneficial or the harmful.<br />
I&#8217;ll try to answer here with considerations by me and others I found on the net. Not everybody will agree that all these are good &#8212; even I don&#8217;t agree with all <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8212; but my approach here is more of a reporter than a judge.<span id="more-142"></span></p>
<ol>
<li><strong><span style="text-decoration: underline;">Blogs</span></strong> were the most important testing development, at least for me <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<br />
It helps me grow my testing philosophy. It helps by being a quick and instrumental medium to quality discussions. Following the great authors as they write is a great experience (<em>many authors started blogging only during the 2000&#8242;s, like James Bach and Michael Bolton</em>).<br />
One great thing about blogs is that they allow us to understand the flow of ideas as they are being built upon &#8212; instead of simply receiving the ideas later, in book, as was the custom 10 years earlier.</p>
<ul>
<li><a href="http://twitter.com/sgershon">Tweeting</a>, <a href="http://br.groups.yahoo.com/group/DFTestes">forums</a>, and other <a href="https://wave.google.com/wave/">collaboration</a> platforms of Web2.0 are cool too, but I believe their impact to be smaller.</li>
<li>Blogging also allows a simple guy like me to share his <a href="http://testing.gershon.info/">Testing Thoughts</a> :).</li>
</ul>
</li>
</ol>
<p>Other points:</p>
<ol>
<li>The <strong><a href="http://www.context-driven-testing.com/">Context-Driven School</a></strong> gathered momentum with this name, and became well known. I couldn&#8217;t find tracks on the full history of the context-driven school, but the earliest mentions I could find to it <strong>with this name</strong> are from the <strong>very</strong> late nineties. It is clear that Cem and James were publishing context-driven papers from the early 90&#8242;s (<em>see </em><a href="http://c2.com/cgi/wiki$?ContextDrivenTesting"><em>here</em></a>), maybe before &#8212; but the first places where I found the &#8220;context-driven&#8221; name where from 1999 (<em>at the </em><a href="http://groups.yahoo.com/group/software-testing/message/29"><em>software-testing list</em></a><em>. This seems corroborated by <a href="http://c2.com/cgi/wiki$?ContextDrivenTesting">C2&#8242;s page</a></em>).
<ul>
<li>Again, I don&#8217;t mean to say that it started on this decade. I believe the work of the context-driven people was context-driven for the last 50 years <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and all had always sought excellency. It is not new from the 2000&#8242;s, but it looks like the movement got a name &#8212; and <strong>exposure as a movement</strong> &#8212; only in the last 10 years.</li>
</ul>
</li>
<li><strong>Certifications</strong> gathered momentum too. <strong>Without</strong> entering in the good/bad discussion, it is a movement that had a lot of action in the past 10 years and affected the way we discuss software testing today. It wouldn&#8217;t be fair to count what happened in the 2k&#8217;s without mentioning them.
<ul>
<li>The <a rel="nofollow" href="http://www.istqb.org/">ISTQB</a> was founded in 2002, and is a popular certification.</li>
<li>The <a rel="nofollow" href="http://www.bcs.org/server.php?show=nav.10920">ISEB</a> was doing certifications before (<em>so this too, isn&#8217;t entirely a new thing</em>), but all got much more impetus.</li>
</ul>
</li>
<li>Greater awareness and recognition of the benefits not only of Exploratory Testing, but of testing in general, and testing as a career too.</li>
<li>Michael Bolton started consulting in the testing arena, but moreover started <a href="http://www.developsense.com/">writing and publishing</a>. His essays about <strong><a href="http://www.developsense.com/2009/08/testing-vs-checking.html">testing and checking</a></strong> are very cool, and Jon Bach <a href="http://www.developsense.com/2009/08/testing-vs-checking.html?showComment=1254623065308#c8498432514596631138">considered it</a> &#8220;<code>one of the most (in)famous and important posts to come along in our industry in a long time</code>&#8220;.</li>
</ol>
<p>For the next 10 years&#8230;</p>
<ol>
<li>The <a rel="nofollow" href="http://weekendtesting.com/">weekend testing</a> meetings in India were highly praised by <a href="http://twitter.com/jamesmarcusbach">James</a>, <a href="http://twitter.com/michaelbolton">Michael</a> and <a href="http://twitter.com/testertested">Pradeep</a> on twitter. Seems like they believe it will make an impact on testing in the next years.</li>
<li><a href="http://testing.stackexchange.com/">Testing.StackExchange</a> appeared too late in 2009. But&#8230; will it appear in the 2020 list? <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I hope yes.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/201001/yay-another-happy-new-testing-year-a-decade-in-review/feed/</wfw:commentRss>
		<slash:comments>1</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>&#8220;Create your testing portfolio&#8221; presentation</title>
		<link>http://testing.gershon.info/200909/create-your-testing-portfolio-presentation/</link>
		<comments>http://testing.gershon.info/200909/create-your-testing-portfolio-presentation/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 20:05:09 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Ask the Tester]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090926/create-your-testing-portfolio-presentation/</guid>
		<description><![CDATA[Some colleagues and I do voluntary work at TechCareer, helping immigrants learn matters related to technology and score a career in the Israeli Hi-Tech industry either as programmers or testers. It is a very good project, with nice leaders. My colleague Issi Hazan was asked to teach the ITCQB syllabus to testing-oriented-students at TechCareer, but [...]]]></description>
			<content:encoded><![CDATA[<p>Some colleagues and I do voluntary work at <a title="TechCareer" href="http://www.tech-career.org/" target="_blank">TechCareer</a>, helping immigrants learn matters related to technology and score a career in the Israeli Hi-Tech industry either as programmers or testers. It is a very good project, with nice leaders.</p>
<p>My colleague <a title="Issi Hazan" href="http://testermindset.blogspot.com/" target="_blank">Issi Hazan</a> was asked to teach the ITCQB syllabus to testing-oriented-students at <a href="http://www.tech-career.org/">TechCareer</a>, but he bravely thought of pushing them to real tests instead, even before they find a job &#8211; this would allow them to build experience and get a job more easily (<em>one way to solve the &#8220;<code>hard to get a job without experience, hard to get experience without a job</code>&#8221; problem</em>).<br />
So we built a lecture on how to &#8220;<code>create a tester portfolio</code>&#8220;. We explain how testing can be done even outside an enterprise environment: Lots of Open Source projects are seeking for good information from software testers, and a good record there is certainly sure to help. Crowdsourcing is also a  possible way to work on testing before getting a real job (<em>see two posts on crowdsourced tests </em><a href="http://testing.gershon.info/20090723/about-youtesting-with-utest/"><em>here</em></a><em> and </em><a href="http://testing.gershon.info/20090829/in-august-a-rewrite-of-julys-utest-post-and-maybe-official-feedback/"><em>here</em></a>).</p>
<p>The presentation is available below in <a href="http://www.slideshare.net/sgershon/create-your-tester-portfolio-2042239">flash format</a>, and can be downloaded here: &#8220;<a href="http://testing.gershon.info/wp-content/uploads/2009/09/create_your_tester_portfolio_1-1.pdf"><code>Create your testing portfolio</code></a>&#8220;.</p>
<p><span style="color: #808080; font-size: xx-small;"><object width="400" height="328"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=createyourtesterportfolio11-090922130820-phpapp01"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=createyourtesterportfolio11-090922130820-phpapp01"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="328"></embed></object></span></p>
<div id="__ss_2042239" style="text-align: left; width: 425px;"><object style="margin: 0px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=createyourtesterportfolio11-090922130820-phpapp01&amp;rel=0&amp;stripped_title=create-your-tester-portfolio-2042239" /><embed style="margin: 0px;" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=createyourtesterportfolio11-090922130820-phpapp01&amp;rel=0&amp;stripped_title=create-your-tester-portfolio-2042239" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>But <strong>&#8220;<code>PowerPoint is Evil™</code>&#8220;</strong>, so I feel compelled to write it in real words <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  too.<br />
It goes like this:<span id="more-59"></span></p>
<p><strong><span style="text-decoration: underline;">Introduction</span></strong></p>
<p>If you are searching for your first job in software testing, one of the big challenges you will face is how to have your résumé stand out. Either if this is your first job ever, or you&#8217;re changing career from a different background, the question remains: How can your résumé compete with seasoned testers&#8217;?</p>
<p>The solution to the 1st challenge constitutes your second one: actually acquiring this experience that differentiates the seasoned testers. And this is hard.<br />
People looking for jobs often complain they &#8220;<code>can't get a first job without experience, and can't get experience without getting a first job</code>&#8220;. The logic sounds leak proof solid&#8230; where it not for the fact that, well, most people do get a first job. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So how can a newbie gain this differentiation?<br />
Many people seek certifications, hoping that the additional line or two in the CV with the uppercase LETTERS will cover for the lack of skills and practice. Now, here&#8217;s a secret: they won&#8217;t.<br />
Certifications do not give you skills or wisdom; they give you a determined lexicon and specific definition for terms. Some employers may want that, but they know it does not equal practice.<br />
Software testing is an art. Young artists do not collect &#8220;<code>painter certifications</code>&#8221; or &#8220;<code>canvas master certifications</code>&#8220;&#8230; What young artists do is paint a lot, toss all the colored canvases in a big binder, and show them to galleries. Gallery owners can through this portfolio see their practice, evolution, style and commitment.</p>
<p>This is our suggestion to you: start testing, and be prepared to explain your tests to prospective employers.</p>
<p><strong><span style="text-decoration: underline;">Meet your Pseudo-Employer</span></strong></p>
<p>Testing without having a tester job sounds farfetched, but it is actually within reach.<br />
Of course, you can enter a bug-hunting-spree and find defects in any software from your desktop or the web. While you can learn techniques and tools this way, this method misses the most important (<em>and fun</em>) part of testing: The interactions.<br />
The interactions with people involved in the software will give you focus on what is important for them to know. It will also redirect your tests as you go with feedback and comments, making sure you are always providing useful data. Last, being in touch with this human side of the software will give you the opportunity to explain, discuss and participate in fix/no-fix decisions &#8211; transforming your findings from simple bugs to valuable information on quality and risks.</p>
<p>And there are many ways to be involved with testing in the development of software.<br />
Here are a few options:</p>
<p><strong>&#8211;&gt; Academy Projects</strong></p>
<p>There is a lot of interesting software being done as final projects for Computer Science graduations. These students do all the work themselves, and they will be certainly glad to have help in testing the software.<br />
One of the great things here is that the interaction is all 1 to 1 and face to face, allowing it to be a closer and more dynamic relationship. Feedback and bug-fixing times are quick; you can suggest a change and then see it done the day after.<br />
Posting your &#8216;testing offer&#8217; as a note in the wallboard, or asking from one of the project mentors to point you a needy student, are all good ways to get started.<br />
And, for what it&#8217;s worth, you may appear in the credits on the project report! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>&#8211;&gt; Open Source</strong></p>
<p><a href="http://sourceforge.net/">Sourceforge</a> has hundreds of thousands of open source software projects under development. You can pick one that suits your interests and limitations by using their filtered search, and you can also take a look at their &#8220;<a href="http://sourceforge.net/people/"><code>Help Wanted</code></a>&#8221; section, which many times ask for help in testing.<br />
The open source community is thirsty for contributors, and they respect sound advice. If you show your competence and are provide consistent views/comments, the community will pay attention &#8211; and they don&#8217;t care about your degree, background or years of experience.<br />
And, for what it&#8217;s worth, you may be given credits (<em>or &#8216;<code>tip of hats</code>&#8216;</em>) on the release notes! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>&#8211;&gt; Crowdsourcing</strong></p>
<p>There are websites where you can receive money for reporting bugs. The two examples I know of: <a href="http://www.utest.com/">uTest</a> and <a href="http://www.flashmobtesting.com/">Flash Mob Testing</a>.<br />
Testing in this environment may pose problems (<em>see </em><a href="http://testing.gershon.info/20090723/about-youtesting-with-utest/"><em>this post</em></a><em> for a list of concerns</em>) and the interaction you have here is by far less involved and meaningful than the previous two options.<br />
We listed this in the slides because the couple dollars are tempting and people may prefer this option over the others.</p>
<p>Note that here, you won’t get public credit for your work, in case you wanted to showcase it in an interview.</p>
<p><strong>&#8211;&gt; Volunteer for a company</strong></p>
<p>This one wasn&#8217;t at the slides&#8217; first version, because I had forgotten about this history completely.<br />
When I was at the university, I had a friend working for a software company, a small one without a testing team. To exercise my &#8216;criticism&#8217; (<em>I didn&#8217;t know I was &#8216;testing&#8217;, back then</em>) I started to write him comments on their webpage and their application, notes that they triaged in their bug meetings and fixed in the next release (<em>sometimes</em>).<br />
So it was volunteer testing for a real company.<br />
(<em>This entire story slipped my mind until 3 weeks ago I had a course in the same building as this company is located. It all came back to memory suddenly: that was my first testing gig!! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em> ).</p>
<p><strong><span style="text-decoration: underline;">In summary</span></strong></p>
<p>There are many ways to test without a testing job. Find or invent the option that better fits you, and start differentiating yourself as a real tester.<br />
Try it! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
With a little work from your side, you can demonstrate to employers your capabilities, style and passion. And having volunteered to test and provide data isn&#8217;t something a recruiting manager sees every day, so it is likely to attract his attention.</p>
<p><strong><span style="text-decoration: underline;">The next steps</span></strong></p>
<p>After you&#8217;ve decided where to start testing, following a consistent way of work will make your testing much more efficient.<br />
The slides include many suggestion on how to get a good start: Follow the forums discussing the software (<em>and ask questions!</em>), be sure to read the bug submitting guidelines so your information is treated with care, and find a lot of bugs <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong><span style="text-decoration: underline;">An Alternative</span></strong></p>
<p>When applying for a job, capitalize on the experience you&#8217;ve already got.<br />
Software projects need domain expertise just as they need testing expertise. If you were a stock-broker, a software house developing stock-market software can have great benefit from your testing. If you speak languages, a lot of specific software can benefit from this trait.<br />
See my comment in <a href="http://testing.gershon.info/20080616/testers-dont-think-like-developers-think-like-computers/">this post</a>: The entire experience you bring to a team is valuable; recruiters aren&#8217;t always only looking for super-testing-wizes.</p>
<p><strong>Good luck! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200909/create-your-testing-portfolio-presentation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>In August, a rewrite of July&#8217;s uTest post (and maybe official feedback)</title>
		<link>http://testing.gershon.info/200908/in-august-a-rewrite-of-julys-utest-post-and-maybe-official-feedback/</link>
		<comments>http://testing.gershon.info/200908/in-august-a-rewrite-of-julys-utest-post-and-maybe-official-feedback/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 09:49:01 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[evidence]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[passion]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[professionalism]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090829/in-august-a-rewrite-of-julys-utest-post-and-maybe-official-feedback/</guid>
		<description><![CDATA[Hi. Instead of a new post, I revisited and modified last month&#8217;s post, About youTesting with uTest. It has now more content, and still has a discussion of pay-per-bug models. The initial opinions are still there. While the pay-per-bug model presented by uTest is certainly innovative and interesting; the model still misses a lot. It will certainly [...]]]></description>
			<content:encoded><![CDATA[<p>Hi.</p>
<p>Instead of a new post, I revisited and modified last month&#8217;s post, <a href="http://testing.gershon.info/20090723/about-youtesting-with-utest/">About youTesting with uTest</a>.<br />
It has now more content, and still has a discussion of pay-per-bug models.</p>
<p>The initial opinions are still there. While the pay-per-bug model presented by uTest is certainly innovative and interesting; the model still misses a lot. It will certainly be center of discussion many times in many circuits <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<span id="more-57"></span></p>
<p>To some extent, trying to get quality assessment and counseling from isolated bugs from isolated testers is like getting medical advice from many different isolated doctors without them examining you personally even once.<br />
But, to the other extent, bug reports do consist an important tool for quality evaluation and direction assessment. And well formed groups can benefit from the yet another list of bugs received, as long as they don&#8217;t confuse them with complete product testing.</p>
<p> </p>
<p>In one of my discussions of the matter with friends, I was encouraged to ask the people working in <a href="http://www.utest.com/">uTest </a>what they think of these points and how do they and the companies solve the apparent drawbacks.<br />
It is a great idea, as they seem to be very forthcoming and they do have a lot of experience in software development and quality. The CEO, Mr <a href="http://www.utest.com/doron-reuveni">Doron Reuveni</a>, <a href="http://twitter.com/doronr">tweets </a>and sports and seems approachable. Not many companies have such accessible CEOs, and I&#8217;ll try my luck with him. If he replies and answers our questions, it will be very cool, and I&#8217;ll add the info to the uTest posts here.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200908/in-august-a-rewrite-of-julys-utest-post-and-maybe-official-feedback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About youTesting with uTest</title>
		<link>http://testing.gershon.info/200907/about-youtesting-with-utest/</link>
		<comments>http://testing.gershon.info/200907/about-youtesting-with-utest/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 06:51:53 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Ask the Tester]]></category>
		<category><![CDATA[Test Insight]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[professionalism]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[utest]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090715/utest-or-maybe-udont/</guid>
		<description><![CDATA[(Note: This post,originally from July, was re-written in August. Only format/wording changes, with additions to make it clearer) This is an interesting topic: I’ve been involved lately in many conversations about uTest, or more specifically about its model. uTest is a website where companies can post their software, along with some guidelines on focus areas, [...]]]></description>
			<content:encoded><![CDATA[<p>(<em>Note: This post,originally from July, was re-written in August. Only format/wording changes, with additions to make it clearer</em>)</p>
<p>This is an interesting topic:<br />
I’ve been involved lately in many conversations about uTest, or more specifically about its model.<br />
<a href="http://www.utest.com/">uTest </a>is a website where companies can post their software, along with some guidelines on focus areas, and users around the world can download the app, find bugs and get paid for bugs reported (<em>as long as the bugs are accepted by the posting company</em>).<br />
There is a lot of confusion/discussion around the good parts and the bad parts of the model, so I will share here some of the points I had taken from these conversations (<em>thanks to all the friends who shared insights with me</em>)… Some attentive readers will notice the article is an almost copy paste from a reply in the software-testing group.</p>
<p>Please note that I am <strong>not</strong> saying &#8220;<code>uTest considered harmful</code>&#8221; or &#8220;<code>don’t use uTest</code>&#8221; or anything like that.<br />
Please note that I am <strong>not</strong> saying &#8220;<code>uTest is great</code>&#8221; or &#8220;<code>use uTest</code>&#8221; or anything like that.<br />
All I want to point here are some of the strengths and some of the weaknesses of <strong>the model</strong>, so every one (<em>both testers and companies</em>) can decide for his own context. I welcome debate over any of these points, and will update my post accordingly.<span id="more-56"></span></p>
<blockquote><p><span style="text-decoration: underline;"><strong>&#8211;&gt; (A) Here we go then. Some strenghts of the model:</strong></span></p>
<ol>
<li><strong>Crowdsourcing provides diversity:<br />
</strong>James Whittaker in his &#8220;<code>Future of Testing</code>&#8221; webinar considered this model of testing (<em>there I heard the &#8216;crowdsourcing tests&#8217; term the first time</em>) the next evolution in software testing, as it allows a huge number of testers to test in very diverse environments and configurations.<br />
Full disclosure: The Webinar was given for uTest and at their website.</li>
<li><strong>The managers are nice guys trying to create a nice community.<br />
</strong>In the case of uTest, they have <a href="http://blog.utest.com/">blogs</a> with guest writers such as James Whittaker and others. They are on <a href="http://twitter.com/utest">twitter</a> and occasionally twit a testing article (<em>more often they do brand promotion, which is fine too</em>), they offer bug battles and discussion forums.<br />
And at these venues they do good. I have heard that Doron Reuveni is a really nice guy, and I believe it from his twits and posts.<br />
Of course, people tell me that all this community building is about money and business, but that&#8217;s completely legitimate. I take money for testing at my job, too. Making money doesn&#8217;t make anything bad.</li>
<li><strong>Simplified development cycle:<br />
</strong>For some companies, it appears that crowdsourcing makes their development lifecycle more efficient. See <a href="http://www.computerweekly.com/Articles/2009/07/30/237121/crowdsourcing-slashes-software-testing-time.htm">this article</a> on how crowdsourcing supposedly slashes development time.<br />
The points commented in the article are a bit dangerous, in light of the concerns raised below, but for companies that have yet to build a testing team, starting to receive bugs before the testing team is complete can be a good thing.</li>
</ol>
<p><span style="text-decoration: underline;"><strong>&#8211;&gt; (B) On the other hand, the uTest model has some weaknesses, like:</strong></span></p>
<ol>
<li><strong>&#8220;Software testing&#8221; misinterpretation:<br />
</strong>The idea of this model is &#8216;pay per bug&#8217;. Companies are outsourcing testing by receiving bug reports from the community.<br />
But submitting bugs is only <strong>one part </strong>of the work that a tester does. Testing (<em>functional too</em>) requires involvement with the development life cycle. Testing requires understanding of the user needs and business needs.<br />
By putting the testers far away from the company and their decisions or business view, the testers have little option to ask good questions. They have little space to provide real information about risk (<em>that&#8217;s what testing is about, right?</em>), and thus they are likely to practice poor testing.<br />
Moreover, testers get their money for reporting bugs, so this will become the ultimate purpose of submitting them. In any other context many would agree that bugs aren’t there just to be reported or even just to be fixed — bugs raise questions about the application, about the value it provides and about the general direction the product is going.<br />
When you take the testers out of the fixing decision, you miss this healthy discussion. In this model, if a bug doesn’t get fixed, the tester isn’t probably alerted about this fact. What’s more, the tester may not even care, as he already cashed the bug’s money and “fixing or not fixing is a business decision where we don’t have a say”, right?     And with that, reporting well detailed and complete written bugs isn’t a goal for pay per bug testers too: If you spend valuable time writing a bug report with detailed information, you are not making money! Plus, another person may log this exact bug with a poor report before you finish your perfect report (<em>you don’t receive money in this case</em>).<br />
Sure, the model does not foster or defend bad practices on purpose. But it has its way to motivate them, in a sense.</li>
<li><strong>Poor metrics (<em>paying for bug reported</em>):<br />
</strong>Companies like uTest didn’t invent the &#8220;<code>bug quantity measurement metric</code>&#8220;, of course. It is an old approach that has failed in many places from what I learnt (<em>might’ve been successful in other places</em>) and is definitely not suitable for all contexts.<br />
Even if applying companies receive great comprehensive dashboards displaying different quality aspects of the software, at the end of the day they are only seeing bug numbers.&#8221;You get what you pay for&#8221; — the company is paying for bug quantity and testers (<em>as anyone else</em>) will give you what you measure them for, a large quantity of bugs. It is easy to confuse this data with information about risk or information about value. uTest writes in the Terms of Use: &#8220;<code>uTest makes no promises or warranties as to any specified quality standards, testing coverage, maturity, quality measurements, the general quality of services or feedback, or results provided on or through its website.</code>&#8221; Now, this is only a standard disclaimer, and some may say these measurements are rubbish anyway, but what uTest is saying, in essence, is &#8220;<code>you get only bug numbers, nothing else</code>&#8220;, which is true. Companies must understand that bug reports don&#8217;t make for a quality or value assessment. See <strong>point (C/5)</strong> for a related comment.</li>
<li><strong>Quick and Dirty is rewarded:<br />
</strong>The rules are: time consuming bugs pay the same as quick bugs. From their Terms of Use: &#8220;<code>uTest shall ONLY pay you for bugs reported and approved by the applicable Company and NOT for the time you incurred by analyzing bugs or time incurred for any other purpose.</code>&#8221;<br />
Which type of testers receive a higher score at this model? Testers that report simple bugs will be at higher ranks than the ones that hunt and investigate and find hard bugs.<br />
Consider this together with <strong>point (C/2)</strong>… and you’ll have testers that log a large number of shallow bugs.<br />
This kind of behavior is acquired by whoever practices it… And by the end of the day, some testers with high scores at uTest may have become accustomed to quick and dirty work.And what about bugs that don&#8217;t easily reproduce?<br />
Bugs that don’t always reproduce need special attention and a lot of time invested. Forget about those in crowdsourcing, as more attention equals less money&#8230; One is risking that<strong> t</strong>he ones to find the tricky bugs will be the end customers.</li>
</ol>
<p><span style="text-decoration: underline;"><strong>&#8211;&gt; (C) Some other points should also be considered:</strong></span></p>
<ol>
<li><strong>Bad disputes fostering:<br />
</strong>Any discussion translates into money. And money, being a terrible motive <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , can make disputes between a company and a tester biased on both sides.<br />
Software companies will want fewer bugs, and software testers will want more. None of the two is a good goal, and both can lead to wrong stands.</li>
<li><strong>Bad attitude from testers causing bad results:<br />
</strong>Testers from a &#8216;real world&#8217; project might wish to receive better built software so they can jump into important matters instead of clinging at innumerous surface bugs.<br />
In the pay-per-bug model, testers will leave a mature software to go test an immature one (<em>more bugs = more money</em>)… so the tester tests worse apps and the software company loses the testers exactly when it more needs them (<em>when the app is stabilizing, testers will migrate to a new, immature one</em>).</li>
<li><strong>Disruptive competition between testers:<br />
</strong>In the company I work for, if I share information with a colleague and he uses it to find a bug before me, everybody is happy (<em>as there was a collaborative effort that generated a useful piece of info</em>). Testers in a pay-per-bug competition will be less inclined to share information, as bugs opened by someone else mean less money and less score points.<br />
In their model, you compete with other testers, and this enters the testing culture of the participants. And testers who compete are les useful in a team than testers who collaborate.</li>
<li><strong>The score feedback isn’t objective:<br />
</strong>An award winning uTest tester commented in one of the online discussion that the score for testers doesn’t represent testing skill.<br />
The skill set required to be a good tester isn’t exercised in such simple view of testing as ‘receive the app, try it, list the bugs’.<br />
And also, don’t forget that there’s money involved and this usually undermines objectivity <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .From uTest Terms of Use: &#8220;<code>Testers shall have no right to either control or influence their fee rate or feedback regarding their reputation or success.</code>&#8220;. Of course, here it is simply a technicality, explaining that the decision over what is a bug is in the hand of the software company hiring the tester.<br />
But this is an approach where one cannot get more reputation by learning more skills. Instead, one has to wait until someone decides how good he is, with few chances to appeal. Different people in different companies think differently, and the tester has no control over this process here.</li>
<li><strong>Companies get the wrong picture:<br />
</strong>A large amount of bugs and activity from uTest-like websites is likely to inebriate the software developing company into thinking they’re getting great value (<em>just as a large amount of activity around automation does in other cases</em>).</li>
<li><strong>‘Unfair’ and harmful competition with your in-house testers:<br />
</strong>For companies that do have testers in-house, sending the application to be tested at crowdsourcing models may pose additional problems:<br />
- How do the ‘inside’ testers feel about that?<br />
- What happens when the outside users find bugs they missed?<br />
- And for the same bug… how come someone from the outside get paid for reporting it? What conflict of interest may appear when a tester realizes he can suddenly make money if he (<em>or his wife, or his brother</em>) reports a bug he found during work?<br />
- Does a bug-finding competition affects how the in-house testers do their work?</li>
<li><strong>Update about different types of test:<br />
</strong>The first version of this article said that &#8220;There are companies that value regression tests, for example. As these usually generate fewer bugs, testers at pay-per-bug will not perform them. The same is true with other types of tests that raise questions and not bugs.&#8221;.<br />
<strong>Update:</strong> I recently discovered that companies that want to run regression or a set of specific tests do use uTest. They post the application with a list of scripted tests for people to follow, and pay for the completion of the scripted tests. So there are ways to do these tests.<br />
(<em>However, in one such example that I looked at, there were no bugs reported in the script executions. What would be the results if instead of paying for the tests passing, the company asked for bugs? But this problem isn’t exclusive of uTest, it happens everywhere, I guess <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em>)</li>
</ol>
</blockquote>
<p>&#8230;</p>
<p>There may be more and <strong>other points for and against the model</strong>.<br />
Please write them on the comments or in a private mail, get the conversation going on this. I may change my mind on this matter too, why not? <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/200907/about-youtesting-with-utest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BOtT: Smile, your data is gone!</title>
		<link>http://testing.gershon.info/200906/bott-smile-youre-data-is-gone/</link>
		<comments>http://testing.gershon.info/200906/bott-smile-youre-data-is-gone/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:48:32 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Bug of this Time]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090725/bott-smile-youre-data-is-gone/</guid>
		<description><![CDATA[As most words, &#8220;quality&#8221; has a lot of different meanings to different people. I guess &#8220;Customer Satisfaction&#8221; has a lot of different meanings too. A couple of months ago I tried to access a site (now I don&#8217;t even remember which it was) and was greeted by the note below: Let&#8217;s read that again: &#8220;The [...]]]></description>
			<content:encoded><![CDATA[<p>As most words, &#8220;quality&#8221; has a lot of different meanings to different people.<br />
I guess &#8220;Customer Satisfaction&#8221; has a lot of different meanings too.</p>
<p>A couple of months ago I tried to access a site (<em>now I don&#8217;t even remember which it was</em>) and was greeted by the note below:<span id="more-55"></span><br />
<img id="image53" src="http://testing.gershon.info/wp-content/uploads/2009/06/unsuccessful-hack.JPG" alt="Unsuccessful Hack" /></p>
<p>Let&#8217;s read that again: &#8220;<code>The attack was not successful and our safeguards prevented intrusion</code>&#8220;. Ah, nice. But Mr BudgetHostingWeb, can you explain how, if the intrusion was prevented, how the hell did the &#8220;<code>server's hard drives failed during this process</code>&#8220;?</p>
<p>Maybe the hard disk sensed that an attack was being attempted, and then committed suicidal, in some sort of self-aware sense that &#8220;<code><em>it's better to die than have those hackers get the secret data stored in me!</em></code>&#8221;</p>
<p>(<em>Side note: If you ever had to deal with web hosting service&#8217;s backup, you know it is a nightmare. A service I used once had &#8220;<code>hard drives problems</code>&#8221; too and their last backup was a month old &#8212; even if they had claimed to do daily backups. No, I didn&#8217;t sue, and I think I wasn&#8217;t even surprised (</em><a href="http://www.satisfice.com/blog/archives/224" target="_blank">Quality is Dead</a>, right?<em>), but I did change to a different host later.</em>)</p>
<p>So now we have customers who lost all the data of his website.<br />
If they had good backups, they&#8217;ll be able to upload it with the FTP Upgrade package &#8212; and if they hadn&#8217;t, well, will have to start from scratch.<br />
And this is being communicated to him in such a lousy way… Note that the alert in the page is <strong><span style="text-decoration: underline;">not</span></strong> targeting the site visitors (<em>which do not upload files by FTP</em>), it is targeting the web page owners. Why would an alert to the page owner be glued to the home page of a customer? Maybe because they didn&#8217;t send the communication in any other way?<br />
(<em>Maybe the hard drive with the customer information failed too, who knows?</em>)</p>
<p>And the alert says &#8220;<code>the attack was not successful</code>&#8220;, which is what makes one (<em>me</em>) angry.<br />
Mr BudgetHostingWeb, your customers are unhappy, they had a major data loss, and have to fix it themselves instead of doing business. Please re-write the message to something like &#8220;<code>The attackers succeed to cause failures in some of our hard drives, and unfortunately we don't kept backups of your data. As far as we can discern, no information was stolen, but we are deeply sorry for this inconvenience.</code>&#8221;</p>
<p>Because shaking yourself free of responsibility isn&#8217;t exactly the best experience you can provide your users.</p>
<p>Let&#8217;s sympathize with one of their customer, which is a great practice for software testers:</p>
<p>I did a search on Google to try to find sites that were part of the problem. Even thought a lot of time passed since the incident, Google found three (<em>two of them do not have the text in their sites anymore, Google is outdated too, so it leaves us with only one customer specimen, Free Range Whippets</em>):<br />
<img id="image54" src="http://testing.gershon.info/wp-content/uploads/2009/06/unsuccessful-hack-2.gif" alt="Googled unsuccessful hack" /></p>
<p>Whippets are lovely pretty dogs, and the first link on the screenshot above sports the following notice:<br />
 &#8221;<code><br />
 We regret that our host server was recently the victim of a serious hacking attack.<br />
 The attack was not successful and the safeguards prevented intrusion however the server's hard drives failed during this process.<br />
 All services have now been restored.  Unfortunately, our site was one of those affected, and we need to upload ALL the files again.<br />
 Some links and photos will not work or appear until we re-upload.<br />
 We hope to be fully back online soon but finding <strong>after six years of loading photos, they don't go back up overnight.</strong><br />
 Please visit us again and click all the links! <br />
 Thank you, Lori &amp; The Whippets<br />
 </code>&#8221;</p>
<p>6 years of work, gone! Is that what the safeguards were supposed to do?<br />
The hacker attack wasn&#8217;t successful, but Lori still has got broken links in the whippets&#8217; images <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200906/bott-smile-youre-data-is-gone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploratory Shopping &#8211; An analogy attempt</title>
		<link>http://testing.gershon.info/200905/exploratory-shopping-an-analogy-attempt/</link>
		<comments>http://testing.gershon.info/200905/exploratory-shopping-an-analogy-attempt/#comments</comments>
		<pubDate>Fri, 01 May 2009 08:01:19 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090501/exploratory-shopping-an-analogy-attempt/</guid>
		<description><![CDATA[These days I went to a book fair of a well known publishing house, and found there my very own analogy for Exploratory Testing. I tell the story and analogy below for your pondering and criticism. You know how these fairs are, I believe book fairs are similar everywhere: a loft filled with tables filled [...]]]></description>
			<content:encoded><![CDATA[<p>These days I went to a book fair of a well known publishing house, and found there my very own analogy for Exploratory Testing.<br />
I tell the story and analogy below for your pondering and criticism. <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr />You know how these fairs are, I believe book fairs are similar everywhere: a loft filled with tables filled with books at good prices. You walk around the tables, take the books you like and proceed to checkup.        </p>
<p>I like books, better yet when they are good/useful books, and even more when they&#8217;re cheap <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8212; so I came to the fair prepared! I planned a budget (<em>100 NIS</em>) studied the catalog of discounted books and decided beforehand which books I wanted to buy:<span id="more-51"></span></p>
<p style="font-family: courier new">- Book A: 43 NIS<br />
- Book B: 30 NIS<br />
- Book C: 12 NIS<br />
- Book D: 12 NIS<br />
- Book E:  9 NIS<br />
        (<em>106 NIS total</em>)</p>
<p>Book A and B were books that I actually was interested in, and the other 3 I put on the list just because they were cheap <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and were worth considering if they content looked cool.</p>
<p>When I got to the fair, I skimmed over the books and found out that books E and D weren&#8217;t that interesting, and that they would probably remain unread, so I dropped them from the list. Book C wasn&#8217;t that appealing too, but I left it on my cart meanwhile.</p>
<p>A few minutes later, I noticed that there was a very cool book on a subject that I am already studying &#8212; but that one cost 75 NIS!<br />
My list was now over-budget:</p>
<p style="font-family: courier new">- Book A: 43 NIS<br />
- Book B: 30 NIS<br />
- Book C: 12 NIS<br />
- Book F: 75 NIS<br />
  (<em>160 NIS total</em>)</p>
<p>As such, I called my wife, telling that I found other relevant books, but the whole list now exceeded the initial budget we agreed on. She gave me permission to double the budget and to spend up to 200 NIS. Yay!</p>
<p>Just before getting to the check-out teller, I discovered that there was a new volume from a set of books we have, and this was an opportunity to complete the series. Price of this book: 63 NIS.<br />
Adding this one on top of the others would explode the budget again! I really wanted this book, and removing only book C wouldn&#8217;t help staying on plan &#8212; so I removed book B (<em>a sacrifice for budget&#8217;s sake</em>) and then C (<em>not so interesting, anyway</em>).</p>
<p>I went home with three books:</p>
<p style="font-family: courier new">- Book A: 43 NIS<br />
- Book F: 75 NIS<br />
- Book G: 63 NIS<br />
  (<em>181 NIS</em>)</p>
<p>I was happy with the books I took home, so was my wife, and plus: she was pleased that we stayed under the &#8216;second budget&#8217;.<br />
And then it struck me&#8230;</p>
<hr />All this long and boring description of my adventures at the library has a purpose:The process I did in picking the books is similar to the one I would (<em>like to</em>) do when picking tests. There is a limited budget (<em>of which I am not in charge</em>), there is a limited time, and there is big list of tests that can be done.<br />
I can start with an initial plan of the areas I want to exercise in my tests and it is possible that tests that are &#8216;easy&#8217; will enter the list just because they aren&#8217;t hard, but then I can find that some areas are not worth exercising them too much and will drop those tests (<em>every little test costs, right?</em>).<br />
If noticing an especially interesting bug or reaction requires from me to add too many new tests, I&#8217;ll have to inform my superiors and request for more time to properly finish all.<br />
Tests can also redirect your attention to risk areas that you hadn&#8217;t planned before, and the whole remaining time will have to be planned again.<br />
And so on, exchanging less effective tests for others that give &#8216;more bang for the buck&#8217;, keeping an eye on the budget and interests of the stakeholders&#8230; One explores the software in the search for bugs.      </p>
<p>So, this is my analogy for Exploratory Software Testing.<br />
Many others are available:</p>
<ul>
<li>Michael Bolton has one <a href="http://www.developsense.com/articles/Testing%20Without%20A%20Map.pdf" target="_blank">here</a> (<a href="http://www.developsense.com/articles/Testing%20Without%20A%20Map.pdf" target="_blank"><em>charting unknown waters</em></a>)</li>
<li>James Bach has one <a href="http://www.satisfice.com/articles/et-article.pdf" target="_blank">here</a> (<a href="http://www.satisfice.com/articles/et-article.pdf" target="_blank"><em>and exploration and jigsaw solving</em></a>)</li>
<li>Ben Simo wrote one too (<a href="http://www.questioningsoftware.com/2008/05/terrified-by-improvisation.html" target="_blank"><em>improvisational theater</em></a>)</li>
<li>Jonathan Kohl wrote his <a href="http://www.kohl.ca/blog/archives/000187.html" target="_blank">here</a> (<a href="http://www.kohl.ca/blog/archives/000187.html" target="_blank"><em>musical creation</em></a>)</li>
<li>&#8230; And now I present one of mine <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I hope I am worthy of sitting with such eminent group.</li>
</ul>
<p>But note: this analogy, as every other analogy, doesn&#8217;t have exact 1:1 similitude/parallelism!<br />
It is intended as a line-of-thought, to help explaining the process and mindset&#8230; to clarify that exploratory testing isn&#8217;t a &#8216;quick, run and do whatever tests you can squeeze in an hour&#8217;. <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/200905/exploratory-shopping-an-analogy-attempt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Read the bugs</title>
		<link>http://testing.gershon.info/200904/read-the-bugs/</link>
		<comments>http://testing.gershon.info/200904/read-the-bugs/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 13:52:59 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20090402/read-the-bugs/</guid>
		<description><![CDATA[Eric Sink is very well known in the software development community. I would say he&#8217;s a legend, but he says he&#8217;s not one. He writes books, software, and gives interviews about the craft and business of software. Not only that, but (not surprisingly) he&#8217;s also got a blog. Two months ago he wrote that reading [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Eric_Sink" target="_blank">Eric Sink</a> is very well known in the software development community. I would say he&#8217;s a legend, but he says he&#8217;s <a href="http://notalegend.com/notalegend.html" target="_blank">not one</a>.</p>
<p>He writes <a href="http://www.amazon.com/exec/obidos/ASIN/1590596234/sawdust08-20" target="_blank">books</a>, <a href="http://www.sourcegear.com/" target="_blank">software</a>, and gives interviews about the craft and <a href="http://msdn.microsoft.com/en-us/library/cc836649.aspx" target="_blank">business</a> of software. Not only that, but (<em>not surprisingly</em>) he&#8217;s also got <a href="http://www.ericsink.com/index.html" target="_blank">a blog</a>.</p>
<p>Two <a href="http://www.ericsink.com/entries/Read_the_Diffs.html" target="_blank">months ago he wrote</a> that reading your colleagues code check-ins is a good practice, and I think this is good advice. And good advice for software testers too: I read the bugs submitted by my team on a regular base, and it&#8217;s been very enlightening (<span style="font-style: italic">often to me, at times to them too</span>).</p>
<p>I don&#8217;t like copy-paste, but as an experience on the parallels between development/testing, I&#8217;ll copy his entire post, just changing the parts that are development-related to testing-related words.<br />
&#8220;<a href="http://en.wikiquote.org/wiki/Pablo_Picasso">Great artists steal</a>&#8220;, right? Let&#8217;s see if it is intelligible <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (<span style="font-style: italic">my changes are in </span><span style="color: blue; font-style: italic">blue</span>).<span id="more-50"></span></p>
<p> </p>
<blockquote>
<p style="font-family: Verdana">Do you work as part of a software <span style="color: blue">testing</span> team?  Here&#8217;s a piece of advice for you:</p>
<p style="font-weight: bold; font-family: Verdana">Read the <span style="color: blue">bug</span>s.</p>
<p style="font-family: Verdana">Every morning before you start your own <span style="color: blue">test</span>ing tasks, use your favorite <span style="color: blue">bug tracking</span> tool to look at all the <span style="color: blue">bug</span>s that everybody else <span style="color: blue">submitted</span> the day before.</p>
<p style="font-family: Verdana">There is a reasonable chance that this advice is worth exactly how much you paid me for it.  <span style="font-weight: bold"> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></p>
<p style="font-family: Verdana">Still, <span style="color: blue">testers at</span> many of the best <span style="color: blue">teams</span> I have known do make this their habit.</p>
<p style="font-family: Verdana">Reading the <span style="color: blue">bug</span>s is very likely to produce two benefits:</p>
<ol style="font-family: Verdana">
<li style="font-family: Verdana"><span style="font-weight: bold">The <span style="color: blue">bug</span> might get better.</span> You might find something in <span style="color: blue">the bug description</span> that needs to be fixed. <span style="color: blue">Or you may find a different direction to investigate and find the inherent fault that causes the failure. Or you may suggest another implication of the defect that increases the customer impact perception&#8230; So on.</span></li>
<li style="font-family: Verdana"><span style="font-weight: bold">You might learn something.</span> Maybe one of your coworkers is using a technique you don&#8217;t know about. <span style="color: blue">Maybe someone else has a tool you can use.</span> Or maybe reading the <span style="color: blue">bug</span>s simply gives you a deeper understanding of the project you are working on.</li>
</ol>
<p style="font-family: Verdana">Of course, use some common sense about whether this habit is practical in your situation. For example, if you work on a team of a thousand <span style="color: blue">test</span>e<span style="color: blue">r</span>s, this probably won&#8217;t work well for you. Then again, I assume if you work on a team of a thousand <span style="color: blue">test</span>ers, almost nothing works well for you, so this habit might fit right in.  <span style="font-weight: bold"> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></p>
</blockquote>
<p> </p>
<p>(<span style="font-style: italic">Posted with Eric&#8217;s permission</span>)</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200904/read-the-bugs/feed/</wfw:commentRss>
		<slash:comments>0</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>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>BotT: Linus&#8217; bug, youtube no workee!</title>
		<link>http://testing.gershon.info/200810/bott-linus-bug-youtube-no-workee/</link>
		<comments>http://testing.gershon.info/200810/bott-linus-bug-youtube-no-workee/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:22:43 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Bug of this Time]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20081009/bott-linus-bug-youtube-no-workee/</guid>
		<description><![CDATA[Hi everybody! The last BotT (Bug of this time) was long ago, when we talked about testing and the Excel bug. So now we&#8217;ve got a cool one, on which the most notable point is not the bug, is the submitter . Bug 439858 on Fedora (a Linux distribution) was (supposedly) submitted by Linus Torvalds himself. [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everybody!</p>
<p>The last BotT (<em>Bug of this time</em>) was long ago, when we talked about <a title="testing and the Excel" href="http://testing.gershon.info/20080504/33/">testing and the Excel</a> bug.<br />
So now we&#8217;ve got a cool one, on which the most notable point is not the bug, is the submitter <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><a title="Bugzilla link" href="https://bugzilla.redhat.com/show_bug.cgi?id=439858" target="_blank">Bug 439858 on Fedora</a> (<em>a Linux distribution</em>) was (<em>supposedly</em>) submitted by Linus Torvalds himself. He <a href="http://groups.google.co.uk/group/comp.os.minix/browse_thread/thread/d939bf395eb8256a/d072fd3a7d407591" target="_blank">started the Linux wave</a> on August 91, and is still posting bugs on March 08 &#8211; you gotta admire him.<br />
I am aware that the submitter signing &#8220;<strong>Linus Torvalds</strong>&#8221; may not be Linus. It actually doesn&#8217;t matter, let&#8217;s just pretend it is for sensationalism&#8217;s sake (<em>regarding the admiration, you still gotta admire him even if the bug&#8217;s not his <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </em>).</p>
<p>Let&#8217;s try to analyze the bug report, and the bug itself, to see what we can learn:</p>
<p><span id="more-31"></span>Linus uses a lot of witty comments. The bug starts as &#8220;<strong>youtube no workee</strong>&#8220;, which is a nice way of writing things in a forum or a youtube post, but we should not use such mocking language in our bugs &#8211; jokes or irony in bug descriptions can offend developers, who already have a hard timing accepting their code has got errors. <strong>Cem Kaner alerts: &#8220;it is easy to read a joke or a remark as a flame&#8221;.<br />
</strong>You should not do this especially if you are a leader, influent people or the inventor of the OS &#8212; you are an example, why foment bad practices?</p>
<p>Then there is &#8220;<strong>fedora 9 not usable for wife</strong>&#8220;. That&#8217;s actually a good point. It is easy for programmers to remember that the average user is not tech-savvy and won&#8217;t tolerate complex workarounds. If this is true for common commercial (<em>and Windows</em>) application (<em>where the programmer is interested in the sales to a large audience that expects intuitive software</em>), this can be even more true in the Linux community (<em>where they&#8217;ve got an incredible good will and skills, but sometimes prefer to add features over simplicity</em>).<br />
So explaining the <strong>Customer Impact </strong>in clear language at the beginning of your bug is a very good idea.<br />
Moreover, I don&#8217;t think anyone would want to frustrate Mrs. Linus Torvalds. First because she doesn&#8217;t deserve it, being a nice person with a child-care background, and second because <a href="http://en.wikipedia.org/wiki/Linus_Torvalds#Later_years" target="_blank">she&#8217;s a black-belt</a> Karate champion <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>&#8220;<strong>Steps to Reproduce:<br />
1. Install current Fedora 9<br />
2. Rick-roll!<br />
3. No profit!</strong>&#8221;<br />
Now, these steps to reproduce aren&#8217;t very useful. Even the title of the bug is more descriptive: &#8220;<span class="bz_default_hidden" id="summary_alias_container" style="display: inline"><span id="short_desc_nonedit_display"><strong>swf mozilla plugin &#8211; no youtube</strong></span></span>&#8220;. Everyone laughed at the mention of rick-rolling, but it only added confusion: is this bug related only to the <a title="Rick Rolled!" href="http://www.youtube.com/watch?v=Yu_moia-oVI" target="_blank">Rick-Roll</a> video? Any other video?<br />
Linus added specific info to clarify: &#8220;<strong>I didn&#8217;t try a lot of videos, but I couldn&#8217;t find a single one that actually worked</strong>&#8220;. This point is actually a very good one, which teaches an important principle on bug reporting: There are points that are &#8220;conditions&#8221; to the bug (<em>the bug only reproduces with the conditions fulfilled</em>), and there are points that are &#8221;incidental&#8221; to the bug (<em>a setup or configuration that was true at the time of the bug but we cannot be sure it is part of a condition</em>). It is very important to note the distinction between these when submitting a bug. And, of course, any setting which is neither incidental nor conditional should in most cases be omitted.</p>
<p>&#8220;<strong>Some videos just show a light gray background, some give the play buttons etc,<br />
but in the latter case show only a black screen even when the red ball at the<br />
bottom seems to moves along..</strong>&#8220;. Good! Information that is really related to the bug! Adding the link of videos that show the gray background and videos that show the buttons would be of help here. You (<em>the tester</em>) already visited all of them, why should the programmer search for specific reproductions again?</p>
<p>There&#8217;s some more information in there. The information is a sum of statements that help debugging (<em>&#8220;<strong>youtube videos are supposed to work with swfdec</strong>&#8220;, &#8220;<strong>the adobe player won&#8217;t install on current rawhide</strong>&#8220;</em>), statements that define the impact (<em>&#8220;<strong>wife will kill me if she doesn&#8217;t have her videos</strong>&#8220;</em>) and humorous comments. When you report your next bug, remember to separate these into clear sections: a section to discuss the user impact, and a section for additional debugging info that can be helpful. The humorous section you can leave out <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Le Grande Finale:<br />
&#8220;<strong>&#8220;Obi-wan Kenobi, you&#8217;re our only hope&#8221;</strong>&#8220;. He actually finalized with a Star Wars quote. Which is very cool if you&#8217;re the founder of an open source OS.<br />
They should print this bug as a book. It mixes hackers, nerds, memes, Star Wars and jokes &#8211; receipt for a best seller! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8212;&#8211;</p>
<p>Before you post hate comments on how I dare to criticize Linus: I don&#8217;t. He&#8217;s a hero of mine and accomplished incredible things. I just used his bug for didactic purposes.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200810/bott-linus-bug-youtube-no-workee/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SIGiST Conference, my lecture on Fuzz and Fault Injection</title>
		<link>http://testing.gershon.info/200808/sigist-conference-my-lecture-on-fuzz-and-fault-injection/</link>
		<comments>http://testing.gershon.info/200808/sigist-conference-my-lecture-on-fuzz-and-fault-injection/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 18:14:03 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20080830/sigist-conference-my-lecture-on-fuzz-and-fault-injection/</guid>
		<description><![CDATA[In this year I held a session on the &#8220;SIGiST Israel&#8221; conference. It was a one hour lecture introducing advanced techniques, with examples of software testing through Fault Injection (with HEAT tools) and through Fuzz (variety of free tools). This month I received the average grade from the feedback sheets: 97/100! Of course, I&#8217;m happy with the results. :) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://testing.gershon.info/wp-content/uploads/2008/11/lecture_slide_1.jpg" align="right" />In this year I held a session on the <a href="http://www.sigist.org.il/?CategoryID=1287" target="_blank">&#8220;SIGiST Israel&#8221; conference</a>.<br />
It was a one hour lecture introducing advanced techniques, with examples of software testing through Fault Injection (<em>with HEAT tools</em>) and through Fuzz (<em>variety of free tools</em>). This month I received the average grade from the feedback sheets:<strong> 97/100</strong>!<br />
Of course, I&#8217;m happy with the results. :) Thanks to all who attended and asked questions.</p>
<p><img src="http://testing.gershon.info/wp-content/uploads/2008/11/lecture_slide_2.jpg" align="right" />It is possible that I&#8217;ll post here a transcript or some text about this lecture. One option may be to add my comments from the lecture as notes in the powerpoint slides and post the slides here. But I don&#8217;t like powerpoint much as it does a poor job of passing information (<em>it takes the written word and limits it into bad format and structure</em>).<br />
Finding the time, I&#8217;ll write the lecture in extense text.</p>
<p>In order to keep this post still useful, here goes a short summary of the talk:</p>
<p><a href="http://www.amazon.com/gp/product/0201796198?ie=UTF8&#038;tag=testithoug-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0201796198"><img id="image41" height="96" alt="How to break software" src="http://testing.gershon.info/wp-content/uploads/2008/11/517z12e2xnl_sl160_.jpg" align="right" /></a><span id="more-40"></span><strong>Fault Injection:</strong> I base everything I say on the book &#8220;How to break software&#8221; by James Whittaker. The examples were done using <strong>Canned HEAT version 3</strong>. Canned HEAT is a good tool (<em>with many bugs </em> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) which comes free with the book.</p>
<p><strong>Fuzz:</strong> The tools used on the examples were:<br />
<strong>GUIFuzz:</strong> A custom dumb fuzzer based on the original fuzzer which can be <a href="http://www.cs.wisc.edu/~bart/fuzz/" target="_blank">found here</a>.<br />
<strong>FileFuzz:</strong> from <a href="http://labs.idefense.com/software/fuzzing.php">iDefense Labs</a>.<br />
<strong>Driver fuzzer:</strong> Built with the <a href="http://peachfuzzer.com/">Peach Fuzzing Framework</a>.</p>
<p>All the tools and frameworks are free for commercial use as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200808/sigist-conference-my-lecture-on-fuzz-and-fault-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 things I learned at SIGiST Conference, day 1</title>
		<link>http://testing.gershon.info/200806/5-things-i-learned-at-sigist-conference-day-1/</link>
		<comments>http://testing.gershon.info/200806/5-things-i-learned-at-sigist-conference-day-1/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 19:49:31 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20080624/5-things-i-learned-at-sigist-conference-day-1/</guid>
		<description><![CDATA[Annotations from day 24/06/2008 of the Sigist conference on Software Testing. When not from a lecture focus, then from a side comment or explanation. Below you&#8217;ll find some insights I gained from today&#8217;s lecture. When not from a lecture focus, the ideas come from a side comment or explanation: Map everything. Vipul&#8217;s &#8220;I have a dream&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Annotations from day 24/06/2008 of the <a title="Sigist home page" href="http://www.sigist.org.il/" target="_blank"><font color="#73a533">Sigist conference</font></a> on Software Testing.</p>
<p><img id="image16" height="96" alt="Sigist Israel logo" src="http://testing.gershon.info/wp-content/uploads/2007/07/sigist.jpg" />When not from a lecture focus, then from a side comment or explanation. Below you&#8217;ll find some insights I gained from today&#8217;s lecture. When not from a lecture focus, the ideas come from a side comment or explanation:</p>
<p><span id="more-37"></span></p>
<ol>
<li><strong>Map everything.<br />
Vipul&#8217;s &#8220;I have a dream&#8221; talk </strong>described an utopic system, in which every single bit of information is not only saved, but mapped and related to relevant bits. In this dream, every single information is mapped, and you can traverse all info and predict taks efforts and chain-reactions.<br />
As he said, all the technology needed for such a system exists, it just have to be done (<em>in an efficient way</em>).    </p>
<p>As such, we can start to gain the benefits of the systems by implementing easy thing. Like, for example, <strong>Requirements mapping to code</strong>. Why is that everybody talks about mapping the test-cases to the requirements, but no one mentions the <u>Requirement to Source Code mapping</u>?<br />
Such mapping would be very good to:</p>
<ul>
<li>Prevent Gold Plating (<em>number #30 </em><a title="See #30!" href="http://www.stevemcconnell.com/rdenum.htm" target="_blank"><em>here</em></a>) (<em>and see a programmer&#8217;s rant </em><a title="External Link" href="http://www.stellman-greene.com/2007/06/09/why-gold-plating-is-a-lousy-name/" target="_blank"><em>here</em></a>);</li>
<li>Show the risks (for the application) of changing a requirement (<em>and estimate the change effort</em>);</li>
<li>Show the risks (<em>for the requirements</em>) of changing the application (<em>due to a bug fix, for example</em>).</li>
</ul>
<p>A Requirement mapping effort is not complete by merely mapping test-cases.</li>
<li><strong><br />
Combine testing components.</strong><br />
If two components are codependent (<em>as in one&#8217;s functionality affects the other&#8217;s and vice versa</em>), most of the times it is better to think of them as one (<em>although composed</em>) component.<br />
Whenever you have to do something in one, include the other. It sounds obvious when you speak about testing tasks, like doing a regression and/or a specific test. But it can also be true when you are dividing any ownership and resources. Keep close things close.</li>
<li><strong><br />
Combine tests.</strong><br />
Combine tests into composed scenarios. Run a number of tests &#8211; but do them sequencially as part of of a use-case. Instead of testing the find feature, do a combo hit: Open a document, find a text, replace it, save it again under the same name &#8211; 4 tests in 1!<br />
You still got to do all the tests, but the scenario combinations increase incidental complexity ,which usually causes smarter bugs.</li>
<li><strong><br />
Software security does not end in the software.</strong><br />
Business are made of software and data. Be it a collection of different software by different company, or one single solution by one company, the business workflow has a lot of stops and transitions. It is not enough to have a software adequately tested for security, if the workflow (<em>wich is made of people</em>) allows security problems. Authentication, authorization, configuration and more are problems that need to be dealt on the workflow level. This business process needs to be built with a security mindset since the beginning. As Vipul said a day before: &#8220;Security is not supposed to be tested, it is supposed to be tested for. And the same is true for performance and usability&#8221;.</li>
<li><strong><br />
Models always lie.</strong><br />
I am afraid of models. Since I discovered that many problems with requirements come from people thinking this representation is the real thing (<em>instead of just a reflecting image with imperfections</em>), I am afraid of models. In todays&#8217; <strong>Test-Cases from UML lecture by Ofer Prat</strong>, he gave a wonderful example about modeling:<br />
London&#8217;s Underground was always mapped in it&#8217;s geographical form, it was a model drawn as close to reality as possible. Such a model was complex and almost unusable. Over the time, it evolved in a simpler and easy to follow model, but by then it was not accurate anymore &#8211; see <a title="Undergrounds History" href="http://homepage.ntlworld.com/clivebillson/tube/tube.html" target="_blank">this page</a> for a graphical history.  </p>
<p>So, models (<em>and requirements</em>) are meant to be straightforward directions. As such, they may lack from the accuracy and/or truth that reality presents.  If software is behaving in a bad way, and this bad way fits the requirements, it is time to re-tune the model.</li>
</ol>
<p>More to come tomorrow! <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/5-things-i-learned-at-sigist-conference-day-1/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>Three texts that changed my (testing) life</title>
		<link>http://testing.gershon.info/200712/three-texts-that-changed-my-testing-life/</link>
		<comments>http://testing.gershon.info/200712/three-texts-that-changed-my-testing-life/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 00:04:10 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20071219/three-texts-that-changed-my-testing-life/</guid>
		<description><![CDATA[I was once talking with a friend about automation and when it should be done. I commented with him about the excellent &#8220;When Should a Test Be Automated?&#8221; paper by Brian Marick, and told him that &#8220;this is one of the three texts that changed my testing life&#8220;. I was surprised at the fact these three [...]]]></description>
			<content:encoded><![CDATA[<p>I was once talking with a friend about automation and when it should be done. I commented with him about the excellent &#8220;<code>When Should a Test Be Automated?</code>&#8221; paper by Brian Marick, and told him that &#8220;<code>this is one of the three texts that changed my testing life</code>&#8220;. I was surprised at the fact these three texts were already categorized as such in my head, and at the promptness I could think of them, at the spot.</p>
<p>So I want to share with you these articles, with a bit of background on them, and hyperlinks wherever I can find them. They are presented in the (<em>chronologic</em>) order they came to my attention.</p>
<p><span id="more-30"></span></p>
<p><strong>1)<br />
</strong>The first of these articles is <strong>&#8220;Testing Job Interviews&#8221; by Jonathan Bach</strong>.<br />
You may know his brother James Bach, who writes at <a href="http://www.satisfice.com/blog">http://www.satisfice.com/blog</a>, but my contact with Jonathan came even <strong>before</strong> I was a tester.<br />
As soon as I was told about the Testing Engineer position at Intel, I started reading about it in the web, just to make sure I know what I am entering into. After stumbling then upon some of the works by Jonathan, I sent him a mail thanking him for the great articles. Not only did he respond, but he wished me luck and sent me another article by him, about interviewing for a tester position. We exchanged a few emails more and that was all.<br />
But this gave me a huge motivation for trying the testers&#8217; position! The article summarized a bit of what a tester should think when facing a product, and gave me an insight on what a tester does and behaves. Jon&#8217;s reaction summarized how a great tester shares and communicates.<br />
In summary, the &#8220;Testing Job Interviews&#8221; article is what started me into testing, and sure had the most impact. Unfortunately, I cannot find a link now <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> , and I don&#8217;t have it within reach in order to attach it &#8211; will have to dig in the old Hard-Disks&#8230;</p>
<p>You can find writings by Jonathan on his old blog at <a title="Quardev Blog" href="http://www.quardev.com/blog">Quardev</a> or the new one <a href="http://jonbox.wordpress.com/">here</a>.</p>
<p><strong>2)<br />
</strong>The second is <strong>&#8220;<a href="http://testing.com/writings/automate.pdf">When Should a Test Be Automated?</a>&#8221; by Brian Marick</strong>.<br />
If I had to analyze and review it thoroughly, it would take a series of post just for this matter. This is truly an article that grows with the reader. I read it at first when I was just starting testing software; I read it later when I was a bit more experienced. Every time I read it I learned something different, and I highly recommend this text.<br />
One of the things it taught me was that time wasted doing other things (<em>programming an automation, investigating a bug&#8230;</em>) costs in bugs you did not find during this time. If for nothing else, read this paper for this.</p>
<p>Brian&#8217;s blog is at <a href="http://www.exampler.com/blog/">this link</a>.</p>
<p><strong>3)<br />
</strong>The third text is <strong>&#8220;<a href="http://klabs.org/richcontent/software_content/papers/parnas_acm_85.pdf">Software Aspects of Strategic Defense Systems</a>&#8221; by Dr David Lorge Parnas</strong>.<br />
I commented about it on a <a href="http://testing.gershon.info/200708/he-who-can-not-be-tested/">previous post about hard-to-test software</a>.<br />
This paper taught me about the difficulties of software testing and the responsibilities it comprises. It is written in a very organized and cleat way, you can read it in one sitting (<em>I did it at the barber-shop <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </em>).</p>
<p>Just let me add another point:<br />
<strong>4)</strong> Although not a specific text, the <strong>articles and writings by Michael Bolton</strong> are very good, and he is today my preferred author. Find him at <a href="http://www.developsense.com/">http://www.developsense.com/</a>.</p>
<p>Enjoy these, then!<br />
And if you have your own must-read articles, send me your suggestions! <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/200712/three-texts-that-changed-my-testing-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on &#8216;Things Which Can Be Tested&#8217; :)</title>
		<link>http://testing.gershon.info/200710/more-on-things-which-can-be-tested/</link>
		<comments>http://testing.gershon.info/200710/more-on-things-which-can-be-tested/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 00:18:34 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20071013/more-on-things-which-can-be-tested/</guid>
		<description><![CDATA[Now, here is more about testing untestable systems. Please read &#8220;He Who Can Not Be Tested&#8221; and &#8220;He Who Will Be Tested!&#8221; before you continue, if you want to be in the mood. I found an article about this subject, which is called &#8220;Testing the Untestable: Reliability in the 21st Century&#8220;. It is an article by [...]]]></description>
			<content:encoded><![CDATA[<p>Now, here is more about testing untestable systems.<br />
Please read &#8220;<a title="Untestable software" href="http://testing.gershon.info/20070818/he-who-can-not-be-tested/">He Who Can Not Be Tested</a>&#8221; and &#8220;<a title="Testing untestable software" href="http://testing.gershon.info/20070915/he-who-will-be-tested/">He Who Will Be Tested!</a>&#8221; before you continue, if you want to be in the mood.</p>
<p>I found an article about this subject, which is called &#8220;<strong>Testing the Untestable: Reliability in the 21st Century</strong>&#8220;.</p>
<p><span id="more-29"></span>It is an article by the Los Alamos National Laboratory, and it has an &#8216;<em>Approved for public release, distribution is unlimited</em>&#8216; mark - nevertheless I am finding it hard to discover a link to the complete and final article, all I found is <strong>a </strong><a title="Testing the Untestable draft" href="http://neptune.galaxy.gmu.edu/ACAS/ACAS00-02/ACAS00ShortCourse/testuntest.pdf"><strong>comented draft here</strong></a>.<br />
The complete article was <a title="Broken link to the article, don't click" href="http://www.gwu.edu/~stat/irra/Downloads/99-6-testing.pdf">supposed to be at this link</a> (<em>but the link is broken</em> <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ), and apparently it is available <a title="IEEE Xplore link" href="http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/24/26500/01179817.pdf?arnumber=1179817">here at the IEEE Xplore</a> for members. Probably you can ask for it at the <a title="Institute for Reliability and Risk Analysis" href="http://www.gwu.edu/~stat/irra/index.html">IRRA</a> (<em>Institute for Reliability and Risk Analysis</em>) page.</p>
<p>In the paper, they reinterpret the concept of testing and metrics, due to the difficulty of understanding testing of complex systems. They say, &#8220;constraints imposed by the real world inhibit the ability of researchers to calculate the reliability efficiently and accurately&#8221;.</p>
<p>In the article, between other things, they state that testing must also be built on subjective and intuitive criterias together with the accurate approach academy has to testing. I believe this is correct, and also think that the idea is not so innovative&#8230; just read the two first posts, and the thread in the <a title="comp.software.testing" href="http://testing.gershon.info/comp.software.testing">newsgroup</a>.</p>
<p>So&#8230; if you want to read the article, <a title="Testing the Untestable draft" href="http://neptune.galaxy.gmu.edu/ACAS/ACAS00-02/ACAS00ShortCourse/testuntest.pdf">download the draft at this link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200710/more-on-things-which-can-be-tested/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>He Who Will Be Tested!</title>
		<link>http://testing.gershon.info/200709/he-who-will-be-tested/</link>
		<comments>http://testing.gershon.info/200709/he-who-will-be-tested/#comments</comments>
		<pubDate>Sat, 15 Sep 2007 22:22:58 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070915/he-who-will-be-tested/</guid>
		<description><![CDATA[Hi Again! My past post on &#8216;apparently untestable systems&#8216; turned out to be a very cool experience. I talked with a lot of friends about it, and also had a very informative thread running on the comp.software.testing usenet group. The discussion was called &#8220;Is every single program testable? How do you deal with &#8216;untestable&#8217; software?&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Again!</p>
<p>My past post on &#8216;<a href="http://testing.gershon.info/20070818/he-who-can-not-be-tested/">apparently untestable systems</a>&#8216; turned out to be a very cool experience. I talked with a lot of friends about it, and also had a very informative thread running on the <a href="http://groups.google.com/group/comp.software.testing">comp.software.testing</a> usenet group. The discussion was called &#8220;<em>Is every single program testable? How do you deal with &#8216;untestable&#8217; software?</em>&#8221;</p>
<p>That thread was so helpful to further my understanding of testing, that I&#8217;ll put here a summary. It surely will make a good reference for me on the future, and I hope this will be useful for others too.</p>
<p>So, in order to continue and understand, read the &#8216;<a href="http://testing.gershon.info/20070818/he-who-can-not-be-tested/">He Who Can Not Be Tested</a>&#8216; post. All the discussion started from the questions in there:<br />
<strong>- Do you think there are types of software which cannot be tested to a satisfactory degree?</strong><br />
- So how would you test software like this (<em>of Dr. Parnas</em>)? Or would you, as was his approach, just refuse to write and test it?</p>
<p>I&#8217;ll condense the responses here, and will add a note (<em>and maybe a link</em>) about each person. Note: The responses are <strong>edited and rearranged</strong> from the original replies, not really verbatim (<em>although I changed the wording very little</em>).<span id="more-28"></span></p>
<p><strong>1)</strong><br />
<a href="http://pathfinderpeople.blogs.com/hslahman/"><strong>H.S.</strong></a><strong> helped a lot.</strong> He has a <a href="http://pathfinderpeople.blogs.com/hslahman/">weblog </a>were he discuss matters of development and test in depth, which was not updated lately, but there is still information to be found &#8212; hopefully he&#8217;ll add more content soon.</p>
<blockquote><p>> Define &#8216;satisfactory&#8217;. B-)</p></blockquote>
<p>Actually, all the responses we will see can be shortened to this question. Until we do not (<em>re</em>)define the satisfaction we are aiming to, we can not continue with our test approach.</p>
<blockquote><p>> Yet another set of problems involves results that are not predictable. An example would be a module to shuffle a deck of cards for a game. One cannot directly test the randomness of the shuffle implementation; one must resort to statistical sampling and analysis.</p></blockquote>
<p>(<em>This is similar to the Fermat question in my previous post.</em>)</p>
<blockquote><p>> In fact, one can argue that exhaustive testing of any large application is simply not feasible because of combinatorial problems between inputs and logic paths.<br />
> OTOH, if one is using testing to simply monitor the development process, then it may be possible to test any complex program, even nondeterministic ones. One can build a high degree of confidence in the quality of the development process (e.g., defect prevention) itself.<br />
> Shops doing mission critical software do not use testing as a product reliability gate. They depend on defect prevention in the development process and only use testing to ensure the process is working correctly.<br />
There is also a cool explanation of the testing role in the development process. Go and read it at the usenet.</p></blockquote>
<p><strong>2)<br />
Ernie Englehart explained</strong> in a very practical way:</p>
<blockquote><p>> One of the key components of a good test plan is a risk analysis. The calculation of impact x likelihood gives a risk factor. We then prioritize our test cases to focus on the highest risk items first.  By prioritizing the test cases based on risk we are mitigating and minimizing the risk as much as we can.<br />
> For defense systems, obviously much of the testing needs to be performed with simulators. The design and functionality of those simulators is obviously very important. They can be very complex. The simulator projects follow the same methodologies of performing a risk analysis and then prioritizing the test cases accordingly.</p></blockquote>
<p><strong>3)</strong><br />
A <strong>response from Vladimir</strong>:</p>
<blockquote><p>> To prove the concept you may not need to execute every single line of your code in every possible condition with every possible data value. Testing is about finding the least that covering the most (or even everything in the mission critical systems). Testing is also about probability. The more [of smart] testing you do the least probability is there that you have missed a defect.</p></blockquote>
<p><strong>4)</strong><br />
And I was much honored to receive<strong> a reply from Michael Bolton</strong>. He is one of my favorite authors since my beginnings on Software Testing. See <a href="http://www.developsense.com/">his site</a> (<em>I keep him in my sidebar</em>) and read <a href="http://www.developsense.com/articles/index.html">his articles</a>.</p>
<blockquote><p>> Obtaining or attaining confidence in something is very different from testing something.  The testing of a product might be entirely satisfactory, where the information revealed by testing will reveal that the product is not satisfactory.<br />
> The decision to build or not to build something isn&#8217;t a testing decision; it&#8217;s an engineering decision.  Engineering frequently involves building stuff that gets its first end-to-end system test on its first use.  Testing is a heuristic process that tells us things about the state of our engineering.  Some things don&#8217;t work even after extensive testing, and some things do work even after very superficial testing.</p></blockquote>
<hr width="40%" />
<strong>5)</strong><br />
Some <strong>conclusions reached </strong>on the usenet thread:   </p>
<blockquote><p>> If a system was decided to be built, we can test it.<br />
> There&#8217;s a difference between product satisfaction and testing satisfaction. One outcome of a satisfactory testing can be a conclusion that a product will not be satisfactory.<br />
> A degree of confidence should be agreed between all the involved, based on the project limitations and testing constrains.<br />
> As no system is 100% good and trustworthy, we can reach a result that defines a system as &#8220;good and trustworthy to an agreed level of coverage, based on a known analysis of the risks&#8221;. Such objective can always be reached, concerning testing.<br />
> &#8220;Difficult&#8221; does not equal &#8220;impossible&#8221;!</p></blockquote>
<hr width="70%" />
Hope this collection of ideas is useful to you too.<br />
Please feel free to add your comment, or to ask for more information on any of the ideas mentioned.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200709/he-who-will-be-tested/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>He Who Can Not Be Tested</title>
		<link>http://testing.gershon.info/200708/he-who-can-not-be-tested/</link>
		<comments>http://testing.gershon.info/200708/he-who-can-not-be-tested/#comments</comments>
		<pubDate>Sat, 18 Aug 2007 22:08:42 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Bug of this Time]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070818/he-who-can-not-be-tested/</guid>
		<description><![CDATA[Well&#8230; No, you won&#8217;t get this prize either. Read the previous BotT (about a bug in the lottery software) in order to be in the mood for this one. This BotT tells a story. A story about a car dealership that had the great idea of mailing thousands of scratch-off games to promote their business. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Well&#8230; No, you won&#8217;t get this prize either.<br />
</strong>Read the <a title="Lottery bug of that time" href="http://testing.gershon.info/20070509/bott-no-multi-million-dollar-prize-for-you-again/">previous BotT (<em>about a bug in the lottery software</em>)</a> in order to be in the mood for this one.</p>
<p>This BotT tells a story. A story about a car dealership that had the great idea of mailing thousands of scratch-off games to promote their business. What they did not know is that, by mistake, <strong>all of the 50000 cards had a winning notice behind the scratch-off layer.</strong> Instead of having to pay a US$1.000 prize, they soon discovered that they had to pay US$50.000.000!!<br />
Go to this link to read the story, or at least to see the videos of the angry customers that came to demand their US$1.000: <a title="Koat News link" href="http://www.koat.com/news/13716052/detail.html?rss=alb&#038;psp=news">Koat News link</a>.</p>
<p>I am not pointing a finger at any culprit, it is clear that it was a big confusion. And although it is an interesting story, the point that I want to emphasize is: <strong>How do you test a system that can not be executed?</strong></p>
<p><span id="more-22"></span><img id="image24" height="75" alt="Open Matchbox" src="http://testing.gershon.info/wp-content/uploads/2007/08/matchbox1.thumbnail.jpg" />You can not scratch the Scratch-Off cards in order to ensure they are ok. It would render them useless.<br />
Think of it as a matchbox &#8211; once upon a time, there was a blackout on some neighborhood. The head of the family went to the kitchen to bring the matches, so they would have a little light. After failing to light even one single match, the man exclaims: &#8220;I can&#8217;t believe it! I tested each one of these matches just after I bought them!&#8221; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . You get the point: <strong>How do you test a system that can not be executed?</strong></p>
<p>Oh boy, let&#8217;s open a new trend: Process testing.<br />
By process testing I mean testing any deliverable, even if it is not software.</p>
<p>So, how would you test the Scratch-Off cards, without scratching the 50.000 cards? Here are some examples I can jot down quickly:</p>
<ol>
<li><strong>Requirements Review:</strong> Ask if it is clear that 1/50000 should be prized. Ask again, and show it in the contract &#8211; if you show concerned enough, there is a high probability that the concern will spread to the publisher, and he will make sure to see the process is as expected.</li>
<li><strong>Black Box Statistics:</strong> Open 5 random tickets. If you found 5 winning cards, return all the boxes (there should be only one prize!). If you found one winning prize &#8211; try some more, statistically you&#8217;ll never be that lucky.</li>
<li><strong>White Box:</strong> Scrutinize the printing batch script, or whatever controls the machine. If you work together with someone from the publishing house that knows the language, you&#8217;ll be able to grasp exactly what percentage of winning cards is being printed.</li>
<li><strong>Interface testing:</strong> See a draft printout of the prized and a not prized card artwork. They can send it even, by email, and you will ensure that the publisher is using a unique artwork as model.</li>
<li><strong>Sample:</strong> Ask for a blank sample and for a prized sample. The rationale is similar to the previous one.</li>
<li><strong>Process Analysis:</strong> When the printed card boxes come, ask to be shown which box has the prized card. If all is well, there will be only ONE marked box. Legal disclaimer: It may be illegal to know where the winning prize is &#8211; as it would spoil the surprise and competition of the &#8216;game&#8217;, making it unfair.</li>
<li><strong>Legal Protection:</strong> Maybe you can also add protections clause to the card, like &#8220;my company is not responsible, rather the publisher company is&#8221; or &#8220;prize is dependant on XXX, where XXX is some other condition&#8221;.</li>
<li><strong>Marketing Protection:</strong> Another option will be tying the prize to a discount when buying a car (the scratch cards intention was to grab the attention of those 49.999 people who did not won the prize. With this discount-tie, the attention-grabbing would be the same or bigger, and the risk taken would be 1000 for car sold.).<br />
 <br />
Not all of these techniques really protect you, but if done, these would give you enough confidence on the correctness of the data.</li>
</ol>
<p>I could finish here, without talking about software, just to make the point of abstraction.<br />
But as I want to keep my readers, and <a title="Does the world need another blog?" href="http://monkatwork.com/2007/08/15/does-the-world-need-your-blog/">make my blog good for the world</a>, let&#8217;s see some software points to ponder:</p>
<p><strong>Is there software which can not be tested?<br />
</strong>Well, I believe that although any software is testable up to some extent, yes there is software which can not be thoroughly tested.</p>
<p>The most common examples are from Critical/Safety systems.<br />
<a title="Dr. Parnas article in Wikipedia" href="http://en.wikipedia.org/wiki/David_Parnas">Dr. Parnas</a> refused to build a defense system software against nuclear missiles, stating that &#8220;<span style="font-family: courier">The inability to test a strategic defense system under field conditions before we actually need it will mean that no knowledgeable person would have much faith in the system.</span>&#8220;. He was right, the developers/testers would be able to test and simulate some parts of the system, but the final system as a whole would be impossible to test until a real war was in course and you had nuclear ogives being shot at you.<br />
(<em>You can not even test in at a desert location with test-intended-nuclear-bombs, because the </em><a title="Nuclear Test-Ban Treaty Summary" href="http://www.ctbto.org/treaty/summary.html"><em>Nuclear Test-Ban Treaty</em></a><em> prohibits.</em>)</p>
<p><strong>==> So how would you test software like this? Or would you, as Dr. Parnas&#8217;s approach, just refuse to write and test it?</strong></p>
<p>Another kind of untestable program I found in the <a title="Software Development Wikiwikiweb" href="http://c2.com/cgi/wiki?SoftwareDevelopment">Wikiwikiweb of Software Development</a>:</p>
<p>Imagine its a few years ago, and the application under tests is a program that has a feature to disprove Fermat&#8217;s Last Theorem. Within the code, the function for it is:</p>
<blockquote><p>bool fermatIsWrong(x, y, n) {<br />
  // return true if n > 2 and nth root of (x^n + y^n) is an integer<br />
  // else return false<br />
}</p></blockquote>
<p><a class="imagelink" title="Little Fermat" href="http://testing.gershon.info/wp-content/uploads/2007/08/fermat1.gif"><img id="image27" height="30" alt="Little Fermat" src="http://testing.gershon.info/wp-content/uploads/2007/08/fermat_lil.gif" /></a>At the time you are testing this function, you do not know whether there exists a set of numbers {x, y, n} which lead to a true result. And if the set exists, neither you nor anybody else knows which the values are.<br />
So, this is a program to which you will never be able to cover 100% of the code paths in your tests. You&#8217;ll be able to test extensively the &#8216;false&#8217; return value, though&#8230; <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>==> Again, how would you test a software like this?</strong></p>
<p>Feel free to use the comments below to reply. Let the world know your Testing Thoughts!</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200708/he-who-can-not-be-tested/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>All might be free!</title>
		<link>http://testing.gershon.info/200708/all-might-be-free/</link>
		<comments>http://testing.gershon.info/200708/all-might-be-free/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 21:04:57 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070815/all-might-be-free/</guid>
		<description><![CDATA[Welcome! If you are an avid reader, and read the first post of this blog, you know that this blog is was password protected. Since last week, the page is accessible to all, and may be read by everyone. As of now, no other page on the net links to Testing Thoughts, so it will be [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome!</p>
<p>If you are an avid reader, and read the <a title="First post" href="http://testing.gershon.info/20070101/happy-new-testing-year/">first post</a> of this blog, you know that this blog <strike>is</strike> was password protected.</p>
<p>Since last week, the page is accessible to all, and may be read by everyone. As of now, no other page on the net links to Testing Thoughts, so it will be a calm place for a while.<span id="more-21"></span></p>
<p>In this opportunity I want to thank the handful of people who had password-access to the posts, and gave me so-much-wanted feedback. Thank you, you know who you are, and you can now forget the password <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .<br />
I want to explicitly thank <a title="Josh Bancroft's site" href="http://www.tinyscreenfuls.com/">Josh</a> for his motivation and explanation on why opening my blog to public view is good. Earned a link, see? <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>So old and new readers, you are welcome.<br />
Please share and let all know your Testing Thoughts. Use the comments to contact me directly and ask questions (<em>until I build the &#8216;contact&#8217; page</em>).</p>
<p>On to writing the first webwide-public post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200708/all-might-be-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 things I learned at Sigist Conference, day 2</title>
		<link>http://testing.gershon.info/200707/3-things-i-learnt-on-sigist-conference-day-2/</link>
		<comments>http://testing.gershon.info/200707/3-things-i-learnt-on-sigist-conference-day-2/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 07:21:37 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070712/3-things-i-learnt-on-sigist-conference-day-2/</guid>
		<description><![CDATA[Annotations from day 11/0702007 of the Sigist conference on Software Testing. 1) &#8220;I&#8217;ve never seen the same solution work in every place; or in more than one place&#8221;. The above, is quoted (almost) literally from Bernard&#8217;s &#8220;Systems of Systems&#8221; lecture. He described the well known problem, but was unable to suggest a solution. Any solution [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image16" height="96" alt="Sigist Israel logo" src="http://testing.gershon.info/wp-content/uploads/2007/07/sigist.jpg" />Annotations from day 11/0702007 of the <a title="Sigist home page" href="http://www.sigist.org.il/" target="_blank">Sigist conference</a> on Software Testing.<span id="more-20"></span></p>
<p><strong>1) &#8220;I&#8217;ve never seen the same solution work in every place; or in more than one place&#8221;.</strong><br />
The above, is quoted (<em>almost</em>) literally from Bernard&#8217;s &#8220;Systems of Systems&#8221; lecture. He described the well known problem, but was unable to suggest a solution.<br />
Any solution you find to any problem, can never work 1-to-1 in your problem. <strong>Adapt.</strong> Don&#8217;t be afraid to change you environment/process too, but usually both should change in order to succeed.</p>
<p><strong>2) Critical tests are done at the end. Live with it &#8211; plan for it.<br />
</strong>On the &#8220;Performance Tests&#8221; lecture, Lior Katz said that it is a fact for almost all systems that you can not do proper stress/load/performance tests until the system is stable &#8212; which usually means an advanced stage of the project.<br />
This leads to important<strong>/</strong>critical bugs to be found at critical<strong>/</strong>important phases. One way to deal with it is to hope nothing very bad will happen&#8230; the other is to <strong>be conscious of the danger and be prepared to deal with urgent problems in the last milestones</strong>.</p>
<p><strong>3) Care for the important level of your abstraction.<br />
</strong><img id="image19" height="96" alt="Layers image" src="http://testing.gershon.info/wp-content/uploads/2007/07/layers.thumbnail.jpg" />Apart from the obvious eye-opener we had in the &#8220;Building Blocks&#8221; lecture, which taught us that GUI automation should be done in layers, like any other automation, another insight was that you should <strong>not care</strong> (so much) <strong>about ugliness or repetition in the abstraction layer</strong>. Three reasons for that:<br />
   1) The most important is that the test-cases layer is easy to implement and easy to maintain (or maintenance-less). That way new test-cases can be added quickly and by unskilled persons.<br />
   2) The abstraction layer is always finite (as it deals with a finite number of states, or components).<br />
   3) From another lecture, &#8220;Automation from day one&#8221;: &#8220;<span style="font-family: courier new">Do not test a system with an equally complex system</span>&#8220;. If sometimes repetition or duplication can help your final layer to be simpler, it is better.</p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200707/3-things-i-learnt-on-sigist-conference-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4.5 things I learned at Sigist Conference, day 1</title>
		<link>http://testing.gershon.info/200707/45-things-i-learnt-on-sigist-conference-day-1/</link>
		<comments>http://testing.gershon.info/200707/45-things-i-learnt-on-sigist-conference-day-1/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 20:14:45 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070710/45-things-i-learnt-on-sigist-conference-day-1/</guid>
		<description><![CDATA[Annotations from day 10/0702007 of the Sigist conference on Software Testing. 1) When you measure an object&#8217;s weight, the weight do not gets affected. Similarly, when you measure software’s quality, you don&#8217;t have influence on the amount of quality. That&#8217;s from Rex Black&#8217;s lecture (10 worst things).  The lecture was your standard lecture in which a [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Sigist Israel logo" src="http://testing.gershon.info/wp-content/uploads/2007/07/sigist.jpg" />Annotations from day 10/0702007 of the <a title="Sigist home page" href="http://www.sigist.org.il/" target="_blank">Sigist conference</a> on Software Testing.<span id="more-18"></span></p>
<p><strong>1) When you measure an object&#8217;s weight, the weight do not gets affected. Similarly, when you measure software’s quality, you don&#8217;t have influence on the amount of quality.</strong><br />
That&#8217;s from Rex Black&#8217;s lecture (<em>10 worst things</em>).<br />
 The lecture was your standard lecture in which a lot of common-sense ideas are put on a slide, but the clarity, order and side-info gives all a better meaning and <strong>things get adjusted on your head</strong>. I like these lectures, they help to organize your mind, and surely help you to articulate these thoughts later.<br />
 The idea in bold above is a very smart one: <strong>Don&#8217;t try or pretend to be the Quality Factor in the product you are testing</strong>. Don&#8217;t be a Quality Assuror. Just because you are a Testing Expert, and know how to measure the quality of an application, does not mean you have the power (<em>or meanings</em>) to increase its quality. Testing is not to improve quality, testing is to give a quality measurement. It is a decision making tool.</p>
<p><strong>2) Don&#8217;t be afraid of producing a large amount of test cases. If you need to discard a part, at least you&#8217;ll know exactly what you&#8217;re giving up.</strong><br />
That&#8217;s pretty much self-explanatory. It was one of Vipul Kocher&#8217;s points on the &#8220;Verb and Noun technique&#8221; lecture.<br />
This technique allows for a quick and easy mass-production of test cases. And, for those who are afraid of being overwhelmed by all the test cases, the answer is: &#8220;No one is telling you to test them all. But now <strong>your choice is conscious</strong>.&#8221;</p>
<p><strong><a class="imagelink" title="V Model diagram" href="http://testing.gershon.info/wp-content/uploads/2007/07/v-model.jpg"><img height="96" alt="V Model diagram" src="http://testing.gershon.info/wp-content/uploads/2007/07/v-model.thumbnail.jpg" /></a>3) &#8211; Company &#8216;X&#8217; has no written development requirements whatsoever. It is a bad thing?<br />
   &#8211; Yes!<br />
   &#8211; It depends.</strong><br />
The above dialog happened during the &#8220;V Model&#8221; lecture by Geoff. He was talking about a branch of some company (<em>he named it, I wont. Just know that it is quite big&#8230;</em>) that systematically don&#8217;t have written requirements.<br />
The categorical reply that one participant gave (<em>and most if not all held too</em>) was the obvious &#8211; you&#8217;ve got to have requirements to be a good boy. How can I test without requirements?<br />
That&#8217;s why the answer is so surprising and so refreshing. If an answer is categorical, it is probably wrong. <a title="List of cognitive biases" href="http://en.wikipedia.org/wiki/List_of_cognitive_biases" target="_blank">Your cognitive bias</a> is fooling you again.<br />
If this company has a process, on which all stakeholders agree, and on which the testing department has agreed &#8211; then it doesn&#8217;t matter so much whether there is place for a &#8216;Write Requirements&#8217; checkbox on it. If the testing department agrees to test without requirements as we know them, perfect.<br />
Summing up, not everything that is different is bad. If it is <u>well analyzed and well controlled</u>, any process can give you results. You can decide on <u>what is important </u>and <u>how much you want to risk</u>.</p>
<p><strong>3.5) You can use a process model as a display of your place on the project, without having to follow the process.</strong><br />
That&#8217;s actually the summary of the lecture. Geoff presented a case study, where although the process was not led by the V-Model principles, and did not follow the V-Model path, the V-Model was used as a clever instrument to show all involved parts what are the dependencies between development and testing. <strong>It is a clear diagram to show what parts of testing can/cannot be done with/without proper effort from the development side.</strong><br />
Of course&#8230; this rule is true for any other diagram/process, not only V-Model. So you probably can choose the model that better suits your necessities. Just be sure not to be biased <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8211; anyone can pick the model that fits its own interest and try to apply it to the company reality&#8230; Managers should be smart enough to spot where the discrepancies are.</p>
<p><strong>4) Don&#8217;t be the one to harms MS Windows, or your own application.</strong><br />
On the &#8220;Testing the Windows* registry&#8221; lecture, Michael Stahl explained that messing with the Windows Registry can surely disrupt your OS system. Or your application. There are even disclaimers on this everywhere. But he also explained that it only messes the system if you (<em>ok, the programmer</em>) let it happen. If all registry inputs are checked and validated before being used, nothing bad will/shall happen.<br />
There is no excuse &#8211; <strong>the registry is under the developer control (<em>not the other way around</em>)!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200707/45-things-i-learnt-on-sigist-conference-day-1/feed/</wfw:commentRss>
		<slash:comments>0</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>Annotated Joel on Software &#8211; (Bad) Reasons not to test</title>
		<link>http://testing.gershon.info/200704/annotated-joel-on-software-bad-reasons-not-to-test/</link>
		<comments>http://testing.gershon.info/200704/annotated-joel-on-software-bad-reasons-not-to-test/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 21:18:13 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Annotations]]></category>
		<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070425/annotated-joel-on-testing-why-you-dont-have-testers/</guid>
		<description><![CDATA[Now it is my turn! I have the honor to disagree with Joel. I&#8217;ll pick up an easy subject: Private walled offices.  Joel says that nothing improves morale and efficiency like private walled offices. I&#8217;ve worked in both way, and in two occasions companies I worked switched methods (from closed environments to open spaces) - in this [...]]]></description>
			<content:encoded><![CDATA[<div dir="ltr" style="font-size: 80%; float: right; width: 45%; font-family: arial; text-align: justify; border: black 1px solid"><strong>Now it is my turn!</strong><br />
I have the honor to disagree with Joel. I&#8217;ll pick up an easy subject: Private walled offices. </p>
<p><a title="A Field Guide to Developers" href="http://www.joelonsoftware.com/articles/FieldGuidetoDevelopers.html" target="_blank">Joel says </a>that nothing improves morale and efficiency like private walled offices. I&#8217;ve worked in both way, and in two occasions companies I worked switched methods (<em>from closed environments to open spaces</em>) - in this experience, the gains of working on wall-less and open spaces are visible. Suddenly, everything is quick and everything is clear. No more leaving things to deal later. No more company-wide procrastination.<br />
My advice: break those doors and those walls.</div>
<p>Everybody loves Joel.</p>
<p>Everybody loves his articles, his jokes and his books.<br />
More than that, people love to disagree with him, so they can look smart and judgmental. The funniest part is seeing the judgmental faces they do.</p>
<p>In 2000, Joel wrote a cool article on &#8220;<a title="Top Five (Wrong) Reasons You Don't Have Testers" href="http://www.joelonsoftware.com/articles/fog0000000067.html" target="_blank">Top Five (Wrong) Reasons You Don&#8217;t Have Testers</a>&#8220;.<br />
He&#8217;s got some great information there, and in this post I&#8217;ll just comment it (<em>see the &#8216;Annotations&#8217; tag?</em>).</p>
<p>Ok, so go on (<a title="Top Five (Wrong) Reasons You Don't Have Testers" href="http://www.joelonsoftware.com/articles/fog0000000067.html" target="_blank"><em>link</em></a>) and read the paper.<br />
In his paper, Joel debunk 5 miths of companies who won&#8217;t hire testers:</p>
<p><span id="more-11"></span></p>
<ol>
<li>Bugs come from lazy programmers.</li>
<li>My software is on the web. I can fix bugs in a second.</li>
<li>My customers will test the software for me.</li>
<li>Anybody qualified to be a good tester doesn&#8217;t want to work as a tester.</li>
<li>I can&#8217;t afford testers!</li>
</ol>
<p>Joel has intelligent advice on the first three points (<em>you&#8217;ve read them, right?</em>), so I&#8217;ll not discuss them. As for the last two&#8230; lots of comments!</p>
<p>Regarding point 4, Joel&#8217;s article is a bit outdated.</p>
<ul>
<li>Joel says that &#8220;<span style="font-family: courier">most people who are that smart will tend to get bored with day-to-day testing, so the best testers tend to last for about 3 or 4 months and then move on</span>&#8220;, and gives some ways to make your testing scene look more inviting.<br />
C&#8217;mon! If your testers become bored after 3 months, you are probably hiring the wrong people. Good testers are passionate about tests, and know what it takes to be a tester. They know the work can become boring if they let it, so they manage the work in a way it will never be boring. Good testers are built for testing, even before you hire them.<br />
Myself, I started to work on testing out of curiosity, after a few years of development. Man, this is fun! <strong>The analytics mindset of a tester cannot be compared to the algorithmic mindset of a developer. They&#8217;re two different things, that level on the same job-satisfaction.</strong> Humm? What do I mean with Passionate Testers? Read the blogs of <a href="http://blogs.msdn.com/micahel/" target="_blank">Braidy Tester</a>, and of <a href="http://testertested.blogspot.com/" target="_blank">Pradeep</a>, you&#8217;ll know what I mean.<br />
So, Joel, hiring those non-traditional workers as your test-base will just give you big turnovers and you&#8217;ll never gather that cool techie testing group that laugh about bugs found.<br />
A funny quote from the article: &#8220;<span style="font-family: courier">Recognize that you will have a lot of turnover among your top testers. Hire aggressively to keep a steady inflow of people.</span>&#8220;. I doubt anyone would treat the development team like that. It should not be different in the testers team &#8211; - recruit a winning team, treat them like kings, and you can expect them to serve the company for years to follow.</li>
</ul>
<p>Last point, point  5. Again, not a very accurate/scientific approach:</p>
<ul>
<li>We can summarize Joel&#8217;s reply in this point as &#8220;Don&#8217;t skimp on testers, because you can find some cheap testers&#8221;. That&#8217;s the same as saying &#8220;Don&#8217;t skimp on <a href="http://www.joelonsoftware.com/articles/customerservice.html" target="_blank">Customer Service</a>, you can hire any outsorced company on India to answer your phones.&#8221;. Ahh! Doesn&#8217;t make that much sense now, does it?<br />
The real reason not to economize on testers is that <strong>bugs and defects will cost much more than your testing team</strong> if you don&#8217;t test. If your customer find a bug, one of these which you could have avoided, the sum of costs of all the activities related to fixing and re-releasing your product is big &#8211; - very big (<em>not to mention the harm to your reputation!</em>). If your software is a shelf-product, it is even harder and expensive. If you are on hardware, the mere thought is making you pale.</li>
</ul>
<p>Of course, I am not expecting any answer from Joel, but I like to believe that he agrees with me. <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/200704/annotated-joel-on-software-bad-reasons-not-to-test/feed/</wfw:commentRss>
		<slash:comments>3</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>
		<item>
		<title>A Bug with a Helmet</title>
		<link>http://testing.gershon.info/200701/a-bug-with-a-helmet/</link>
		<comments>http://testing.gershon.info/200701/a-bug-with-a-helmet/#comments</comments>
		<pubDate>Thu, 25 Jan 2007 19:50:09 +0000</pubDate>
		<dc:creator>Shmuel Gershon</dc:creator>
				<category><![CDATA[Test Insight]]></category>

		<guid isPermaLink="false">http://testing.gershon.info/20070125/a-bug-with-a-helmet/</guid>
		<description><![CDATA[Israel&#8217;s National Road Safety Authority held lately very interesting ad campaings, in print, radio and TV that are aimed to increase accident-awareness for Israeli drivers. In this country, 95% of all accidents are due to reasons which include &#8220;human factors&#8221;. While 2005 statistics show that the &#8220;Deaths in Accident&#8221; relation to the population-total was low when compared to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pasimlev.mot.gov.il/RoadSafety/English/Welcome/" target="_blank">Israel&#8217;s National Road Safety Authority</a> held lately very interesting ad campaings, in print, radio and TV that are aimed to increase accident-awareness for Israeli drivers.</p>
<p>In this country, 95% of all accidents are due to reasons which include &#8220;human factors&#8221;. While <a href="http://pasimlev.mot.gov.il/RoadSafety/Statistics/2004/Before/Introduction/" target="_blank">2005 statistics</a> show that the &#8220;Deaths in Accident&#8221; relation to the population-total was low when compared to other European contries, the same statistics demonstrate that Israel is one of the worse countries on the &#8220;Deaths in Accident&#8221; compared to number of vehicles.<br />
That means: Our vehicles kill more people than vehicles in other countries do. This is a very scary conclusion, and I learn from it that our drivers are careless (<em>or could not care less!</em>) about road-accidents.</p>
<p>Ad Campaigns can effectively increase consciousness when done right.<br />
Here is how the Road Safety Authority approached the problem, and how <strong>you</strong> can adapt this in your tests.</p>
<p>See the picture:</p>
<p><a href="http://testing.gershon.info/files/yeled.gif"><img title="Ad Campaign featuring a child" alt="Ad Campaign featuring a child" src="http://testing.gershon.info/files/yeled.gif" width="490" align="left" border="0" /></a></p>
<p>The Caption says: &#8220;<strong>He is close to your bumper. He is fast, he is furtive&#8230; He can be unexpected&#8230; And if you don&#8217;t look for him, you&#8217;ll not see him. Slow down and look for the kid in the road!</strong>&#8221;</p>
<p>Another strong advert in Radio went like this: &#8220;<strong>He is approaching, and he is fast. On the road, always look for the man with the helmet!</strong>&#8221;</p>
<p>See the pattern? It is not &#8220;look for some kid that may be around&#8221;, or &#8220;check if there&#8217;s a motorcycle&#8221;&#8230; <strong>Stop and find that motorcyclist driving overthere!</strong><br />
The common to both announcements is that <strong>you are left with the impression that there are children and motorcycles everywhere.</strong><br />
They ARE there, somewhere where you can&#8217;t see them. You don&#8217;t want to hit them, so please be careful.</p>
<p><span id="more-6"></span></p>
<p>Once, when talking about SW testing with a person new on the subject, I explained the process of bug fixing, something in the lines of: The developer fixes and reports the fix in the next oficial version. You then have to look for the bug to reappear until you find it, by either changing the environment or parameters. If there is no reproduction of the original bug, you try to find a different bug related to the first or to the fix. If at last you don&#8217;t suceed, you give up, acknowledge the fix, and go find new bugs using the normal methods.<br />
The new guy was surprized by the approach: <em>Is this the attitude to have? Do we really want the program to have many bugs?</em><br />
To anyone with a bit of experience it is clear &#8212; <em>the bugs <strong>*are*</strong> there. All around, all the time. If we don&#8217;t find them, it is because they&#8217;re either hiding or of very little effect.</em></p>
<p>As soon as you realize that the program you are testing is bug-filled, your outlook changes. You now are a bug-hunter looking for the prey. And no one can fool you by saying there are no such things, because you know it, you can feel them breathing.</p>
<p>Some statistics on our side of the story.<br />
Steve McDonnel, in his fabulous <a href="http://www.amazon.com/gp/product/0735619670?ie=UTF8&#038;tag=testithoug-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0735619670">Code Complete</a> book [Section 25.4], brings some bugs statistics (<em>please lookup for details</em>):</p>
<ul>
<li>- Industry Average is about 15 to 50 errors per 1000 lines of code.</li>
<li>- Microsoft, in one department, at one stage, experienced from 10 to 20 defects per 1000 lines of code (<em>I usually don&#8217;t use </em><a title="KLOC notation" href="http://en.wikipedia.org/wiki/Source_lines_of_code#Disadvantages" target="_blank"><em>KLOC notation</em></a><em>, but this statistics are different</em>)</li>
</ul>
<p>I&#8217;ve heard people telling that there is a potential defect for every two lines of code (<strong>!</strong>), and that for every bug fixed there is an additional one inserted in the code (<em>which is hopefully of minor impact</em>). As I&#8217;ve never seen this written anywhere, and they seem a bit exagerated, I&#8217;ll not count it officialy. But it is the right mind-set! <img src='http://testing.gershon.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>The truth is, unless you believe/know that the bugs are there, you will not be able to find them.</strong><br />
And, for the programmers reading this, you will not be able to prevent them. As Steve says in the same book [Section 26.1], &#8220;It&#8217;s hard enough to find an error in your code when you&#8217;re looking for it; it is even harder when you&#8217;ve assumed your code is error free&#8221;. In &#8220;<a href="http://www.cl.cam.ac.uk/teaching/2006/SWEng/Bradylecture.doc" target="_blank">The Software Development Process</a>&#8221; presentation, Robert Brady explains that the belief in bug-free code doomed IBM to work bad, slowly and lousy at the 80&#8242;s. Be sure to <a title="The Software Development Process" href="http://www.cl.cam.ac.uk/teaching/2006/SWEng/Bradylecture.doc" target="_blank">read the example</a>.</p>
<p>In conclusion, there is no such thing as bug-free code, but the impact of bugs can be minimized with proper testing.<br />
Remember! He is close to your customer. <strong>He is fast, he is furtive&#8230; He can be unexpected&#8230; And if you don&#8217;t look for him, you&#8217;ll not see him. Slow down and look for the bug on that program!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://testing.gershon.info/200701/a-bug-with-a-helmet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
