<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: To Test The Untestable Bug.</title>
    <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>To Test The Untestable Bug.</title>
      <description>&lt;p&gt;I found a bug that couldn&amp;#8217;t be tested yesterday.&lt;/p&gt;


	&lt;p&gt;There is nothing quite so satisfying as isolating a bug, writing a test that fails because of that bug, and then making the test pass by fixing the bug.  The fact that the test is passing is proof that the bug is fixed.  The existence of that test in the test suite ensures that the bug will never come back again.&lt;/p&gt;


	&lt;p&gt;For ten years I have worked this way.  For ten years I have taught, and coached, and otherwise cajoled software developers to work this way too.  Sometimes those developers would ask me about bugs that couldn&amp;#8217;t be tested; and I would reject the whole concept.  &amp;#8220;If you can write a line of code, you can test that line of code.&amp;#8221; I would reply.&lt;/p&gt;


	&lt;p&gt;But yesterday I found a bug that I couldn&amp;#8217;t write a test for.&lt;/p&gt;


	&lt;p&gt;Actually, that&amp;#8217;s not quite fair.  I &lt;em&gt;was&lt;/em&gt; able to write a test for the bug.  The problem was that the test passed, and I couldn&amp;#8217;t make it fail.&lt;/p&gt;


	&lt;p&gt;But let me set the stage first&amp;#8230;&lt;/p&gt;


	&lt;p&gt;My son Justin is apprenticing with me this summer.  He&amp;#8217;s been helping me write new features for FitNesse.  We have had many pleasant weeks working together.&lt;/p&gt;


	&lt;p&gt;About a week ago I asked him to rework an area of the FitNesse code that includes SuiteSetUp and SuiteTearDown pages into test suites.  These pages are executed &lt;em&gt;once&lt;/em&gt; per suite run.  They are similar to @BeforeClass and @AfterClass functions in JUnit.&lt;/p&gt;


	&lt;p&gt;The old mechanism started with the suite page and found the nearest inherited SuiteSetUp and SuiteTearDown for that page.  Then it would include the SuiteSetUp, all the tests, and finally the SuiteTearDown.  The new mechanism needed to be smarter.  It would look at every test page and determine the most appropriate SuiteSetUp and SuiteTearDown for that page.  Then it would group the test pages by common SuiteSetUp and SuiteTearDown pairs and include them in the suite.&lt;/p&gt;


OK, I know this is a bit detailed, but I&amp;#8217;m almost done.  The point is that the old mechanism created a list of tests that looked like this: 
&lt;pre&gt;Utttt...ttttD&lt;/pre&gt;Whereas the new mechanism created a list of tests that looked like this: &lt;pre&gt;UtttDUttDUtttttDUtD...&lt;/pre&gt;  Where U and D are SuiteSetUp and SuiteTearDown pages, and the t&amp;#8217;s are test pages.

	&lt;p&gt;Justin got all his unit tests passing, cleaned up the code, and then showed it to me.  We spent a little more time cleaning it up, until we were both satisfied with it.&lt;/p&gt;


	&lt;p&gt;Then Justin said to me: &amp;#8220;We should write an acceptance test for this.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;We write a lot of acceptance tests for FitNesse; and, of course, we use FitNesse to write those tests.  There are over 200 FitNesse tests for FitNesse.  But until Justin said it, it didn&amp;#8217;t occur to me that this feature should have an acceptance test.  But after some thought, it was clear that it should.&lt;/p&gt;


	&lt;p&gt;So Justin and I set about to write the acceptance test for this feature.  It was actually pretty straight forward.  We simply used a shadow instance of FitNesse to create a test suite with several test pages and appropriate SuiteSetUp and SuiteTearDown pages.  Then we executed the suite in the shadow instance, and dissected the &lt;span class="caps"&gt;HTML&lt;/span&gt; to ensure that the setups and teardowns were included in the right order.  Easy.&lt;/p&gt;


We used a &lt;em&gt;Slim&lt;/em&gt; OrderedQuery table to ensure that the list of tests, setups, and teardowns was in the right order.  One of the Ordered Query tables looked like this:
&lt;pre&gt;
!|ordered query:pages run in suite|SuiteChildOne  |
|page name                                        |
|SuiteChildOne.SuiteSetUp                         |
|SuiteChildOne.TestOneOne                         |
|SuiteChildOne.TestOneTwo                         |
|SuiteChildOne.SuiteTearDown                      |                                     
|SuiteChildOne.SuiteSetUp                         |
|SuiteChildOne.TestOneThree                       |
|SuiteChildOne.SuiteTearDown                      |
&lt;/pre&gt;

	&lt;p&gt;The TestOneOne and TestOneTwo pages were Fit tests.  The TestOneThree page was a slim test.  These kinds of tests execute in different JVMs, therefore they needed to be run separately, with their own execution of SuiteSetUp and SuiteTearDown.&lt;/p&gt;


	&lt;p&gt;Oddly, this table failed, and the failure was &lt;em&gt;inexplicable&lt;/em&gt;.  It kept complaining that the rows were out of order, when they clearly were correct.&lt;/p&gt;


	&lt;p&gt;After a little inspection and fiddling, Justin said: &amp;#8220;I think the Ordered Query table doesn&amp;#8217;t like duplicates.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Having written the Ordered Query table about 6 months ago, I reviewed the code in my mind and realized he probably had a point.  The Ordered Query table was derived from Query table.  Query tables check that all specified rows exist in a query, but don&amp;#8217;t care about order.  Ordered Query tables ensure that order is correct too.  Having based the Ordered Query algorithm on the Query algorithm, I realized that there might indeed be a duplication issue.&lt;/p&gt;


	&lt;p&gt;So, we modified the test to eliminate the need for duplicates; and I wrote a &lt;a href="https://fitnesse.lighthouseapp.com/projects/23650-fitnesse/tickets/153-orderedquery-does-not-like-duplicate-rows#ticket-153-4"&gt;lighthouse task&lt;/a&gt; that described the bug.&lt;/p&gt;


Yesterday I went to lighthouse and saw that bug there.  I decided to fix it.  So I wrote an acceptance tests expecially for it.  It looked like this:
&lt;pre&gt;
!|Ordered Query:duplicate rows|A|
|x                              |
|SuiteChildOne.SuiteSetUp       |
|SuiteChildOne.TestOneOne       |
|SuiteChildOne.TestOneTwo       |
|SuiteChildOne.SuiteTearDown    |
|SuiteChildOne.SuiteSetUp       |
|SuiteChildOne.TestOneThree     |
|SuiteChildOne.SuiteTearDown    |
&lt;/pre&gt;
Note the similarity?

	&lt;p&gt;Oddly, the test passed.  I scratched my head about this, and tried several other different combinations.  They all worked just fine.  It was as though the bug had disappeared.&lt;/p&gt;


	&lt;p&gt;I began to doubt that the bug had ever existed.  I started rationalizing that perhaps Justin and I had been so focussed on ordering the suites that we didn&amp;#8217;t really diagnose the problem properly, and that we had made some silly cockpit error and mistaken it for a bug in OrderedQuery.&lt;/p&gt;


	&lt;p&gt;So I went to lighthouse and invalidated the bug.  Fortunately for me, I left the new acceptance test in place!...&lt;/p&gt;


	&lt;p&gt;I completed a few more lighthouse tasks, did a git commit, and prepared to push the changes to &lt;a href="http://github.com/unclebob/fitnesse/tree/master"&gt;github&lt;/a&gt;.  It is our rule that you never push to github without running an ant release.  This is the same script that our &lt;a href="http://internal.objectmentor.com:9090/job/fitnesse/"&gt;Hudson&lt;/a&gt; server runs whenever it detects a change in github.  So, in theory, the hudson build should never fail because nobody pushes to github without running the build.&lt;/p&gt;


	&lt;p&gt;The build takes about three minutes to run, and it executes every unit and acceptance test in the system.  Indeed, this same script is the sole criterion we use for deciding whether FitNesse is ready for release.  If the build succeeds, we ship!&lt;/p&gt;


	&lt;p&gt;Anyway, the ant release failed; and it was the new acceptance test that was the cause!&lt;/p&gt;


	&lt;p&gt;The new test history feature of fitnesse is really useful.  I was able to look at the test run that failed and see exactly what the problem was.  And the problem was precisely the same problem that Justin and I saw a week ago.  It looked like Ordered Query &lt;em&gt;really did&lt;/em&gt; have a problem with duplicates.  &lt;em&gt;Sometimes&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;So I quickly re-validated the lighthouse task and set about to diagnose the problem with a bit more care.  I started up FitNesse again and ran the failing test.  It passed!&lt;/p&gt;


	&lt;p&gt;Oh fratz!  How was I going to debug this thing if I couldn&amp;#8217;t get it to reliably fail?  I tried several different configurations of rows and queries, but they all passed just fine.  What&amp;#8217;s more, a subsequent run of ant release passed too!  I only saw it fail twice, and each time a simple recompile made the problem go away.&lt;/p&gt;


	&lt;p&gt;So I fell back on a very old skill that I haven&amp;#8217;t had to use in over ten years.  I started to &lt;em&gt;desk check&lt;/em&gt; the code!  OK, it&amp;#8217;s a bit of an exaggeration to say that I haven&amp;#8217;t desk checked in over ten years.  Actually I desk check all the time.  The point is I always have failing tests to support me.  This time was &lt;em&gt;different&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;Actually the problem (well, I &lt;em&gt;think&lt;/em&gt; it was the problem) was not too hard to find.  Deep in the algorithm that matched query rows with table rows was a HashSet of the row numbers that had not yet been matched &amp;#8211; creatively called unmatchedRows.  Every time I matched a row, I removed the number of that row from this set.&lt;/p&gt;


	&lt;p&gt;This algorithm was written for Query tables and was inherited into Ordered Query.  However, in Ordered Query I copied that set into a List for one reason or another.&lt;/p&gt;


	&lt;p&gt;All this works fine until there is a duplicate.  As you might expect, in the Ordered Query the &lt;em&gt;order&lt;/em&gt; in which the duplicates are processed is important.  Unfortunately, the order of the rows in the list that was copied from the set is indeterminate.&lt;/p&gt;


	&lt;p&gt;Now, maybe you missed the importance of that last paragraph.  It described the bug.  So let me re-emphasize.  In the case of duplicate rows I was depending on the order of elements in a list; but I built the list from a HashSet.  HashSets don&amp;#8217;t order their elements.  So the order of the list was indeterminate.&lt;/p&gt;


	&lt;p&gt;The fix was simple.  I changed the HashSet into an ArrayList.  That fixed it.  I think&amp;#8230;&lt;/p&gt;


	&lt;p&gt;The problem is that I had no way to reliably create the symptom.  I could not write a test that failed because I was using a HashSet instead of an ArrayList.  I could not mock out the HashSet because the bug &lt;em&gt;was in the use of&lt;/em&gt; the HashSet.  I could not run the application 1000 times to statistically see the fault, because the behavior did not change from run to run.  The only thing that seemed able to &lt;em&gt;sometimes&lt;/em&gt; expose the fault was a recompile!  And I wasn&amp;#8217;t about to put my system into a &lt;em&gt;recompile-til-fail&lt;/em&gt; loop.&lt;/p&gt;


	&lt;p&gt;Why a recompile?  I suppose it has something to do with the values of internal addresses and their effect upon the hash values within the HashSet.&lt;/p&gt;


	&lt;p&gt;So, here, finally, after 10 years of being a die-hard TDDer, I have encountered a bug that I could not &lt;span class="caps"&gt;TDD&lt;/span&gt; my way out of.  To solve it, I had to &lt;em&gt;guess&lt;/em&gt;.  To solve it, I had to go open-loop.  To solve it, I had to &lt;em&gt;assume&lt;/em&gt; that I had found the cause, without being sure.  As a result, I am not certain that I have actually solved the problem.  It may be that a day or a year from now that acceptance test will fail again; and I&amp;#8217;ll be back scratching my head and debugging.&lt;/p&gt;


	&lt;p&gt;(sigh).&lt;/p&gt;</description>
      <pubDate>Thu, 13 Aug 2009 13:56:12 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:77d9e018-e6ae-4c00-9b91-223870f3b2b4</guid>
      <author>Uncle Bob</author>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by  Polo Ralph Lauren Pas Cher</title>
      <description>&lt;p&gt;Thanks for this beautiful website. I have enjoyed reading through a few of the articles.&lt;/p&gt;</description>
      <pubDate>Thu, 12 Jan 2012 20:01:37 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:cd7394cc-e83b-4d17-81d9-f109f229eab4</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-197497</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by cheap gucci</title>
      <description>&lt;p&gt;, often large drops of perspiration extract  &lt;b&gt;&lt;a href="http://www.newjordanreleasedates2011.com/" rel="nofollow"&gt;jordan release dates 2011&lt;/a&gt;&lt;/b&gt; . Arms, neck pain is &lt;b&gt;&lt;a href="http://www.newjordanreleasedates2011.com/air-jordan-6-C10.html" rel="nofollow"&gt;jordan 6&lt;/a&gt;&lt;/b&gt; often &lt;b&gt;&lt;a href="http://www.newjordanreleasedates2011.com/air-jordan-5-C9.html" rel="nofollow"&gt;air jordan 5&lt;/a&gt;&lt;/b&gt; so tired already, but &lt;b&gt;&lt;a href="http://www.newjordanreleasedates2011.com/air-jordan-3-C6.html" rel="nofollow"&gt;jordan 3&lt;/a&gt;&lt;/b&gt; &lt;b&gt;&lt;a href="http://www.newjordanreleasedates2011.com/air-jordan-2-C4.html" rel="nofollow"&gt;air jordan 2011&lt;/a&gt;&lt;/b&gt; a fe&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sat, 26 Nov 2011 03:45:08 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:60c35c15-c79d-41a3-b8c3-e74cf5bc3274</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-178647</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by christian louboutin</title>
      <description>&lt;p&gt;The professional design make you foot more comfortable. Even more tantalizing,this pattern make your legs look as long as you can,it will make you looked more attractive.Moveover,it has reasonable price.If you are a popular woman,do not miss it.&lt;/p&gt;


	&lt;p&gt;Technical details of Christian Louboutin Velours Scrunch Suede Boots Coffee:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;Color: Coffee
Material: Suede
4(100mm) heel
Signature red sole x&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Fashion, delicate, luxurious Christian louboutins shoes on sale, one of its series is Christian Louboutin Tall Boots, is urbanism collocation. This Christian louboutins shoes design makes people new and refreshing. Red soles shoes is personality, your charm will be wonderful performance.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Nov 2011 09:01:29 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:52e623bd-f53f-40e8-abff-a9fbb64d77a0</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-170592</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Dr.Dre Casque</title>
      <description>&lt;p&gt;They actual beats through &lt;a href="http://www.casque-beatsbydre-france.fr/casque-beats-de-drdre-solo-hd-avec-controltalk-graphite-p-264.html" rel="nofollow"&gt;Beats de Dr.Dre Solo HD Graphite&lt;/a&gt;provide a classy and cozy pattern also as extraordinarily crispy sound reaction&lt;a href="http://www.casque-beatsbydre-france.fr/casque-dr-dre-beats-solo-onear-avec-controltalk-noir-p-261.html" rel="nofollow"&gt;beats by dre Solo Noir&lt;/a&gt;. &lt;a href="http://www.casque-beatsbydre-france.fr/couteurs-justbeats-solo-pourpre-onear-avec-controltalk-p-268.html" rel="nofollow"&gt;beats by dre Solo pourpre&lt;/a&gt;top of the range related to audio is balanced, in conjunction with snug mids and conjointly walloping striped bass&lt;a href="http://www.casque-beatsbydre-france.fr/casque-drdre-justbeats-studio-pourpre-dition-limite-p-267.html" rel="nofollow"&gt;beats by dre Studio Pourpre&lt;/a&gt;. &lt;a href="http://www.cheap-beatsbydre-us.com/beatsbydrdrestudioheadphoneslimitededitionpink-p-101.html" rel="nofollow"&gt;Beats By Dre Studio Pink&lt;/a&gt;Provided completely are a nice travel case also as a brand new music-telephone-compatible cable&lt;a href="http://www.cheap-beatsbydre-us.com/beatsbydrdrestudiomichaeljacksonlimitededitionheadphones-p-112.html" rel="nofollow"&gt;Beats By Dre Studio Michael Jackson&lt;/a&gt;. the actual Beast Conquer headphones couldn&#8217;t be taken devoid of battery power&lt;a href="http://www.cheap-beatsbydre-us.com/beatsbydrdrestudioferrarilimitededitionheadphonesyellow-p-109.html" rel="nofollow"&gt;Beats By Dre Studio Yellow&lt;/a&gt;. &lt;a href="http://www.cheap-beatsbydre-us.com/beatsbydrdrestudioferrarilimitededitionheadphonesallred-p-108.html" rel="nofollow"&gt;Beats By Dre Studio All Red&lt;/a&gt;Polished African yank style and elegance is quite smudge-prone,&lt;a href="http://www.beatsbydrdre-auriculares.es/-p-256.html" rel="nofollow"&gt;beats by dre Pro Blanco&lt;/a&gt; and a few songs sound unpleasant. Right dr dre headphones rattles whereas you go. &lt;a href="http://www.beatsbydrdre-auriculares.es/-p-257.html" rel="nofollow"&gt;beats by dre Studio Morados&lt;/a&gt;You&#8217;re initial and trendy Huge Surpasses by means of Medical skilled. Dre earphones turn out stable sound, helpful add-ons, and conjointly a look that is not at all imitator.&lt;a href="http://www.beatsbydrdre-auriculares.es/-p-255.html" rel="nofollow"&gt;beats by dre LeBron James pro mate&lt;/a&gt; relating to fashion-frontward folks that have make the most acquire in order that you&#8217;ll spare,&lt;a href="http://www.beatsbydrdre-auriculares.es/-p-254.html" rel="nofollow"&gt;beats by dre Studio Blanco&lt;/a&gt; they&#8217;re fantastic alternative.&lt;/p&gt;</description>
      <pubDate>Tue, 08 Nov 2011 19:36:35 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:37c98f0e-e954-4c61-b117-2d892d59d17f</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-170082</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Tips For Bowling</title>
      <description>&lt;p&gt;No, there&amp;#8217;s not much competition between puppeteers in general because everybody&amp;#8217;s working their own style.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Oct 2011 12:25:31 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:207a062a-5128-47bd-bda9-a72afbf8c039</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-159093</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by shanewatson404@gmail.com</title>
      <description>&lt;p&gt;Wow, this is  really superb info is visible in this blog &lt;a href="http://directorofoperationsjobdescription.com/" rel="nofollow"&gt;Director of Operations Job Description&lt;/a&gt; that to amazing &lt;a href="http://jobdescriptionforaccounting.com/" rel="nofollow"&gt;Accounting Job Description&lt;/a&gt; technology and using the wonderful messages for this website. I was searching the great info and providing the nice info in this blog and read &lt;a href="http://jobdescriptionforgraphicdesigner.com/" rel="nofollow"&gt;Graphic Designer Job Description&lt;/a&gt; this info you &lt;a href="http://jobdescriptionforlegalassistant.com/" rel="nofollow"&gt;Legal Assistant Job Description&lt;/a&gt; can never forget this info&lt;/p&gt;</description>
      <pubDate>Sat, 01 Oct 2011 01:01:52 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:086bcd1e-ba52-430d-9646-060f2312457c</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-148832</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by best sleep aid</title>
      <description>&lt;p&gt;When I at first left a comment I clicked the &amp;#8220;Notify me when new comments are added&amp;#8221; checkbox and now each time a comment is added I get three notification emails with the same comment. Is there any way you can take away people from that service? Thanks a lot!&lt;/p&gt;</description>
      <pubDate>Fri, 30 Sep 2011 13:30:16 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9cbc298c-49a7-43ae-b8bd-0f40a2e5c9b5</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-148645</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by DR OZ african Mango </title>
      <description>&lt;p&gt;Corporations are challenging existing business models as they seek ways to speed innovation, focus on their core competencies, and scale to capitalize on opportunities and outpace competitors.&lt;/p&gt;</description>
      <pubDate>Tue, 27 Sep 2011 11:45:47 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d24814dc-e8df-480d-baf3-7198cbb8f93b</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-146158</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Bowtrol</title>
      <description>&lt;p&gt;it needs a bokmark so i can come back to it later ,nice stuff&lt;/p&gt;</description>
      <pubDate>Mon, 08 Aug 2011 15:49:44 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c8373d6d-9b41-45d1-91fb-da65789b10a6</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-125710</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by adres zoeken op naam</title>
      <description>&lt;p&gt;Thanks for this one!&lt;/p&gt;</description>
      <pubDate>Tue, 02 Aug 2011 18:06:17 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6a289f06-ed72-4461-81ac-fb836d6f9d3f</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-123148</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Christian louboutin shoes on sale</title>
      <description>&lt;p&gt;What a wonderful article!
And are doing well on the whole, but their work also has shortcomings.&lt;/p&gt;</description>
      <pubDate>Fri, 10 Jun 2011 21:23:21 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7e672a87-5899-426d-8315-c91ba57e42c7</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-109858</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by beats by dr dre headphones</title>
      <description>&lt;p&gt;I attempted these &lt;a href="http://www.drebeatsstudio.com/beats-by-dr-dre-studio-c-3.html" rel="nofollow"&gt;Beats by dr dre studio&lt;/a&gt; out in several genres thinking about which i listen to an eclectic mix &lt;a href="http://www.drebeatsstudio.com/beats-by-dr-dre-solo-c-5.html" rel="nofollow"&gt;Beats by dr dre solo&lt;/a&gt;. A all natural suit With Solos, you really feel the music, not the &lt;a href="http://www.drebeatsstudio.com/monster-beats-by-dr-dre-pro-headphones-black-p-15.html" rel="nofollow"&gt;Monster Beats By Dr. Dre Pro Headphones Black&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Jun 2011 21:03:06 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d0748bbd-f74e-4e2d-beef-4085af7be17d</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-109193</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by okey oyunu oyna </title>
      <description>&lt;p&gt;informative article. Thanks&lt;/p&gt;


	&lt;p&gt;internette g&#246;r&#252;nt&#252;l&#252; olarak &lt;a href="http://www.okeyoyunu-oyna.com" rel="nofollow"&gt;okey oyunu oyna&lt;/a&gt;, ger&#231;ek kisilerle tanis,
 turnuva heyecanini yasa.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Apr 2011 15:31:33 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:88e5e6fd-81f6-4f67-a118-17b369f48118</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-92803</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by dswehfhh</title>
      <description>&lt;p&gt;We are the professional &lt;a href="http://www.china-clothing-manufacturer.com/shirts.html" rel="nofollow"&gt;shirts manufacturer&lt;/a&gt;, &lt;a href="http://www.china-clothing-manufacturer.com/shirts.html" rel="nofollow"&gt;shirts supplier&lt;/a&gt;, &lt;a href="http://www.china-clothing-manufacturer.com/shirts.html" rel="nofollow"&gt;shirts factory&lt;/a&gt;, &lt;a href="http://www.china-clothing-manufacturer.com/shirts.html" rel="nofollow"&gt;custom shirts&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Mar 2011 13:45:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:59c08196-57fb-4cd7-bb09-39115edd1131</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-71059</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by mobile screening equipment</title>
      <description>&lt;p&gt;KEESTRACK?manufacturing expert of mobile crusher and mobile screening equipment. Company engaged in the research &amp;#38; development, manufacture, sales of track screening machine,mobile screening,cone crusher,jaw crusher,impact crusher,mobile screening equipment,mobile crushing equipment, till now we are proud to say we are at front of the industry.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:37:09 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8fee6b08-1a5a-4856-9576-c6a788eb42f9</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-67602</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by massager</title>
      <description>&lt;p&gt;Your site is amazing.I am very impressed to see this,i want to come back for visiting your site.Keep doing Good as well as you can.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:35:20 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:2ea6b092-9f81-40e8-88cb-9f201e43d240</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-67595</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by mechanical Seal</title>
      <description>&lt;p&gt;Thanks for writing this blog post, it was informative, enjoyable, and most importantly &amp;#8211; a good length!&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:30:27 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f4762efa-15ec-4bdf-8825-3df64af1b292</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-67570</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Silicone Molding</title>
      <description>&lt;p&gt;&lt;a href="http://www.taiwanmoldmaker.com/service-mold-maker.html" rel="nofollow"&gt;Mold making&lt;/a&gt; is the core business of Intertech (Taiwan).  With world level technology,  
Intertech enjoys a very good reputation for making &lt;a href="http://www.taiwanmoldmaker.com/service-injection-mold.html" rel="nofollow"&gt;Injection Mold&lt;/a&gt; and 
&lt;a href="http://www.taiwanmoldmaker.com/service-plastic-mold.html" rel="nofollow"&gt;Plastic Molds&lt;/a&gt;for their worldwide customers.&lt;/p&gt;</description>
      <pubDate>Wed, 29 Dec 2010 21:14:56 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:81687622-5e19-4840-a6b8-31ca125222df</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-53024</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by ???? ??????</title>
      <description>&lt;p&gt;Appreciate your unusual and at the same time creative way of writing, this means much!&lt;/p&gt;</description>
      <pubDate>Wed, 15 Dec 2010 08:08:15 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ddee3254-5eb6-46e5-ae50-e3b5be649a59</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-49207</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Pandora </title>
      <description>&lt;p&gt;with their own execution of SuiteSetUp and SuiteTearDown.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Dec 2010 01:45:46 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:331d8471-8438-4fa0-8016-6512cc2b88dd</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-45176</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by moncler</title>
      <description>&lt;p&gt;Very few has the knack of writing such beautiful post like you do.. !!&lt;a href="http://www.monclerjacketssaleshop.com/mens-moncler-jackets" rel="nofollow"&gt;moncler mens&lt;/a&gt;  I have been following this blog and i feel different energy while reading your post. Keep it dear buddy.. !!&lt;a href="http://www.monclerjacketssaleshop.com/womens-moncler-jackets" rel="nofollow"&gt;moncler women&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 27 Nov 2010 01:18:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7ee530cc-ec26-4571-8714-b70ea9b5f169</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-43443</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Dog bark collar</title>
      <description>&lt;p&gt;The HashSet implementation can change in the future, or some one else can change the HashSet implementation and the test start to fail random again.&lt;/p&gt;</description>
      <pubDate>Fri, 26 Nov 2010 09:17:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:cfcacbf6-678c-41f9-91ba-3c6ad0e26726</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-43334</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by Designer Bags</title>
      <description>&lt;p&gt;Awesome topic.Thanks for sharing!&lt;/p&gt;</description>
      <pubDate>Sat, 13 Nov 2010 23:41:16 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:afaa99ee-942f-4e8e-81cc-c44d65a8ed6d</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-40312</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by supplynflshop</title>
      <description>&lt;p&gt;Originally, the word emblem meant &#8220;inlaid ornamental work,&#8221; that is &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;Wholesale NFL Jerseys&lt;/a&gt;, a&lt;/p&gt;


	&lt;p&gt;symbol of something else &#8211; in this case, that of wealth, because of the time and skill required to do it . Badge probably became&lt;/p&gt;


	&lt;p&gt;synonymous with emblem in the 15th century &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;Cheap NFL Jerseys&lt;/a&gt;. Decal, an abbreviated version of&lt;/p&gt;


	&lt;p&gt;&#8220;decalcomania,&#8221;a French word that came into use in the early 20th century referred to the English practice of &#8220;transfer printing&#8221;&lt;/p&gt;


	&lt;p&gt;invented in the 18th century. This process transferred the ink from a design or drawing to the glass or porcelain when it was fired in the&lt;/p&gt;


	&lt;p&gt;kiln &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;NFL Jerseys&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 31 Aug 2010 22:14:52 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:0664393f-cf1b-4a47-a8e5-87200c716ae2</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-23458</link>
    </item>
    <item>
      <title>"To Test The Untestable Bug." by FLV to ipad converter</title>
      <description>&lt;p&gt;you can have a try&lt;/p&gt;</description>
      <pubDate>Fri, 16 Apr 2010 03:57:18 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ddf022e3-b6b1-48f6-a2c9-1bf9ae4d6cae</guid>
      <link>http://blog.objectmentor.com/articles/2009/08/13/to-test-the-untestable-bug#comment-10023</link>
    </item>
  </channel>
</rss>

