<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6804036780515725107</id><updated>2012-02-16T00:24:30.648-08:00</updated><category term='mobile'/><category term='advisory'/><category term='cloud computing'/><category term='tool'/><category term='bugs'/><category term='security'/><category term='USB 3.0'/><category term='hall of fame'/><category term='stress testing'/><category term='MBT'/><category term='firefox addons'/><category term='deploystudio'/><category term='webOS'/><category term='browsers'/><category term='tip'/><category term='compatibility'/><category term='iPhone'/><category term='KDT'/><category term='automated testing'/><category term='load testing'/><category term='statistics'/><category term='test theory'/><category term='management'/><category term='OS'/><category term='.NET'/><category term='HOWTO'/><title type='text'>got bugs?</title><subtitle type='html'>Sharing Software Testing Tips, Techniques &amp;amp; Advice.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default?start-index=101&amp;max-results=100'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>203</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4992169999030597802</id><published>2011-11-15T18:47:00.001-08:00</published><updated>2011-11-15T18:47:56.369-08:00</updated><title type='text'>Using Charles For Throttling Bandwidth During Load Testing Using JMeter</title><content type='html'>&lt;a href="http://astore.amazon.com/testlabscom-20/detail/1847192955" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 121px; height: 150px;" src="http://ecx.images-amazon.com/images/I/51l5Z2hXYIL._SL210_.jpg" alt="" border="0" /&gt;&lt;/a&gt;Whenever I've been asked to do load testing for internet-connected apps, I've usually needed to simulate several lower speed internet connections.  An example of this was the need to simulate the connections between classroom computers and web servers hosted at a school district.  In some cases those connections were T-1 speeds and in others the connection speed was that of an ISDN connection.  I needed to simulate all these speeds, along with 10BaseT/100BaseT connections.  Rather than employ an expensive hardware solution, I opted to use &lt;a href="http://www.charlesproxy.com/index.php"&gt;Charles&lt;/a&gt;, an HTTP proxy / HTTP monitor / Reverse Proxy.&lt;br /&gt;&lt;br /&gt;Charles can be used to adjust the bandwidth and latency of an internet connection, which enables you to simulate lower speed conditions using a high-speed connection. The bandwidth may be throttled to any arbitrary bytes per second. This enables any connection speed to be simulated. Latency may also be set to any arbitrary number of milliseconds. The latency delay simulates the latency experienced on slower connections, that is the delay between making a request and the request being received at the other end.&lt;br /&gt;&lt;br /&gt;Here are the steps we used to throttle connection speeds between each JMeter server and the target server under load:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install and launch Charles on a separate computer, i.e. not the JMeter server or target server.&lt;/li&gt;&lt;li&gt;Choose Proxy menu -&amp;gt; Throttle settings and Check Enable&lt;/li&gt;&lt;li&gt;Select the desired connection speed.  If you need a speed greater than 256kbps, select 256K ISDN/DSL from the list, since it's the fastest connection available, and change the Download and Upload bandwidth (kbps) to the desired speed, e.g. 1500 for T-1.&lt;/li&gt;&lt;li&gt;Press OK&lt;/li&gt;&lt;li&gt;Disable Recording and Caching&lt;/li&gt;&lt;li&gt;Setup &lt;a href="http://www.charlesproxy.com/wiki/reverse_proxy"&gt;Reverse Proxy&lt;/a&gt; so that the JMeter servers point to the bandwidth throttle computer and the bandwidth throttle computer points to the target server under load&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4992169999030597802?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4992169999030597802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4992169999030597802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4992169999030597802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4992169999030597802'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/11/using-charles-for-throttling-bandwidth.html' title='Using Charles For Throttling Bandwidth During Load Testing Using JMeter'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4265983769348385582</id><published>2011-11-15T18:46:00.001-08:00</published><updated>2011-11-15T18:46:38.295-08:00</updated><title type='text'>Testing on Agile Projects</title><content type='html'>Do agile projects become the brunt of cubicle Dilbert jokes? Scott Ambler confronts Scott Adams.&lt;br /&gt;&lt;br /&gt;Agile projects are both interesting and challenging, especially for testers.  Too often these projects and their processes are misunderstood or misapplied.   What's most uncomfortable to testers is what appears to be a complete abandonment of any sort of serial testing flow.Moreover, the lack of upfront specifications for all features and functionality seems to be a complete affront to not only testing best practices but also common sense.  Suffice it to say that a lot is misunderstood about Agile testing.&lt;br /&gt;&lt;br /&gt;Unfortunately this misunderstanding of what can be an effective development and testing process ends up being the brunt of cubicle jokes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://astore.amazon.com/testlabscom-20/detail/0740777351" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5306821750462916322" src="http://3.bp.blogspot.com/_gLElEG-fSJ0/SaWeQ-qopuI/AAAAAAAAAKo/Qr2hAIKhVsE/s400/dilbert-agile_programming.gif" style="cursor: pointer; display: block; height: 139px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I wouldn't say that testers assigned to agile projects see things as comically as &lt;a href="http://www.amazon.com/Dilbert-2-0-20-Years/dp/0740777351?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Dilbert&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0740777351" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;, but it can be confusing for testers if the development processes don't include them. For this very reason, and based on some past experience, I was happy to find an article, titled &lt;a href="http://www.ddj.com/development-tools/196603549?pgno=1"&gt;Agile Testing Strategies&lt;/a&gt;, that spoke to agile testing specifically.  Of all the articles I've read on agile development, this one made the most sense to me as a tester.&lt;br /&gt;&lt;br /&gt;The author, Scott Ambler, does a great job of relating agile practices to testing and breaks down this subject into 5 parts:&lt;a href="http://4.bp.blogspot.com/_gLElEG-fSJ0/SaWqIpr6rxI/AAAAAAAAALA/_CozCwsQq5c/s1600-h/agile-testing-book.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/196603549?pgno=1"&gt;Philosophical Groundwork&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/196603549?pgno=2"&gt;Testing Throughout the Lifecycle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/196603549?pgno=3"&gt;Testing During a Construction Iteration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/196603549?pgno=4"&gt;Investigative Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ddj.com/development-tools/196603549?pgno=5"&gt;Quality Is Job #1&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;This is a good read and reference document for any tester trying to make sense of their agile development process.  I believe that if you spend the time needed to begin to understand the agile process and use Scott's advice and testing process overlays, you'll be able to not only understand your role as an agile tester, but graduate to driving the agile testing strategies for your projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4265983769348385582?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4265983769348385582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4265983769348385582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4265983769348385582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4265983769348385582'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/11/testing-on-agile-projects.html' title='Testing on Agile Projects'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gLElEG-fSJ0/SaWeQ-qopuI/AAAAAAAAAKo/Qr2hAIKhVsE/s72-c/dilbert-agile_programming.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5534363941836822548</id><published>2011-11-15T18:45:00.000-08:00</published><updated>2011-11-15T18:46:00.604-08:00</updated><title type='text'>Top 25 list of software errors</title><content type='html'>It certainly helps the software testing and QA community when the NSA and the Director of National Intelligence highlight the Top 25 bugs.  This list, which resides on the &lt;a href="http://cwe.mitre.org/top25/#Brief"&gt;Common Weakness Enumeration (CWE) website&lt;/a&gt;, fully describes each error in an understandable taxonomy.  My favorite reference to this list comes from an &lt;a href="http://www.networkworld.com/news/2009/011209-software-security-effort.html"&gt;article on Network World's website&lt;/a&gt;: "&lt;span style="font-style: italic;"&gt;Will the Top 25 worst software errors list released Monday be able to rescue customers from rotten software?"&lt;/span&gt; It's a good question for software developers and testers to consider. We'd certainly view this list as a starting point for any security testing project.  For a complete list of the Top 25 sofware errors, read more at the jump...&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Software security&lt;/span&gt;&lt;br /&gt;The Top 25 programming errors&lt;br /&gt;1.  Improper input validation&lt;br /&gt;2.  Improper encoding or escaping of output&lt;br /&gt;3.  Failure to preserve SQL query structure (SQL injection)&lt;br /&gt;4.  Failure to preserve Web page structure (cross-site scripting)&lt;br /&gt;5.  Failure to preserve operating system command structure (OS command injection)&lt;br /&gt;6.  Cleartext transmission of sensitive information&lt;br /&gt;7.  Cross-site request forgery&lt;br /&gt;8.  Race condition&lt;br /&gt;9.  Error message information leak&lt;br /&gt;10.  Failure to constrain operations within the bounds of a memory buffer&lt;br /&gt;11.  External control of critical state data&lt;br /&gt;12.  External control of file name or path&lt;br /&gt;13.  Untrusted search path&lt;br /&gt;14.  Failure to control generation of code (code injection)&lt;br /&gt;15.  Download of code without integrity check&lt;br /&gt;16.  Improper resource shutdown or release&lt;br /&gt;17.  Improper initialization&lt;br /&gt;18.  Incorrect calculation&lt;br /&gt;19.  Porous defenses&lt;br /&gt;20.  Use of a broken or risky cryptographic algorithm&lt;br /&gt;21.  Hard-coded password&lt;br /&gt;22.  Insecure permission assignment for critical resource&lt;br /&gt;23.  Use of insufficiently random values&lt;br /&gt;24.  Execution with unnecessary privileges&lt;br /&gt;25.  Client-side enforcement of server-side security&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5534363941836822548?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5534363941836822548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5534363941836822548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5534363941836822548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5534363941836822548'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/11/top-25-list-of-software-errors.html' title='Top 25 list of software errors'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-9092455107829716839</id><published>2011-11-15T07:00:00.000-08:00</published><updated>2011-11-15T19:09:02.973-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Is It Possible To Achieve 99% Cumulative Defect Removal Efficiency?</title><content type='html'>I'm finding that many articles on testing continue to be pessimistic about outcomes.  Furthermore, they contribute to the idea that "you can't get there from here" - you'll never find all the bugs so quit trying to use engineering rigor and metrics.  In our recent article, &lt;a href="http://got-bugs.blogspot.com/2009/08/how-important-is-coverage-when-testing.html" target="_blank"&gt;How Important Is Coverage When Testing Software?&lt;/a&gt;, the experts that were interviewed, in answering the question "When is testing done?", gave answers such as "never", "two months after development is done", and "when producers decide". I get what they are all saying and actually agree with them on some levels.  But I'd rather see conversations like this address continuous process improvement and not tend towards capitulation.  Indeed, the practical should win over the theoretical, but without discussions in the theoretical realm, we really can't advance that which we do as testers.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/-jvyQtUVmKok/TqGmGzzfllI/AAAAAAAAAG0/q5TL51XH56Q/s320/defect-removal-efficiency.gif" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 255px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5665992442124408402" /&gt;And there's research that supports this pessimistic view.  &lt;span id="fullpost"&gt;In fact, most forms of testing are not very efficient, and find only about 25% to 40% of the bugs that are actually present[1]. No wonder the experts from the article mentioned above, when asked when testing is done, answered never.  But what we're missing here is the investigation of "most forms of testing."  What is that?  Well it must be what we're doing if we all somehow agree that you can't find all the bugs in a product.  The important thing is, that no matter how you attempt to answer this question, it's not something we want to reinforce! The question to ask (and answer) is "What other forms of testing must we do in order to find ALL the bugs in a product?" As it turns out, there are folks that spend time trying to answer that question.&lt;br /&gt;&lt;blockquote&gt;Defect removal efficiency originated in IBM in the early 1970’s as a method for evaluating testing effectiveness. Because this metric provided information that could be used for inspections and static analysis, as well as testing, it has become a general way of measuring the relative effectiveness of all forms of defect removal activity. Recent findings by companies such as IBM, Coverity, and Dovél Technologies show removal efficiency levels that often top 96%.&lt;/blockquote&gt;96% removal efficiency?  Really?  Yes, and there are expectations that defect removal efficiency can approach 99%.  Now we're talking quality.  How is this being done, i.e. what other forms of testing are being done to achieve this?  As it turns out, there's no silver bullet.  But there is an engineering process that contributes to this - coverage is expanded through different defect prevention and detection tests types.  Here's the list of what those are:[2]&lt;br /&gt;&lt;ol&gt;&lt;li&gt;unit test&lt;/li&gt;&lt;li&gt;new function test&lt;/li&gt;&lt;li&gt;regression test&lt;/li&gt;&lt;li&gt;performance test&lt;/li&gt;&lt;li&gt;security test&lt;/li&gt;&lt;li&gt;usability test&lt;/li&gt;&lt;li&gt;system test&lt;/li&gt;&lt;li&gt;some form of external test with customers or clients, such as Beta test or acceptance test&lt;/li&gt;&lt;/ol&gt;The reason I say there's no silver bullet is because these are not new test types.  The question "What other forms of testing are being done to achieve this?" I posed earlier was not about new forms of testing, but about combinations of testing types. The above tells me that, if you're not performing all of these tests, you have holes in your coverage and can expect to find less defects. What, then, keeps us from doing all these tests?&lt;br /&gt;&lt;br /&gt;If you want to find out more, check out the article &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B2JCOTKna3e5OWRhN2JjMTktMWYxMC00MDhkLWI1ODAtYjg1ZTEyZDY1ODBk&amp;amp;hl=en_US" target="_blank"&gt;Predicting Test Cases and Test Team Size&lt;/a&gt;, by Capers Jones, President, Capers Jones &amp;amp; Associates LLC.&lt;br /&gt;&lt;br /&gt;[1]  &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B2JCOTKna3e5OWRhN2JjMTktMWYxMC00MDhkLWI1ODAtYjg1ZTEyZDY1ODBk&amp;amp;hl=en_US" target="_blank"&gt;Predicting Test Cases and Test Team Size&lt;/a&gt;, by Capers Jones&lt;br /&gt;[2] ibid&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-9092455107829716839?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/9092455107829716839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=9092455107829716839' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/9092455107829716839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/9092455107829716839'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/09/is-it-possible-to-achieve-99-cumulative.html' title='Is It Possible To Achieve 99% Cumulative Defect Removal Efficiency?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jvyQtUVmKok/TqGmGzzfllI/AAAAAAAAAG0/q5TL51XH56Q/s72-c/defect-removal-efficiency.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3399690778648837079</id><published>2011-11-15T06:00:00.000-08:00</published><updated>2011-11-15T19:09:31.503-08:00</updated><title type='text'>Selenium+ Fitnesse: A QA Multiplier</title><content type='html'>If you're interested in how to use domain-specific language (DSL) for creating easy to read test cases, then take a look at a demo Matt Krapivner and I did at Sauce Labs last year. We used a framework called Fitnesse in combination with Selenium to create a DSL for testing the Shutterfly web site.&lt;br /&gt;&lt;br /&gt;&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/0l7Q6BwBXLE?rel=0" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/Pfh-3TaYjrg" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3399690778648837079?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3399690778648837079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3399690778648837079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3399690778648837079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3399690778648837079'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/11/selenium-fitnesse-qa-multiplier.html' title='Selenium+ Fitnesse: A QA Multiplier'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/0l7Q6BwBXLE/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5451879832539781321</id><published>2011-10-20T08:00:00.000-07:00</published><updated>2011-10-21T10:03:43.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Does Quality Matter To You?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;Why Don’t Customers Seem to Care About Quality?&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;We once had an experience with a large printing service that brought into question quality.  We had requested that a print job be completed in a very short amount of time, to which we were asked "Does quality matter to you?".  I suppose they were asking if we would be interested in trading quality for time.  We were not.  Quality did matter to us.  Perhaps this printing service had  customers that were not so interested in quality.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;So, are there software customers out there that don't seem to care about quality? The answer is &lt;span id="fullpost"&gt;YES if  you subscribe to what Watts Humphrey has to say about software quality.  He says software customers don't seem to care about quality because "defective software works." [1].  How about that!  So, as testers, should we care if customers don't seem to?  Well the answers is that we do care and, in fact, it's because we do care that we create this entity that both works and is defective.  How can this be?  Well it's because of our use of models in the development of our testing coverage.  Our "use models" are defined by our best guess as to how users will use our software.  And because we generally guess well when creating our use models, and consequently test well against these models, the end product works.  So, why does Watts then say it's "defective"?  It's because the software works within the scope of the expected use models, or as Watts calls it, the "testing footprint." [2]  The diagram below shows what this footprint looks like:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="fullpost"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SdGLNgsvuFI/AAAAAAAAAFY/4G3fIiU7T3w/s1600-h/testing-footprint.jpeg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 239px;" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SdGLNgsvuFI/AAAAAAAAAFY/4G3fIiU7T3w/s400/testing-footprint.jpeg" alt="" id="BLOGGER_PHOTO_ID_5319185699133438034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The yellow area is what we don't know about new uses for the software we develop, and the green is what we know or think we know about how our software will be used. Combined, they create this somewhat schizophrenic entity - "defective software that works."  Users that stay within the use model will find that the software works, while users who start thinking of new ways to use the software will probably encounter serious problems.&lt;br /&gt;&lt;br /&gt;A good example of "defective software that works" is manifest in contemporary security vulnerabilities.  When forum software first came out, it was probably tested to ensure that the insertion of html code would work so that people could insert URL links.  However, the use models used for development and testing (at the time) did not envision "new uses" for embedded html - cross site scripting or XSS.  However, once that use model was considered, the testing footprint expanded to account for XSS.&lt;br /&gt;&lt;br /&gt;Is there a solution to this dilemma?  Do we just try harder? Well, if you read more about what Watts has to say about Quality, he doesn't sound all that optimistic and forewarns that "it will take a severe, disruptive, and highly public software failure to get people concerned about software quality.” [2] He believes that with this new concern will  come the need for a change in our attitudes towards Quality.  That may seem a little weak if you are looking for a "silver bullet" fix, but if trying harder isn't going to make a difference, then a wholesale change of how we develop and test software is probably needed.  And the only way we are going to radically change our current software development processes is with a new attitude that begins with the belief that defect-free software is possible.&lt;br /&gt;&lt;br /&gt;[1] Humphrey, W., “The Quality Attitude”,news@sei newsletter, Number 3, 2004.&lt;br /&gt;[2] Humphrey, W., “Defective Software Works”, news@sei newsletter, Number 1, 2004.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5451879832539781321?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5451879832539781321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5451879832539781321' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5451879832539781321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5451879832539781321'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/03/does-quality-matter-to-you.html' title='Does Quality Matter To You?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SdGLNgsvuFI/AAAAAAAAAFY/4G3fIiU7T3w/s72-c/testing-footprint.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5932104538953407672</id><published>2011-09-15T18:49:00.000-07:00</published><updated>2011-11-15T19:10:09.532-08:00</updated><title type='text'>Tips and Techniques for Using Apache JMeter for Load Testing</title><content type='html'>&lt;a href="http://www.amazon.com/Apache-JMeter-practical-performance-measurement/dp/1847192955?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img alt="Apache JMeter: A practical beginner's guide to automated testing and performance measurement for your websites" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=1847192955&amp;amp;tag=testlabscom-20" /&gt;&lt;/a&gt;Apache JMeter&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1847192955" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt; is a great tool for load testing and we use it  for LAN-based products as well as web sites and hosted services. And lately we've used it in conjunction with Amazon's Elastic Cloud Compute (EC2) service.  Along the way, we've collected a number of tips and techniques that are sometime difficult to find in the documentation.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's a list of changes that we've found to be necessary each time we use jmeter:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Change Memory Settings&lt;/span&gt;&lt;br /&gt;The default memory settings are too low need to be increased to the maximum memory available.  To do this:&lt;br /&gt;&lt;br /&gt;1. Navigate to jmeter/bin.&lt;br /&gt;2. Edit jmeter (Linux command-line: "pico jmeter", Windows: open jmeter.bat with wordpad)&lt;br /&gt;3. Scroll to the line that reads: HEAP="-Xms256m -Xmx256"&lt;br /&gt;4. Change the numbers to meet your system specs (first number is the minimum, second maximum). For example: HEAP="-Xms1024m -Xmx1024"&lt;br /&gt;5. Save changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Retries &amp;amp; Timeouts&lt;/span&gt;&lt;br /&gt;If you are doing load testing with jmeter, inevitably you'll place enough of a load on your target server that it may have trouble responding.  In order to give the server a chance to respond you may want to change the retries and timeout values.  To do this, edit the jmeter.properties file for retries = 3 and timeout = 120. Be sure to delete the #s at the start of the lines or they will remain commented out.&lt;br /&gt;--Note: The generic HTTP Request does NOT support these features, and the HTTP Request HTTP Client sampler type must be used.&lt;br /&gt;--Note: The HTTP Request HTTP Client sampler does NOT support automatic redirect so be sure to deselect this (its checked by default) when creating the JMeter tests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ports (Windows only)&lt;/span&gt;&lt;br /&gt;If you've ever seen this error message when running jmeter "JMeter Exception: java.net.BindException: Address already in use: connect" you've run out of ports.  To avoid running out of available ports on Windows (and thus seeing a Address Already In Use error), there's a great explanation and solution posted on the &lt;a href="http://twit88.com/blog/"&gt;twit88.com&lt;/a&gt; blog at this &lt;a href="http://twit88.com/blog/2008/07/28/jmeter-exception-javanetbindexception-address-already-in-use-connect/"&gt;article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5932104538953407672?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5932104538953407672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5932104538953407672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5932104538953407672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5932104538953407672'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/11/tips-and-techniques-for-using-apache.html' title='Tips and Techniques for Using Apache JMeter for Load Testing'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8218653760919300778</id><published>2011-06-13T08:00:00.000-07:00</published><updated>2011-06-13T07:47:27.854-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hall of fame'/><title type='text'>Software Testing Hall of Fame: Dr. Boris Beizer</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;We buy their books, memorize their quotes and credit them in our footnotes and bibliographies. Those that we consider experts in the software development and testing field are an important part of our professional lives.  Enjoy this biographical insight into a well known expert and add to your collection of notable quotes.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;In this biographical article I pay homage to my favorite, Dr. Boris Beizer.  I had the good fortune to sit in on one of his lectures right before he retired from the lecture circuit. Dr. Beizer received his PhD in computer science from the University of Pennsylvania in 1966. He has written twelve books, ranging from system architecture to his well-known pair on software testing -- Software Testing Techniques and Software System Testing and Quality Assurance -- both considered standard references on the subject. His latest book is Black Box Testing, an introduction to testing technology. He directed testing for the FAA's Weather Message Switching Center and several other large communications systems. He has been a speaker at many testing conferences and is also known for his seminars on testing. He consults on software testing and quality assurance with many organizations throughout the world.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Beizer's oft-referenced "Bug Taxonomy" is contained in Software Testing Techniques. Although the taxonomy is copyrighted, you can occasionally find it online. &lt;a href="http://c2.com/cgi/wiki?SourcesOfBugs" target="_blank"&gt;See SourcesOfBugs. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are some of his more notable quotes from SoftwareQuotes.com:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255); font-weight: bold;"&gt;"First law: The pesticide paradox. Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffective. "&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- Boris Beizer - Chapter 1, Section 1.7. Boris notes that farmers solve this problem by planting sacrifice crops for the bugs to eat, and laments that programmers are unable to write sacrifice functions., Software testing techniques by Boris Beizer , ISBN: 0442206720&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255); font-weight: bold;"&gt;"More than the act of testing, the act of designing tests is one of the best bug preventers known. The thinking that must be done to create a useful test can discover and eliminate bugs before they are coded - indeed, test-design thinking can discover and eliminate bugs at every stage in the creation of software, from conception to specification, to design, coding and the rest."&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- Boris Beizer - Software Testing Techniques, Creating a Software Engineering Culture by Karl Eugene Wiegers , ISBN: 0932633331 , Page: 211&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255); font-weight: bold;"&gt;"Testing proves a programmer’s failure. Debugging is the programmer’s vindication." &lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-- Boris Beizer, Software testing techniques by Boris Beizer , ISBN: 0442206720&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 255); font-weight: bold;"&gt;“One of the saddest sights to me has always been a human at a keyboard doing something by hand that could be automated. It’s sad but hilarious.” &lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-—Boris Beizer, Black-Box Testing: Techniques for Functional Testing of Software and System&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8218653760919300778?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8218653760919300778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8218653760919300778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8218653760919300778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8218653760919300778'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/05/software-testings-biographies-dr-boris.html' title='Software Testing Hall of Fame: Dr. Boris Beizer'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6696649363095386487</id><published>2011-06-06T08:00:00.000-07:00</published><updated>2011-06-06T07:54:18.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>How Important Is Coverage When Testing Software?</title><content type='html'>I ran across what I thought would be an informative and thought provoking video on software testing coverage.  The title of the video, "When is software testing done?", seemed interesting. And since the video was touted in this way:&lt;br /&gt;&lt;blockquote&gt;Is software testing ever done? Listen to what the industry experts had to say at STARWEST.&lt;/blockquote&gt;I had expected a conversation about the importance of coverage and how to assess defect metrics to determine progress against a coverage model. Instead, I got something that struck me as a pessimistic view of software development that falls short of an engineering endeavor.  Surprisingly, coverage was only mentioned once.  See what you think.&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/u2U9go9E-ec&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/u2U9go9E-ec&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6696649363095386487?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6696649363095386487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6696649363095386487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6696649363095386487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6696649363095386487'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/how-important-is-coverage-when-testing.html' title='How Important Is Coverage When Testing Software?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4106364963553419170</id><published>2011-05-31T08:00:00.000-07:00</published><updated>2011-05-30T20:12:01.125-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><title type='text'>Mathematics Curriculum Meets The "Negroponte Switch"</title><content type='html'>The "Negroponte Switch", attributed to MIT's Nicholas Negroponte, posited that signals that historically traveled by wireless methods (television, for example) would soon be transported by landline technologies, and signals that historically traveled by landline methods (telephone, for example) would soon be transported by wireless technologies. This view is referred to as the Negroponte Switch because it suggests a reversal of traditional signal transport markets.[1] In the video below, Mathematics Professor, Arthur Benjamin, contends that Calculus should not be the pinnacle of our mathematics curriculum, and it should be replaced by statistics and probability.  He makes the interesting point that since the world has changed from analog to digital, so too should our mathematics curriculum.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="bgColor" value="#ffffff"&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/embed/ArthurBenjamin_2009-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ArthurBenjamin-2009.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=587"&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" width="446" height="326" allowfullscreen="true" flashvars="vu=http://video.ted.com/talks/embed/ArthurBenjamin_2009-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ArthurBenjamin-2009.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=587"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://telephonyonline.com/wireless/mag/wireless_flipping_negropontes_switch/"&gt;[1]&lt;/a&gt; David Roddy, &lt;span style="font-style:italic;"&gt;Flipping Negroponte's Switch&lt;/span&gt;, 1/1/1998.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4106364963553419170?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4106364963553419170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4106364963553419170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4106364963553419170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4106364963553419170'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/07/mathematics-curriculum-meets-negroponte.html' title='Mathematics Curriculum Meets The &quot;Negroponte Switch&quot;'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6006641386469882490</id><published>2011-05-23T08:00:00.000-07:00</published><updated>2011-05-22T19:35:55.920-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Keyword-Driven Testing HOWTO Part 4 - Dictionary and Test Case Script</title><content type='html'>This is the final article on keyword-driven testing (KDT).  The previous articles leading up to this one discussed &lt;a href="http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-1.html"&gt;creating a keyword list&lt;/a&gt;, &lt;a href="http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-2.html"&gt;preparing the keyword list for automation&lt;/a&gt;, and, &lt;a href="http://got-bugs.blogspot.com/2009/06/keyword-driven-testing-howto-part-3.html"&gt;test automation "handlers"&lt;/a&gt;&lt;a href="http://blog.testlabs.com/2009/06/keyword-driven-testing-howto-part-3.html"&gt;.&lt;/a&gt;  Today we bring it all together with a final script that contains "handlers" for each keyword in our dictionary, as well as the test cases proposed earlier.  I've implemented this KDT automation engine in AppleScript. The script is organized in two sections.  The test cases themselves are at the top and the  KDT dictionary handlers are below the test cases.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;--Test Case #1&lt;br /&gt;Calculator("Run")&lt;br /&gt;SelectView("Basic")&lt;br /&gt;Calculate("10", "20", "*", "200")&lt;br /&gt;Calculator("Quit")&lt;br /&gt;&lt;br /&gt;--Test Case #2&lt;br /&gt;Calculator("Run")&lt;br /&gt;SelectView("Scientific")&lt;br /&gt;PaperTape("Show")&lt;br /&gt;Calculate("10.234", "20.322", "/", "0.50359216613")&lt;br /&gt;Calculator("Quit")&lt;br /&gt;&lt;br /&gt;--Test Case #3&lt;br /&gt;Calculator("Run")&lt;br /&gt;SelectView("Basic")&lt;br /&gt;PaperTape("Show")&lt;br /&gt;Calculate("10", "20", "*", "200")&lt;br /&gt;WindowMinimize("Calculator", "Minimize")&lt;br /&gt;Calculator("Quit")&lt;br /&gt;&lt;br /&gt;-- Calculator Run|Quit&lt;br /&gt;on Calculator(action)&lt;br /&gt;if action = "Run" then tell application "Calculator" to activate&lt;br /&gt;if action = "Quit" then tell application "Calculator" to quit&lt;br /&gt;delay 1&lt;br /&gt;end Calculator&lt;br /&gt;&lt;br /&gt;-- Select View Basic|Scientific|Programmer&lt;br /&gt;on SelectView(view)&lt;br /&gt;if view = "Basic" then&lt;br /&gt;tell application "System Events"&lt;br /&gt; set frontmost of process "Calculator" to true&lt;br /&gt; click menu item "Basic" of menu 1 of menu bar item "View" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end if&lt;br /&gt;if view = "Scientific" then&lt;br /&gt;tell application "System Events"&lt;br /&gt; set frontmost of process "Calculator" to true&lt;br /&gt; click menu item "Scientific" of menu 1 of menu bar item "View" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end if&lt;br /&gt;if view = "Programmer" then&lt;br /&gt;tell application "System Events"&lt;br /&gt; set frontmost of process "Calculator" to true&lt;br /&gt; click menu item "Programmer" of menu 1 of menu bar item "View" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end if&lt;br /&gt;delay 1&lt;br /&gt;end SelectView&lt;br /&gt;&lt;br /&gt;-- Paper Tape Show|Hide&lt;br /&gt;on PaperTape(mode)&lt;br /&gt;if mode = "Show" then&lt;br /&gt;tell application "System Events"&lt;br /&gt; set frontmost of process "Calculator" to true&lt;br /&gt; click menu item "Show Paper Tape" of menu 1 of menu bar item "View" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end if&lt;br /&gt;if mode = "Hide" then&lt;br /&gt;tell application "System Events"&lt;br /&gt; set frontmost of process "Calculator" to true&lt;br /&gt; click menu item "Hide Paper Tape" of menu 1 of menu bar item "View" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end if&lt;br /&gt;delay 1&lt;br /&gt;end PaperTape&lt;br /&gt;&lt;br /&gt;-- Calculate Operand1,Operand2,Operator,Result&lt;br /&gt;on Calculate(op1, op2, operator, expectedResult)&lt;br /&gt;tell application "System Events"&lt;br /&gt;set frontmost of process "Calculator" to true&lt;br /&gt;keystroke op1&lt;br /&gt;keystroke operator&lt;br /&gt;keystroke op2&lt;br /&gt;keystroke "="&lt;br /&gt;try&lt;br /&gt; set myResult to (get value of static text 1 of group 2 of window "Calculator" of process "Calculator")&lt;br /&gt;end try&lt;br /&gt;try&lt;br /&gt; set myResult to (get value of static text 1 of group 3 of window "Calculator" of process "Calculator")&lt;br /&gt;end try&lt;br /&gt;if expectedResult ≠ myResult then display dialog "Error"&lt;br /&gt;end tell&lt;br /&gt;&lt;br /&gt;end Calculate&lt;br /&gt;&lt;br /&gt;-- Window Calculator|Paper Tape,Minimize|Unminimize&lt;br /&gt;on WindowMinimize(which_window, minimize_state)&lt;br /&gt;tell application "System Events"&lt;br /&gt;set frontmost of process "Calculator" to true&lt;br /&gt;if minimize_state = "Minimize" then click button 3 of window which_window of application process "Calculator"&lt;br /&gt;if ((minimize_state = "Unminimize") and (which_window = "Paper Tape")) then click UI element "Paper Tape" of list 1 of application process "Dock"&lt;br /&gt;if ((minimize_state = "Unminimize") and (which_window = "Calculator")) then click menu item "Calculator" of menu 1 of menu bar item "Window" of menu bar 1 of application process "Calculator"&lt;br /&gt;end tell&lt;br /&gt;end WindowMinimize&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6006641386469882490?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6006641386469882490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6006641386469882490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6006641386469882490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6006641386469882490'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/06/keyword-driven-testing-howto-part-4.html' title='Keyword-Driven Testing HOWTO Part 4 - Dictionary and Test Case Script'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-208027380552783916</id><published>2011-05-16T08:00:00.000-07:00</published><updated>2011-05-16T10:23:59.020-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Keyword-Driven Testing HOWTO Part 3 - Test Automation Engine "Handlers"</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sikfd2J1fAI/AAAAAAAAAQc/y5Pb1nYyYVQ/s1600-h/handler.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 278px;" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sikfd2J1fAI/AAAAAAAAAQc/y5Pb1nYyYVQ/s320/handler.png" alt="" id="BLOGGER_PHOTO_ID_5343837030465240066" border="0" /&gt;&lt;/a&gt;This week's article on KDT introduces a key concept for automating our keywords - handlers.  In the previous article, &lt;a href="http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-2.html"&gt;Keyword-Driven Testing HOWTO Part 2 - Preparing The Keyword List For Automation&lt;/a&gt;, we finalized our keyword list and demonstrated their use in some preliminary test cases. Now we need to begin automating the keywords so that testers can begin writing and executing automated test cases without needing any programming skills.&lt;br /&gt;To refresh our memories, here's the finalized keyword list:&lt;br /&gt;&lt;blockquote&gt;    &lt;span style="font-family:courier new;"&gt;• &lt;span style="font-weight: bold;"&gt;Calculator&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Run|Quit&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    • &lt;span style="font-weight: bold;"&gt;Select&lt;/span&gt; View &lt;span style="font-style: italic;"&gt;Basic|Scientific|Programmer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    • &lt;span style="font-weight: bold;"&gt;Paper Tape&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Show|Hide&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    • &lt;span style="font-weight: bold;"&gt;Calculate&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Operand1,Operand2,Operator,Result&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    • &lt;span style="font-weight: bold;"&gt;Window&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Calculator|Paper Tape,Minimize|Unminimize&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Our job now is to write a handle for each of these keywords so that the test cases we discussed in the previous article, like the one below, will make sense to the automation test engine.&lt;br /&gt;&lt;br /&gt;1. Perform calculation using the Basic calculator without using paper tape.&lt;br /&gt;&lt;ul&gt;&lt;li style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Calculator&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;SelectView&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Basic&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;PaperTape&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Hide&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Calculate&lt;/span&gt; &lt;span style="font-style: italic;"&gt;10,20,X,200 &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;But first we'll need to understand the concept of a handler and what it looks like to program one.  And has I mentioned in the first KDT article, &lt;a href="http://got-bugs.blogspot.com/2009/05/using-keyword-driven-testing-to.html"&gt;Using Keyword-Driven Testing To Understand The Benefits of Model-Based Testing (MBT)&lt;/a&gt;, we're going to program our handlers in AppleScript.  If we had chosen Visual Basic Script or some other language, we would probably implement our handlers as part of a CASE statement.  But for Applescript, handlers are a fundamental part of the language, hence we won't need to add anything to our automation engine to make them work.&lt;br /&gt;&lt;br /&gt;A handler in Applescript, as described in the AppleScript Language guide, is:&lt;br /&gt;&lt;blockquote&gt;"...a collection of statements that can be invoked by name. Handlers are useful in scripts that perform the same action in more than one place. You can package statements that perform a specific task as a handler, give it a descriptive name, and call it from anywhere in the script. This makes the script shorter and easier to maintain. The definition for a handler specifies the parameters it uses, if any."&lt;/blockquote&gt;That's a perfect fit for what we intend to do with KDT:  we're going to refer to things by specific names (our keywords) and, in some case, pass parameters along with the name, e.g. &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Calculator&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/span&gt;.  And what's cool about AppleScript and how it employs handlers, is the way in which you call upon these handlers to do something.  You simply type a handler's name and any parameters and the handler goes to work.  Here's an example of handler that speaks any word you send it:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;on speak(this)&lt;br /&gt; say this&lt;br /&gt;end speak&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;and the way you call upon this handler to do its job is simply:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;speak("Hello")&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; As you can see from this example, the handler's name is "speak" and the parameter you pass it is what you want to have spoken, in this case "Hello".  Here's the Applescript code that includes both the invocation of the handler and the handler itself:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;speak("Ray")&lt;br /&gt;&lt;br /&gt;on speak(this)&lt;br /&gt; say this&lt;br /&gt;end speak&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;So you can think of the "speak" handler as representing a keyword in our KDT dictionary and speak("Ray") as a test case.  In next week's article I'll reveal each AppleScript handler needed for our dictionary and convert the sample test cases to work with the those handlers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-208027380552783916?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/208027380552783916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=208027380552783916' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/208027380552783916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/208027380552783916'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/06/keyword-driven-testing-howto-part-3.html' title='Keyword-Driven Testing HOWTO Part 3 - Test Automation Engine &quot;Handlers&quot;'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Sikfd2J1fAI/AAAAAAAAAQc/y5Pb1nYyYVQ/s72-c/handler.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3674705270554124854</id><published>2011-05-09T08:00:00.000-07:00</published><updated>2011-05-09T07:38:48.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Keyword-Driven Testing HOWTO Part 2 - Preparing The Keyword List For Automation</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/Sh9eCZcCZRI/AAAAAAAAAOs/md0wrnRS3ag/s1600-h/kdt-calculator.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 215px; height: 266px;" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/Sh9eCZcCZRI/AAAAAAAAAOs/md0wrnRS3ag/s400/kdt-calculator.jpg" alt="" id="BLOGGER_PHOTO_ID_5341091078365930770" border="0" /&gt;&lt;/a&gt;In last week's Keyword-Driven Testing (KDT) HOWTO article, &lt;a href="http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-1.html" target="_blank"&gt;Keyword-Driven Testing HOWTO Part 1 - Creating a Keyword List&lt;/a&gt;, we identified the keyword list for testing the &lt;span style="font-weight: bold;"&gt;Mac OS X Calculator&lt;/span&gt;.  The list we came up with was:&lt;ul&gt;&lt;li&gt;Run Calculator&lt;/li&gt;&lt;li&gt;Quit Calculator&lt;/li&gt;&lt;li&gt;Select Basic View&lt;/li&gt;&lt;li&gt;Select Scientific View&lt;/li&gt;&lt;li&gt;Select Programmer View&lt;/li&gt;&lt;li&gt;Show Paper Tape&lt;/li&gt;&lt;li&gt;Hide Paper Tape&lt;/li&gt;&lt;li&gt;Calculate&lt;/li&gt;&lt;li&gt;Minimize Window&lt;/li&gt;&lt;li&gt;Un-minimize Window&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Sh9eMNhxODI/AAAAAAAAAO0/vo5NoSoZILo/s1600-h/kdt-papertape.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 228px; height: 289px;" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Sh9eMNhxODI/AAAAAAAAAO0/vo5NoSoZILo/s400/kdt-papertape.jpg" alt="" id="BLOGGER_PHOTO_ID_5341091246967437362" border="0" /&gt;&lt;/a&gt;Our goal this week is to normalize, parameterize and tokenize this list in preparation for automation. The end result will be two fold: 1) a KDT "dictionary" for non-programmer so that they can easily construct automated test cases; and, 2) a well defined set of inputs for the automation engineer for use in the creation of the test automation engine.  In other words, the keywords work for both tester and automation engineer.  So let's start by first normalizing and then parameterizing this list.&lt;br /&gt;&lt;br /&gt;Several of the words in our list relate to each other, e.g. Run Calculator and Quit Calculator.  We can normalize Run Calculator and Quit Calculator into one keyword: &lt;span style="font-family:courier new;"&gt;Calculator&lt;/span&gt;. To do that, we'll need to define parameters for the keyword Calculator.  Those would be {"&lt;span style="font-style: italic;font-family:courier new;"&gt;Run&lt;/span&gt;","&lt;span style="font-style: italic;font-family:courier new;"&gt;Quit&lt;/span&gt;"}.  So now we can refer to launching or quitting the Calculator as &lt;span style="font-family:courier new;"&gt;Calculator &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;Calculator &lt;span style="font-style: italic;"&gt;Quit&lt;/span&gt;&lt;/span&gt;.  Using this examples, here's how I would normalize the rest of the list:&lt;br /&gt;&lt;ul style="font-family:courier new;"&gt;&lt;li&gt;Calculator &lt;span style="font-style: italic;"&gt;Run|Quit&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Select View &lt;span style="font-style: italic;"&gt;Basic|Scientific|Programmer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Paper Tape &lt;span style="font-style: italic;"&gt;Show|Hide&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Calculate &lt;span style="font-style: italic;"&gt;Operand1,Operand2,Operator,Result&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Window &lt;span style="font-style: italic;"&gt;Calculator|Paper Tape,Minimize|Unminimize&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;We've now taken a list of 10 keywords and reduced it to 5 by normalizing related keywords and adding parameters.  Now let's tokenize this list to remove any confusion as to what is a key-word and what is a parameter.  We'll do this by removing any spaces in the keywords.  This also makes it easier for the automation engineer to parse.&lt;br /&gt;&lt;ul style="font-family:courier new;"&gt;&lt;li&gt;Calculator &lt;span style="font-style: italic;"&gt;Run|Quit&lt;/span&gt;&lt;/li&gt;&lt;li&gt;SelectView &lt;span style="font-style: italic;"&gt;Basic|Scientific|Programmer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;PaperTape &lt;span style="font-style: italic;"&gt;Show|Hide&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Calculate &lt;span style="font-style: italic;"&gt;Operand1,Operand2,Operator,Result&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Window &lt;span style="font-style: italic;"&gt;Calculator|Paper Tape,Minimize|Unminimize&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;We've now normalized, parameterized and tokenized our original list of keywords and are ready to hand them off to the automation engineer for the development of the test automation engine. Before we do that, let's "test" our list by writing a few test cases to get a feel for how to use this KDT dictionary.  Let's say you're interested in creating an automated regression test suite that exercises the Calculator using a few typical use-cases such as:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Perform calculation using the Basic calculator without using paper tape.&lt;/li&gt;&lt;li&gt;Perform calculation using the Basic calculator using paper tape, then quit.&lt;/li&gt;&lt;li&gt;After performing a calculation, minimize the Calculator window but not the paper tape window.&lt;/li&gt;&lt;/ol&gt;Here's what that would look like using our newly created KDT dictionary:&lt;br /&gt;&lt;br /&gt;1. Perform calculation using the Basic calculator without using paper tape.&lt;br /&gt;&lt;ul&gt;&lt;li style="font-family:courier new;"&gt;Calculator &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;SelectView &lt;span style="font-style: italic;"&gt;Basic&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;PaperTape &lt;span style="font-style: italic;"&gt;Hide&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Calculate &lt;span style="font-style: italic;"&gt;10,20,X,200 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;2. Perform calculation using the Scientific calculator using paper tape, then quit.&lt;br /&gt;&lt;ul&gt;&lt;li style="font-family:courier new;"&gt;Calculator &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;SelectView &lt;span style="font-style: italic;"&gt;Scientific&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;PaperTape &lt;span style="font-style: italic;"&gt;Show &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-family:courier new;"&gt;Calculate &lt;span style="font-style: italic;"&gt;10.234,20.322,\,0.50359216613&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Calculator &lt;span style="font-style: italic;"&gt;Quit &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;3. After performing a calculation, minimize the Calculator window but not the paper tape window.&lt;br /&gt;&lt;ul style="font-family:courier new;"&gt;&lt;li&gt;Calculator &lt;span style="font-style: italic;"&gt;Run&lt;/span&gt;&lt;/li&gt;&lt;li&gt;SelectView &lt;span style="font-style: italic;"&gt;Basic&lt;/span&gt;&lt;/li&gt;&lt;li&gt;PaperTape &lt;span style="font-style: italic;"&gt;Show&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Calculate &lt;span style="font-style: italic;"&gt;10,20,X,200&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Window &lt;span style="font-style: italic;"&gt;Calculator,Minimize&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Next week we will begin the development of the test automation engine.  We'll start by looking at what a "handler" is and how it relates to our key-words.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3674705270554124854?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3674705270554124854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3674705270554124854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3674705270554124854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3674705270554124854'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-2.html' title='Keyword-Driven Testing HOWTO Part 2 - Preparing The Keyword List For Automation'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/Sh9eCZcCZRI/AAAAAAAAAOs/md0wrnRS3ag/s72-c/kdt-calculator.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7273299155994300131</id><published>2011-05-02T08:00:00.000-07:00</published><updated>2011-05-03T06:45:17.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Keyword-Driven Testing HOWTO Part 1 - Creating a Keyword List</title><content type='html'>Last week I introduced keyword-driven testing in "&lt;a href="http://got-bugs.blogspot.com/2009/05/using-keyword-driven-testing-to.html"&gt;Using Keyword-Driven Testing To Understand The Benefits of Model-Based Testing (MBT)&lt;/a&gt;", and promised to provide another Testlabs.com HOWTO series on this methodology. But first I'd like to define the scope of this HOWTO series in terms of what keyword-driven testing (KDT) is.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_aBrawRpJ2MY/ShYtBKPTudI/AAAAAAAAAOU/powggtfrsBE/s1600-h/KDT-software-under-test.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 314px; height: 206px;" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/ShYtBKPTudI/AAAAAAAAAOU/powggtfrsBE/s400/KDT-software-under-test.jpg" alt="" id="BLOGGER_PHOTO_ID_5338503906245982674" border="0" /&gt;&lt;/a&gt;If you've done any googling of keyword-driven testing, you may have concluded that it simply involves coming up with a list of keywords that resemble actions you'd find in a set of manual test cases.  And you'd be right for the most part.  It certainly can be made more complicated, and the tools vendors may lead you to believe keyword-driven testing is complicated enough to warrant the purchase of their customized tools.  So to gain a middle-of-the-road perspective, I researched what others had to say about KDT and came upon this simple description, and one that matches the KDT we designed for HP in San Diego, from Ayal Zylberman at Qualitest:&lt;br /&gt;&lt;blockquote&gt;Keyword-driven testing is actually a dictionary that provides the entire organization with a customized language to build test automation scripts.&lt;/blockquote&gt;Certainly there's no right answer when it comes to developing this dictionary and a lot depends on how the test designers within the organization envision the use of KDT. So having said that, I plan to keep this HOWTO series simple enough to convey the concepts of KDT, while providing a useful set of examples that will allow you to start using KDT in your organization.&lt;br /&gt;&lt;br /&gt;In order to develop some keywords for our dictionary, we'll need an application to test. As I mentioned in my previous article on KDT, we are going to use the Calculator application in Mac OS X as our software under test.  And to keep our dictionary small, I've chosen to create my first keyword list based on running/quitting the app, the main calculator views, numeric calculations and minimizing/un-minimizing the calculator window.  Based on this, here's a first pass at my keyword list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run Calculator&lt;/li&gt;&lt;li&gt;Quit Calculator&lt;/li&gt;&lt;li&gt;Select Basic View&lt;/li&gt;&lt;li&gt;Select Scientific View&lt;/li&gt;&lt;li&gt;Select Programmer View&lt;/li&gt;&lt;li&gt;Show Paper Tape&lt;/li&gt;&lt;li&gt;Hide Paper Tape&lt;/li&gt;&lt;li&gt;Calculate&lt;/li&gt;&lt;li&gt;Minimize Window&lt;/li&gt;&lt;li&gt;Un-minimize Window&lt;/li&gt;&lt;/ul&gt;Next week we'll normalize, parameterize, and tokenize this list in preparation for automation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7273299155994300131?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7273299155994300131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7273299155994300131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7273299155994300131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7273299155994300131'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-1.html' title='Keyword-Driven Testing HOWTO Part 1 - Creating a Keyword List'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/ShYtBKPTudI/AAAAAAAAAOU/powggtfrsBE/s72-c/KDT-software-under-test.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3355861335406115432</id><published>2011-04-25T08:00:00.000-07:00</published><updated>2011-05-03T17:19:55.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDT'/><title type='text'>Using Keyword-Driven Testing To Understand The Benefits of Model-Based Testing  (MBT)</title><content type='html'>Keyword-driven testing, also called action-based or action-word testing, has come up in several of my MBT presentations and I think it's worth exploring keyword-driven testing as a precursor to the more powerful MBT methodology.  In a way, keyword-driven testing can be viewed as a piece of MBT in that it provides the components for the test execution engine needed for MBT.  Although keyword-driven testing doesn't deliver the highly leveraged "automated test design" output that MBT gives us (see the Google Tech Talk article &lt;a href="http://got-bugs.blogspot.com/2009/03/gtac-2008-automated-model-based-testing.html" target="_blank"&gt;GTAC 2007: Automated Model-Based Testing of Web Applications&lt;/a&gt;), it can help organizations understand how to get more out of their automated testing efforts.&lt;br /&gt;&lt;br /&gt;Proponents of keyword-driven testing emphasize that test development and test automation must be viewed as separate activities requiring separate skills sets.  This emphasis goes so far as to assume that most testers don't have the technical skills to do the automation and should leave that up to an automation group.  At the same time, the automation group is relegated to simply carrying out the tasks assigned to them without regard to test design and coverage.  And from what I've seen in different organizations, that pretty much describes how things are. I don't think it has to be this way, particularly when organizations, such as Google and others, see the value of using automation not for test execution but for test design.  If you leverage your automation efforts to &lt;span style="font-style:italic;"&gt;generate test cases&lt;/span&gt; rather than simply carry them out, then you gain far more for your ROI.&lt;br /&gt;&lt;br /&gt;Having said all this, I still think it's beneficial for some organizations, particularly those with separate test and automation groups, to start with keyword-driven testing before they graduate to MBT. In the next series of articles, I'll provide a HOWTO series on keyword-driven testing that will include some example code.  I'll take an existing application (the Mac OS X Calculator) and build a keyword-driven testing framework (in Applescript) and provide several example keyword-driven based test cases.  I look forward to your comments and thoughts in this area.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This first in this series is &lt;a href="http://got-bugs.blogspot.com/2009/05/keyword-driven-testing-howto-part-1.html"&gt;Keyword-Driven Testing HOWTO Part 1 - Creating a Keyword List&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://en.wikipedia.org/wiki/Keyword-driven_testing" icon="out" target="_blank"&gt;Keyword-driven testing from Wikipedia&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3355861335406115432?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3355861335406115432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3355861335406115432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3355861335406115432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3355861335406115432'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/05/using-keyword-driven-testing-to.html' title='Using Keyword-Driven Testing To Understand The Benefits of Model-Based Testing  (MBT)'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6454317077257807021</id><published>2011-04-18T08:00:00.000-07:00</published><updated>2011-04-17T10:15:50.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>A Software Testing Primer - An Introduction to Software Testing</title><content type='html'>&lt;a href="http://astore.amazon.com/testlabscom-20?%5Fencoding=UTF8&amp;amp;node=27" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 176px; height: 130px;" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Sbe7v8A-noI/AAAAAAAAACw/97wrvLzA1Xk/s320/software-testing-primer.jpg" alt="" id="BLOGGER_PHOTO_ID_5311920717745266306" border="0" /&gt;&lt;/a&gt;Nick Jenkins has written a nice introductory  primer that covers the main concepts and terms of software testing. He does a great job of explaining the basics and provides the reader with a taxonomy of testing types and terminology. I plan to use this book as a reference when teaching software testing.&lt;br /&gt;&lt;br /&gt;&lt;a title="View A Software Testing Primer on Scribd" href="http://www.scribd.com/doc/23335788/A-Software-Testing-Primer" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;A Software Testing Primer&lt;/a&gt; &lt;object id="doc_91861" name="doc_91861" height="600" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" &gt;            &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;             &lt;param name="wmode" value="opaque"&gt;             &lt;param name="bgcolor" value="#ffffff"&gt;             &lt;param name="allowFullScreen" value="true"&gt;             &lt;param name="allowScriptAccess" value="always"&gt;             &lt;param name="FlashVars" value="document_id=23335788&amp;access_key=key-2ccc9ctdfochvprsihbj&amp;page=1&amp;viewMode=list"&gt;             &lt;embed id="doc_91861" name="doc_91861" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=23335788&amp;access_key=key-2ccc9ctdfochvprsihbj&amp;page=1&amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="100%" wmode="opaque" bgcolor="#ffffff"&gt;&lt;/embed&gt;         &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6454317077257807021?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6454317077257807021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6454317077257807021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6454317077257807021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6454317077257807021'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/03/software-testing-primer-introduction-to.html' title='A Software Testing Primer - An Introduction to Software Testing'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/Sbe7v8A-noI/AAAAAAAAACw/97wrvLzA1Xk/s72-c/software-testing-primer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2203593411114574535</id><published>2011-04-13T08:00:00.000-07:00</published><updated>2011-04-12T17:29:12.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Finding Bugs In The Software Between Our Ears</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;Think of Keith Barry as a hacker of the human brain -- writing routines that exploit its bugs and loopholes, and offering a revealing look at the software between our ears.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This video is from a past &lt;a href="http://www.ted.com/index.php/"&gt;TED&lt;/a&gt; conference and features Keith Barry, a magician, who shows us how our brains can fool our bodies. In a way, Keith is a tester and his tricks are nothing more than proven "test cases" for the brain . &lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="bgColor" value="#ffffff"&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/embed/KeithBarry_2004-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KeithBarry-2004.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=310"&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" width="446" height="326" allowfullscreen="true" flashvars="vu=http://video.ted.com/talks/embed/KeithBarry_2004-embed_high.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KeithBarry-2004.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=310"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2203593411114574535?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2203593411114574535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2203593411114574535' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2203593411114574535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2203593411114574535'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/04/finding-bugs-in-software-between-our.html' title='Finding Bugs In The Software Between Our Ears'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2166553935221344501</id><published>2011-04-12T08:00:00.000-07:00</published><updated>2011-04-11T20:08:43.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>A moth, 5 dead patients, and the Berkeley finger daemon - Software Testing Is Serious Business</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Who's To Blame - Process or People?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://astore.amazon.com/testlabscom-20?node=27&amp;amp;page=2" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 73px; height: 125px;" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sa6WVispEJI/AAAAAAAAACU/ST2BpQoUYdM/s400/not-a-bug-a-feature.jpg" alt="" id="BLOGGER_PHOTO_ID_5309346307551858834" border="0" /&gt;&lt;/a&gt;It all started in 1945 when engineers found a moth in Panel F, Relay #70 of the Harvard Mark II system. Bugs in computers and software were born! And I'm sure a test engineer was questioned as to how this could have happened.&lt;br /&gt;&lt;br /&gt;As to the dead patients and Berkeley finger daemon, you can find an explanation for those and other calamities caused by software bugs in a Wired article call &lt;a href="http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=all"&gt;&lt;span style="font-style: italic;"&gt;History's Worst Software Bugs&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you are a test engineer, you may read the Wired article and be thankful that the bugs you've missed in your career were not as serious those in the article.  Natural reaction.  But is it fair for QA teams and individual software test engineers to carry the burden of missed bugs? In the case of the &lt;span style="font-weight: bold;"&gt;Therac-25&lt;/span&gt; bug, people were killed because of a kludged OS that enabled the operator to accidentally configure this radiation device to be lethal. How do you test for that?  Do we fault the process or the people involved?&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Unless you've never missed finding a serious bug or have never been asked by management why you've missed a critical software defect, then this discussion may not make sense to you.  After all it's the job of QA and the software testing engineers to find every bug.  It's their job!  Well is it really just QA's job to find the bugs?  What about unit testing, code review and code coverage instrumentation?  These are just a few pieces to what should be a rigorous software engineering process.  And if we all claim to follow and adhere to process, then how can we blame any one development or test engineer for any bug?  If we follow a process, then we blame the process when it fails.  More importantly, we make the necessary changes to that process to ensure such failures do not happen again.&lt;br /&gt;&lt;br /&gt;But we can't find and fix process errors unless we have and follow a software engineering process to begin with. What's your company's software development and testing process like?  We'd all benefit from knowing your thoughts on this subject - please leave a comment.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2166553935221344501?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2166553935221344501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2166553935221344501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2166553935221344501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2166553935221344501'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/03/moth-5-dead-patients-and-berkeley.html' title='A moth, 5 dead patients, and the Berkeley finger daemon - Software Testing Is Serious Business'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Sa6WVispEJI/AAAAAAAAACU/ST2BpQoUYdM/s72-c/not-a-bug-a-feature.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6097158209621254989</id><published>2011-04-05T08:00:00.000-07:00</published><updated>2011-04-03T20:37:21.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Exploratory Testing with James Whittaker</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/gp/product/0321636414?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321636414" target="_blank"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 240px;" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sn-Qqxs_LMI/AAAAAAAAAY4/8jL-3Ip6QwU/s400/james-whittaker-exploratory-testing.jpg" alt="" id="BLOGGER_PHOTO_ID_5368168345419852994" border="0" /&gt;&lt;/a&gt;Last week in this spot, we wrote about exploratory testing (&lt;a href="http://http://got-bugs.blogspot.com//2009/08/exploratory-testing-renaissance.html"&gt;An Exploratory Testing Renaissance?&lt;/a&gt;) and provided a 3 part video of Jonathan Kohl offering his take on this subject.  After I first found these videos, I came across one on the same subject by James Whittaker.  Most of you know him from his &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26ref%255F%3Dnb%255Fss%255Fgw%255F0%255F10%26field-keywords%3Djames%2520a.%2520whittaker%26url%3Dsearch-alias%253Daps%26sprefix%3DJames%2520A.%2520W&amp;tag=testlabscom-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957" target="_blank"&gt;"How to Break Software"&lt;/a&gt;&lt;img src="https://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;books.  Well it turns out James is equally excited about exploratory testing.  So much so, he has a book on the subject titled "&lt;a href="http://www.amazon.com/gp/product/0321636414?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321636414" target="_blank"&gt;Exploratory Software Testing: Tips, Tricks, Tours, and Techniques to Guide Test Design&lt;/a&gt;" coming out this fall.&lt;br /&gt;&lt;br /&gt;In today's video, James Whittaker provides an overview of Exploratory Testing--the subject of his latest book. He talks about ways to explore your application with intent, strategy, and tactics that find bugs and validate functionality.&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5M5rkUbME7U&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/5M5rkUbME7U&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6097158209621254989?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6097158209621254989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6097158209621254989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6097158209621254989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6097158209621254989'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/exploratory-testing-with-james.html' title='Exploratory Testing with James Whittaker'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Sn-Qqxs_LMI/AAAAAAAAAY4/8jL-3Ip6QwU/s72-c/james-whittaker-exploratory-testing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3944750703313154638</id><published>2011-04-04T08:00:00.000-07:00</published><updated>2011-04-05T16:12:20.454-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>An Exploratory Testing Renaissance?</title><content type='html'>The concept of ad hoc or exploratory testing has probably been around for as long as there have been things to test, whether that thing was a set of gears in a machine, tubes and Hollerith cards for early computers or modern day software.  And I'm sure the veracity of this testing approach has been hotly debated from the beginning.  Interestingly, it continues to be re-invented and offered as something new, e.g. heuristic testing, agile testing, etc..  I suppose those that have spent a career (or for some, one project) designing and writing endless test cases and test procedures, feel a sense of freedom by adopting new ways to apply ad hoc/exploratory testing.  And maybe that's a good thing, but don't expect our engineering colleagues in the fields of civil, mechanical, aeronautical, chemical, etc. to honor us anytime soon for our asystematic approach to software engineering.&lt;br /&gt;&lt;br /&gt;To give you an idea of what I'm talking about, particularly in the re-selling of ad hoc/exploratory testing, I encourage you to watch this three part series on Exploratory Testing with Jonathan Kohl.  This interview takes place at Star East.  I recommend you skip ahead by 45 seconds to get past the introductory music and graphics.  I think you'll find this interview enlightening, and, depending on your point-of-view on exploratory testing, it may support your position on this subject one way or another.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object width="480" height="385"&gt;&lt;embed src="http://www.youtube.com/v/o82KRE3WlCg&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=83aKmlTWiAI" target="_blank"&gt;Exploratory Testing - Jonathan Kohl - 2 of 3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=IxqJq4kDoU4" target="_blank"&gt;Exploratory Testing - Jonathan Kohl - 3 of 3&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3944750703313154638?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3944750703313154638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3944750703313154638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3944750703313154638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3944750703313154638'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/exploratory-testing-renaissance.html' title='An Exploratory Testing Renaissance?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-9130364966242019810</id><published>2011-04-01T08:00:00.000-07:00</published><updated>2011-04-01T08:38:51.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><title type='text'>When Bug Reports Were Fun(ny) - A Gallery Of Susan Kare's MacPaint Art From 1983</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SiSVRr5Jc_I/AAAAAAAAAO8/fPEcHRM3v2s/s1600-h/bug_report.jpeg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 170px; height: 233px;" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SiSVRr5Jc_I/AAAAAAAAAO8/fPEcHRM3v2s/s320/bug_report.jpeg" alt="" id="BLOGGER_PHOTO_ID_5342559189040985074" border="0" /&gt;&lt;/a&gt;I came across a couple of stories on "testing" of the original Macintosh. One of these stories featured a gallery of Susan Kare's art that was done using MacPaint.  Susan Kare is most famous for having drawn the "Japanese Lady" (below) that showed up on a lot of early Macintosh marketing material, as well as on  the front of the MacPaint manual and box.  Apparently, she was pressed into service to use MacPaint for all sorts of things for the Mac development team, to include the "bug report" sheet to the left.  Those were days when your bug reports were done on paper and handed in.&lt;br /&gt;&lt;br /&gt;The annotations on this report are mostly cute, but I was entertained by the information requested of the tester:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;     -  Describe the bug.&lt;/div&gt;&lt;div&gt;     -  Can you provoke its appearance?&lt;/div&gt;&lt;div&gt;     -  If possible, provide a code fragment that reveals the problem.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The article describes testing as "one of the most important activities during the last couple of months before shipping...". Even back then, the test cycle was an end-loaded activity. A couple of months to test the original Macintosh.  I guess it worked out OK.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SiUi8AftYJI/AAAAAAAAAPM/CAvuXSdc7mM/s1600-h/MacpaintWP.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SiUi8AftYJI/AAAAAAAAAPM/CAvuXSdc7mM/s320/MacpaintWP.png" alt="" id="BLOGGER_PHOTO_ID_5342714947265454226" border="0" /&gt;&lt;/a&gt;If you're interested in the entire article and seeing more of Susan Kare's artwork, check out &lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.folklore.org/StoryView.py?project=Macintosh&amp;amp;story=MacPaint_Gallery.txt&amp;amp;topic=Testing&amp;amp;sortOrder=Sort%20by%20Date&amp;amp;detail=medium" target="_blank"&gt;MacPaint Gallery.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-9130364966242019810?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/9130364966242019810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=9130364966242019810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/9130364966242019810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/9130364966242019810'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/06/when-bug-reports-were-funny-gallery-of.html' title='When Bug Reports Were Fun(ny) - A Gallery Of Susan Kare&apos;s MacPaint Art From 1983'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/SiSVRr5Jc_I/AAAAAAAAAO8/fPEcHRM3v2s/s72-c/bug_report.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3211328828723571630</id><published>2011-03-29T12:44:00.000-07:00</published><updated>2011-03-30T13:17:02.980-07:00</updated><title type='text'>The 5 Stages of Bug Grief</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-hJZkwiT5K-Q/TZDogvWBAuI/AAAAAAAAAGY/Vzl7mbOyAOM/s1600/images.jpeg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 241px; height: 209px;" src="http://2.bp.blogspot.com/-hJZkwiT5K-Q/TZDogvWBAuI/AAAAAAAAAGY/Vzl7mbOyAOM/s400/images.jpeg" border="0" alt="" id="BLOGGER_PHOTO_ID_5589222786729050850" /&gt;&lt;/a&gt;Stage 1. &lt;span style="font-weight:bold;"&gt;Denial&lt;/span&gt;: &lt;i&gt;This bug does not happen for me.&lt;/i&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Stage 2. &lt;span style="font-weight:bold;"&gt;Anger&lt;/span&gt;: &lt;i&gt;Why do you keep reporting this bug - it doesn't happen for anyone but you!&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Stage 3. &lt;b&gt;Bargaining&lt;/b&gt;: &lt;i&gt;Because this bug happens only on a few QA systems, can't we just close it?&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Stage 4. &lt;b&gt;Depression&lt;/b&gt;: &lt;i&gt;I don't want to talk about this bug anymore - make it go away.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Stage 5. &lt;b&gt;Acceptance&lt;/b&gt;: &lt;i&gt;OH! Now that I read the steps for this bug, I can reproduce it. We need to fix it now!&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Oh, Good Grief!&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3211328828723571630?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3211328828723571630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3211328828723571630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3211328828723571630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3211328828723571630'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2011/03/5-stages-of-bug-grief.html' title='The 5 Stages of Bug Grief'/><author><name>Ray Vizzone</name><uri>http://www.blogger.com/profile/09739225247271447149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-g8XjL4PaMI8/TY6pxRGW7LI/AAAAAAAAAF4/8uO4Xk5-bVI/s220/avatar-me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hJZkwiT5K-Q/TZDogvWBAuI/AAAAAAAAAGY/Vzl7mbOyAOM/s72-c/images.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1639729194628709027</id><published>2011-03-28T08:00:00.000-07:00</published><updated>2011-03-28T09:00:46.879-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>A Lesson In Defect Characterization - How A Twitter Security Enhancement Created a Twitgoo Problem</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SnClHGg1QgI/AAAAAAAAAWw/LdRbiQNTVcs/s1600-h/twitgoo-logo.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 140px; height: 40px;" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SnClHGg1QgI/AAAAAAAAAWw/LdRbiQNTVcs/s400/twitgoo-logo.png" alt="" id="BLOGGER_PHOTO_ID_5363968697624248834" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SnGdUTER-wI/AAAAAAAAAW4/CCJmMtys5KE/s1600-h/twitter.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 131px; height: 32px;" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SnGdUTER-wI/AAAAAAAAAW4/CCJmMtys5KE/s400/twitter.png" alt="" id="BLOGGER_PHOTO_ID_5364241603216145154" border="0" /&gt;&lt;/a&gt;Sometimes defects aren't what they appear to be.  I'm sure developers have countless stories of how defects they set out to fix were not at all like the defect report described.  We ran into just such a situation recently while testing a twitter-enabled iPhone App - Photo Tweet.  Photo Tweet would mysteriously, and seemingly arbitrarily, fail to upload photos to &lt;a href="http://twitgoo.com/" target="_blank"&gt;Twitgoo&lt;/a&gt;. It was one of those situations where one day a feature works and the next day it fails.  And, of course, the developer had not made any changes.&lt;br /&gt;&lt;br /&gt;Most of the time when you find a bug and the developer claims not to have made any changes, it's always best to quiz the developer with "what-if" questions.  That allows you, as a tester, to avoid calling the developer's integrity into question.  I usually try questions like this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What if during last night's build, an older version of a component was used?&lt;/li&gt;&lt;li&gt;Even though you didn't make a change for that feature, what if some other change caused this bug?&lt;/li&gt;&lt;/ul&gt;Usually this sort of brainstorming session can tease out needed clues that lead up to finding the root cause of a mysterious bug. If that doesn't work, then you're left trying to find out what else could have contributed to the defect.  Such was the case with Photo Tweet and it's inability to upload photos after a period of time.  And so, a bug was written up that said Photo Tweet would stop uploading photos arbitrarily.&lt;br /&gt;&lt;br /&gt;Subsequent conversations with the developer, including some what-if questions, lead us to believe that no changes were made for this feature and the bug resided outside the developers code.  Well since Photo Tweet uploads its photos to Photo Bucket's Twitgoo service, we suspected they had instituted some sort of throttling for uploads.  This is reasonable to expect given the popularity of Twitgoo.  Maybe they just didn't want rogue apps flooding their service, and apps like Photo Tweet were paying a penalty for the nefarious activities of others.  We could not have been more wrong about the root cause of our defect.&lt;br /&gt;&lt;br /&gt;We reported our defect to Twitgoo and asked if they had instituted an upload limitation.  I was amazed at how fast these folks responded and how helpful they were.  Initially they were stumped since this was the first they heard of this problem and HAD NOT put a limit on uploads.  At that point, I expected that they could not help any further and we would be left with having to do more debugging.  But instead, Michael P. Clark, their SVP of Technology and Partnerships rallied his technical folks to find out what was at the heart of this problem. The next day I got an email from Justin Hart, a Sr. Engineer for Photobucket, informing me that they discovered an unannounced change to Twitter's service.  Twitgoo relies on Twitter for those users wanting to "tweet" the photos they upload to Twitgoo. It turns out that Twitter had made a security enhancement. Michael and Justin found this issue very quickly and pointed me to a &lt;a href="http://groups.google.com/group/twitter-development-talk/browse_thread/thread/2d68c74567bc9809" target="_blank"&gt;threaded discussion&lt;/a&gt; concerning what Twitter did.  Much to Twitter's credit, they quickly made this issue public and extended an apology and an offer for input from developers.  Here's a snippet of their statement:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;A change shipped last week that limited the number of times a user could access the account/verify_credentials method [1] in a given hour. This change proved hasty and short-sighted as pointed out by the subsequent discussion [2]. We apologize to any developer that was adversely affected. Given the problems, we want to fix this in a public and transparent manner.&lt;/span&gt;&lt;/blockquote&gt;We learned a lot from this experience.  First, the folks at Twitgoo are fantastic and serious about providing a great customer and technology partner experience.  Second, some defects are certainly not what they appear to be. Third, when testing products that use APIs that connect to services that connect to other services, it's hard to determine root causes no matter how well intentioned your defect characterization process is.  Finally, as you investigate why a defect occurs, don't assume you know the root cause until you have all the facts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1639729194628709027?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1639729194628709027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1639729194628709027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1639729194628709027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1639729194628709027'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/07/lesson-in-defect-characterization-how.html' title='A Lesson In Defect Characterization - How A Twitter Security Enhancement Created a Twitgoo Problem'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SnClHGg1QgI/AAAAAAAAAWw/LdRbiQNTVcs/s72-c/twitgoo-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8110506711894846473</id><published>2011-03-26T08:00:00.000-07:00</published><updated>2011-03-26T20:16:57.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Understanding The Differences Between Testers And Developers</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Syo6oLRZ6AI/AAAAAAAAAo8/3S2IP-3DVjU/s1600-h/tester-developer-differences.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Syo6oLRZ6AI/AAAAAAAAAo8/3S2IP-3DVjU/s200/tester-developer-differences.jpg" width="200" /&gt;&lt;/a&gt;Are testers from Venus and developers from Mars? In an &lt;a href="http://www.acm.org/" target="_blank"&gt;ACM&lt;/a&gt; article titled &lt;i&gt;An Exploratory Research Study on Interpersonal Conflict between Developers and Testers in Software Development&lt;/i&gt;, the authors look at the difference between testers and developers. &lt;a name='more'&gt;&lt;/a&gt;As stated in the article, the goal is to better understand the differences between thse two actors in order to produce better software. The authors' call to action is based on two reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Because of a trend toward more &lt;a href="http://www.amazon.com/Agile-Software-Development-Cooperative-Game/dp/0321482751?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;agile software development&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0321482751" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;, testers are in contact with developers earlier and more often&lt;/li&gt;&lt;li&gt;Conflict can have negative consequences not only in relation to the end product but also in relation to the job satisfaction of both developers and tester &lt;/li&gt;&lt;/ol&gt;This paper points to studies that clearly separate testers from developers in terms of their goals: &lt;b&gt;developers&lt;/b&gt; seek to maximize &lt;b&gt;efficiency&lt;/b&gt; while &lt;b&gt;testers&lt;/b&gt; are all about &lt;b&gt;effectiveness&lt;/b&gt;. Developers seek to do get their work done with the least effort while testers seek the highest quality.  Those are clearly different goals that can easily create conflict if each group sub-optimizes. Unless upper management reconciles these different goals and helps align them to reach the broader objective of the company, failure may ensue.&lt;br /&gt;&lt;br /&gt;In addition to understanding the goals of each actor, managers need to understand and work with the differences between testers in terms of what makes them good at what they do.  The authors point to a list of the twelve traits that make good testers and developers (Pettichord&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0471081124" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;, 2000):&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;iframe frameborder="0" height="270" src="http://spreadsheets.google.com/pub?key=t-HQ6mHm7vixrLRXBxrJr5A&amp;amp;single=true&amp;amp;gid=0&amp;amp;range=A1%3AB13&amp;amp;output=html&amp;amp;widget=false" width="350"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If these are truly the traits that make for good testers and developers, then you can see why those bug review meetings tend to be a little tense at times, especially when one group or the other has to justify fixing or not fixing a bug.  Unless management understands the differences between the respective goals and attributes of developers and testers, and fails to effectively manage the natural conflict, the risk of failing will always be high.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img alt="Lessons Learned in Software Testing" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0471081124&amp;amp;tag=testlabscom-20" /&gt;&lt;/a&gt;So how do you effectively manage the conflict? I suggest taking the list above and adding another column with notes on how to address the conflict when it arises.  For example, what do you say when a tester points out a bug (what's observed) and the developer say it's a feature (how it's designed)? Do you blow it off and agree with the developer or do you take the issue on as something that needs to be resolved either as an issue with the design or the documentation? By thinking through examples for each conflicting pair of attributes, and writing down examples and responses, you'll be able to better manage the conflict.&lt;br /&gt;&lt;br /&gt;You can read the entire article &lt;a href="https://umdrive.memphis.edu/g-mis/www/memphis/step/documents/papers/ZhangX.step-07.pdf" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8110506711894846473?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8110506711894846473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8110506711894846473' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8110506711894846473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8110506711894846473'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/understanding-differences-between.html' title='Understanding The Differences Between Testers And Developers'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Syo6oLRZ6AI/AAAAAAAAAo8/3S2IP-3DVjU/s72-c/tester-developer-differences.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7394411916422335534</id><published>2011-03-25T08:00:00.000-07:00</published><updated>2011-03-26T20:38:39.344-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Top 10 Tips For Testing iPhone Applications</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SpXrEXmAXpI/AAAAAAAAAag/Jweyht4QXnk/s1600-h/top-10-tips-for-iphone-testing.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SpXrEXmAXpI/AAAAAAAAAag/Jweyht4QXnk/s400/top-10-tips-for-iphone-testing.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;This article started out as a Top 5 list but quickly grew. Most of these tips came from tracking down memory-related problems, which often resulted in defects that were very difficult to capture.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Accurately report available memory&lt;/b&gt;.  Many of the non-reproducible bugs you run into when testing iPhone apps are related to memory problems.  It's critical that you know and report available free memory before launching an application.  In all likelihood, the reproducibility of a crashing iPhone app bug is related to low memory conditions.  Consequently, a crashing defect may disappear when there's plenty of free memory.  In a previous article (&lt;a href="http://got-bugs.blogspot.com/2009/08/using-memory-sweep-for-iphone-app.html"&gt;Using Memory Sweep for iPhone App Testing&lt;/a&gt;) we described a tool that can be used to determine free memory.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Provide 'crash reporter' logs with your defect reports&lt;/b&gt;.  Each time an iPhone application crashes, a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.crash&lt;/span&gt; file is created on your iPhone.  You can retrieve this file when you synch your iPhone with iTunes.  Here's a link that describes where those files are stored: &lt;a href="http://www.anoshkin.net/blog/2008/09/09/iphone-crash-logs/" target="_blank"&gt;iPhone Crash Logs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Spy on the app from the console&lt;/b&gt;.  iPhone apps will report application and system level warnings to the console.  You can view these warnings in real-time using Apple's &lt;a href="http://www.apple.com/support/iphone/enterprise/" target="_blank"&gt;iPhone Configuration Tool&lt;/a&gt;.  By knowing what's being reported when interacting with an app can help you refine the steps you need to reproduce tricky (and memory related) problems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Test under low memory conditions&lt;/b&gt;.  This relates to #1 above.  You'll be able to tease additional crashing bugs if you force free memory to a very low level, e.g. &amp;lt; 2MB, before proceeding with your tests.  One way to do this is to open several Safari windows before you start your testing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Screenshots, screenshots, screenshots&lt;/b&gt;. Nothing makes a UI bug stand out for a developer than when you send screenshots.  And with the iPhone's built-in screen capture, there's no excuse not to do this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Provide useful defect characterization information&lt;/b&gt;.  Developers always like to have help in their debugging process, and useful defect characterization helps them narrow down the root cause of a bug.  If a crash happens under low memory conditions (see #1 and #4 above), then try it under conditions where there's lots of memory available, e.g. &amp;gt;40MB.  If a problem occurs under iPhone OS 2.2.x, then try it under 3.x.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. Create connectivity problems&lt;/b&gt;. If you're testing an iPhone app that depends on internet connectivity, then test for degraded or unavailable connectivity. It's easy to make connectivity unavailable by simply turning on Airplane Mode.  To degrade connectivity, especially on Edge or 3G, employ some sort of metallic "shield" on top of your iPhone.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;8. Boundary test data input&lt;/b&gt;. Wherever an iPhone app asks for text input, you have an opportunity to find a bug.  My favorite technique for this is to copy a huge amount of text, then paste it into each text field.  You'd be surprised at how this trips up some apps.&lt;br /&gt;&lt;br /&gt;Additionally, we’ve been finding that application errors are generating when entering the following characters into text fields: !@#$%^&amp;amp;*()_. (Note: Holding down letters (A, E, I, O, etc) or symbols ($, !, &amp;amp;, etc) on the onscreen keyboard generates a keyboard popup that includes localized and 2-byte characters. These should also be entered into text fields.)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;9. Gather up UDIDs (unique device identifiers) early&lt;/b&gt;.  This is a simple logistics task but seems to be one that becomes critical as the first build approaches.  And it's a hassle for the dev team to add new UDIDs and create new provisioning files as each new person wants to install an application during development.  Get the UDIDs of all known devices that will be used during testing and set a cut-off date for the addition of any new devices.  Check out &lt;a href="http://www.tuaw.com/2008/08/08/iphone-101-find-udid-with-a-single-click/" target="_blank"&gt;Find UDID with a single click&lt;/a&gt;. You can also connect all your iPhones and iPods touches to your computer and use the iPhone Configuration Tool to collect UDIDs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;10. Employ background applications&lt;/b&gt;.  But the iPhone can only have one application running at a time, right? That's true for those of us that develop and test applications, but not for Apple.  Applications that continue running in the background on the iPhone are Safari, iPod and Mail.  And what about reminders and push notifications?  These "interrupters" can affect the behavior of an application under test.&lt;br /&gt;&lt;br /&gt;Also, since iPhones and iPod touches are devices that users buy primarily to use as a phone or a music player, it’s important to test that an app can gracefully handle situations where the user receives a call or plays music from their music library (iTunes) while the app is running. We’ve seen issues here where apps aren’t smoothly multi-functioning in these areas.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7394411916422335534?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7394411916422335534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7394411916422335534' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7394411916422335534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7394411916422335534'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/top-10-tips-for-testing-iphone.html' title='Top 10 Tips For Testing iPhone Applications'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SpXrEXmAXpI/AAAAAAAAAag/Jweyht4QXnk/s72-c/top-10-tips-for-iphone-testing.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-408922329196755215</id><published>2011-03-24T08:00:00.002-07:00</published><updated>2011-03-24T14:04:38.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Development Basics - Memory Management Part 5</title><content type='html'>This week is the final video from &lt;a href="http://www.linkedin.com/in/markjamesjohnson" target="_blank"&gt;Mark Johnson&lt;/a&gt; on iPhone memory management.  In case you missed any of the previous videos, here's a list of the articles we've posted with Mark's first 4 memory management videos:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory.html"&gt;iPhone Development Basics - Memory Management Part 1&lt;br /&gt;&lt;/a&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_12.html"&gt;iPhone Development Basics - Memory Management Part 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_19.html"&gt;iPhone Development Basics - Memory Management Part 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_26.html"&gt;iPhone Development Basics - Memory Management Part 4&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;As in the previous articles, I've listed some suggested questions you might want to ask your development team in regards to memory management.  Today's video offers specific situations when an app might crash because of memory problems.  It would be particularly useful to ask your developers why this could happen - it may help them avoid these situations.&lt;br /&gt;&lt;br /&gt;Suggested questions for Part 5:&lt;br /&gt;&lt;blockquote&gt;(4:21min) What does it mean to call dealloc to the super class?&lt;br /&gt;(4:41min) What is a leaking object?&lt;br /&gt;(5:29min) Supposedly there are two types of memory bugs - releasing an object that is already deleted and forgetting to send a release.  Why does the first one cause a crash and the second one just a memory leak?&lt;br /&gt;(7:26min) What does it mean that there is only around 12MB of memory for an app before memory is increased?&lt;br /&gt;&lt;/blockquote&gt;&lt;div align="center"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BgyppGcwd_Q&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BgyppGcwd_Q&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-408922329196755215?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/408922329196755215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=408922329196755215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/408922329196755215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/408922329196755215'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/iphone-development-basics-memory.html' title='iPhone Development Basics - Memory Management Part 5'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2014470392821516425</id><published>2011-03-23T08:00:00.004-07:00</published><updated>2011-03-27T11:37:00.124-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Development Basics - Memory Management Part 4</title><content type='html'>So far we've seen 3 videos by &lt;a href="http://www.linkedin.com/in/markjamesjohnson" target="_blank"&gt;Mark Johnson&lt;/a&gt; on iPhone memory management:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory.html"&gt;iPhone Development Basics - Memory Management Part 1&lt;br /&gt;&lt;/a&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_12.html"&gt;iPhone Development Basics - Memory Management Part 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_19.html"&gt;iPhone Development Basics - Memory Management Part 3&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;And we've been using these videos to understand iPhone application memory management and gain some insight has to why iPhone apps crash.&amp;nbsp; In today's video, Mark describes a memory management programming convention used by iPhone developers for managing objects - either they're in the Autorelease pool or they are not. It's a very technical video but worth listening to because Mark warns of things not to do otherwise an app will crash - something worth being curious about when talking to your dev team.&lt;br /&gt;&lt;br /&gt;Suggested questions for Part 4:&lt;br /&gt;&lt;blockquote&gt;(4:02min) Why does returning a reference to a deleted object cause a crash? Why would that happen?&lt;br /&gt;(5:17min) What does it mean to "own" an object versus having it be part of an Autorelease pool?&lt;br /&gt;&lt;/blockquote&gt;&lt;div align="center"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0TmemM0XeJE&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0TmemM0XeJE&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2014470392821516425?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2014470392821516425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2014470392821516425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2014470392821516425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2014470392821516425'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_26.html' title='iPhone Development Basics - Memory Management Part 4'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-77580048072503853</id><published>2011-03-22T08:00:00.001-07:00</published><updated>2011-03-27T11:37:18.825-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>How Much Is Your Offshore/Outsource Testing Defect Find/Fix Cycle Costing You?</title><content type='html'>&lt;b&gt;&lt;a href="http://astore.amazon.com/testlabscom-20/detail/0321223918" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5316768825562406114" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/Scj1E9CEnOI/AAAAAAAAAEA/5E4a0g80L8M/s200/find-the-bug.jpg" style="float: left; margin: 0pt 10px 10px 0pt;" /&gt;&lt;/a&gt;&lt;i&gt;Update&lt;/i&gt;&lt;/b&gt;&lt;i&gt;:&amp;nbsp; Linda G. Hayes, who is the CTO of Worksoft, Inc., and the founder of three software companies including AutoTester, the first PC-based test automation tool, wrote &lt;a href="http://www.stickyminds.com/s.asp?F=S11528_COL_2"&gt;an interesting article on this subject&lt;/a&gt; at &lt;a href="http://stickyminds.com/"&gt;StickyMinds.com&lt;/a&gt;.&amp;nbsp; &lt;/i&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;i&gt;She wrote about the "promise of the same value proposition" and outlined some key factors for success or failure with offshoring.&amp;nbsp; One of the more interesting, and relevant comments (at least as it pertains to this article), was on "Time to Value".&amp;nbsp; Linda said:&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Offshore resources are never a quick fix, especially for testing. A 2005 report from AMR Research found that it took between fourteen months and three years before the offshore testers had sufficient familiarity to be effective in finding the root cause of problems. Others have found that the lack of domain knowledge resulted in spurious defects being reported that actually increased development overhead due to review and response times. In fact, one organization identified that as many as 33 percent of reported issues were traceable to tester error.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;There are many reasons to involve external testing services.  Sometimes companies need the expertise of an interoperability lab, other times they are attempting to reduce testing staff costs.  Whatever the reason, one cost that should be calculated based on a known process is the Find/Fix Cycle Cost for defects. It's important to evaluate these costs not just based on the hourly rate of the offshore/outsource testing service provider, but on the total cost involved in finding and fixing defects.  Ultimately, this cost involves all QA and developer resource costs. &lt;br /&gt;&lt;br /&gt;The find/fix cycle represents the time required to find and fix one defect and you should know what that cost is to your company.  In order to calculate this cost, you need to collect information along the way.  I found a nice source for this calculation, as well as a number of other interesting testing topics, at Software Quality Consulting, Inc. &lt;a href="http://www.swqual.com/newsletter/vol2/no11/vol2no11.html"&gt;&lt;span style="font-style: italic;"&gt;Food For Thought&lt;/span&gt;&lt;/a&gt;.  Steve Rakitin does a very nice job in describing this cost in the table below.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="1" bordercolor="#000000" cellpadding="5" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffff00"&gt;&lt;td colspan="2" valign="top" width="413"&gt;&lt;div align="center"&gt;&lt;b&gt; Estimate the find/fix cycle Cost &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T1 is time required to run a test that finds a potential defect &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T1 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T2 is time required to report a defect &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T2 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T3 is time required to determine that this is a defect &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T3 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T4 is time required to determine if the defect should be fixed &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T4 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T5 is time required to fix the defect &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T5 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T6 is time required to include fix in a build &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T6 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;T7 is time required to run regression tests to determine if defect is really fixed and close out defect report &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;T7 &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;Total time required… &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;TT = (T1 + … + T7) &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;LC represents fully loaded labor cost ($/hour) for engineering time (development and QA) &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;LC &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;C represents cost to find and fix&lt;b&gt; one &lt;/b&gt;defect &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;&lt;b&gt; C = LC * TT &lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="290"&gt;TC represents the total cost to find and fix the defects found and fixed in the last release (F1) &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="124"&gt;&lt;b&gt; TC = C * F1&lt;/b&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;As you can see from this table, the "round trip" cost of a defect incorporates 7 different time elements that add up pretty quickly, especially if you have any inherent time delays such as dealing with remote test teams, external test staff turnovers, re-requests for defect characterization information, etc.  And the final cost is not just that of the test team, but also incorporates the dev team costs.&lt;br /&gt;&lt;br /&gt;My guess would be that T1 and T5 would be the largest time elements, while times T3 and T4, which require more verbal communication, could very well match T1 and T5, depending on the teams involved.  It would be interesting, and most likely revealing, to measure these times and factor them into the costs associated with each project's QA and dev team composition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-77580048072503853?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/77580048072503853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=77580048072503853' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/77580048072503853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/77580048072503853'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/03/how-much-is-your-offshoreoutsource.html' title='How Much Is Your Offshore/Outsource Testing Defect Find/Fix Cycle Costing You?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/Scj1E9CEnOI/AAAAAAAAAEA/5E4a0g80L8M/s72-c/find-the-bug.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8139437538846704255</id><published>2011-03-21T08:00:00.001-07:00</published><updated>2011-03-27T11:38:02.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Development Basics - Memory Management Part 3</title><content type='html'>In our previous articles on iPhone memory management:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory.html"&gt;iPhone Development Basics - Memory Management Part 1&lt;br /&gt;&lt;/a&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_12.html"&gt;iPhone Development Basics - Memory Management Part 2&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;we've seen how developers allocate and de-allocate memory. And we've created some questions, for developers, on how crashes may occur when memory is not handled correctly. In today's video, the author, &lt;a href="http://www.linkedin.com/in/markjamesjohnson" target="_blank"&gt;Mark Johnson&lt;/a&gt; introduces a variation on these things called "Autorelease pools".  In the video, he shows how an object that is part of an autorelease pool can be retained despite releasing the entire pool.  Seems to me that this could cause problems if not handled correctly.  &lt;br /&gt;&lt;br /&gt;Suggested questions for Part 3:&lt;br /&gt;&lt;blockquote&gt;I've heard about a way to retain individual UI objects when releasing memory using autorelease pools.  Do we do that and can you explain why you would retain something when it's part of an autorelease pool?&lt;/blockquote&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-l8FoqP7Jlo&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-l8FoqP7Jlo&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8139437538846704255?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8139437538846704255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8139437538846704255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8139437538846704255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8139437538846704255'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_19.html' title='iPhone Development Basics - Memory Management Part 3'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-133103671902649012</id><published>2011-03-20T08:00:00.000-07:00</published><updated>2011-03-27T11:38:18.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Development Basics - Memory Management Part 2</title><content type='html'>We introduced this series, created by &lt;a href="http://www.linkedin.com/in/markjamesjohnson" target="_blank"&gt;Mark Johnson&lt;/a&gt;, last Monday (&lt;a href="http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory.html" target="_blank"&gt;iPhone Development Basics - Memory Management Part 1&lt;/a&gt;) to help testers understand memory management from the developers point-of-view in order to develop some insight as to why applications crash because of memory problems.  As mentioned last week, these videos should be used to develop questions for the developer team that may lead to more effective and reproducible testing.&lt;br /&gt;&lt;br /&gt;Suggested questions for Part 2:&lt;br /&gt;&lt;blockquote&gt;(0:52min)Does our iPhone application use something called "Autorelease pools"? I've heard that this method can help avoid bugs because you don't have to keep track of so many memory management calls.&lt;br /&gt;&lt;br /&gt;Can autorelease pools cause crashes by releasing UI objects too early?&lt;br /&gt;&lt;/blockquote&gt;&lt;p align="center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/59bDaCydrH4&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/59bDaCydrH4&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-133103671902649012?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/133103671902649012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=133103671902649012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/133103671902649012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/133103671902649012'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory_12.html' title='iPhone Development Basics - Memory Management Part 2'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4796158783614754481</id><published>2011-03-19T08:00:00.000-07:00</published><updated>2011-03-27T10:07:35.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Software Testing and Quality Assurance Rules of Thumb</title><content type='html'>&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;New this week&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;:  &lt;/span&gt;&lt;span style="font-size: 85%; font-weight: bold;"&gt;&lt;a href="http://got-bugs.blogspot.com/2009/04/software-testing-and-quality-assurance.html#new"&gt;THE NUMBER OF WHITE-BOX TESTS REQUIRED TO OBTAIN SUFFICIENT COVERAGE OF A MODULE IS ADEQUATELY DETERMINED BY ITS CYCLOMATIC COMPLEXITY.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Rule of thumb&lt;/span&gt; - &lt;span style="font-style: italic;"&gt;The earliest citation comes from Sir William Hope’s The Compleat Fencing-Master, second edition, 1692, page 157: "What he doth, he doth by rule of thumb, and not by art." The term is thought to originate with wood workers who used the length of their thumbs rather than rulers for measuring things, cementing its modern use as an inaccurate, but reliable and convenient standard.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Rule_of_thumb#cite_note-europrofem.org-0"&gt;From Wikipedia&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;As testers, we often use rules of thumb throughout a project. For example, we sometimes use total number of expected defects during test planning and then compare actual defects per hour found versus what we would expect, during test execution.  Each of these rules of thumb aids us in managing the information we deal with as testers and QA managers.&lt;br /&gt;&lt;br /&gt;It would be nice (and useful) to have a collection of these rules of thumb in one place, each documented with examples.  And that's my goal: to list as many software testing rules of thumbs in this article.  I'll update it each week and re-post it.  I look forward to reader comments and additions to this list and hope to make it a reference you each bookmark and refer to often.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="new"&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;THE NUMBER OF WHITE-BOX TESTS REQUIRED TO OBTAIN SUFFICIENT COVERAGE OF A MODULE IS ADEQUATELY DETERMINED BY ITS CYCLOMATIC COMPLEXITY.&lt;/span&gt; One common testing strategy, espoused for example by the NIST Structured Testing methodology, is to use the cyclomatic complexity of a module to determine the number of white-box tests that are required to obtain sufficient coverage of the module. In almost all cases, according to such a methodology, a module should have at least as many tests as its cyclomatic complexity; in most cases, this number of tests is adequate to exercise all the relevant paths of the function. &lt;a href="http://hissa.nist.gov/HHRFdata/Artifacts/ITLdoc/235/title.htm" icon="out" target="_blank"&gt;[&lt;i&gt; NIST Special Publication 500-235: Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric &lt;/i&gt;.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MORE THAN 40% OF ALL SOFTWARE APPLICATIONS ARE RELEASED WITH BETWEEN ONE AND 10 CRITICAL DEFECTS.&lt;/span&gt; And managers are fully aware. Three-quarters of deployed apps have between one and 10 critical errors, and again, bosses know about it. &lt;a href="http://www.sdtimes.com/link/32634" icon="out" target="_blank"&gt;[&lt;i&gt;Software Is Deployed, Bugs and All, SD Times&lt;/i&gt;.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;80% OF DEVELOPMENT COSTS ARE CONSUMED BY SOFTWARE DEVELOPERS IDENTIFYING AND CORRECTING DEFECTS.&lt;/span&gt; A study commissioned by the United States Department of Commerce's National Institute of Standards and Technology (NIST) found that software defects cost the U.S. economy almost $60 billion annually. The study also found that about 80 percent of development costs are consumed by software developers identifying and correcting defects. &lt;a href="http://www.ibm.com/developerworks/rational/library/4995.html" icon="out" target="_blank"&gt;[&lt;i&gt;The business value of software quality&lt;/i&gt;.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ABOUT 7% OF DEFECT REPAIRS WILL THEMSELVES ACCIDENTALLY INJECT A NEW DEFECT.&lt;/span&gt; A bad fix is a secondary defect accidentally injected in a bug repair. In other words, a bad fix is a failed attempt to repair a prior bug that accidentally contains a new bug. On average, about 7 percent of defect repairs will themselves accidentally inject a new defect, although the range is from less than 1 percent to more than 20 percent bad fix injections. &lt;a href="http://www.stsc.hill.af.mil/crosstalk/2005/04/0504Jones.html" icon="out" target="_blank"&gt;[Capers Jones. "Software Cost Estimating Methods for Large Projects©"]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; DEVELOPERS INJECT FEWER DEFECTS WHEN DESIGNING (2.0 DEFECTS PER HOUR) THAN WHEN THEY DESIGN WHILE CODING (4.6 DEFECTS PER HOUR).&lt;/span&gt; The practice of designing while coding is error prone. From data on 3,240 programs written in Personal Software Process (PSP)SM courses, the SEI has found that experienced developers inject fewer defects when designing (2.0 defects per hour) than when they design while coding (4.6 defects per hour). If you want low-defect designs, you must produce those designs, instead of just creating them while coding. &lt;a href="http://www.sei.cmu.edu/news-at-sei/columns/watts_new/2005/1/watts-new-2005-1.htm" icon="out" target="_blank"&gt;[WATTS S. HUMPHREY. "A Personal Quality Strategy", Stage 2 – Detailed-Design Quality.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; NONREPRODUCIBLE OR AD HOC TESTING IS OF LITTLE OR NO USE.&lt;/span&gt; One of several &lt;span style="font-style: italic;"&gt;basic rules of testing&lt;/span&gt; compiled from Myers (1976), Priest (1988), and Pullum and Doyle (1998). &lt;a href="http://books.google.com/books?id=dZA4VdLldZIC&amp;amp;lpg=PA310&amp;amp;dq=9.5.1&amp;amp;pg=PA311" icon="out" target="_blank"&gt;[W.R. Blischke, D.N.P. Murthy. "Reliability", Section 9.5.1, pp. 311.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CHAOS WITH NO MEASURES TO TELL THE ORGANIZATION WHAT'S GOING ON LEADS TO … 3 IN 10 PROJECTS BEING CANCELED, 5 IN 10 OVERRUNNING SCHEDULE AND/OR BUDGET BY NEARLY DOUBLE, AND ONLY 1.6 IN 10 MAKING THEIR DEADLINES AND BUDGETS.&lt;/span&gt; Many organizations struggling with process chaos claim that they don't have time for software measures, which are sometimes perceived as a bureaucratic Dilbert exercise. But getting metrics in the face of deadlines, and using them to manage that pressure and reduce the chaos, is key to successful software development. &lt;a href="http://www.qsm.com/aerialview.html" icon="out" target="_blank"&gt;[Johnson, Jim. "Chaos: The Dollar Drain of IT Project Failures." Application Development Trends (January 1995), pp. 41-47.]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE AVERAGE TIME TO FIND AND FIX DEFECTS IS 10 TO 20 HOURS. &lt;/span&gt;"One way to think about quality is to consider how the process would change as a function of defect fix times. For example, programmers generally think that it takes only a few minutes to fix defects in test. They base this on their experience with most of the defects they find in unit testing. In system test, however, the time to find and fix defects typically extends to many hours or even days. While most of these defects are fixed rather quickly, some take much longer. The average time to find and fix each defect is generally 10 to 20 or more hours." &lt;a href="http://www.sei.cmu.edu/news-at-sei/columns/watts_new/watts-new-compiled.pdf" icon="out" target="_blank"&gt;[Watts Humphrey, Learning from Hardware: Design and Quality, p.107]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ABOUT 80 PERCENT OF AVOIDABLE REWORK COMES FROM 20 PERCENT OF THE DEFECTS. &lt;/span&gt;That 80 percent value may be lower for smaller systems and higher for very large ones. Two major sources of avoidable rework involve hastily specified requirements and nominal-case design and development, in which late accommodation of off-nominal requirements causes major architecture, design, and code breakage. &lt;a href="http://www.cs.umd.edu/projects/SoftEng/ESEG/papers/82.78.pdf" icon="out" target="_blank"&gt;[Software Defect Reduction Top 10 List]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EXPECT BETWEEN 6.5 AND 9 DEFECTS PER KLOC DURING SYSTEM TEST. &lt;/span&gt;Based on data from the Jet Propulsion Laboratory (JPL) from an internal report that listed all the defects found in the system testing of three spacecraft. These data were taken after the programs were developed, compiled, unit tested, and integration tested. &lt;a href="http://www.sei.cmu.edu/news-at-sei/columns/watts_new/1999/March/watts-mar99.htm" icon="out" target="_blank"&gt;[Watts Humpherey]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE RELATIVE COST OF FIXING DEFECTS DURING TESTING IS 15 TIMES GREATER THAN DURING DESIGN. &lt;/span&gt;As reported by the Systems Sciences Institute at IBM.  Additionally, the cost to fix an error found after product release was four to five times as much as one uncovered during design, and up to 100 times more than one identified in the maintenance phase. &lt;a href="http://software.isixsigma.com/library/content/c060719b.asp" icon="out" target="_blank"&gt;[IBM Systems Sciences Institute]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;REQUIREMENTS, DESIGN, AND CODE REWORK COSTS 40 TO 50 PERCENT OF THE TOTAL COST OF SOFTWARE DEVELOPMENT. &lt;/span&gt;"If you can prevent defects or detect and remove them early, you can realize a significant schedule benefit. Studies have found that reworking defective requirements, design, and code typically consumes 40 to 50 percent of the total cost of software development (Jones 1986). As a rule of thumb, every hour you spend on defect prevention will reduce your repair time from three to ten hours. In the worst case, reworking a software requirements problem once the software is in operation typically costs 50 to 200 times what it would take to rework the problem in the requirements stage (Boehm and Papaccio 1988). "&lt;a href="http://www.stevemcconnell.com/articles/art04.htm" icon="out" target="_blank"&gt;[Steve McConell]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TESTERS WILL FIND, ON AVERAGE, 1 DEFECT EVERY 4 HOURS DURING BLACK BOX TESTING. &lt;/span&gt;Based on average defect detection rates for 6 different JPL projects as reported in "An Analysis of Defect Densities Found During Software Inspections," &lt;span style="font-style: italic;"&gt;Proceedings of the Fifteenth Annual Software Engineering Workshop. &lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;More information can be found in Grady's&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; Practical Software Metrics For Project Management And Process Improvement. &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.amazon.com/gp/product/0137203845?ie=UTF8&amp;amp;tag=ifg-fab-finds-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0137203845" icon="out" target="_blank"&gt;[Grady]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE NUMBER ONE CAUSE OF DEFECTS IS SPECIFICATIONS. &lt;/span&gt;&lt;span style="font-style: italic;"&gt; "Software Testing", R .Patton, p.17. &lt;/span&gt;&lt;a href="http://www.amazon.com/gp/product/0672327988?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0672327988" icon="out" target="_blank"&gt;[Patton]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TESTING DONE WITHOUT MEASURING CODE COVERAGE TYPICALLY EXERCISES ONLY ABOUT 55 PERCENT OF THE CODE. &lt;/span&gt;Robert Grady of Hewlett-Packard reports that testing done without measuring code coverage typically exercises only about 55 percent of the code (1993).   See page 615 of&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; Code Complete. &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.amazon.com/gp/product/1556154844?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1556154844" icon="out" target="_blank"&gt;[McConnell]&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4796158783614754481?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4796158783614754481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4796158783614754481' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4796158783614754481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4796158783614754481'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/04/software-testing-and-quality-assurance.html' title='Software Testing and Quality Assurance Rules of Thumb'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4086958338113831909</id><published>2011-03-18T08:00:00.000-07:00</published><updated>2011-03-24T14:03:19.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone Development Basics - Memory Management Part 1</title><content type='html'>For those of us involved in iPhone applications testing, it's useful to understand how memory management works on the iPhone OS.  Most of the problems we see that result in some sort of application crash or failure are related to memory problems.  Understanding how these memory problems can occur can help with trapping memory related defects so you can report reproducible defects.  &lt;br /&gt;&lt;br /&gt;We've discussed memory management issues in &lt;a href="http://blogsearch.google.com/blogsearch?oe=utf8&amp;amp;ie=utf8&amp;amp;safe=active&amp;amp;source=uds&amp;amp;start=0&amp;amp;hl=en&amp;amp;q=iPhone+AND+memory+blogurl%3Ahttp%3A%2F%2Fgot-bugs.blogspot.com%2F" target="_blank"&gt;previous articles&lt;/a&gt;. In this series of articles, which will be posted each Monday, we have video presentations from &lt;a href="http://www.linkedin.com/in/markjamesjohnson" target="_blank"&gt;Mark Johnson&lt;/a&gt; that introduce the basics of iPhone memory management in Objective-C for programmers starting out with the iPhone.  These videos are very instructive for both developers and testers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tips for Testers&lt;/b&gt;: if you've never done any programming, the terms discussed by Mark may be new for you.  I suggest that you use this information to develop a curiosity about iPhone app memory management so that when you talk with the developers, you can ask probing questions. And, as developers answer your questions, it often helps them sort through the complexity they deal with, as well as giving you more insight as to what may be cause the bugs you're seeing.&lt;br /&gt;&lt;br /&gt;Suggested developer question for Part 1:&lt;br /&gt;&lt;blockquote&gt;(2:50min) What is a NSMutableString object and why would the app ever release this object after it has been deleted?  Would this cause a crash?&lt;/blockquote&gt;&lt;p align="center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WSZUy69fHeA&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/WSZUy69fHeA&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4086958338113831909?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4086958338113831909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4086958338113831909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4086958338113831909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4086958338113831909'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/iphone-development-basics-memory.html' title='iPhone Development Basics - Memory Management Part 1'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3218309623506252751</id><published>2011-03-01T08:00:00.000-08:00</published><updated>2011-03-26T20:02:22.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Unit Testing Tips and Techniques for iPhone</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://astore.amazon.com/testlabscom-20/detail/0596006896%20"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 157px; height: 210px;" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SdLWO811ntI/AAAAAAAAAFg/tKS4SPlyaFc/s320/Unit-Test-Frameworks.jpg" alt="" id="BLOGGER_PHOTO_ID_5319549662216429266" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;"...Unit tests help ensure low-level code correctness, reduce software development cycle time, improve developer productivity, and produce more robust software."&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-weight: bold;"&gt;-Unit Test Frameworks&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;As important as unit tests are to modern development efforts, the iPhone SDK makes it difficult, if not impossible, to introduce unit tests.  However, there are some useful resources online that can help developers shoe-horn a unit test framework into the SDK.  One of these is based on the "Google Toolbox for Mac" project.  They've extended their toolbox to provide iPhone Unit testing.  You can find their well-written HOWTO at the &lt;a style="font-style: italic; font-weight: bold;" href="http://code.google.com/p/google-toolbox-for-mac/wiki/iPhoneUnitTesting"&gt;iPhoneUnitTesting&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;The other resource I suggest you look at is from the folks that brought the OCUnit framework to Apple's Xcode.  At the &lt;a style="font-style: italic; font-weight: bold;" href="http://www.sente.ch/s/?p=535&amp;amp;lang=en"&gt;iPhone Unit Testing&lt;/a&gt; page of their website, you'll find the history of OCUnit and precise instruction on how to get it to work with the iPhone &lt;span style="font-style: italic;"&gt;despite Apple having put OCUnit into iPhone SDK 2.2.!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3218309623506252751?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3218309623506252751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3218309623506252751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3218309623506252751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3218309623506252751'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/04/unit-testing-tips-and-techniques-for.html' title='Unit Testing Tips and Techniques for iPhone'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SdLWO811ntI/AAAAAAAAAFg/tKS4SPlyaFc/s72-c/Unit-Test-Frameworks.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2347000073404821047</id><published>2010-05-19T08:00:00.002-07:00</published><updated>2010-05-26T10:45:07.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Top 10 iPhone Groups On LinkedIn</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/StR9JI1JJ3I/AAAAAAAAAi0/AeSjrLmCrcc/s1600-h/linkedin-iphone.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/StR9JI1JJ3I/AAAAAAAAAi0/AeSjrLmCrcc/s400/linkedin-iphone.jpg" /&gt;&lt;/a&gt;Last month we posted an article on the &lt;a href="http://blog.testlabs.com/2009/09/top-10-software-testing-and-qa-groups.html"&gt;Top 10 Software Testing and QA Groups On LinkedIn&lt;/a&gt;.  Since I also belong to an iPhone group (&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=72283&amp;amp;trk=anet_ug_hm" target="_blank"&gt;iPhone Developers - www.iPhoneintouch.com&lt;/a&gt;) on LinkedIn, I thought I'd look to see if there were enough iPhone groups for a similar Top 10 list.  As it turns out, there are plenty of iPhone and mobile device groups on LinkedIn and definitely enough to round out a Top 10 list.&lt;br /&gt;&lt;br /&gt;Based on membership, the Top &lt;strike&gt;10&lt;/strike&gt; 11 iPhone groups on LinkedIn are: &lt;a name='more'&gt;&lt;/a&gt;&lt;ol&gt;&lt;li value="11"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=157071&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_3" target="_blank"&gt;iPhone Developers Connection&lt;/a&gt; (424 members):&lt;i&gt; This group intends to connect iPhone developers, designers, and entrepreneurs with each other. It intends to serve as platform for members to be able to share exclusive info, get peer reviews, get lead user feedback on apps, discuss projects etc.&lt;/i&gt;&lt;/li&gt;&lt;li value="10"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=129535&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_2" target="_blank"&gt;iphone developers worldwide&lt;/a&gt; (463 members): &lt;i&gt;Worldwide group for professionals in iphone application development. Contact others, share ideas, business and job opportunities.&lt;/i&gt; &lt;/li&gt;&lt;span id="fullpost"&gt;&lt;li value="9"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=70011&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_2" target="_blank"&gt;Cocoa Touch - iPhone Technology Users Group&lt;/a&gt; (568 members): &lt;i&gt;Cocoa Touch Developers Network for software developers, managers and marketing professionals working with the Cocoa Touch platform for iPhone and iPod touch.&lt;/i&gt;&lt;/li&gt;&lt;li value="8"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=127009&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_2" target="_blank"&gt;Mad4iPhone - The official iPhone users group&lt;/a&gt; (614 members): &lt;i&gt;Connect with the Mad4iPhone community today! Discover 3rd party solutions. This is a constantly growing, online, independent iPhone user group...a network of users and professionals. Solve iPhone problems. Get solutions. Give advice. Connect with other users and experts.&lt;/i&gt;&lt;/li&gt;&lt;li value="7"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=73521&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_2" target="_blank"&gt;iPhone Dev Team&lt;/a&gt; (619 members): &lt;i&gt;For all iPhone developers.&lt;/i&gt;&lt;/li&gt;&lt;li value="6"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=96032&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_2" target="_blank"&gt;Apple iPhone Enthusiasts&lt;/a&gt; (1,290 members): &lt;i&gt;This group is for iPhone enthusiasts. A place to share news, experiences, thoughts and cool things about this wonderful device from Apple.&lt;/i&gt;&lt;/li&gt;&lt;li value="5"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=2013391&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255439389786_1" target="_blank"&gt;iPhone &amp;amp; Android Applications: Marketing &amp;amp; Outsourcing&lt;/a&gt; (1,327 members): &lt;i&gt;This group is dedicated to iPhone and Android Application Development Outsourcing and Marketing. Promote your iPhone Product application through App store. Also find professional Companies / Freelancers / Developers to outsource Android &amp;amp; iPhone games and application projects. Share information on technical, consulting and application issues. Discuss Unbiased iPhone App Reviews.&lt;/i&gt;&lt;/li&gt;&lt;li value="4"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=121874&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_1" target="_blank"&gt;iPhone Developer's Group&lt;/a&gt; (1,801 members): &lt;i&gt;To help find iPhone developers to share information on iPhone technical, consulting and application issues.&lt;/i&gt;&lt;/li&gt;&lt;li value="3"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=110586&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_1" target="_blank"&gt;Cocoa and Cocoa Touch Developers&lt;/a&gt; (2,076 members): &lt;i&gt;This group it to create a network and direct contact between Cocoa and Cocoa Touch developers. It is designed for iPhone, iPod Touch and Mac OS X developers.&lt;/i&gt;&lt;/li&gt;&lt;li value="2"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=56468&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255440235767_1" target="_blank"&gt;iPhone Group&lt;/a&gt; (3,306 members): &lt;i&gt;iPhone Users Group, Fans, Lovers and customizers of iphone for everyday usage.&lt;/i&gt;&lt;/li&gt;&lt;li value="1"&gt;&lt;a href="http://www.linkedin.com/groups?home=&amp;amp;gid=72283&amp;amp;trk=anet_ug_hm&amp;amp;goback=%2Egdr_1255439389786_1" target="_blank"&gt;iPhone Developers - www.iPhoneintouch.com&lt;/a&gt; (7,754 members): &lt;i&gt;Community for iPhone Developers to share, learn, and network. The resource for connecting professionals with experience in developing, selling, marketing, managing, supporting and/or creating new businesses around the iPhone.&lt;/i&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2347000073404821047?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2347000073404821047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2347000073404821047' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2347000073404821047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2347000073404821047'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/top-10-iphone-groups-on-linkedin.html' title='Top 10 iPhone Groups On LinkedIn'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/StR9JI1JJ3I/AAAAAAAAAi0/AeSjrLmCrcc/s72-c/linkedin-iphone.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6344624477373226572</id><published>2010-03-22T08:00:00.000-07:00</published><updated>2010-03-22T10:56:54.328-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><title type='text'>Automated Web Services Testing - An Interview With Matt Krapivner of SmartPilot Software</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvnVvmpv1qI/AAAAAAAAAlc/aTm7iTiWKK4/s1600-h/FitNesseLogoMedium.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvnVvmpv1qI/AAAAAAAAAlc/aTm7iTiWKK4/s200/FitNesseLogoMedium.jpg" /&gt;&lt;/a&gt;As more and more companies face decisions about automating their testing, it's important to understand some of the pitfalls of automation and explore methods that avoid those pitfalls.  Likewise, we need to find mature open source testing tools that help bend the test automation curve in the right direction.  In previous articles, we've written about model-based and keyword-driven testing, each promising to reduce test automation script maintenance costs while increasing effectiveness (coverage).  As I've searched for answers in this areas, I've sought examples of how others have approached test automation as a way of benchmarking good ideas.  Recently, I've had the good fortune to meet a practitioner who has pursued new and more effective approaches to test automation.  His name is &lt;a href="http://bit.ly/2JHPgI" target="_blank"&gt;Matt Krapivner&lt;/a&gt; and his consultancy business has provided a very impressive test automation framework to a local Web 2.0 company.&lt;br /&gt;&lt;br /&gt;We interviewed Matt recently and talked to him about the new approach he's using with his current client and how it's a step up from traditional test automation practices. &lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:  Matt, you started out with a Computer Science academic background and since have been working in the area of Quality Engineering.  What got you interested in that area versus software development and programming?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ray, my first quality engineering engagement was actually as a developer on a quality engineering team.  I believe some companies call this Software Engineer in Testing, but in a nutshell the team was developing testing software.  I started as an individual contributor, but ended up managing the team of 7 engineers locally plus another 7 offshore.  I saw QE as an oft-undervalued field with an opportunity to make a great impact on the perception of the company’s products in the marketplace.  It is also quite fascinating because at different times you have to wear multiple hats, such as a developer at one time, a tough customer advocate at another, sometimes a product marketing/management hat, and so on. The opportunities for improving the product and making an impact are there, it’s just that many companies often overlook QE and do not get the deserved output from their teams, which in turn impacts their perception of QE overall.&lt;br /&gt;&lt;br /&gt;There are two different approaches to testing: Quality Assurance and Quality Engineering.  In my opinion, those are very different.  One will give you an assessment of the state of the system AFTER that system is put together.  The other will help you make sure that your system is ENGINEERED with the highest-quality possible.  Let me give your readers an analogy.  Say you are building a retaining wall and 2 years after it’s built the wall comes down in a mudslide.  Using the traditional QA approach, you would state “the wall fell down because the pressure was too large”.  If I was using QE methodologies, I would hire an engineer to build the wall according to the building code to begin with, to make sure that mudslides will not affect it.  That’s a fundamental difference, because the further you get in the product lifecycle, the more expensive it will get to fix the mistakes.  In my retaining wall example (which I actually just finished building in the backyard), I made a mistake of not putting in the drainage behind it.  It cost me more than the initial total construction cost to make an opening in the wall, add the pipe, and close the wall.  If I did what was necessary from the beginning, it would only add 5-10% to the construction cost.  Instead, by trying to save a few dollars and rushing the construction crew I ended up spending double the amount allocated initially.  The same can be said about software development – the longer you wait to find and address an issue, the more you will end up paying to correct the mistakes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:  Can you tell us about your first test automation project and what you learned from it?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;My first automation engagement was at Palmsource, where I managed a team which was responsible for design and development of an automated test harness for the Palm OS API.  In a way, our team played a role of 3rd-party developers early on in the software development lifecyle (SDLC).  This was quite fascinating as we got to develop software using a cutting-edge OS before everyone else did.  We also received a lot of visibility in the company since as “early adopters” we were able to make informed suggestions for features, and avert a few blunders along the way before they hit the market.  As we drove internal adoption, our team started receiving praises from other groups which used our automated tests to validate their changes, small and large.  Very quickly, the automated tests were used as a means of certifying customers’ devices for deployment field.  This meant that no device could ship with Palm OS or bear the Palm OS logo until it successfully passed our automated tests.&lt;br /&gt;&lt;br /&gt;The interesting observation I have made since then in most companies I have worked with, is that very often the testing software ends up being more complex than the actual application under test.  There are multiple reasons for that, from the need to cover and verify various edge cases, to just being able to confirm the results.  In some cases, especially when you have a hardware/software interaction, this is not trivial at all.  One also has to learn where to draw the “line of trust”. Let me explain.  Assume that you are testing a PDA application and you need to verify that certain text appeared in a certain position on the screen.  While it sounds trivial, verifying the correct result often is anything but.  There are typically several solutions.  We can call an internal API to query it for the text at certain coordinates, or a text in a specific field.  But can you “trust” this API?  What if it doesn’t exist to begin with?  What if the API itself is buggy?  In that case, your test will be meaningless.  Another option is to ask your developers to give you a custom “hook” into the display buffer, but most likely this request will not be on top of their priority list.  Also, there is a chance it may introduce another point of failure.  Yet another option is using a software simulator, if one exists.  We actually had to write our own software simulator for testing purposes at one of the companies where I ran the QE group.  The point is that there are often many ways of verifying the information in your application under test, and the “easiest” choice may not necessarily be the right one.  The challenge then becomes to persuade upper management to invest time and money into building a test system, where an immediate ROI may not necessarily be realized, but rather will result in intangible benefits such as improved product quality, customer satisfaction, etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:  I understand that you have recently provided test automation development services for several local companies.  What tools have you used and what was your assessment of the long term maintenance of the frameworks and test scripts you've delivered?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It’s true that there are many test automation systems, and there is no “perfect choice” that would work anywhere.  Over the course of the last few years, I have designed a house-grown test automation system; used a hybrid house-grown and commercial tool (Automated QA’s TestComplete); used a commercial tool in combination with open source ones (Squish and Selenium); and finally developed what I believe to be the future of automated testing – a system based on FitNesse.&lt;br /&gt;&lt;br /&gt;I will not dive deeply into the benefits and challenges of using commercial tools, there are countless articles and books written on the topic.   However, I would like to mention a few points from my experience as a manager/director of QE teams, and as a consultant working on implementing these systems.  When selecting an automation tool, one of the main things a company should look at is whether or not a specific tool will work with their application.  If it will not, all other benefits become a moot point.  Another significant factor is price.  In some cases, it will run into tens of thousands of dollars for the tool alone.  As a QE director, I had to restrain my teams quite often because the price of the tool was just prohibitive given our budget.  Most often though, there is no technical reason to select those tools anyway as there often is a less-expensive alternative.  With any commercial tool though, a person responsible for test automation will have to know at least a scripting language, such as Perl or Python.  Ideally, that person will be able to program in a higher-level language as well, such as C++ or Java.  As a result, your automation system will most likely be built fairly well.  The major limiting factor to the tool’s adoption then becomes its scalability, or how quickly can new tests be developed to ensure adequate test coverage.  It is, of course, less of a factor for large companies with deep pockets as these companies can most likely just organically grow the test automation team.  For startups and smaller companies though, this becomes a major hurdle and automation efforts sometimes may not succeed, or may not provide the desired ROI.&lt;br /&gt;&lt;br /&gt;At my last consulting engagement, my client approached me with a similar problem and suggested that I implement a system based on &lt;a href="http://fitnesse.org/" target="_blank"&gt;FitNesse&lt;/a&gt;.  FitNesse is a Wiki-based system where tests are written in natural English language in the form of a Wiki table.  Underneath, there is a “fixture” (in Fit-speak) which does the “translation” between English and the underlying tool.  That’s right, we can still plug in any test automation tool with FitNesse (well, as long as it exposes some API).  With this system, the automated tests now can be written by anybody in the company, including manual testers, product management folks, even a VP of Engineering.  It is also easy to answer questions such as “what’s our testing coverage for feature XYZ”, “why did the latest ABC test failed”, and so on.  Granted, there still needs to be someone to integrate FitNesse with a testing tool of choice, but this approach provides companies with the much-desired scalability of their testing efforts and a tool with no price tag and ample documentation.&lt;br /&gt;&lt;br /&gt;I have integrated FitNesse with Selenium Grid for my client’s web application, and with CruiseControl for continuous build integration.  We can now simultaneously test over 30 various targets (different OS/browser combinations), and get results within 15-20 minutes for a test run that spans the entire product in 10 languages.  It is easy for anyone now to add to the automated test collection.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:  For those of us that have tried to bring more automation to testing, we've each run into the problem of "brittle" automated test cases, as well as the need to generate more test cases early on in the development cycle.  How has FitNesse solved this problem?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;FitNesse is actually a great tool for this, since it allows non-programmers to write test cases which are immediately automated by definition.  Most likely, the product managers in this case will not even have to change their logic since they will write the test cases in the form of a “use case”, using more or less the same English language to define a feature.  So when the feature is defined, it is put into FItNesse.  When the feature is implemented, the test case can be executed to provide immediate response to the team.  This becomes even less labor-intensive when a continuous build integration system is utilized.  In fact, it is so easy for developers to utilize it to achieve the ever-elusive target of “test-driven development”, that there are no reasons for them NOT to use it…&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q: Given what you've said about FitNesse, particularly the ability for non-programmers to write test cases using a Wiki, how easy is it for someone to produce a test case?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As easy as it is for someone to edit a Wiki page.  The tests literally look like:&lt;br /&gt;&lt;br /&gt;|user clicks button|Submit|&lt;br /&gt;|page reloads in less than|30|seconds|&lt;br /&gt;|page contains text|Hi Ray|&lt;br /&gt;…&lt;br /&gt;If a person can write a manual test case, they can write a test case in Wiki.  If a person can write a use case in Word, they can write a test case in Wiki.  You get the idea.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q: What would you say is the most compelling reason to adopt FitNesse and what challenges are there for organizations to take this path?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The most compelling reason for companies to adopt FitNesse is its ability to provide so much valuable output with so little effort.  Granted, it is a relatively new tool and sometimes you will stumble but in my experience the hurdles one will face with FitNesse are not any greater than with any other commercial test automation tool.  In fact, the major challenge will likely be organizational in nature as it will require a slight change in the way people operate and contribute to the testing efforts.  A FitNesse endeavor is much more likely to be successful if folks from multiple departments contribute. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q:  How extensible is FitNesse, i.e. what if my web service uses a lot of AJAX or components that don't work well with Selenium?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As long as Selenium can handle it, so can FitNesse.  Remember that FitNesse operates with “fixtures”, which provide translation between English (the language of FitNesse) and Selenium API.  &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Svnbys71-LI/AAAAAAAAAlk/ELcwPlTnHtk/s1600-h/fitnesse_architecture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Svnbys71-LI/AAAAAAAAAlk/ELcwPlTnHtk/s400/fitnesse_architecture.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I chose to use Java API for Selenium, because FitNesse is written in Java and it is technically easier to use Java for the fixture.  I was comfortable with Java, so I chose not to change something I did not have to.  Any language can be used though, and if your automation tool of choice can only speak Python, for example, then you simply write your fixture in Python.&lt;br /&gt;&lt;br /&gt;AJAX is an interesting case though, and the limitations one will face will have nothing to do with FitNesse, but rather with Selenium’s ability to handle AJAX.  In my case, we handle AJAX by a combination of standard Selenium APIs, custom Selenium APIs that I wrote specifically for my client’s application, and custom hooks that developers have provided on the server-side.  However, all of this is hidden from the tester since their tests are written in plain English.  That’s the beauty of FitNesse – it really hides implementation details from a tester who is only concerned with, for example, whether or not a text appeared in the right spot on the page.  We provide a custom action for the testers, and they simply do not and should not care how we implement this action behind the scenes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Q: What would you recommend to those that want to adopt FitNesse for their test automation projects and where can they go for help in getting a FitNesse framework up and running at their company?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First of all, find a test automation tool that you would use without FitNesse.  Then, find out if this tool has an API that you can call from FitNesse.  Some tools do, and some do not.  Some tool companies will be willing to open up their API for you, and some may even be willing to write a sample fixture for you that you would be able to extend.  Some may prohibit you from calling their tools from anything besides their own proprietary interface.  When in doubt, just ask the tool vendor.&lt;br /&gt;&lt;br /&gt;As for FitNesse, there is plenty of easily-digestible documentation that comes along with the distribution of FitNesse.  If you search online, you may even find ready-to-use “fixtures” for the most popular open source automation tools, such as Selenium for example.  Those fixtures will give you a very good start.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;You can reach Matt Krapivner by email at &lt;a href="mailto:matt@smartpilotsoft.com"&gt;matt@smartpilotsoft.com&lt;/a&gt;.&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6344624477373226572?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6344624477373226572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6344624477373226572' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6344624477373226572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6344624477373226572'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/automated-web-services-testing.html' title='Automated Web Services Testing - An Interview With Matt Krapivner of SmartPilot Software'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SvnVvmpv1qI/AAAAAAAAAlc/aTm7iTiWKK4/s72-c/FitNesseLogoMedium.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2328379248487387497</id><published>2010-01-12T08:00:00.003-08:00</published><updated>2010-01-12T19:47:11.892-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Google Chrome Not Ready For Prime Time Compatibility Testing Yet (Still)</title><content type='html'>&lt;a href="http://www.amazon.com/Web-Geeks-Guide-Google-Chrome/dp/0789739739?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=bil&amp;amp;camp=213689&amp;amp;creative=392969" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img alt="Web Geek's Guide to Google Chrome" src="http://ws.amazon.com/widgets/q?MarketPlace=US&amp;amp;ServiceVersion=20070822&amp;amp;ID=AsinImage&amp;amp;WS=1&amp;amp;Format=_SL160_&amp;amp;ASIN=0789739739&amp;amp;tag=testlabscom-20" /&gt;&lt;/a&gt;&lt;b&gt;This Just In: &lt;/b&gt; CNET reports that Chrome has overtaken Safari in the latest usage stats (&lt;a href="http://news.cnet.com/8301-30685_3-10415824-264.html?tag=newsEditorsPicksArea.0" target="_blank"&gt;Chrome edges out Safari in browser usage&lt;/a&gt;). What exactly does this mean to developers and testers? &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;I think it's an interesting statistic but not significant (yet).&amp;nbsp; Why? For one thing, Chrome doesn't ship as a standard browser on any system (yet).&amp;nbsp; And until it does, a browser like Safari, which is the browser of choice for each new Mac user (until their friends somehow con them into using FireFox), will remain one of the two browsers (the other being Firefox) you must test on for the Mac OS.&amp;nbsp; For a second reason, read the article below we posted last week.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: #999999; font-size: x-small;"&gt;December 9, 2009 8:00 AM PST&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Even though Chrome has gained a 3.93% &lt;a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0" target="_blank"&gt;market share&lt;/a&gt; (as compared to Safari at 4.36%, IE at 63.62% and Firefox at 24.72%), it's not ready to be added to compatibility testing matrices yet. There are two reasons for this (besides still being in beta):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It doesn't run on Mac OS 10.4.x (only on Leopard)&lt;/li&gt;&lt;li&gt;Features are not equally supported on all platforms, in particular there's a lack of support for extensions on the Mac&lt;/li&gt;&lt;/ul&gt;So what's the big deal here?  Well for starters, by not supporting the next-to-the-next-to-the-last version of Mac OS X (as opposed to support for the 7+ year old Windows XP) , the adoption by Mac users will be limited to those that don't like Safari and Firefox on their Leopard machines, which might as well be no adoption at all.   &lt;br /&gt;&lt;br /&gt;Furthermore, because extensions are not supported on the Mac (and Linux) versions of Chrome, testing on Chrome is only worthwhile on Windows.  That makes Chrome a single-platform browser bet when it comes to compatibility testing.&lt;br /&gt;&lt;br /&gt;With such limited prospects for use on the Mac platform, it's not worth QA testing Chrome on the Mac, and making a case for testing it on Windows alone will be hard to make given the bigger numbers for IE and Firefox.  &lt;br /&gt;&lt;br /&gt;Chrome doesn't warrant a line on the browser compatibility testing matrix yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2328379248487387497?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2328379248487387497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2328379248487387497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2328379248487387497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2328379248487387497'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/google-chrome-not-ready-for-prime-time_09.html' title='Google Chrome Not Ready For Prime Time Compatibility Testing Yet (Still)'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1313658589794330362</id><published>2010-01-12T08:00:00.000-08:00</published><updated>2010-01-12T05:36:02.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='USB 3.0'/><title type='text'>USB 3.0 Adapters Available Now</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwyvqLPbGjI/AAAAAAAAAoI/_l0zqgzCTFw/s1600/expcard_1.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="147" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwyvqLPbGjI/AAAAAAAAAoI/_l0zqgzCTFw/s200/expcard_1.jpg" width="200" /&gt;&lt;/a&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;b&gt;Update&lt;/b&gt;: USB 3.0 finally arrives on consumber laptops.&amp;nbsp; &lt;a href="http://news.cnet.com/8301-13924_3-10428132-64.html"&gt;CES: USB 3.0 arrives in HP laptop: Yes, it's fast.&lt;/a&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="color: #666666;"&gt;&lt;span style="font-size: x-small;"&gt;November 25, 2009 8:00AM PDT&lt;/span&gt;&lt;/div&gt;We may not have readily available computer systems with USB 3.0 yet, but there are USB 3.0 host cards and cables available now for compatibility testing of USB 3.0 supported devices. Several motherboard manufacturers &lt;a href="http://www.techspot.com/news/37082-Gigabyte-adds-USB-30-6Gbps-SATA-to-AMD-boards.html" target="_blank"&gt;have announced offerings with USB 3.0&lt;/a&gt;, but until we see them in mainstream computer systems, it will be hard to justify their use for testing USB 3.0 supported devices.&amp;nbsp; Third party USB 3.0 adapters, on the other hand, are available to consumers and are a perfectly reasonable addition for your compatibility test matrices.&lt;br /&gt;&lt;br /&gt;The adapters and cables listed below are available for purchase now:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.usbgear.com/U3-PCE.html" target="_blank"&gt;USB 3.0 Super High Speed 2-Port PCI Express Card for Windows 7 and Vista&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://usb.brando.com/expresscard-usb-3-0-2-ports-hub_p01296c046d15.html"&gt;ExpressCard USB 3.0 2-Ports Hub&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcconnection.com/IPA/Shop/Product/Detail.htm?sku=10726219" target="_blank"&gt;USB 3.0 Hi-Speed PCIe Card 2-Port&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcconnection.com/IPA/Shop/Product/Detail.htm?sku=10805283" target="_blank"&gt;2-Port ExpressCard SuperSpeed USB 3.0 Card Adapter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a _blank="" href="http://www.startech.com/Product/ItemList.aspx?itematr=KEYPHRASE:USB%203.0%20Cable&amp;amp;gclid=CIiqs7jspJ4CFRWbnAodoln0lA" target=""&gt;USB 3.0 Super High Speed Cables&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Throwing Hard Disks With USB 3.0?&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;It has been difficult to find shipping USB 3.0 adapters, but this research has not been without some humor.  I ran across an interesting article titled "&lt;a href="http://pchardwaretroubleshooting.blogspot.com/2009/11/buffalo-wants-to-be-first-ones-in.html" target="_blank"&gt;Buffalo wants to be the first ones in throwing hard disks with USB 3.0&lt;/a&gt;", and could not resist reading it.&amp;nbsp; Given the title, the following sentence from the article seemed to make sense:&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;It is clear that he has not too much sense to acquire a disk like that if we have not a compatible groove with USB 3.0 in the computer.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;I think anyone that throws hard disks with USB 3.0 probably "has not too much sense" to begin with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1313658589794330362?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1313658589794330362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1313658589794330362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1313658589794330362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1313658589794330362'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/usb-30-adapters-available-now.html' title='USB 3.0 Adapters Available Now'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SwyvqLPbGjI/AAAAAAAAAoI/_l0zqgzCTFw/s72-c/expcard_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5805597218026559040</id><published>2010-01-11T08:00:00.000-08:00</published><updated>2010-01-11T08:11:52.274-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Things You Should Know About Windows 7 - God Mode</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/S0oJijSg_vI/AAAAAAAAAp8/GKzzR_ZEdic/s1600-h/god_mode.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/S0oJijSg_vI/AAAAAAAAAp8/GKzzR_ZEdic/s200/god_mode.jpeg" /&gt;&lt;/a&gt;Take a tip from &lt;a href="http://en.wikipedia.org/wiki/Bruce_Almighty" target="_blank"&gt;Bruce Almighty&lt;/a&gt; - use Windows 7 "God Mode" wisely.&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.amazon.com/Windows-7-Secrets-Paul-Thurrott/dp/0470508418?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Windows 7&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0470508418" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;God Mode provide shortcuts to various Windows 7 settings. God Mode is a folder naming trick and it's easy to do. &lt;br /&gt;&lt;br /&gt;As the video below will show, you just create a new folder and rename it using one of the God Mode strings.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="280" width="364"&gt;&lt;param name="movie" value="http://www.cnet.com/av/video/flv/universalPlayer/universalSmall.swf" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="FlashVars" value="playerType=embedded&amp;type=id&amp;value=50081662" /&gt;&lt;embed src="http://www.cnet.com/av/video/flv/universalPlayer/universalSmall.swf" type="application/x-shockwave-flash" wmode="transparent" width="364" height="280" allowFullScreen="true" FlashVars="playerType=embedded&amp;type=id&amp;value=50081662" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Special thanks to Marius Oiaga for providing this list of God Mode strings in the article &lt;a href="http://news.softpedia.com/news/Windows-7-and-Windows-8-GodModes-the-Complete-List-131598.shtml"&gt;Windows 7 and Windows 8 GodModes, the Complete List&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Action Center Microsoft.ActionCenter (Windows 7 and later only) {BB64F8A7-BEE7-4E1A-AB8D-7D8273F7FDB6} &lt;/li&gt;&lt;li&gt;Backup and Restore Microsoft.BackupAndRestore (Windows 7 and later only) {B98A2BEA-7D42-4558-8BD1-832F41BAC6FD} &lt;/li&gt;&lt;li&gt;Biometric Devices Microsoft.BiometricDevices (Windows 7 and later only) {0142e4d0-fb7a-11dc-ba4a-000ffe7ab428} &lt;/li&gt;&lt;li&gt;Credential Manager Microsoft.CredentialManager (Windows 7 and later only) {1206F5F1-0569-412C-8FEC-3204630DFB70} &lt;/li&gt;&lt;li&gt;Default Location Microsoft.DefaultLocation (Windows 7 and later only) {00C6D95F-329C-409a-81D7-C46C66EA7F33} &lt;/li&gt;&lt;li&gt;Desktop Gadgets Microsoft.DesktopGadgets (Windows 7 and later only) {37efd44d-ef8d-41b1-940d-96973a50e9e0} &lt;/li&gt;&lt;li&gt;Devices and Printers Microsoft.DevicesAndPrinters (Windows 7 and later only) {A8A91A66-3A7D-4424-8D24-04E180695C7A} &lt;/li&gt;&lt;li&gt;Display Microsoft.Display (Windows 7 and later only) {C555438B-3C23-4769-A71F-B6D3D9B6053A} &lt;/li&gt;&lt;li&gt;Getting Started Microsoft.GettingStarted (Windows 7 and later only) {CB1B7F8C-C50A-4176-B604-9E24DEE8D4D1} &lt;/li&gt;&lt;li&gt;HomeGroup Microsoft.HomeGroup (Windows 7 and later only) {67CA7650-96E6-4FDD-BB43-A8E774F73A57} &lt;/li&gt;&lt;li&gt;Infrared Microsoft.Infrared (Windows 7 and later only) {A0275511-0E86-4ECA-97C2-ECD8F1221D08} &lt;/li&gt;&lt;li&gt;Location and Other Sensors Microsoft.LocationAndOtherSensors (Windows 7 and later only) {E9950154-C418-419e-A90A-20C5287AE24B} &lt;/li&gt;&lt;li&gt;Notification Area Icons Microsoft.NotificationAreaIcons (Windows 7 and later only) {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} &lt;/li&gt;&lt;li&gt;Pen and Touch Microsoft.PenAndTouch (Windows 7 and later only) {F82DF8F7-8B9F-442E-A48C-818EA735FF9B} &lt;/li&gt;&lt;li&gt;Phone and Modem Microsoft.PhoneAndModem (Windows 7 and later only) {40419485-C444-4567-851A-2DD7BFA1684D}&lt;/li&gt;&lt;li&gt;Recovery Microsoft.Recovery (Windows 7 and later only) {9FE63AFD-59CF-4419-9775-ABCC3849F861} &lt;/li&gt;&lt;li&gt;Region and Language Microsoft.RegionAndLanguage (Windows 7 and later only) {62D8ED13-C9D0-4CE8-A914-47DD628FB1B0} &lt;/li&gt;&lt;li&gt;RemoteApp and Desktop Connections Microsoft.RemoteAppAndDesktopConnections (Windows 7 and later only) {241D7C96-F8BF-4F85-B01F-E2B043341A4B} &lt;/li&gt;&lt;li&gt;Sound Microsoft.Sound (Windows 7 and later only) {F2DDFC82-8F12-4CDD-B7DC-D4FE1425AA4D} &lt;/li&gt;&lt;li&gt;Speech Recognition Microsoft.SpeechRecognition (Windows 7 and later only) {58E3C745-D971-4081-9034-86E34B30836A} &lt;/li&gt;&lt;li&gt;Troubleshooting Microsoft.Troubleshooting (Windows 7 and later only) {C58C4893-3BE0-4B45-ABB5-A63E4B8C8651}&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5805597218026559040?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5805597218026559040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5805597218026559040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5805597218026559040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5805597218026559040'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2010/01/things-you-should-know-about-windows-7.html' title='Things You Should Know About Windows 7 - God Mode'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/S0oJijSg_vI/AAAAAAAAAp8/GKzzR_ZEdic/s72-c/god_mode.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2698552772620718007</id><published>2010-01-07T08:00:00.000-08:00</published><updated>2010-01-07T06:01:43.659-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><category scheme='http://www.blogger.com/atom/ns#' term='load testing'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Using Selenium And BrowserMob For Load Testing</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SxNNqHI6ibI/AAAAAAAAAoM/E26wUCK47MA/s1600/browsermob.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SxNNqHI6ibI/AAAAAAAAAoM/E26wUCK47MA/s640/browsermob.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Update&lt;/b&gt;&lt;/span&gt;:&amp;nbsp; Who doesn't like &lt;b&gt;FREE&lt;/b&gt;!&amp;nbsp; The folks at BrowserMob now give you an instant free test. No signup necessary. Uses real browsers. See screenshots, DNS lookup times, time-to-first-byte, and more! It's worth checking out.&amp;nbsp; Click to get your &lt;a href="http://browsermob.com/instant-website-test"&gt;Free Instant Test&lt;/a&gt;.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;November 30,, 2009 8:00AM PDT&lt;/span&gt;&lt;br /&gt;We've written several articles on using Selenium for web testing, including a HOWTO series on "&lt;a href="http://blog.testlabs.com/2009/07/automated-cross-browser-testing-with_24.html"&gt;Automated Cross-Browser Testing With Selenium&lt;/a&gt;". We plan to expand beyond these functional testing articles by looking at how Selenium can be used for other types of testing.  Today's video on BrowserMob shows how you can use Selenium for low-cost load testing service that uses real web browsers. &lt;br /&gt;&lt;br /&gt;The video below takes you through recording a Selenium test case using the Selenium IDE and then running it using BrowserMob. I'm particularly interested in how easily you can set up your load tests and the great information provided in their dashboard.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;:&amp;nbsp; I've not figured out the pricing yet (seems a bit complicated). They claim that you can "Simulate 2,000 VUs for only $150" but if you look at &lt;a href="http://browsermob.com/load-testing-prices"&gt;their pricing table&lt;/a&gt;, it's difficult to immediately see that sort of pricing.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pzeomCeeIaE&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pzeomCeeIaE&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2698552772620718007?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2698552772620718007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2698552772620718007' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2698552772620718007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2698552772620718007'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/using-selenium-and-browsermob-for.html' title='Using Selenium And BrowserMob For Load Testing'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SxNNqHI6ibI/AAAAAAAAAoM/E26wUCK47MA/s72-c/browsermob.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8103708521370567962</id><published>2010-01-06T08:00:00.000-08:00</published><updated>2010-01-06T08:40:35.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploystudio'/><title type='text'>Latest DeployStudio Tips, Techniques And News</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/S0OtXedlpRI/AAAAAAAAAp0/1u0jSLNJYTM/s1600-h/DeployStudioMaster.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/S0OtXedlpRI/AAAAAAAAAp0/1u0jSLNJYTM/s200/DeployStudioMaster.png" width="154" /&gt;&lt;/a&gt;If you're a DeployStudio fan, or are looking to learn what's behind the growing popularity of this tool, then be sure to attend the upcoming DeployStudio Seminar described in today's article.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.amazon.com/How-REALLY-use-LinkedIn-Vermeiren/dp/1439229635?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;LinkedIn&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1439229635" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt; Event&lt;/b&gt;: If you're a Mac Systems Administrator with more work on your plate than time to complete it you can't miss this seminar. Oliver Block of Skeleton Key will present a demonstration of DeployStudio, which enables you to streamline the deployment of multiple machines. This and similar technology has saved our customers hundreds of hours. &lt;a href="http://www.linkedin.com/osview/canvas?_ch_page_id=1&amp;amp;_ch_panel_id=1&amp;amp;_ch_app_id=7083120&amp;amp;_applicationId=2000&amp;amp;_ownerId=0&amp;amp;appParams=%7B%22go_to%22:%22events/181898%22,%22referrer%22:%22public%22%7D"&gt;DeployStudio Seminar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's a nice PDF that covers a lot of the basics of installing and using DeployStudio. &lt;a href="http://web.me.com/johnd/JohnDs_Site/Tips_&amp;amp;_Tricks/Entries/2009/4/29_Sys_Mgmt_Add-ons_files/DeployStudio.pdf"&gt;DeployStudio Tips &amp;amp; Tricks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This blog has a number of tips and techniques for using DeployStudio.&amp;nbsp; &lt;a href="http://krypted.com/mac-os-x/creating-a-master-deploystudio-image/"&gt;Creating a Master DeployStudio Image &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Latest DeployStudio Server with new features that allow you to define an authentication domain when configuring a workflow Active Directory binding task; provides packages management (packages sets and basic ACLs); an option to disable wireless support from DeployStudio NetBoot / external drive systems; and, an option to force UDIF disk images to be converted a second time to the same format before being scanned (multicast configuration panel). &lt;a href="http://www.deploystudio.com/News/Entrees/2009/11/14_DeployStudio_Server_1.0rc16.html"&gt;DeployStudio Server 1.0rc16&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A recent HOWTO article on using one master Deploy Studio server and host the images at different sites. &lt;a href="http://www.macosxhints.com/article.php?story=20090227083540481"&gt;Use one Deploy Studio server with images on many servers&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8103708521370567962?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8103708521370567962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8103708521370567962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8103708521370567962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8103708521370567962'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2010/01/latest-deploystudio-tips-techniques-and.html' title='Latest DeployStudio Tips, Techniques And News'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/S0OtXedlpRI/AAAAAAAAAp0/1u0jSLNJYTM/s72-c/DeployStudioMaster.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1668069879536492449</id><published>2010-01-05T08:00:00.000-08:00</published><updated>2010-01-06T05:28:21.848-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Would You Like To Browsersize That?</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/S0K_-5l7KzI/AAAAAAAAAps/ojAKyqM9Dz4/s1600-h/browser-size.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/S0K_-5l7KzI/AAAAAAAAAps/ojAKyqM9Dz4/s320/browser-size.png" /&gt;&lt;/a&gt; Ever wonder what appears on real users' browsers when they visit your website? &lt;a name='more'&gt;&lt;/a&gt;If you want a certain percentage of users, let's 90%, to all see the same thing, then you're going to need a tool that tells you in what percentile your web pages fall.&lt;br /&gt;&lt;br /&gt;The Google Browser Size is just that tool and is a must have for anyone creating websites. It provides a visualization of browser window sizes, as a percentage of people who visit &lt;a href="http://www.amazon.com/Google-Story-David-Vise/dp/0330508121?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Google&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0330508121" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;, superimposed on your website. You just enter your website URL, and you get to see contours that match up with different precentages. For example, the "90%" contour means that 90% of people visiting Google have their browser window open to at least this size or larger.  Here's how they position this tool at their website:&lt;br /&gt;&lt;blockquote&gt;This is useful for ensuring that important parts of a page's user interface are visible by a wide audience. On the example page that you see when you first visit this site, there is a "donate now" button which falls within the 80% contour, meaning that 20% of users cannot see this button when they first visit the page. 20% is a significant number; knowing this fact would encourage the designer to move the button much higher in the page so it can be seen without scrolling.&lt;br /&gt;&lt;/blockquote&gt;And here's what this blog looks like using the Google Browser Size tool:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/S0LCHiaJ4WI/AAAAAAAAApw/7oSIelHGlmE/s1600-h/blog-testlabs-com.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="245" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/S0LCHiaJ4WI/AAAAAAAAApw/7oSIelHGlmE/s400/blog-testlabs-com.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;To view your own Web site with this same visualization overlaid on it, go to &lt;a href="http://browsersize.googlelabs.com/"&gt;http://browsersize.googlelabs.com/&lt;/a&gt;, type your URL into the "Enter URL here" textbox at the top of the window and click Go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1668069879536492449?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1668069879536492449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1668069879536492449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1668069879536492449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1668069879536492449'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2010/01/would-you-like-to-browsersize-that.html' title='Would You Like To Browsersize That?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/S0K_-5l7KzI/AAAAAAAAAps/ojAKyqM9Dz4/s72-c/browser-size.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8042965374431655971</id><published>2010-01-04T08:00:00.000-08:00</published><updated>2010-01-05T13:32:19.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><title type='text'>Crawljax For Testing AJAX Applications</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/S0H-8Sq5qdI/AAAAAAAAApo/iPH03E24ztU/s1600-h/crawljax.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="136" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/S0H-8Sq5qdI/AAAAAAAAApo/iPH03E24ztU/s200/crawljax.jpg" width="200" /&gt;&lt;/a&gt;Wouldn't it be nice to finally have a tool that solves all the problems we encounter with automated testing? &lt;a name='more'&gt;&lt;/a&gt;So often we find test teams going down the path of automating individual test cases knowing that the cost to maintain each of those individual test cases will grow. And for those that have looked at advanced automated testing methodologies, such as model-based and keyword driven testing, they know there's a better way, yet they proceed with developing large suites of automated test cases that end up creating a maintenance nightmare later on when things changes.&lt;br /&gt;&lt;br /&gt;In 2010, we will continue to work with our clients to use open source frameworks that solve some of the problems inherent with developing automated tests.&amp;nbsp; In particular, we recommend &lt;a href="http://blog.testlabs.com/2009/11/automated-web-services-testing.html" target="_blank"&gt;FitNesse&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0955683602" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt; for anyone testing web applications and &lt;a href="http://www.testoptimal.com/"&gt;TestOptimal&lt;/a&gt; for those interested in using model-based testing.&amp;nbsp; For those of you that have already invested in using Selenium, you should consider FitNesse as THE framework for delivering a more effective automated test development and execution capability.&lt;br /&gt;&lt;br /&gt;As for that new tool that will solve all our problems?&amp;nbsp; We haven't found it yet, but we will keep looking.&amp;nbsp; And this year, as we develop more FitNesse automated test solutions for our clients, we'll be keeping an eye on new tools like Crawljax.&amp;nbsp; Crawljax is yet another open source tool that has received great attention through Google's Test Autotmation Conferences. It&amp;nbsp; is a tool for crawling any &lt;a href="http://www.amazon.com/Ajax-Definitive-Anthony-Holdener-III/dp/0596528388?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;AJAX&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0596528388" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;/&lt;a href="http://www.amazon.com/GWT-Action-Easy-Google-Toolkit/dp/B002T452PS?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;GWT&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B002T452PS" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt; application (GWT = Google Web Toolkit). It uses WebDriver to navigate through the different states of a web application. It creates a state-flow graph of the dynamic DOM states and the transitions between them. This inferred state-flow graph forms a very powerful base for many types of automated web testing. With plugins and invariants Crawljax can be used to perform various automated tests. For example: security testing, regression testing, accessibility testing, performance testing, cross-browser testing.&lt;br /&gt;&lt;br /&gt;And as with most new open source tools, it takes time to create polished marketing and support material - the developers wisely spend their time making the tool better and better.&amp;nbsp; The video below has a lot of information and detail on Crawljax. The audio is not great, but if you're motivated to see if Crawljax can solve some of your automated testing problems, then this video is worth watching. And you'll probably want to supplement what you watch with more info at this &lt;a href="http://crawljax.com/"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rYAO94GnBlY&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/rYAO94GnBlY&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8042965374431655971?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8042965374431655971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8042965374431655971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8042965374431655971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8042965374431655971'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2010/01/crawljax-for-testing-ajax-applications.html' title='Crawljax For Testing AJAX Applications'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/S0H-8Sq5qdI/AAAAAAAAApo/iPH03E24ztU/s72-c/crawljax.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5003624804647624145</id><published>2009-12-21T08:00:00.000-08:00</published><updated>2009-12-21T13:50:33.348-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploystudio'/><title type='text'>University Of Utah Mac Managers Share Their DeployStudio Experience</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sy-qL0t-AAI/AAAAAAAAApk/cofqmMUwMiQ/s1600-h/deploystudio_assistant.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="133" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Sy-qL0t-AAI/AAAAAAAAApk/cofqmMUwMiQ/s200/deploystudio_assistant.jpg" width="200" /&gt;&lt;/a&gt;DeployStudio University! Mac Managers from the University of Utah share their DeployStudio secrets on iTunes &lt;a name='more'&gt;&lt;/a&gt;in a presentation from their monthly Mac Managers meeting.  Each month they upload their presentations to iTunes U. The video below is a comprehensive presentation on DeployStudio they gave in June 2009:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/utah.edu.1380568002.01380568015.2254374636?i=1085425985" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Sy-oSba_aQI/AAAAAAAAApc/ZW2sFBaX-_I/s400/deploystudio-movie.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;All of the slides shown in this video presentation are &lt;a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/utah.edu.1380568002.01381129957.2254522210?i=1814823186"&gt;available as a PDF document here&lt;/a&gt;. Additionally, all of their presentations are available on iTunes U.  Here's the &lt;a href="http://deimos3.apple.com/WebObjects/Core.woa/Browse/utah.edu.1380568002.01380568015.2254374636?i=1085425985"&gt;link for all the Mac Manager Meetings presentations&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5003624804647624145?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5003624804647624145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5003624804647624145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5003624804647624145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5003624804647624145'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/university-of-utah-mac-managers-share.html' title='University Of Utah Mac Managers Share Their DeployStudio Experience'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Sy-qL0t-AAI/AAAAAAAAApk/cofqmMUwMiQ/s72-c/deploystudio_assistant.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6072480022768298869</id><published>2009-12-18T08:00:00.000-08:00</published><updated>2009-12-17T21:07:06.780-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Using Sauce OnDemand To Run Automated Cross-Browser Tests In The Cloud</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SysE36iDjAI/AAAAAAAAApA/sH9MNTUGwBc/s1600-h/sauce-labs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SysE36iDjAI/AAAAAAAAApA/sH9MNTUGwBc/s400/sauce-labs.png" /&gt;&lt;/a&gt;&lt;b&gt;Update&lt;/b&gt;:&amp;nbsp; What has the original creator of Selenium (Jason Huggins) been cooking up lately?  Hint: it has to do with Sauce.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Jason and his colleagues at Sauce Labs have been very busy since last we wrote about their product offerings. &amp;nbsp;They've renamed their cloud-hosted service to &lt;a href="http://saucelabs.com/products/sauce-ondemand"&gt;&lt;b&gt;Sauce OnDemand&lt;/b&gt;&lt;/a&gt; (formerly called "SauceRC") and announced a Sauce Labs &lt;b&gt;enhanced version of Selenium RC&lt;/b&gt; (versions for both PC and Mac) which they are calling &lt;a href="http://saucelabs.com/products/sauce-rc"&gt;&lt;b&gt;Sauce RC&lt;/b&gt;&lt;/a&gt;. To find out more about Sauce RC, here's a &lt;a href="http://saucelabs.saucerc.s3.amazonaws.com/sauce-rc.mov"&gt;link to a screencast video&lt;/a&gt; that describes the product and how to get started using it. &lt;br /&gt;&lt;br /&gt;&lt;div style="color: #999999;"&gt;&lt;span style="font-size: x-small;"&gt;August 21, 2009 8:00AM PDT&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;In May we wrote an article about a service we discovered called Sauce OnDemand (formerly called "SauceRC") from &lt;a href="http://saucelabs.com/" target="_blank"&gt;Sauce Labs&lt;/a&gt; (&lt;a href="http://blog.testlabs.com/2009/05/selenium-rc-in-cloud-saucerc.html"&gt;Selenium RC In The Cloud - SauceRC&lt;/a&gt;).  We found this service interesting because it allows you to do browser compatibility testing without the hassle (let alone cost and energy) of configuring local machines and installing browsers. Instead, you push your tests into the Sauce Labs cloud. Simply create test scripts using the Selenium IDE plug-in for FireFox, designate the browser you want to test on (see code below) and let Sauce OnDemand do all the work. Repeat for each browser you want to test on, then go to the Sauce Labs website to retrieve the results.  And the cool part is that you get a movie, as shown in the graphic above, of an actual browser session running your tests.  Talk about convenience!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's best if you know how to use Selenium RC before you start using Sauce OnDemand, but, according to the developer, some customers have successfully used the service without previous use of Selenium RC.&amp;nbsp; In our case, we had already written scripts for Selenium RC, so it was simply a matter of changing 1 line in our script using the code below:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;/code&gt;DefaultSelenium selenium = new DefaultSelenium(&lt;br /&gt;                "saucelabs.com",&lt;br /&gt;                4444,&lt;br /&gt;                "{\"username\": \"rvizzone\"," +&lt;br /&gt;                "\"access-key\": \"xxxxxxxxxxxxxxxxxxx\"," +&lt;br /&gt;                "\"os\": \"Windows 2003\"," +&lt;br /&gt;                "&lt;span style="color: red;"&gt;\"browser\": \"firefox\"," +&lt;br /&gt;                "\"browser-version\": \"3.\&lt;/span&gt;"}",&lt;br /&gt;                "http://www.google.com/");&lt;/pre&gt;Note the browser and version designated in &lt;span style="color: red;"&gt;red.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/So3HblyGufI/AAAAAAAAAaQ/pQsnhv8oXn4/s1600-h/sauce-rc.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/So3HblyGufI/AAAAAAAAAaQ/pQsnhv8oXn4/s200/sauce-rc.jpg" /&gt;&lt;/a&gt;After we made this change, our scripts ran as they had using Selenium RC on our localhost, with the actually processing taking place at Sauce Labs, and the results, both a movie and log, available to use anytime through links accessible through our Sauce Labs account.&lt;br /&gt;&lt;br /&gt;Here's a set of high-level HOWTO steps for using Sauce OnDemand:&lt;br /&gt;&lt;blockquote&gt;1. Record and edit your test script with the Selenium IDE plug-in for Firefox.&lt;br /&gt;2. Export your script and make sure it runs with Selenium RC on your localhost.&lt;br /&gt;3. Make the 1 line change to your script that includes your user name, access key, etc., as shown above.&lt;br /&gt;4. Now run the script again (which will now be directed to the Sauce OnDemand server).&lt;br /&gt;5. Retrieve results from with your Sauce Labs account&lt;br /&gt;&lt;/blockquote&gt;If you're looking for your investment in Selenium to pay off even more, I suggest you try Sauce OnDemand. Sauce Labs offers both a subscription plan and pre-paid minutes. And if you sign up during their public beta program, the minutes you buy will be doubled, e.g. buy 250 minutes for $10 and you'll get 250 minutes free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6072480022768298869?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6072480022768298869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6072480022768298869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6072480022768298869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6072480022768298869'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/using-saucerc-to-run-automated-cross_21.html' title='Using Sauce OnDemand To Run Automated Cross-Browser Tests In The Cloud'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SysE36iDjAI/AAAAAAAAApA/sH9MNTUGwBc/s72-c/sauce-labs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5707055227284197850</id><published>2009-12-15T08:00:00.000-08:00</published><updated>2009-12-17T07:13:54.832-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><title type='text'>Automated Testing Institute</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Syedad0izfI/AAAAAAAAAo0/5HNCwyOaCLw/s1600-h/automated-testing-institute.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="45" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Syedad0izfI/AAAAAAAAAo0/5HNCwyOaCLw/s200/automated-testing-institute.png" width="200" /&gt;&lt;/a&gt;While doing some article research this week I came across a website on automated testing called the &lt;a href="http://www.automatedtestinginstitute.com/" target="_blank"&gt;Automated Testing Institute&lt;/a&gt;. Here's a synopsis of the content:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;The ATI Online Reference is the web’s foremost comprehensive online resource for obtaining, exchanging and certifying industry standard test automation knowledge, information, and techniques. With key elements such as automation articles, automation specific news, searchable tools and book, discussion forums, free video tutorials, other automation specific videos, and more, this free, member-based site is the most comprehensive resource for helping you excel at &lt;a href="http://www.amazon.com/Just-Enough-Software-Test-Automation/dp/0130084689?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;test automation&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0130084689" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;.&lt;br /&gt;&lt;/blockquote&gt;From my initial review of the main sections of this website, I was impressed with the variety of articles, video, tips and techniques offered.&amp;nbsp; There's a wide range of articles, from those that appeal to the beginner&amp;nbsp; (How Do I Get Started With Test Automation?&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=bil&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0130084689" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;), to more advanced topics on ROI, frameworks, etc.&amp;nbsp; Check it out &lt;a href="http://www.automatedtestinginstitute.com/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5707055227284197850?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5707055227284197850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5707055227284197850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5707055227284197850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5707055227284197850'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/automated-testing-institute.html' title='Automated Testing Institute'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/Syedad0izfI/AAAAAAAAAo0/5HNCwyOaCLw/s72-c/automated-testing-institute.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-996470342044881423</id><published>2009-12-14T08:00:00.000-08:00</published><updated>2009-12-17T07:14:51.238-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Selenium 2.0 and Beyond!</title><content type='html'>For those of you that are fans of &lt;a href="http://www.amazon.com/Introduction-Testing-Applications-twill-Selenium/dp/B001O7HEPW?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969" target="_blank"&gt;Selenium&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.com/e/ir?t=testlabscom-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=B001O7HEPW" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;, you'll probably want to hear what Simon Stewart (Google) and Jason Huggins (Sauce Labs) have to say about Selenium 2.0 and beyond.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;In particular, the merging of efforts by Huggins (Selenium Core) and Stewart (&lt;a href="http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html" target="_blank"&gt;WebDriver&lt;/a&gt;) is very important to understand where Selenium is headed.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="370" id="viddler" width="437"&gt;&lt;param name="movie" value="http://www.viddler.com/player/d326d4d1/" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="flashvars" value="fake=1"/&gt;&lt;embed src="http://www.viddler.com/player/d326d4d1/" width="437" height="370" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" flashvars="fake=1" name="viddler" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-996470342044881423?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/996470342044881423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=996470342044881423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/996470342044881423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/996470342044881423'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/selenium-20-and-beyond.html' title='Selenium 2.0 and Beyond!'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7140533512608831503</id><published>2009-12-11T08:00:00.000-08:00</published><updated>2009-12-14T08:09:56.985-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Using The National Vulnerability Database During Security Testing</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SjeofWUprmI/AAAAAAAAARc/UErCSJI3eDU/s1600-h/nvd.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5347928339047362146" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SjeofWUprmI/AAAAAAAAARc/UErCSJI3eDU/s400/nvd.jpg" style="cursor: pointer; float: right; height: 59px; margin: 0pt 0pt 10px 10px; width: 483px;" /&gt;&lt;/a&gt;The National Vulnerability Database (NVD) is a comprehensive cyber security vulnerability database&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt; that integrates all publicly available U.S. Government vulnerability resources and provides references to industry resources. NVD's mission involves warning the public about vulnerabilities in computer systems. NVD provides this information using a search engine while integrating all publicly available U.S. government vulnerability resources. All of this information is given away for free with no licensing restrictions through XML and RSS feeds.&lt;br /&gt;&lt;br /&gt;The NVD is easy to use and should be used during security testing. In fact, depending on which security tool you use, the results will most likely reference items in the NVD.  I tried searching the NVD with some familiar software we use and the results were impressive.  I did a search on the open source defect tracking system &lt;span style="font-weight: bold;"&gt;Bugzilla&lt;/span&gt;, and found numerous security flaws. I did this search by first going to this URL:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://web.nvd.nist.gov/view/vuln/search?execution=e1s1"&gt;http://web.nvd.nist.gov/view/vuln/search?execution=e1s1&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;And then entering "bugzilla". The result was a list of 88 vulnerabilities that show up in an easy to read list with links that give you more specific details on each item:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SjeosQr1ONI/AAAAAAAAARk/bsIX4Cbn53A/s1600-h/nvd-results.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5347928560872274130" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SjeosQr1ONI/AAAAAAAAARk/bsIX4Cbn53A/s400/nvd-results.jpg" style="cursor: pointer; display: block; height: 117px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;Here's a closer look at some of the results from the list above:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-1213"&gt;CVE-2009-1213&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;: Cross-site request forgery (CSRF) vulnerability in attachment.cgi in Bugzilla 3.2 before 3.2.3, 3.3 before 3.3.4, and earlier versions allows remote attackers to hijack the authentication of arbitrary users for requests that use attachment editing.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Published&lt;/span&gt;: 04/01/2009&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CVSS Severity&lt;/span&gt;: &lt;a href="http://nvd.nist.gov/cvss.cfm?name=CVE-2009-1213&amp;amp;vector=%28AV%3AN/AC%3AM/Au%3AN/C%3AP/I%3AP/A%3AP%29&amp;amp;version=2"&gt;6.8 (MEDIUM)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-6098"&gt;CVE-2008-6098&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;: Bugzilla 3.2 before 3.2 RC2, 3.0 before 3.0.6, 2.22 before 2.22.6, 2.20 before 2.20.7, and other versions after 2.17.4 allows remote authenticated users to bypass moderation to approve and disapprove quips via a direct request to quips.cgi with the action parameter set to "approve."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Published&lt;/span&gt;: 02/09/2009&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CVSS Severity&lt;/span&gt;: &lt;a href="http://nvd.nist.gov/cvss.cfm?name=CVE-2008-6098&amp;amp;vector=%28AV%3AN/AC%3AL/Au%3AS/C%3AN/I%3AN/A%3AP%29&amp;amp;version=2"&gt;4.0 (MEDIUM)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Searching for vulnerabilities is just one feature of the NVD.  There are number of checklists, statistics and other information available at the main NVD URL:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://nvd.nist.gov/home.cfm"&gt;http://nvd.nist.gov/home.cfm&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7140533512608831503?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7140533512608831503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7140533512608831503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7140533512608831503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7140533512608831503'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/06/using-national-vulnerability-database.html' title='Using The National Vulnerability Database During Security Testing'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SjeofWUprmI/AAAAAAAAARc/UErCSJI3eDU/s72-c/nvd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2624666313497777786</id><published>2009-12-10T08:00:00.000-08:00</published><updated>2009-12-14T08:12:53.808-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='load testing'/><category scheme='http://www.blogger.com/atom/ns#' term='stress testing'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox addons'/><title type='text'>Add These Website Performance Test Tools To Your Toolkit</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SyEIqoWCKuI/AAAAAAAAAow/kmUP8NPfDB0/s1600-h/speedtracer-large.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SyEIqoWCKuI/AAAAAAAAAow/kmUP8NPfDB0/s200/speedtracer-large.png" /&gt;&lt;/a&gt;I've listed some performance testing resource links that are worth looking at if you do any sort of website performance testing. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;One of the more difficult tasks when conducting load and stress testing is identifying bottlenecks and suggesting areas on which developers should concentrate.  Often this type of testing uses tools that are tuned to put a load on a website (e.g. JMeter) and consequently generates a lot of test data, primarily because these tools simulate lots of users. It helps to have another perspective to corroborate the data from your load tests.  This is where these website performance tools may help:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/webtoolkit/speedtracer/get-started.html" target="_blank"&gt;Speed Tracer&lt;/a&gt;&lt;/b&gt;.  &lt;i&gt;Speed Tracer is a Google Chrome extension that helps you identify and fix performance problems in your web applications. It visualizes metrics that are taken from low level instrumentation points inside of the browser and analyzes them as your application runs. Using Speed Tracer you are able to get a better picture of where time is being spent in your application. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5369" target="_blank"&gt;YSlow&lt;/a&gt;&lt;/b&gt;. &lt;i&gt;This tool analyzes web pages and why they're slow based on Yahoo!'s rules for high performance web sites. YSlow uses Yahoo!'s Smush.it service.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/speed/page-speed/" target="_blank"&gt;Page Speed&lt;/a&gt;&lt;/b&gt;. &lt;i&gt;An open-source Firefox/Firebug Add-on. Webmasters and web developers can use Page Speed to evaluate the performance of their web pages and to get suggestions on how to improve them.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/webtoolkit/" target="_blank"&gt;Google Web Toolkit (with Speed Tracer)&lt;/a&gt;&lt;/b&gt;. &lt;i&gt;Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications. GWT is used by many products at Google, including Google Wave and Google AdWords. It's open source, completely free, and used by thousands of developers around the world.&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/speed/page-speed/docs/rules_intro.html" target="_blank"&gt;Web Performance Best Practices&lt;/a&gt;&lt;/b&gt;. &lt;i&gt;When you profile a web page with Page Speed, it evaluates the page's conformance to a number of different rules. These rules are general front-end best practices you can apply at any stage of web development. We provide documentation of each of the rules here, so whether or not you run the Page Speed tool — maybe you're just developing a brand new site and aren't ready to test it — you can refer to these pages at any time. We give you specific tips and suggestions for how you can best implement the rules and incorporate them into your development process.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Sn_3rJaexKc&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Sn_3rJaexKc&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2624666313497777786?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2624666313497777786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2624666313497777786' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2624666313497777786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2624666313497777786'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/add-these-website-performance-test.html' title='Add These Website Performance Test Tools To Your Toolkit'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SyEIqoWCKuI/AAAAAAAAAow/kmUP8NPfDB0/s72-c/speedtracer-large.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1026763196763432681</id><published>2009-12-07T08:00:00.000-08:00</published><updated>2009-12-14T08:14:44.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>Vint Cerf - The Internet Today</title><content type='html'>In today's video, Vint Cerf, &lt;a href="http://en.wikipedia.org/wiki/Vint_Cerf" target="_blank"&gt;often referred to&lt;/a&gt; as "the Father of the Internet", gives a lecture at Singularity University (www.singularityu.org) that first provides a history of the internet, &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;then covers the state of the Internet today, and what issues are arising as it continues to evolve. He talks about technology platforms - IPv6, cloud computing, etc. - that are sure influence how we evolve our test labs.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KeAIwLp9YmA&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KeAIwLp9YmA&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1026763196763432681?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1026763196763432681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1026763196763432681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1026763196763432681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1026763196763432681'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/vint-cerf-internet-today.html' title='Vint Cerf - The Internet Today'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1374965560283347</id><published>2009-12-03T08:00:00.000-08:00</published><updated>2009-12-14T08:17:09.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Open Web Application Security Project Top 10 Risks For 2010 Is Available</title><content type='html'>The &lt;a href="http://www.owasp.org/index.php/OWASP_Top_Ten_Project" target="_blank"&gt;Open Web Application Security Project (OWASP)&lt;/a&gt; Top Ten has been a great source of information for security testing over the years that we've used it at Recommended Test Labs. They last published their list in 2007 (and 2004 before that).&amp;nbsp; As stated at their web site:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;The OWASP Top Ten provides a powerful awareness document for web application security. The OWASP Top Ten represents a broad consensus about what the most critical web application security flaws are. Project members include a variety of security experts from around the world who have shared their expertise to produce this list. There are currently versions in English, French, Japanese, Korean and Turkish. A Spanish version is in the works. We urge all companies to adopt this awareness document within their organization and start the process of ensuring that their web applications do not contain these flaws. Adopting the OWASP Top Ten is perhaps the most effective first step towards changing the software development culture within your organization into one that produces secure code.&lt;br /&gt;&lt;/blockquote&gt;As of Nov 13, 2009, the 2010 list has been released for comment through Dec 31,2009.  The document is available at &lt;a href="http://www.owasp.org/index.php/File:OWASP_T10_-_2010_rc1.pdf"&gt;http://www.owasp.org/index.php/File:OWASP_T10_-_2010_rc1.pdf&lt;/a&gt;.  Within that document, you will find the following Top 10 Risks:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A1 –Injection&lt;/li&gt;&lt;li&gt;A2 –Cross Site Scripting (XSS)&lt;/li&gt;&lt;li&gt;A3 –Broken Authentication and Session Management&lt;/li&gt;&lt;li&gt;A4 –Insecure Direct Object References&lt;/li&gt;&lt;li&gt;A5 –Cross Site Request Forgery (Cross site request forgery)&lt;/li&gt;&lt;li&gt;A6 –Security Misconfiguration(NEW for 2010)&lt;/li&gt;&lt;li&gt;A7 –Failure to Restrict URL Access&lt;/li&gt;&lt;li&gt;A8 –Unvalidated Redirects and Forwards (NEW for 2010)&lt;/li&gt;&lt;li&gt;A9 –Insecure Cryptographic Storage&lt;/li&gt;&lt;li&gt;A10 -Insufficient Transport Layer Protection&lt;/li&gt;&lt;/ul&gt;Below is a video that covers the Top 10 list from 2007:&lt;br /&gt;&lt;div align="center"&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GsRbpshqqII&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/GsRbpshqqII&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1374965560283347?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1374965560283347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1374965560283347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1374965560283347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1374965560283347'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/12/open-web-application-security-project.html' title='Open Web Application Security Project Top 10 Risks For 2010 Is Available'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6451190836890342696</id><published>2009-12-02T08:00:00.000-08:00</published><updated>2009-12-14T08:41:22.400-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Browser War Links - We May Not Know Where We're Headed, But We're Making Good Time</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SpXoQiFet9I/AAAAAAAAAaY/qWdL5UjI8XQ/s1600-h/browser-wars.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SpXoQiFet9I/AAAAAAAAAaY/qWdL5UjI8XQ/s320/browser-wars.jpg" /&gt;&lt;/a&gt;&lt;i&gt;&lt;b&gt;Update&lt;/b&gt;: Adrian Kingsley-Hughes's article "&lt;a href="http://blogs.zdnet.com/hardware/?p=6308&amp;amp;tag=nl.e539" target="_blank"&gt;XP's usage share down, Win 7, Firefox &amp;amp; IE8 up&lt;/a&gt;" describes a change afoot for OS and browser market share that's worth considering for compatibility test planning.&lt;/i&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;i&gt;The latest data shows that XP is finally falling off and giving way to both Vista and Windows 7. As for browsers, Firefox continues to grab market share, while Chrome is closing in on Safari.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Firefox spoils an Internet Explorer Trifecta, while Safari and Chrome trail far behind. &lt;a href="http://www.ebizq.net/blogs/cloudtalk/2009/08/what_the_latest_on_browser_war.php" target="_blank"&gt;What the Latest Figures from the Browser Wars Tell Us&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's Netscape deja vu all over again.  Andreessen working on a stealth browser project? &lt;a href="http://blogs.siliconvalley.com/gmsv/2009/08/netscape-founder-re-enlists-in-browser-wars.html" target="_blank"&gt;Netscape founder re-enlists in browser wars&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Speaking of Netscape: "&lt;i&gt;1995 called and it wants its business plan back from Google.&lt;/i&gt;" If this article holds any truth, then who's the next Microsoft? &lt;a href="http://www.crn.com.au/Feature/152523,is-google-the-next-netscape.aspx" target="_blank"&gt;Is Google the next Netscape?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now here's a battlefield in the browser war that may be the beginning of a tipping point.  IE 8 is 5 times slower than Safari and Chrome? Yikes! &lt;a href="http://www.mirror.co.uk/news/technology/2009/08/11/browser-wars-macs-beat-pcs-on-web-speed-115875-21589739/"&gt;Browser wars: Macs beat PCs on web speed&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The mobile browser war appears to be over, or at least there's an armistice.  Google Android (and Chrome), Apple Safari (and the iPhone), and now RIM move the mobile browser center-of-gravity in favor of WebKit. &lt;a href="http://blog.internetnews.com/skerner/2009/08/rim-acquires-webkit-vendor-for.html" target="_blank"&gt;RIM acquires WebKit vendor for mobile browsing&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6451190836890342696?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6451190836890342696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6451190836890342696' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6451190836890342696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6451190836890342696'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/08/browser-war-links-we-may-not-know-where.html' title='Browser War Links - We May Not Know Where We&apos;re Headed, But We&apos;re Making Good Time'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SpXoQiFet9I/AAAAAAAAAaY/qWdL5UjI8XQ/s72-c/browser-wars.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-353302978285294235</id><published>2009-12-01T08:00:00.000-08:00</published><updated>2009-12-14T08:18:39.857-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploystudio'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Using DeployStudio For Imaging and Restoring OS X Setups for Testing</title><content type='html'>&lt;i&gt;&lt;b&gt;Update&lt;/b&gt;: DeployStudio is very popular in schools.  I found some very detailed documents on how one administrator setup DeployStudio in a K-12 school environment. &lt;a name='more'&gt;&lt;/a&gt;The name of the article is &lt;a href="http://www.wazmac.com/servers_network/desktop_maintenance/notes_deploystudio.htm" target="_blank"&gt;Desktop Maintenance - DeployStudio QuickStart Documents&lt;/a&gt;. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;For years we've used &lt;a href="http://www.bombich.com/software/netrestore.html"&gt;NetRestore&lt;/a&gt; for imaging and restoring our OS X test computers. Mike Bombich did a great job in writing and supporting this useful product, but it has now reached its end of life. Consequently, we set out to find a replacement and have settled on &lt;a href="http://www.deploystudio.com/Home.html"&gt;DeployStudio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This feature set won us over:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Deploy &amp;amp; image Macs &amp;amp; PCs&lt;/li&gt;&lt;li&gt;Advanced computers reconfiguration (Mac only)&lt;/li&gt;&lt;li&gt;Full automation support&lt;/li&gt;&lt;li&gt;Realtime deployment monitoring&lt;/li&gt;&lt;li&gt;Freeware!&lt;/li&gt;&lt;/ul&gt;The way we employ it is on an external drive with OS X and DeployStudio server software installed. This server also acts as the image repository. When we need to reimage, we plug the external drive into the target machine and restart onto that OS. Then we use the DeployStudio Runtime to reimage the local partitions as desired.&lt;br /&gt;&lt;br /&gt;It has the ability to run shell scripts after the restore is complete. This could be used to make images more convenient with less user interaction required. For example, you could cause the script to automatically install a commonly used testing application after being reimaged.&lt;br /&gt;&lt;br /&gt;While their documentation on their &lt;a href="http://www.deploystudio.com/Home.html"&gt;homepage&lt;/a&gt; isn't the best, their forums are active and the creators seems to respond fairly quickly to questions. They also have a &lt;a href="http://deploystudio.wikispaces.com/"&gt;wiki&lt;/a&gt;. It's very new so not much in it, but presumably will have more information as time passes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-353302978285294235?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/353302978285294235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=353302978285294235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/353302978285294235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/353302978285294235'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/01/using-deploystudio-for-imaging-and_21.html' title='Using DeployStudio For Imaging and Restoring OS X Setups for Testing'/><author><name> RTL</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8220486787376173365</id><published>2009-11-24T08:00:00.000-08:00</published><updated>2009-11-24T08:24:44.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Testing Android Apps - The Compatibility Testing Matrix Continues To Grow</title><content type='html'>&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwtkL40DiuI/AAAAAAAAAn8/81qGlVTen8o/s1600/android-compatibility.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwtkL40DiuI/AAAAAAAAAn8/81qGlVTen8o/s200/android-compatibility.jpg" width="74" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;i&gt;Android, an open source operating system, must avoid the fate of J2ME, an open source mobile applications platform. Open source is great, until everyone splinters off into their own world. That’s what happened to J2ME, and a number of frustrated Android developers are now saying that there is a risk Android will follow the same path.&lt;/i&gt; &lt;br /&gt;&lt;div style="text-align: right;"&gt;-&lt;b&gt;Michael Arrington&lt;/b&gt;, &lt;a href="http://www.techcrunch.com/2009/10/11/a-chink-in-androids-armor/" rel="bookmark" title="A Chink In Android’s Armor" target="_blank"&gt;A Chink In Android’s Armor&lt;/a&gt;, 10/11/2009&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;Android developers continue to voice their concerns, and in a more recent article, "&lt;a href="http://www.cnn.com/2009/TECH/11/17/android.wired/index.html" target="_blank"&gt;Android's rapid growth has some developers worried&lt;/a&gt;", there's even more evidence that development and testing compatibility issues have a potential to grow out of control.  Developers identify a slew of compatibility concerns: &lt;span id="fullpost"&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;3 versions of the OS (Android 1.5, 1.6 and 2.0)&lt;/li&gt;&lt;li&gt;Differences across handsets&lt;/li&gt;&lt;li&gt;Custom user interfaces, e.g. HTC Sense, Motorola Blur, etc.&lt;/li&gt;&lt;li&gt;Phones with and without camera flash&lt;/li&gt;&lt;li&gt;Keyboard differences (physical vs. GUI)&lt;/li&gt;&lt;li&gt;Different carrier ROMs&lt;/li&gt;&lt;li&gt;Non-standard commands for triggering standard functions, e.g. GPS on Hero vs. other Android devices&lt;/li&gt;&lt;li&gt;Uncooperative graphics drivers&lt;/li&gt;&lt;/ul&gt;These differences have created significant compatibility issues, so much so that developers are creating separate builds and maintaining separate code for different Android devices. The best analogy for the problems faced by Android developers can be found in &lt;a href="http://www.techcrunch.com/2009/10/11/a-chink-in-androids-armor/" rel="bookmark" title="A Chink In Android’s Armor" target="_blank"&gt;Michael Arrington's article&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Imagine if Windows developers had to build different versions of their applications for different PC manufacturers. Or even different versions for various models by a single manufacturer. That’s what some Android developers are saying they are facing now.&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;I'm not so sure Android development and testing is any different than with most software development - witness the issues developer face with supporting their web apps across different browsers.  But I do think that their expectations are reasonable: an OS developer (in this case Google) needs to do all they can to standardize how the application layer will behave. Certainly Apple's iPhone has set the bar high in this case and ultimately developers will decide how much they are willing to put up with.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8220486787376173365?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8220486787376173365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8220486787376173365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8220486787376173365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8220486787376173365'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/testing-android-apps-compatibility.html' title='Testing Android Apps - The Compatibility Testing Matrix Continues To Grow'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SwtkL40DiuI/AAAAAAAAAn8/81qGlVTen8o/s72-c/android-compatibility.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5337366749314567998</id><published>2009-11-23T08:00:00.000-08:00</published><updated>2009-11-23T08:00:06.870-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><title type='text'>Intelligent Automated Testing - A Look At FitNesse</title><content type='html'>For those of you that read our &lt;a href="http://blog.testlabs.com/2009/11/automated-web-services-testing.html"&gt;interview with Matt Krapivner&lt;/a&gt;, you probably gained additional insight on the FitNesse automated testing framework. Having met with Matt recently, I've seen just how useful FitNesse can be, and so I wanted to share some videos I've found about FitNesse.  This first one is a quick tutorial showing how to download and run FitNesse. This includes a demo of the FitNesse acceptance tests. The steps are straightforward, and when you're done, you'll have a fully functional FitNesse setup - ready for hacking and learning.&lt;br /&gt;&lt;br /&gt;&lt;object width="491" height="370"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2732713&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2732713&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="491" height="370"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5337366749314567998?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5337366749314567998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5337366749314567998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5337366749314567998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5337366749314567998'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/intelligent-automated-testing-look-at.html' title='Intelligent Automated Testing - A Look At FitNesse'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-970048238665300066</id><published>2009-11-20T08:00:00.000-08:00</published><updated>2009-11-20T08:05:42.515-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><title type='text'>Model-Based Testing For Web Applications With TestOptimal - (Part 4) Reports</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYiHigBgwI/AAAAAAAAAn4/Jx2d8MY4t6E/s1600/TestOptimalExec.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYiHigBgwI/AAAAAAAAAn4/Jx2d8MY4t6E/s400/TestOptimalExec.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Previous articles on Model-Based Testing For Web Applications With TestOptimal:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://blog.testlabs.com/2009/10/model-based-testing-for-web_30.html"&gt;Part 1 - Preparing The Model&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.testlabs.com/2009/11/model-based-testing-for-web.html"&gt;Part 2 - mScript&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.testlabs.com/2009/11/model-based-testing-for-web_13.html"&gt;Part 3 - Generating Sequences&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;Today we conclude this series of articles on using TestOptimal for web applications testing by looking at the reporting features. TestOptimal provides detailed information on all aspects of each model-based testing project.  The main reporting elements are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Execution Status&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Execution Progress&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Testing Coverage&lt;/b&gt;: includes State/Transition traversals and # of each that are covered or left un-covered&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transition Sequences&lt;/b&gt;: a description of each state-to-state transition&lt;/li&gt;&lt;li&gt;&lt;b&gt;Execution Details&lt;/b&gt;: includes exceptions and transition response times in milliseconds, as well as statistical analysis of the 3-sigma range for each response time on state/transitions based on historical MBT executions&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Debugging&lt;/b&gt;: this information is provided in several panes - Console, mScript Log, Server Log and Selenium Log&lt;/li&gt;&lt;/ol&gt;Below is a report-by-report look at the information TestOptimal provides, along with a brief description for each report.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;This is the Monitor Tab, which provides information on execution and coverage:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYe77t5cGI/AAAAAAAAAnc/2kUjG1yV9tM/s1600/MonitorTab.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYe77t5cGI/AAAAAAAAAnc/2kUjG1yV9tM/s400/MonitorTab.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The Sequence Log tab shows the test sequence (state and transition traversal sequence) generated from the model with the selected sequencer. Use this transition log to find when and where the MBT exception occurred. You may also use this transition log to capture the test sequence and feed it to your testing frame work:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYfiIyrCzI/AAAAAAAAAng/zyCHj7-PNQw/s1600/TransLogTab.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="163" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYfiIyrCzI/AAAAAAAAAng/zyCHj7-PNQw/s400/TransLogTab.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The Stats Tab shows MBT execution stats collected by TestOptimal, both in-progress MBT execution or historical executions:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYf05lV7gI/AAAAAAAAAnk/7HNtnwzzsP4/s1600/StatsTab.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYf05lV7gI/AAAAAAAAAnk/7HNtnwzzsP4/s400/StatsTab.jpg" width="356" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The client log messages are written to this console log window. You can adjust the debug level using the drop-down list on top of the console:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYgIoNL2hI/AAAAAAAAAno/-7pdAfdPGIk/s1600/ConsoleLog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="88" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYgIoNL2hI/AAAAAAAAAno/-7pdAfdPGIk/s400/ConsoleLog.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The mScript Log window displays the log messages generated by your mScript and errors and exceptions triggered by the mScript:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwYgZaj2jOI/AAAAAAAAAns/l5DaZHY_S3Y/s1600/mScriptLog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="72" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwYgZaj2jOI/AAAAAAAAAns/l5DaZHY_S3Y/s400/mScriptLog.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The Server Log dislays the log generatd by TestOptimal sever. Ths is the place where you can find the errors and exception stack traces:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYgrt0lEnI/AAAAAAAAAnw/HWOrXHESWfs/s1600/ServerLog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="86" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SwYgrt0lEnI/AAAAAAAAAnw/HWOrXHESWfs/s400/ServerLog.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you are using the bundled Seleninum RC server, this log window will let you access Selenium RC sever log file:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYhBb2Mq8I/AAAAAAAAAn0/AU9DUnTww30/s1600/SeleniumLog.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="87" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYhBb2Mq8I/AAAAAAAAAn0/AU9DUnTww30/s400/SeleniumLog.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This concludes our 4 part series on using TestOptimal for model-based testing of web applications.&amp;nbsp; Although we covered the main steps that relate to model-based testing - create the model, customize the mScript, generate and execute test sequences, and analysis results - there's a lot more to be discovered with TestOptimal.&amp;nbsp; For more information on other features (e.g. mCase sequences, java support), different editions, and how to extend TestOptimal, visit their website &lt;a href="http://testoptimal.com/" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp; I highly recommend that you look at their various &lt;a href="http://testoptimal.com/wiki/index.php?Tutorials" target="_blank"&gt;tutorials&lt;/a&gt; and &lt;a href="http://testoptimal.com/wiki/index.php?DemoApp" target="_blank"&gt;examples&lt;/a&gt; to see just how extensive this tool is for model-based testing.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-970048238665300066?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/970048238665300066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=970048238665300066' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/970048238665300066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/970048238665300066'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/model-based-testing-for-web_20.html' title='Model-Based Testing For Web Applications With TestOptimal - (Part 4) Reports'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SwYiHigBgwI/AAAAAAAAAn4/Jx2d8MY4t6E/s72-c/TestOptimalExec.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3646410011084332294</id><published>2009-11-19T08:00:00.000-08:00</published><updated>2009-11-19T09:28:32.543-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><title type='text'>Windows 7 In The News - A Month After Launch</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwTHZX16HrI/AAAAAAAAAnY/Nixy8I2G5eY/s1600/Windows_7_USB_Drive.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SwTHZX16HrI/AAAAAAAAAnY/Nixy8I2G5eY/s200/Windows_7_USB_Drive.jpg" width="200" /&gt;&lt;/a&gt;Windows 7 has been out for a month now and most everyone agrees that it's an improvement over Vista.&amp;nbsp; As for testing with Windows 7, it looks like there's more to this new version of Windows than simply a better implementation of Vista.&amp;nbsp; Aside from the security issues described in the links below, and the fact that the federal government cannot use Windows 7 yet, there are some pretty interesting unknowns.&amp;nbsp; The two that impressed me most were the &lt;b&gt;hidden tool for examining energy usage&lt;/b&gt; (might be useful during testing) and the way it handles crashes - &lt;b&gt;Windows 7 actually modifies how it allocates memory after several crashes&lt;/b&gt;, which would affect how reproducible a bug might be.&amp;nbsp; See if you agree:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;In an inauspicious beginning to the week, the first zero-day bug for Windows 7 has emerged. The bug touches on Microsoft's Server Message Block (SMB) program -- specifically, SMBv1 and SMBv2 on Windows 7 and Windows Server 2008 R2. Microsoft has issued a security advisory describing workarounds, but says most users would be protected from attacks by blocking two ports at the firewall.&lt;/i&gt; &lt;a href="http://mcpmag.com/Articles/2009/11/17/Windows-7-Gets-First-Bug.aspx" target="_blank"&gt;Windows 7 Gets Its First Bug&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Windows 7 has a hidden tool that will help you by examining your energy use and suggesting what you can do in order to improve it. To get a power efficiency report, Computerworld’s Preston Gralla provided the following steps...&lt;/i&gt; &lt;a href="http://printerinkcartridgesblog.printcountry.com/?p=6255" target="_blank"&gt;Tips and Tricks for Windows 7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;If an application crashes a few times, Windows will automatically apply a shim that intercepts its memory operations. FTH will over-allocate memory, and keep a copy of freed memory so that attempts to re-read it will succeed.&lt;/i&gt; &lt;a href="http://www.theregister.co.uk/2009/11/18/windows_7_heart/page2.html" target="_blank"&gt;Windows 7's dirty secrets revealed&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;More than a dozen federal agencies, including the White House and all branches of the military, are testing Windows 7, according to Microsoft. But it may be another six months before agencies can move ahead with Windows 7 deployment because a government-mandated security standard hasn't been finalized.&lt;/i&gt; &lt;a href="http://www.informationweek.com/news/windows/operatingsystems/showArticle.jhtml?articleID=221601528" target="_blank"&gt;Government Use Of Windows 7 Hinges On Security Spec&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Spotty support for networked all-in-one printers in particular may be a testing, QA, and certification issue; some notebook drivers aren't yet available either.&lt;/i&gt; &lt;a href="http://www.pcworld.com/article/174392/windows_7s_spotty_driver_support.html" target="_blank"&gt;Windows 7's Spotty Driver Support&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Last week, security vendor Sophos published a blog post in which it said that Windows 7 was vulnerable to 8 our of 10 of the most common viruses. Microsoft has responded to these test results, which are a classic case of "scare 'm and they'll fall in line".&lt;/i&gt; &lt;a href="http://www.osnews.com/story/22470/Microsoft_Sophos_Windows_7_Malware_Test_Sensationalised_" target="_blank"&gt;Microsoft: Sophos Windows 7 Malware Test 'Sensationalised'&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3646410011084332294?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3646410011084332294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3646410011084332294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3646410011084332294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3646410011084332294'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/windows-7-in-news-month-after-launch.html' title='Windows 7 In The News - A Month After Launch'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/SwTHZX16HrI/AAAAAAAAAnY/Nixy8I2G5eY/s72-c/Windows_7_USB_Drive.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-901756205875694969</id><published>2009-11-18T08:00:00.000-08:00</published><updated>2009-11-18T19:57:20.834-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automated testing'/><title type='text'>Why Would Anyone Want To Implement Automated Testing?</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwTCBkdxCRI/AAAAAAAAAnU/ZsU9p2vKXME/s1600/automated-testing.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwTCBkdxCRI/AAAAAAAAAnU/ZsU9p2vKXME/s1600/automated-testing.jpeg" /&gt;&lt;/a&gt;Moreover, why does anyone even want to test their software at all? They just want it to work. But most know better, and so they test. But does management care if testing is manual or automated?  Should testers care if their testing is manual or automated? My guess is that &lt;b&gt;management&lt;/b&gt; cares about automated testing if they think testing is going to &lt;b&gt;cost less &lt;/b&gt;and&lt;b&gt; provide faster results&lt;/b&gt;. &lt;b&gt;Tester's&lt;/b&gt; will consider automated testing if it &lt;b&gt;increases coverage&lt;/b&gt; while making them &lt;b&gt;more efficient&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The reason I'm writing about this subject is because of articles posted on &lt;a href="http://blogs.msdn.com/imtesty/default.aspx" target="_blank"&gt;Bj Rollison's blog&lt;/a&gt; about calculating ROI for automated testing.  In Rollison's first article on the subject, &lt;a href="http://blogs.msdn.com/imtesty/archive/2009/08/25/measuring-test-automation-roi.aspx" target="_blank"&gt;Measuring Test Automation ROI&lt;/a&gt;, he says this about ROI:&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;blockquote&gt;I have 2 essential problems with ROI calculations within the context of test automation. First, if the business manager doesn’t understand the value of automation within a complex software project (especially one which will have multiple iterations) they should read a book on managing software development projects. I really think most managers understand that test automation would benefit their business (in most cases). I suspect many managers have experienced less than successful automation projects but don’t understand how to establish a more successful automation effort. I also suspect really bright business managers are not overly impressed with magic beans.&lt;br /&gt;&lt;/blockquote&gt;Harsh comments but probably a realistic view of things.  But it makes things difficult for anyone wanting to bring automated testing into their QA processes, given that there's a need to explain benefits versus cost. The follow-on &lt;a href="http://blogs.msdn.com/imtesty/archive/2009/09/02/test-automation-roi-part-ii.aspx" target="_blank"&gt;Part 2&lt;/a&gt;, further condemns ROI calculations to being a silly waste of time. What Rollison does offer is why he automates tests, as well as points to a set of questions useful in deciding when to automate.  Rollison identifies 4 reasons he chooses to automate tests:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Free up my time,&lt;/li&gt;&lt;li&gt;Re-verify baseline assessments (BVT/BAT, regression, acceptance test suites)&lt;/li&gt;&lt;li&gt;Increase test coverage (via increased breadth of data or state variability),&lt;/li&gt;&lt;li&gt;Accomplish tasks that can’t easily be achieved via manual testing approaches.&lt;/li&gt;&lt;/ol&gt;In addition to his list, he praises Brian Marick's paper on &lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;amp;ObjectType=ART&amp;amp;ObjectId=2010" target="_blank"&gt;When Should a Test Be Automated&lt;/a&gt;.  Rollison lists Marick's 3 key questions one should ask before automating:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Automating this test and running it once will cost more than simply running it manually once.  How much more?&lt;/li&gt;&lt;li&gt;An automated test has a finite lifetime, during which it must recoup that additional cost.  Is this test likely to die sooner or later?  What events are likely to end it?&lt;/li&gt;&lt;li&gt;During its lifetime, how likely is this test to find additional bugs (beyond whatever bugs it found the first time it ran)?  How does this uncertain benefit balance against the cost of automation?&lt;/li&gt;&lt;/ol&gt;I think these questions and the process by which one answers them, is an effective way to inform one's decision as to automate or not.  Neither Rollison or Marick offer answers, nor should they.  As Rollison puts it: "Unfortunately, there is no single cookie-cutter approach in deciding what tests to automate. Different projects have different requirements and expectations, and, of course, not all tests are equal."&lt;br /&gt;&lt;br /&gt;What I take away from these questions is a process for making logical decisions about automated tests with the ability to explain why the automation effort will benefit the organization's testing goals - if it improves testing it should be worth the investment, so long as that improvement fits within your goals.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-901756205875694969?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/901756205875694969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=901756205875694969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/901756205875694969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/901756205875694969'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/why-would-anyone-want-to-implement.html' title='Why Would Anyone Want To Implement Automated Testing?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SwTCBkdxCRI/AAAAAAAAAnU/ZsU9p2vKXME/s72-c/automated-testing.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1997223959693336454</id><published>2009-11-17T08:00:00.000-08:00</published><updated>2009-11-17T08:00:06.898-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><title type='text'>USB Interoperability And Compatibility Testing Must Have - P55</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwGglN2nZBI/AAAAAAAAAnE/FXLnIzCWcp8/s1600/p55-chip.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwGglN2nZBI/AAAAAAAAAnE/FXLnIzCWcp8/s200/p55-chip.jpg" /&gt;&lt;/a&gt;If you conduct USB interoperability testing, you'll want to add systems that use the Intel P55 Express chipset.&amp;nbsp; We're finding out that the P55's USB controller can be problematic with certain devices.&amp;nbsp; Here are a number of reports worth looking into:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Intel's quality control team who seem to have somehow missed an issue between Apple's app carrier deluxe and the P55 Express chipset's USB controller.&lt;/i&gt; &lt;a href="http://www.engadget.com/2009/10/31/iphone-and-windows-7-dont-play-nice-intel-p55-chipset-to-blame/"&gt;iPhone and Windows 7 don't play nice, Intel P55 chipset to blame&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;The Intel P55 Express chipset snafu that caused iPhones to lose their syncing minds has now been remedied -- at least by one motherboard maker.&lt;/i&gt; &lt;a href="http://www.engadget.com/2009/11/09/gigabyte-fixes-iphone-sync-issue-with-bios-update/"&gt;Gigabyte fixes iPhone sync issue with BIOS update&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Asus and MSI, which also use the P55 express on their motherboards, haven’t issued any updates yet, but hopefully will soon.&lt;/i&gt; &lt;a href="http://www.theiphoneblog.com/2009/11/07/busted-windows-7-intel-p55-express-iphone-sync-fixed-gigabyte-motherboards-asus-msi-pending/"&gt;Busted Windows 7 + Intel P55 Express iPhone Sync Fixed for Gigabyte Motherboards — Asus and MSI Pending&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Our leading theory is a BIOS or system configuration issue, but we are still investigating," Intel said Monday.&lt;/i&gt; &lt;a href="http://news.cnet.com/8301-13924_3-10388577-64.html?tag=mncol;title"&gt;Intel comments on iPhone sync glitch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://discussions.apple.com/thread.jspa?threadID=2157442&amp;amp;start=0&amp;amp;tstart=0"&gt;iTunes 9 on Windows 7 x64 Has Problems with iPhone&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1997223959693336454?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1997223959693336454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1997223959693336454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1997223959693336454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1997223959693336454'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/usb-interoperability-and-compatibility.html' title='USB Interoperability And Compatibility Testing Must Have - P55'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SwGglN2nZBI/AAAAAAAAAnE/FXLnIzCWcp8/s72-c/p55-chip.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4049277878388783901</id><published>2009-11-16T08:00:00.000-08:00</published><updated>2009-11-16T10:49:22.076-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><title type='text'>Getting Started With TestOptimal</title><content type='html'>For the last few weeks we've been writing about model-based testing using TestOptimal.  Today we have a video tutorial on getting started with TestOptimal. The video covers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Installation&lt;/li&gt;&lt;li&gt;Screen Navigation&lt;/li&gt;&lt;li&gt;Main Features, and&lt;/li&gt;&lt;li&gt;Working with Demo Apps.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://testoptimal.com/tutorials/GettingStarted.htm" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SwF7jOP_yPI/AAAAAAAAAm8/-6-4DjvKgC0/s400/testoptimal-video2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4049277878388783901?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4049277878388783901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4049277878388783901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4049277878388783901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4049277878388783901'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/getting-started-with-testoptimal.html' title='Getting Started With TestOptimal'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SwF7jOP_yPI/AAAAAAAAAm8/-6-4DjvKgC0/s72-c/testoptimal-video2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8704725045017653675</id><published>2009-11-13T08:00:00.000-08:00</published><updated>2009-11-13T12:40:27.193-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Model-Based Testing For Web Applications With TestOptimal - (Part 3) Generating Sequences</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SvzRJlgTceI/AAAAAAAAAmE/or_M9qhJiXA/s1600-h/testoptimal-monitor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SvzRJlgTceI/AAAAAAAAAmE/or_M9qhJiXA/s400/testoptimal-monitor.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;So far we've prepared our TestOptimal project with the model we created in Part 1 (&lt;a href="http://blog.testlabs.com/2009/10/model-based-testing-for-web_30.html"&gt;Model-Based Testing For Web Applications With TestOptimal - (Part 1) Preparing The Model&lt;/a&gt;) and the mScript we crafted in Part 2 (&lt;a href="http://blog.testlabs.com/2009/11/model-based-testing-for-web.html"&gt;Model-Based Testing For Web Applications With TestOptimal - (Part 2) mScript&lt;/a&gt;).  Now it's time to see how this all comes together by generating our test sequences.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;TestOptimal offers 5 sequence modes.  They are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Optimal&lt;/b&gt; - uses the proven optimization algorithms to generate the optimal test sequence to achieve 100% coverage of your application. Because only the minimum number of test steps have to be repeated, the test execution completes in least amount of time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Random&lt;/b&gt; - generates the test sequence by randomly selecting a transition from the current state. You can set conditions when to stop the test execution&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Greedy&lt;/b&gt; - works the same way as Random except that it prefers un-traversed (un-tested) transitions over already traversed transitions. This helps to achieve the desired coverage with less number of test steps.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;mCase Optimal&lt;/b&gt; - generates the optimal test sequences to cover all states and transitions contained in mCases. Use mCaseSequencer if you just want to test certain scenarios or parts of your application. You may also use mCaseOptimal with virtual users to simulate concurrent users running certain test scenarios.&lt;/li&gt;&lt;li&gt;&lt;b&gt;mCase Serial&lt;/b&gt; - is a variation from mCaseOptimal. It differs from mCaseOptimal by preserving the order of transitions/states in mCase(s) in the test sequences it generates.&lt;/li&gt;&lt;/ul&gt;Each of these sequence types describe how TestOptimal will traverse our graph, and consequently how much coverage we will achieve.  I tried out the first three sequence types (mCase Serial and Optimal won't be covered in this article) and took them for a "dry run" to see what was produced.&lt;br /&gt;&lt;br /&gt;For each sequence type I selected, I received a report on Testing Coverage from the Monitor tab:&lt;br /&gt;&lt;br /&gt;Greedy&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SvzRdXTO-mI/AAAAAAAAAmM/OeTEdWANE4Y/s1600-h/greedy-coverage.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SvzRdXTO-mI/AAAAAAAAAmM/OeTEdWANE4Y/s400/greedy-coverage.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Random&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvzRojVsCsI/AAAAAAAAAmU/uMQwuCX2WCM/s1600-h/random-coverage.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvzRojVsCsI/AAAAAAAAAmU/uMQwuCX2WCM/s400/random-coverage.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Optimal&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvzR9Q8j1vI/AAAAAAAAAmc/NS3D2th2APk/s1600-h/optimal-coverage.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvzR9Q8j1vI/AAAAAAAAAmc/NS3D2th2APk/s400/optimal-coverage.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the Monitor tab shows how many traversals were done for each state and transition, as well as how many states/transitions were covered or not.&amp;nbsp; Since I set up the sequencer to seek 100% coverage, there were no un-covered states/transitions.&amp;nbsp; I was surprised to see the Random sequence achieve a greater efficiency over the Greedy sequence.&amp;nbsp; And I was very impressed to see how efficient the Optimal sequencer was.&lt;br /&gt;&lt;br /&gt;In addition to the information above provided in the Monitor tab, TestOptimal provides several other views for each run.&amp;nbsp; There's a Sequence Log, which shows the last 1000 traversals and lists each state and transition traversed:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvzTOy97OoI/AAAAAAAAAmk/swMcB5OZ-Ks/s1600-h/sequence-log.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvzTOy97OoI/AAAAAAAAAmk/swMcB5OZ-Ks/s400/sequence-log.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;And a Stats tab, which provides state and transition coverage information with performance times:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvzTWaG_vMI/AAAAAAAAAms/doQN9IkUyZg/s1600-h/stats-tab.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvzTWaG_vMI/AAAAAAAAAms/doQN9IkUyZg/s400/stats-tab.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;After trying out these sequences in "dry-run" mode, I decided to run the test sequences against the actual target - maps.google.com.&amp;nbsp; It worked flawlessly.&amp;nbsp; After pressing the Run button, TestOptimal launched a browser window and began running each of the several hundred test sequences.&amp;nbsp; It was fun to watch and, more importantly, demonstrated the power of model-based testing.&amp;nbsp; Next week we'll take a look at some of the details within TestOptimal reports and analyze our results.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8704725045017653675?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8704725045017653675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8704725045017653675' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8704725045017653675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8704725045017653675'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/model-based-testing-for-web_13.html' title='Model-Based Testing For Web Applications With TestOptimal - (Part 3) Generating Sequences'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SvzRJlgTceI/AAAAAAAAAmE/or_M9qhJiXA/s72-c/testoptimal-monitor.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5643646583843454249</id><published>2009-11-12T08:00:00.000-08:00</published><updated>2011-03-28T12:12:28.981-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>Learning How To Test Mobile Device Applications (Part 4) - iPhone</title><content type='html'>&lt;blockquote&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device.html"&gt;Learning How To Test Mobile Device Applications (Part 1) - Palm webOS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device_29.html"&gt;Learning How To Test Mobile Device Applications (Part 2) - Android&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/11/learning-how-to-test-mobile-device.html"&gt;Learning How To Test Mobile Device Applications (Part 3) - BlackBerry&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvuBbnnzYXI/AAAAAAAAAl8/oo3WTWIy5oI/s1600-h/index_develop.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvuBbnnzYXI/AAAAAAAAAl8/oo3WTWIy5oI/s320/index_develop.png" /&gt;&lt;/a&gt;Today we conclude this HOWTO series with the iPhone. Like the other mobile device platform companies, Apple provides everything we need to create a simple app so that we will have an understanding of how to test those apps. And it meets our cost goal - the SDK is free (if you know where to look) and you can create and test your iPhone app without having to buy an iPhone.&lt;br /&gt;&lt;br /&gt;If you visit the &lt;a href="http://developer.apple.com/iPhone/program/" target="_blank"&gt;iPhone Developer Program page&lt;/a&gt;, you'll end up being asked to join the program for a fee.&amp;nbsp; And that makes sense if you want to be able to create and publish your iPhone app, but we just want to learn what it takes to develop and test an app by downloading the SDK for free.&amp;nbsp; What you want to do is sign up as a &lt;a href="http://developer.apple.com/iphone/program/start/register/" target="_blank"&gt;Registered iPhone Developer&lt;/a&gt;.  &lt;span id="fullpost"&gt;And if you have already have an iTunes, Apple Online Store or MobileMe account, you can use your existing Apple ID to sign in and become a registered iPhone developer.  It's easy and takes a few seconds to do.  Once you're registered, then you can access the &lt;a href="http://developer.apple.com/iphone/index.action" target="_blank"&gt;iPhone Dev Center&lt;/a&gt; to download the SDK.&lt;br /&gt;&lt;br /&gt;After you register and then &lt;a href="http://developer.apple.com/iphone/login.action" target="_blank"&gt;log in to the iPhone Dev Center&lt;/a&gt;, you can download the SDK &lt;a href="http://draft.blogger.com/%20http://developer.apple.com/iphone/index.action#downloads" target="_blank"&gt;here&lt;/a&gt;. Once downloaded and installed, then you're ready to create your app and run it on the iPhone simulator.  And luckily, there's a tutorial for that - &lt;a href="http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/100-iPhone_Development_Quick_Start/iphone_development_quick_start.html#//apple_ref/doc/uid/TP40007959-CH3-SW9" target="_blank"&gt;Tutorial: Hello, World!&lt;/a&gt;  This tutorial takes through these steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create the Project&lt;/li&gt;&lt;li&gt;Write the Code&lt;/li&gt;&lt;li&gt;Run the Application&lt;/li&gt;&lt;/ol&gt;Seems simple enough, and fortunately the tutorial has pictures and clear descriptions for each step.&amp;nbsp; When you're done, I recommend you setup Apple's &lt;a href="http://www.apple.com/support/iphone/enterprise/" target="_blank"&gt;iPhone Configuration Tool&lt;/a&gt; and run your app with the console window open.&amp;nbsp; There you'll be able to log application and system level warnings.&amp;nbsp; By knowing what's being reported when interacting with an app can help you refine the steps you need to reproduce tricky (and memory related) problems.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5643646583843454249?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5643646583843454249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5643646583843454249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5643646583843454249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5643646583843454249'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/learning-how-to-test-mobile-device_12.html' title='Learning How To Test Mobile Device Applications (Part 4) - iPhone'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SvuBbnnzYXI/AAAAAAAAAl8/oo3WTWIy5oI/s72-c/index_develop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1663483380155067191</id><published>2009-11-06T08:00:00.000-08:00</published><updated>2009-11-13T08:24:17.890-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Model-Based Testing For Web Applications With TestOptimal - (Part 2) mScript</title><content type='html'>This week we will create the scripting component of our TestOptimal model-based testing project. But before we do, I need to refer back to last week's article and point out that my initial model contained a "bad state" - one that was inaccessible from any other state.  I found this out by importing my model into TestOptimal and having it check out the many states and transitions of my model. You can do a dry run using TestOptimal, which will generate a test sequence that covers all transitions in your model. If you have any isolated states or states that are not reachable (as was the case for me), an error popup will be displayed, which indicates you have missed some transitions thus making some states not reachable. TestOptimal found my "bad state" and I quickly fixed it. It turns out that a typo contributed to this error.  The &lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvBTErdkrYI/AAAAAAAAAlE/Xx5qK5As2pw/s1600-h/state_table2.jpg"&gt;new (and correct) model&lt;/a&gt; has been posted to last week's article (&lt;a href="http://blog.testlabs.com/2009/10/model-based-testing-for-web_30.html"&gt;Model-Based Testing For Web Applications With TestOptimal - (Part 1) Preparing The Model&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;TestOptimal uses a scripting format called &lt;a href="http://testoptimal.com/wiki/index.php?mScriptTags" target="_blank"&gt;mScript&lt;/a&gt;. mScript is a simple, XML based scripting to drive your web applications. It has only 14 tags and is very easy to learn and use for writing your testing scripts.&amp;nbsp; It's also very powerful.&amp;nbsp; Here's a list of the 14 tags:&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;action&lt;/b&gt; - executes the action specified in the code attribute, e.g. to click the button named "Order", you would enter code="click('name=Order')". See mScript function. You may also create your own user defined functions.&lt;/li&gt;&lt;li&gt;&lt;b&gt;assert&lt;/b&gt; - asserts the condition specified. if condition fails throw the MBTException.&lt;/li&gt;&lt;li&gt;&lt;b&gt;dataset&lt;/b&gt; - defines a dataset. Its body contains tags that populates the dataset.&lt;/li&gt;&lt;li&gt;&lt;b&gt;db&lt;/b&gt; - defines a jdbc data source to be used by sql tag.&lt;/li&gt;&lt;li&gt;&lt;b&gt;field&lt;/b&gt; - defines a field in a row and sets its value.&lt;/li&gt;&lt;li&gt;&lt;b&gt;if&lt;/b&gt; - performs condition check and if evaluates to true then execute the command tags in the body.&lt;/li&gt;&lt;li&gt;&lt;b&gt;log&lt;/b&gt; - logs a message to TestOptimal server log file.&lt;/li&gt;&lt;li&gt;&lt;b&gt;mbt&lt;/b&gt; - container tag to hold one or many scripts to control MBT execution.&lt;/li&gt;&lt;li&gt;&lt;b&gt;rowdata&lt;/b&gt; - adds a row to the data set. Must be within a dataset tag and contain at least one field tag.&lt;/li&gt;&lt;li&gt;&lt;b&gt;script&lt;/b&gt; - defines a script method to be executed at state entry/exit or transition prep, action or verify. The body of the script tag is the command tags. This tag is equivalent to the method declaration in a java class.&lt;/li&gt;&lt;li&gt;&lt;b&gt;sql&lt;/b&gt; - declares the sql statement to populate dataset.&lt;/li&gt;&lt;li&gt;&lt;b&gt;state&lt;/b&gt; - container tag to hold scripts for a state including transition.&lt;/li&gt;&lt;li&gt;&lt;b&gt;transition&lt;/b&gt; - container tag to hold scripts for a transition.&lt;/li&gt;&lt;li&gt;&lt;b&gt;while&lt;/b&gt; - executes the script in its body if the condition specified is true.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;To write your mScript, you'll need an XML editor.&amp;nbsp; I use Notepad++ (Windows) or TextWrangler (Mac OS). Here are the steps I used to create my mScript:&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;Generate a skeleton mScript&lt;/b&gt;.&amp;nbsp; To do so, just click on mScriptTab, the mScript displayed is the mScript we will use. Right-mouse click on the script content and select "View Source" option, copy and paste the code into your XML editor.&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;Gather UI identifiers from the target web interface&lt;/b&gt; (google maps).&amp;nbsp;&amp;nbsp; I used the FireFox Selenium IDE to do this.&amp;nbsp; By recording each action from my model, e.g. click Search maps, the Selenium IDE captured the identifiers I needed.&lt;br /&gt;&lt;br /&gt;3. &lt;b&gt;Add the specific script actions that pertain to each transition in the model&lt;/b&gt;. There were 11 transitions in my model, so I had 11 scripts to write. Within the skeleton script generated in Step #1 above, there are 2 sets of function stubs under each state and 3 sets of function stubs under each transition. To keep things simple, I did not use any of the state functions, instead concentrating on the transition function actions. The transitions for my model involved only two actions: clicking on objects (e.g. buttons) or selecting from a pop-down menu.&amp;nbsp; Hence I needed to write two action scripts:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;nbsp; &amp;lt;action code="$click(element_locator)"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;action code="$selectOption(element_locator,label)"/&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;"element_locator" is a string to locate the link on the page. Again, I used the Selenium IDE FireFox plug-in to find the identifiers for each element locator.&amp;nbsp; To refresh our memory on what we are testing, here's a screenshot of the limited UI we selected for these articles:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s1600-h/google-maps-search-bar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s400/google-maps-search-bar.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Referring to the above graphic, here are the mScript action codes I used for the transitions in my model:&lt;br /&gt;&lt;br /&gt;Click Show options&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$click('id=showss')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Click Remove options&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$click('id=hidess')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'All Results'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=All results')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'Locations'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=Locations')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'Businesses'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'User-created content'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'Related maps'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'Mapped web pages'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Select option 'Real estate'&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Click Search Maps&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$click('id=q-sub')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;Click Google maps logo&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;action code="$click('id=logo')"/&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;4. &lt;b&gt;Modify the skeleton mScript code&lt;/b&gt; with the action codes from above (and remove any unneeded tags as desired).&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;Deploy your mScript code&lt;/b&gt;. To do so, copy or save to the /script/ folder in the TestOptimal home directory using the same name as the model name, e.g.&amp;nbsp; "google_maps.xml". &lt;br /&gt;&lt;br /&gt;We're now ready to exercise our model using the mScript that has been tailored to our test target (I've included the script below).&amp;nbsp; &lt;a href="http://blog.testlabs.com/2009/11/model-based-testing-for-web_13.html"&gt;Next week we'll generate test sequences and start testing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&amp;lt;xml version="1.0"&amp;gt;&lt;br /&gt; &amp;lt;mscript&amp;gt;&lt;br /&gt;  &amp;lt;state id="n1"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="show_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=showss')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n2"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n3"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n4"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n5"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n6"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n7"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt;  &amp;lt;state id="n8"&amp;gt;&lt;br /&gt;   &amp;lt;transition event="remove_options"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=hidess')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_all"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=All results')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_locations"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Locations')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_bus"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Businesses')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_user"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=User-created content')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_related"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Related maps')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_mapped"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Mapped web pages')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="select_real"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$selectOption('id=mrtbox','label=Real estate')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="search_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=q-sub')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;   &amp;lt;transition event="click_google_maps"&amp;gt;&lt;br /&gt;    &amp;lt;script type="action"&amp;gt;&lt;br /&gt;     &amp;lt;action code="$click('id=logo')" /&amp;gt;&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;   &amp;lt;/transition&amp;gt;&lt;br /&gt;  &amp;lt;/state&amp;gt;&lt;br /&gt; &amp;lt;/mscript&amp;gt;&lt;br /&gt;&amp;lt;/xml&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1663483380155067191?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1663483380155067191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1663483380155067191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1663483380155067191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1663483380155067191'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/model-based-testing-for-web.html' title='Model-Based Testing For Web Applications With TestOptimal - (Part 2) mScript'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s72-c/google-maps-search-bar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2267715025853749781</id><published>2009-11-05T08:00:00.000-08:00</published><updated>2011-03-28T12:19:32.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Learning How To Test Mobile Device Applications (Part 3) - BlackBerry</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvGM53skFwI/AAAAAAAAAlU/xpOaj_R71VQ/s1600-h/blackberry.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvGM53skFwI/AAAAAAAAAlU/xpOaj_R71VQ/s400/blackberry.jpg" /&gt;&lt;/a&gt;In this HOWTO series, we've covered two popular mobile device platforms, webOS and Android, in these articles:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device.html"&gt;Learning How To Test Mobile Device Applications (Part 1) - Palm webOS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device_29.html"&gt;Learning How To Test Mobile Device Applications (Part 2) - Android&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;Today we'll look at BlackBerry. As we've stated in previous articles, our goal is learn enough from developing simple apps on each platform so that we have a better understanding of the platform as testers. And we want to accomplish this without having to buy each mobile device or any development software.  Fortunately, developer offerings from RIM meet these requirements, albeit with less hipness than webOS and Android.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Their "Getting Started" info is somewhat buried on their &lt;a href="http://na.blackberry.com/eng/developers/resources/tutorials.jsp#tab_tab_development" target="_blank"&gt;BlackBerry Java Development Environment &lt;/a&gt;page, and most of the info is provided as PDFs.&amp;nbsp; Which is OK, but not as convenient as having online reference web pages, particularly since some of these PDFs load slowly.&amp;nbsp; Basically, here's what you'll need to get started:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Intel® Pentium® 4 Processor (minimum 3 GHz)&lt;/li&gt;&lt;li&gt;Microsoft® Windows VistaTM, or Windows® XP&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;Java® SE Development Kit (JDK)&lt;/a&gt; version 5 or version 6 Version 6 is required if you &lt;br /&gt;are using BlackBerry MDS-CS for debugging&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/downloads/"&gt;Eclipse IDE for Java Developers&lt;/a&gt; version 3.4.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://na.blackberry.com/eng/developers/resources/devtools.jsp"&gt;Blackberry tools &lt;/a&gt;(Java Application Development tools)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;They do say you can develop on Linux or Mac OS X, but the "easiest and best supported is the Windows 32bit platform."&amp;nbsp; Interesting, especially since the minimum Windows systems needs to be 3GHz.&lt;br /&gt;&lt;br /&gt;Here are the step-by-step instructions for setup:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the JDK at &lt;a href="http://java.sun.com/javase/downloads%20index.jsp"&gt;http://java.sun.com/javase/downloads index.jsp&lt;/a&gt;. The current version is JDK 6 Update 12 which includes the JRE &lt;/li&gt;&lt;li&gt;Select required platform and language, agree to the licence agreement, and proceed with the download &lt;/li&gt;&lt;li&gt;Download the Eclipse IDE at &lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt; &lt;/li&gt;&lt;li&gt;Select Eclipse IDE for Java Developers and the version you require&lt;/li&gt;&lt;li&gt;Save the file on your computer &lt;/li&gt;&lt;li&gt;Download the BlackBerry tools at &lt;a href="http://na.blackberry.com/eng/developers/resources/devtools.jsp"&gt;http://na.blackberry.com/eng/developers/resources/devtools.jsp&lt;/a&gt;. Here you will need to download the BlackBerry Plug-in for Eclipse, as well as the BlackBerry JDEs &lt;/li&gt;&lt;li&gt;Download all available JDEs (currently 4.3 to 4.7) so that you can test your applications on most current BlackBerry devices. You will need the plug- in and at least one JDE. &lt;/li&gt;&lt;li&gt;Once you click on the link you want to download you will have to sign in (or register if you are using this service for the first time)&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use this &lt;a href="http://www.blackberry.com/DevMediaLibrary/view.do?name=eclipseJDE"&gt;video&lt;/a&gt; to learn how to install and configure the BlackBerry plug-in for Eclipse. &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The above will get you to the point where you can create your first app.&amp;nbsp; RIM provides a detailed, &lt;a href="http://na.blackberry.com/developers/resources/A10_Writing_Your_First_Application_V5.pdf"&gt;step-by-step tutorial&lt;/a&gt; on creating a "Hello World" app.&amp;nbsp; This includes instructions on how to run it on their BlackBerry simulator.&amp;nbsp; Follow their instructions and you'll have your first app up and running and ready to test. And you'll find a wealth of testing and debugging information in their &lt;a href="http://na.blackberry.com/developers/resources/A50_How_to_Debug_and_Optimize_V2.pdf"&gt;How to Debug and Optimize&lt;/a&gt; guide.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2267715025853749781?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2267715025853749781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2267715025853749781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2267715025853749781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2267715025853749781'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/learning-how-to-test-mobile-device.html' title='Learning How To Test Mobile Device Applications (Part 3) - BlackBerry'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SvGM53skFwI/AAAAAAAAAlU/xpOaj_R71VQ/s72-c/blackberry.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5331123122906818322</id><published>2009-11-04T08:30:00.000-08:00</published><updated>2009-11-03T11:03:28.564-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>iPhone App Project Managers - How Did You Test Your App?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SvBd9BIT5NI/AAAAAAAAAlM/ahH0R9PpjdY/s1600-h/iphone.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SvBd9BIT5NI/AAAAAAAAAlM/ahH0R9PpjdY/s400/iphone.jpeg" /&gt;&lt;/a&gt;iPhone application development is exploding (&lt;a href="http://blog.testlabs.com/2009/10/how-hot-is-iphone-application.html"&gt;How Hot Is The iPhone Application Development Market?&lt;/a&gt;). And users are demanding better quality - no longer is it acceptable for an iPhone app to crash unexpectedly with the explanation that apps crash every so often because of the iPhone OS.  Moreover, with more-and-more iPhone and iPod touch models to choose from, developers face a compatibility testing challenge.  So how are project managers testing their iPhone apps?&lt;br /&gt;&lt;br /&gt;We'd like to hear from iPhone application developers and managers who have navigated their way onto the App Store and can share with us the problems they faced in testing their apps, as well as tips and recommendations.&lt;br /&gt;&lt;br /&gt;If you are interested in helping out, please leave a comment or &lt;a href="mailto:%20info@testlabs.com"&gt;email us&lt;/a&gt;.  We will send you questions by email and publish your interview here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5331123122906818322?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5331123122906818322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5331123122906818322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5331123122906818322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5331123122906818322'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/iphone-app-project-managers-how-did-you.html' title='iPhone App Project Managers - How Did You Test Your App?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/SvBd9BIT5NI/AAAAAAAAAlM/ahH0R9PpjdY/s72-c/iphone.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-535120342729779331</id><published>2009-11-03T08:00:00.001-08:00</published><updated>2009-11-03T08:20:25.542-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Top 10 Software Engineering Risk List</title><content type='html'>This list is from an interesting article in &lt;a href="http://www.softwaretechnews.com/" target="_blank"&gt;SoftwareTech News&lt;/a&gt; and represents project assessments over many years. The author, Donald J. Reifer, has had the benefit of conducting risk assessments over several decades and he put together a list that identified root causes and impacts.  Here are the Top 10 Risks he identified:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Impossible Schedules&lt;/li&gt;&lt;li&gt;Inadequate Budgets&lt;/li&gt;&lt;li&gt;Poor Requirements&lt;/li&gt;&lt;li&gt;Staffing Shortfalls&lt;/li&gt;&lt;li&gt;Lack of Operational Concept Document&lt;/li&gt;&lt;li&gt;Failure to Emphasize Testing Early Enough in the Process&lt;/li&gt;&lt;li&gt;Poor Measurement&lt;/li&gt;&lt;li&gt;Subcontract management focuses on contract issues&lt;/li&gt;&lt;li&gt;Over-Reliance on Commercial Off-The-Shelf (COTS)&lt;/li&gt;&lt;li&gt;Licensing Headaches&lt;/li&gt;&lt;/ol&gt;On the testing side of things, I can definitely relate to several in the list, particularly about not testing early enough and poor requirements.  QA and testing always suffers from those problems, and yet they continue to be at the top of the list.  The impact listed for failure to test early emphasized "Not enough time and resources available to pull together a meaningful test program...".&lt;br /&gt;&lt;br /&gt;For more on this article, visit &lt;a href="https://www.softwaretechnews.com/stn_view.php?stn_id=51&amp;article_id=139" target="_blank"&gt;Common Risk Patterns&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-535120342729779331?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/535120342729779331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=535120342729779331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/535120342729779331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/535120342729779331'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/top-10-software-engineering-risk-list.html' title='Top 10 Software Engineering Risk List'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6080975186556752977</id><published>2009-11-02T08:00:00.001-08:00</published><updated>2009-11-02T08:00:11.720-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Testing Applications In Window 7's XP Mode (HOWTO)</title><content type='html'>A lot has been said about XP Mode for Windows 7.  And I thought it was included in all versions of Windows 7.  Turns out it's not. You have to install XP Mode and it only works on Ultimate, Professional and Enterprise.  This video covers the key features with XP Mode as well as a brief instruction on how to obtain and install it.  At least Microsoft provides a fully functional copy of Windows XP for free with the download.&lt;br /&gt;&lt;br /&gt;&lt;P align="center"&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wZEnZTW59g4&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/wZEnZTW59g4&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6080975186556752977?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6080975186556752977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6080975186556752977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6080975186556752977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6080975186556752977'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/11/testing-applications-in-window-7s-xp.html' title='Testing Applications In Window 7&apos;s XP Mode (HOWTO)'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7133568882800675811</id><published>2009-10-30T08:00:00.000-07:00</published><updated>2009-11-13T08:22:35.071-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><title type='text'>Model-Based Testing For Web Applications With TestOptimal - (Part 1) Preparing The Model</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s1600-h/google-maps-search-bar.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s400/google-maps-search-bar.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Last week we introduced a 4 part HOWTO series on using TestOptimal for model-based testing of web applications. In today's Part 1,&amp;nbsp; we'll create a model using RTL's model generation tool, then convert that model for import into TestOptimal.&amp;nbsp; This will then allow us to generate automated test cases using TestOptimal's various test generations capabilities.&lt;br /&gt;&lt;br /&gt;The target web application I selected to model for Part 1 is &lt;b&gt;Google Maps&lt;/b&gt;.  And as we've discussed in previous model-based testing articles (&lt;a href="http://blog.testlabs.com/2009/03/model-based-testing-howto-part-1.html"&gt;Model-Based Testing HOWTO Part 1 - Describing The Model&lt;/a&gt;), it's important to work with small models - ones that represent a logical set of functionality within a manageable set of states.  To that end, I selected the Google maps search bar as our target to model.&amp;nbsp; Basically, we're going to model the search options functionality (&lt;b&gt;Show/Remove search options&lt;/b&gt;) as well as the two buttons &lt;b&gt;Search Maps&lt;/b&gt; and &lt;b&gt;Google maps&lt;/b&gt;.&amp;nbsp; That may not seem like much to model, but from a testing point of view, as you take into account the various options for searching Google Maps, the model starts to expand quickly.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;To build a model, you need to determine your states and transitions.&amp;nbsp; Once you identify those, you can begin to build your model, either manually or, as we do at RTL, using an automated tool.&amp;nbsp; So let's start by identifying the states we want to use for our model.&amp;nbsp; Based on the UI in the Google Maps search bar, and to keep things simple for this example, we'll only use the search options states.&amp;nbsp; Here's how I defined the sub-states: &lt;br /&gt;&lt;blockquote&gt;1. SEARCH OPTIONS - Shown | Removed&lt;br /&gt;2. OPTIONS SETTING - All results | Locations | Businesses | User-created content | Related maps | Mapped web pages | Real estate&lt;br /&gt;&lt;/blockquote&gt;The transitions I chose to include in this model are:&lt;br /&gt;&lt;blockquote&gt;1. Click Show search options&lt;br /&gt;2. Click Remove Search options&lt;br /&gt;3. Select the search option "All results"&lt;br /&gt;4. Select the search option "Locations"&lt;br /&gt;5. Select the search option "Businesses"&lt;br /&gt;6. Select the search option "User-created content"&lt;br /&gt;7. Select the search option "Related maps"&lt;br /&gt;8. Select the search option "Mapped web pages"&lt;br /&gt;9. Select the search option "Real estate"&lt;br /&gt;10. Click "Search Maps"&lt;br /&gt;11. Click Google maps&lt;br /&gt;&lt;/blockquote&gt;Using this limited set of states and transitions resulted in a model (directed state graph) with 8 states and 71 paths! Click the graphic below to view in full size.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Su9SPqCzlfI/AAAAAAAAAk0/YHAmICP2Fd8/s1600-h/state_table.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SvBPBnp6cwI/AAAAAAAAAk8/ii8YdpDuKzY/s1600-h/state_table.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvBTErdkrYI/AAAAAAAAAlE/Xx5qK5As2pw/s1600-h/state_table2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/SvBTErdkrYI/AAAAAAAAAlE/Xx5qK5As2pw/s400/state_table2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;When importing a model like the one described above into TestOptimal, it needs to be in the &lt;a href="http://graphml.graphdrawing.org/" target="_blank"&gt;GraphML format&lt;/a&gt;. So the next step is to convert our model into the proper format for TestOptimal.&amp;nbsp; I used TestOptimal's GraphML example listed &lt;a href="http://testoptimal.com/exchange/example.graphml"&gt;here&lt;/a&gt;, which is based on a simple digraph found &lt;a href="http://testoptimal.com/exchange/example.png"&gt;here&lt;/a&gt;.&amp;nbsp; Using these examples, I modified the output from our model generation tool so that it would produce a proper GraphML file:&lt;br /&gt;&lt;pre style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="UTF-8"&amp;nbsp;standalone="no"?&amp;gt;&lt;br /&gt;&amp;lt;graphml&amp;gt;&lt;br /&gt;&amp;lt;graph&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;node&amp;nbsp;id="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/node&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="show_options"&amp;nbsp;source="n1"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n2"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n2"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n2"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n2"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n2"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n2"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n2"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n2"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n2"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n2"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n3"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n3"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n3"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n3"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n3"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n3"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n3"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n3"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n3"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n3"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n4"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n4"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n4"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n4"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n4"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n4"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n4"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n4"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n4"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n4"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n5"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n5"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n5"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n5"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n5"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n5"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n5"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n5"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n5"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n5"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n6"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n6"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n6"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n6"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n6"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n6"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n6"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n6"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n6"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n6"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n7"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n7"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n7"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n7"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n7"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n7"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n7"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n7"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n7"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n7"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="remove_options"&amp;nbsp;source="n8"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_all"&amp;nbsp;source="n8"&amp;nbsp;target="n2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_locations"&amp;nbsp;source="n8"&amp;nbsp;target="n3"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_bus"&amp;nbsp;source="n8"&amp;nbsp;target="n4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_user"&amp;nbsp;source="n8"&amp;nbsp;target="n5"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_related"&amp;nbsp;source="n8"&amp;nbsp;target="n6"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_mapped"&amp;nbsp;source="n8"&amp;nbsp;target="n7"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="select_real"&amp;nbsp;source="n8"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="search_maps"&amp;nbsp;source="n8"&amp;nbsp;target="n8"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;edge&amp;nbsp;id="click_google_maps"&amp;nbsp;source="n8"&amp;nbsp;target="n1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/edge&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/graph&amp;gt;&lt;br /&gt;&amp;lt;/graphml&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;We're now ready to import our model into TestOptimal.  In &lt;a href="http://blog.testlabs.com/2009/11/model-based-testing-for-web.html"&gt;Part 2&lt;/a&gt;, we'll import this model and create a TestOptimal mScript.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7133568882800675811?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7133568882800675811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7133568882800675811' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7133568882800675811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7133568882800675811'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/model-based-testing-for-web_30.html' title='Model-Based Testing For Web Applications With TestOptimal - (Part 1) Preparing The Model'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/SupRabtUacI/AAAAAAAAAkc/QxMM3frV8ng/s72-c/google-maps-search-bar.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2109823572738544056</id><published>2009-10-29T08:00:00.000-07:00</published><updated>2011-03-28T12:22:09.949-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Learning How To Test Mobile Device Applications (Part 2) - Android</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SujrDPopHVI/AAAAAAAAAkU/CiLspCU_XnM/s1600-h/eclair-android.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SujrDPopHVI/AAAAAAAAAkU/CiLspCU_XnM/s320/eclair-android.png" /&gt;&lt;/a&gt;Last week we introduced this series on learning how to test mobile device applications based on the idea that developing a simple mobile app on each platform will help you understand how to test them (&lt;a href="http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device.html" target="blank"&gt;Learning How To Test Mobile Device Applications (Part 1) - Palm webOS&lt;/a&gt;).  And we want to do this for free and without having to buy an actual device. That's worked for webOS from Palm and will work with this week's platform - Android. &lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;And as we recommended in Part 1, testers should start by downloading and installing the SDK and building one of the included apps. For the Android platform, the steps for building your first app is explicitly laid out at &lt;a href="http://developer.android.com/sdk/index.html" target="blank"&gt;Android Developer's SDK page&lt;/a&gt;.  The instructions provided take you through the following steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Preparing your development computer&lt;/li&gt;&lt;li&gt;Downloading and installing the SDK starter package&lt;/li&gt;&lt;li&gt;Installing the ADT Plugin for Eclipse&lt;/li&gt;&lt;li&gt;Adding Android platforms to your SDK&lt;/li&gt;&lt;li&gt;Getting the latest documentation&lt;/li&gt;&lt;li&gt;Downloading other SDK components&lt;/li&gt;&lt;li&gt;Getting started with an application project&lt;/li&gt;&lt;/ol&gt;As with the webOS SDK, there's a Hello World app provided and it comes with a very nice &lt;a href="http://developer.android.com/guide/tutorials/hello-world.html" target="blank"&gt;tutorial&lt;/a&gt;.&amp;nbsp; This tutorial explains how to set up a "virtual devices" for running your apps.&amp;nbsp; As we mentioned at the beginning of this article, we want to be able to build and run an app without having to own a device.&amp;nbsp; And that's possible because of AVDs or Android Virtual Devices.&amp;nbsp; With an AVD, you're able to run the Android emulator that is used to run your apps.&lt;br /&gt;&lt;br /&gt;Since we're building apps to learn how to test them, then you need to add some debugging tools into the mix once you build your app.&amp;nbsp; And the Android SDK includes a fairly extensive set of tools to help you debug your programs.&amp;nbsp; Two debugging tools I'd concentrate on are &lt;a href="http://developer.android.com/guide/developing/tools/ddms.html#logcat" target="blank"&gt;&lt;b&gt;logcat&lt;/b&gt;&lt;/a&gt; and &lt;span id="goog_1256777740875" target="blank"&gt;&lt;/span&gt;&lt;a href="http://developer.android.com/reference/android/util/Log.html"target="blank"&gt;&lt;b&gt;Android Log&lt;/b&gt;&lt;/a&gt;.&amp;nbsp; All the Android debugging tools are describe &lt;a href="http://developer.android.com/guide/developing/debug-tasks.html" target="blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So there you have it.&amp;nbsp; Another mobile platform that comes with free tools and the ability to develop and run apps without having to own a device, as well as debugging tools that will help during testing.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2109823572738544056?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2109823572738544056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2109823572738544056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2109823572738544056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2109823572738544056'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device_29.html' title='Learning How To Test Mobile Device Applications (Part 2) - Android'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SujrDPopHVI/AAAAAAAAAkU/CiLspCU_XnM/s72-c/eclair-android.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-987182967057395183</id><published>2009-10-27T08:00:00.000-07:00</published><updated>2009-10-27T08:00:06.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><category scheme='http://www.blogger.com/atom/ns#' term='USB 3.0'/><title type='text'>Plan For USB 3.0 Compatibility Testing In Late 2010</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SuWtiJ2LtgI/AAAAAAAAAkE/FR0a-MoxX_o/s1600-h/Gigabyte-USB-30-support.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SuWtiJ2LtgI/AAAAAAAAAkE/FR0a-MoxX_o/s200/Gigabyte-USB-30-support.jpg" /&gt;&lt;/a&gt;Bad news for USB 3.0. Intel is pushing off it's plans to add USB 3.0 chipsets to 2011. This means that we won't see USB 3.0 in consumer-level&amp;nbsp; systems until then.&amp;nbsp; We can expect some systems with USB 3.0, but those will be limited to "a few high-end graphics workstations and consumer systems," according to an &lt;a href="http://www.eetimes.com/news/design/showArticle.jhtml?articleID=220700486" target="_blank"&gt;article&lt;/a&gt; at EE Times. This puts a damper on USB 3.0 testing plans.&amp;nbsp; Although some manufacturers either have or will have products that support USB 3.0 next year, testing those products will be limited to custom configurations.&lt;br /&gt;&lt;br /&gt;One manufacturer to look to for help might be Gigabyte.&amp;nbsp; They plan a &lt;a href="http://en.expreview.com/2009/10/17/gigabyte-preps-new-p55-motherboard-with-sata-60gbps-usb-30.html" target="_blank"&gt;motherboard with USB 3.0 support&lt;/a&gt;.&amp;nbsp; This board will have use a NEC chip for its USB 3.0 connector.&amp;nbsp; And the on-again, off-again plans from ASUS regarding their debut of a motherboard with USB 3.0 support appears to be back on-again according to an this &lt;a href="http://hothardware.com/News/Asus%2DReading%2DSATA%2D6G%2Dand%2DUSB%2D30%2DIntel%2DMotherboards/" target="_blank"&gt;article.&lt;/a&gt; We previously cited a report of ASUS pulling this motherboard (&lt;a href="http://blog.testlabs.com/2009/09/usb-30-compatibility-testing-is-coming.html"&gt;USB 3.0 Compatibility Testing Is Coming Soon - Maybe&lt;/a&gt;), so we'll have to wait and see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-987182967057395183?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/987182967057395183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=987182967057395183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/987182967057395183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/987182967057395183'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/plan-for-usb-30-compatibility-testing.html' title='Plan For USB 3.0 Compatibility Testing In Late 2010'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SuWtiJ2LtgI/AAAAAAAAAkE/FR0a-MoxX_o/s72-c/Gigabyte-USB-30-support.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7437908996915525399</id><published>2009-10-23T08:00:00.000-07:00</published><updated>2009-10-26T08:56:16.971-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Model-Based Testing For Web Applications With TestOptimal</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SuEkaMnnSpI/AAAAAAAAAj8/85-PVntss-0/s1600-h/model-based-testing-with-testoptimal.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SuEkaMnnSpI/AAAAAAAAAj8/85-PVntss-0/s400/model-based-testing-with-testoptimal.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;We published an introductory article on TestOptimal earlier this year (&lt;a href="http://blog.testlabs.com/2009/05/testoptimal-model-based-testing.html" icon="out" target="_blank"&gt;TestOptimal - A Model-Based Testing Automation Tool For Web Applications&lt;/a&gt;). Since then, the TestOptimal developers have been busy adding new features, tutorials and examples.&amp;nbsp; We spoke with the developers and asked them how we might integrate our model generation tool with TestOptimal.&amp;nbsp; They anticipated a need like this and had already built a capability to import models created using external tools (rather than enter the model using TestOptimal). &amp;nbsp; We were pleased to discover this capability and feel it's time now to put what we know about TestOptimal to work.  For the next few weeks, I'll provide another of our HOWTO series on TestOptimal.&lt;br /&gt;&lt;br /&gt;This HOWTO series will be presented in 4 parts and will cover:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Creating a model for import into TestOptimal&lt;/li&gt;&lt;li&gt;Creating a TestOptimal mScript&lt;/li&gt;&lt;li&gt;Generating Test Sequences&lt;/li&gt;&lt;li&gt;Analyzing Reports&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Next week we'll publish Part 1 of this HOWTO series where we will create a model, based on a popular website, using RTL's model generation tool, then convert that model for import into TestOptimal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7437908996915525399?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7437908996915525399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7437908996915525399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7437908996915525399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7437908996915525399'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/model-based-testing-for-web.html' title='Model-Based Testing For Web Applications With TestOptimal'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SuEkaMnnSpI/AAAAAAAAAj8/85-PVntss-0/s72-c/model-based-testing-with-testoptimal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3558977067757179478</id><published>2009-10-22T08:00:00.000-07:00</published><updated>2009-10-22T09:09:14.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='compatibility'/><title type='text'>Windows 7 And Unintended Consequences</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/St9w6gVlkVI/AAAAAAAAAjk/HeCGhE542ts/s1600-h/windows7-unintended-consequences.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/St9w6gVlkVI/AAAAAAAAAjk/HeCGhE542ts/s640/windows7-unintended-consequences.jpg" /&gt;&lt;/a&gt;I went to Best Buy this weekend to buy a laptop.&amp;nbsp; I didn't care what OS was on it, I just needed to get a laptop for a belated birthday gift.&amp;nbsp; I thought I might find a low-end Dell or HP that had Vista and I could then upgrade to Windows 7 later.&amp;nbsp; What I found was NOTHING.&amp;nbsp; The shelfs were literally bare.&amp;nbsp; I asked the sales person if they were going out of business.&amp;nbsp; That was my first thought and he confirmed that others thought the same way.&amp;nbsp; He assured me that they were not going out of business, but they had to remove all their display laptops and desktops to prepare for the Windows 7 debut on Thursday, 10/22.&amp;nbsp; I was happy for him, but wanted a laptop and he had none to sell.&amp;nbsp; In fact, the ones they did put on display the next day could not be sold before 10/22.&amp;nbsp; I wasn't happy about that and almost bought another computer with a very different OS.&amp;nbsp; But since this was a gift for someone that was used to Windows, I was stuck and ultimately ordered one from Best Buy online with a promised delivery date of 10/22.&amp;nbsp; We'll see.&lt;br /&gt;&lt;br /&gt;Because Microsoft restricted sales prior to October 22nd, and Best Buy was then forced to remove product from sale for almost a week, I wonder how many people considered, for the first time, an alternative to a Windows computer. Moreover, how many organizations, who may have stayed with Windows XP and are now facing upgrade paths that mean wiping their hard drives, are now forced to think through an upgrade strategy that may not include Windows 7. Certainly my inconvenience was a non-event for Best Buy and Microsoft, and I'll get over it, but this new Windows version, as good as it might be, may create a set of unintended consequences for Microsoft. I looked around to see if there's any merit to this supposition, and what I found were a number of articles that speak directly to this subject on several different levels.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;a href="http://www.networkworld.com/news/2009/102109-windows7-virtual-desktop.html"&gt;Windows 7 will drive virtual desktop adoption, VMware says&lt;/a&gt; &lt;i&gt;A decision to upgrade employee desktops to Win 7 may also make a CIO think more broadly about a desktop strategy, Balkansky (VMware's Bogomil Balkansky, vice president of product marketing) says. "[Windows 7] is very topical and puts the question on the table," he says. "I think it really forces the subject of virtual desktops to become an agenda item in many companies."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.crn.com/software/220800148"&gt;IBM Teams With Ubuntu For Windows 7 Alternative&lt;/a&gt; &lt;i&gt;IBM and Ubuntu Linux developer Canonical on Tuesday jointly unveiled an open standards-based desktop architecture they said cuts 50 percent off the cost of deploying desktop PCs and provides an alternative to migrating to Microsoft (NSDQ:MSFT)'s Windows 7 operating system. ...comes at a time when customers are contemplating when to move to Windows 7, and even whether or not to make that move.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.independent.co.uk/life-style/gadgets-and-tech/news/how-apple-stole-microsoftrsquos-windows-7-glory-1806611.html"&gt;How Apple stole Microsoft’s Windows 7 glory&lt;/a&gt; &lt;i&gt;Coming out of their most profitable quarter ever, Apple has gone ahead and stolen Microsoft's Windows 7 release-day thunder by announcing an all new lineup of iMacs and upgrading their range of MacBooks - two days before Microsoft releases their newest OS. ...offering consumers an alternative option to the soon-to-be-released Windows 7.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.chicagotribune.com/business/chi-tc-biz-microsoft-1020-1021-oct21,0,2381106.story"&gt;Microsoft's Windows 7 getting positive reviews, but PC market faces challenges&lt;/a&gt; &lt;i&gt;Has Microsoft built a faster train while the rest of the industry is making planes and automobiles?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ethioplanet.com/news/2009/10/16/history-suggests-windows-7-launch-could-boost-mac-sales/"&gt;History suggests Windows 7 launch could boost Mac sales&lt;/a&gt; &lt;i&gt;First reported by Fortune Brainstorm Tech, the findings show how Mac sales figures have consistently grown every time a new Windows operating system launched over the last 10 years. Mac sales spiked following the debut of Windows 98, Windows 200, Windows XP and Windows Vista.&lt;/i&gt;&lt;br /&gt;&lt;a href="http://blogs.pcmag.com/miller/2009/10/the_changing_client_computing.php"&gt;&lt;br /&gt;The Changing Client Computing Landscape: Windows 7 and PC Alternatives&lt;/a&gt; &lt;i&gt;...I was surprised by how many seem to be considering hosted virtual desktops. The concept has been around for some time, but many more people seem to be taking it seriously now&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.toptechnews.com/story.xhtml?story_id=10000C9OMQIO&amp;amp;full_skip=1"&gt;Economy May Slow Windows 7 Adoption in Enterprises&lt;/a&gt; &lt;i&gt;The dark chapter of Windows Vista will close next week as Microsoft rolls out Windows 7, but enterprises may not have the money for full deployment. Unlike Vista's introduction, Softchoice said 88 percent of today's PCs can run Window 7. But with IT departments doing more with less, an analyst said it could take three years to fully deploy Windows 7.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If you're interested in a little CIO humor about Windows 7, check out this article: &lt;a href="http://www.cio.com/article/505589/Windows_7_Launch_Top_10_Things_Steve_Ballmer_Will_Not_Say"&gt;Windows 7 Launch: Top 10 Things Steve Ballmer Will Not Say&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3558977067757179478?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3558977067757179478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3558977067757179478' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3558977067757179478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3558977067757179478'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/windows-7-and-unintended-consequences.html' title='Windows 7 And Unintended Consequences'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/St9w6gVlkVI/AAAAAAAAAjk/HeCGhE542ts/s72-c/windows7-unintended-consequences.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-5743046003322672391</id><published>2009-10-21T08:00:00.000-07:00</published><updated>2009-10-21T08:06:56.793-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Top 5 .NET Groups On LinkedIn</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/St56yrDhTqI/AAAAAAAAAjc/3KOAWNPhsBI/s1600-h/top-5-linkedin-dot-net-groups.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/St56yrDhTqI/AAAAAAAAAjc/3KOAWNPhsBI/s320/top-5-linkedin-dot-net-groups.gif" /&gt;&lt;/a&gt;In previous articles, we posted the Top 10 LinkedIn Groups for Software Testing and QA  and iPhone Development:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://blog.testlabs.com/2009/09/top-10-software-testing-and-qa-groups.html"&gt;Top 10 Software Testing and QA Groups On LinkedIn&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.testlabs.com/2009/10/top-10-iphone-groups-on-linkedin.html"&gt;Top 10 iPhone Groups On LinkedIn&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;Today we have the Top 5 .NET developer groups on LinkedIn.  Based on membership, the Top 5 are:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li value="5"&gt;&lt;a href="http://www.linkedin.com/groups?gid=46954&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1256075616301_2" target="blank"&gt;.Net Professionals&lt;/a&gt; (3,411 members): &lt;i&gt;For all professionals who use the Microsoft .Net tools and related products.&lt;/i&gt;&lt;/li&gt;&lt;li value="4"&gt;&lt;a href="http://www.linkedin.com/groups?gid=84578&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1256075616301_1" target="blank"&gt;Senior .NET Developers&lt;/a&gt; (8,478 members): &lt;i&gt;Group of senior .NET developers working with latest and greatest Microsoft technologies including WCF, WF, WPF, AJAX, SQL Server 2005/2008, Silverlight, LINQ, BizTalk Server, MSMQ, IIS, ASP.NET, CardSpace, etc. Share ideas, ask questions, provide answers, share knowledge and news.&lt;/i&gt;&lt;/li&gt;&lt;li value="3"&gt;&lt;a href="http://www.linkedin.com/groups?gid=40949&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1256075616301_1" target="blank"&gt;.NET Developers&lt;/a&gt; (18,869 members): &lt;i&gt;A network for developers working with .NET technologies, including C#, VB.NET, ASP.NET, LINQ, etc. Connect with other like-minded software engineers.&lt;/i&gt;&lt;/li&gt;&lt;li value="2"&gt;&lt;a href="http://www.linkedin.com/groups?gid=40717&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1256075616301_1" target="blank"&gt;.NET People&lt;/a&gt; (26,479 members): &lt;i&gt;Are you working on Microsoft technologies like C#,ASP.NET,VB.NET and any other .NET related technologies? This is the place to meet other.NET Proffesional around the world. Join this group to connect and share knowledge on .NET. Please post discussions on .NET Technologies.&lt;/i&gt;&lt;/li&gt;&lt;li value="1"&gt;&lt;a href="http://www.linkedin.com/groups?gid=43315&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1256075616301_1" target="blank"&gt;Linked.NET Users Group (LIDNUG)&lt;/a&gt; (31,163 members): &lt;i&gt;Professionals that are using or interested in the Microsoft .NET technologies and the C# language in particular. The group is for developers, architects, designers (Silverlight), managers, consultants, Visual Studio software engineers, QA and Program Managers and anyone else who is interested.&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-5743046003322672391?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/5743046003322672391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=5743046003322672391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5743046003322672391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/5743046003322672391'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/top-5-net-groups-on-linkedin.html' title='Top 5 .NET Groups On LinkedIn'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/St56yrDhTqI/AAAAAAAAAjc/3KOAWNPhsBI/s72-c/top-5-linkedin-dot-net-groups.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7877086593596822330</id><published>2009-10-20T08:00:00.000-07:00</published><updated>2009-10-20T08:00:03.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='HOWTO'/><title type='text'>Learning How To Test Mobile Device Applications (Part 1) - Palm webOS</title><content type='html'>&lt;a href="http://www.amazon.com/gp/product/0596155255?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596155255" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/StyeY0a1WFI/AAAAAAAAAjU/Jv_QuJvpWRg/s400/palm-webos-testing.gif" /&gt;&lt;/a&gt;I recently visited Palm and our friends there gave us a Palm webOS book - signed by the author Mitch Allen (VP, Software CTO at Palm)!&amp;nbsp; Very cool.&amp;nbsp; While reading this book I thought I would use this opportunity to start a HOWTO series on learning to test mobile device apps, and model it after the process we used in our labs - develop apps to learn how to test them. Basically, we took testers through the process of setting up a development environment, compiling a simple app and then installing and testing that app. &lt;br /&gt;&lt;br /&gt;We'll start with Palm webOS and then cover the iPhone and Android platforms.&amp;nbsp; The place to start for any of these platforms is the software development toolkit, or SDK.&amp;nbsp; And in the case of webOS, as the book points out, the SDK is available for free.&amp;nbsp; It's called the Mojo SDK and it's available at &lt;a href="http://developer.palm.com/"&gt;http://developer.palm.com&lt;/a&gt; or can be directly downloaded &lt;a href="http://developer.palm.com/index.php?option=com_ajaxregister&amp;amp;view=register&amp;amp;sdkdownload"&gt;here&lt;/a&gt;.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;This SDK provides you development tools, sample code, along with tutorials and reference documents.  All great resources for a developer and serves to inform and educate testers as well.  We recommend that testers download and install the SDK and then use any of the example apps as their first project.  That keeps the fear factor down since no code is written.  And since each of the mobile device developers provide an emulator, you don't even need an actual device to learn how to compile and test applications.&lt;br /&gt;&lt;br /&gt;Most people start out with something called the "Hello World" application that each SDK invariably offers as the starter application.  And webOS is no different.  In fact, there's an entire &lt;a href="http://developer.palm.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1758"&gt;tutorial&lt;/a&gt; that describes how to download, compile and install their Hello World app.  Once you get the Hello World app to compile and install on your emulator (again, the tutorial explains how to run the emulator), then you can set about to try some tests and learn about the tools that will help you test on actual devices.&lt;br /&gt;&lt;br /&gt;On page 30 of the book, there's a paragraph about Testing and Debugging (yes, just a paragraph - but this is a developer book), where the author reinforces the idea of using the emulator during development and testing, and for debugging.  Many of the tools described in the book and at Palm's developer website are mainly for developers, but testers should become proficient with any tool that logs information, if for nothing else than to provide a log file with each reported bug.  In particular, get to know the &lt;a href="http://developer.palm.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1805"&gt;palm-log&lt;/a&gt; tool.  It displays log messages from an application on the emulator or  USB-connected webOS device. You can also use palm-log to display the installed applications, which is useful for getting the ID of the application to log.&lt;br /&gt;&lt;br /&gt;Here's a checklist I'd recommend for any tester wanting to learn more about webOS apps and how to test them:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the &lt;a href="http://developer.palm.com/index.php?option=com_ajaxregister&amp;amp;view=register&amp;amp;sdkdownload"&gt;Palm webOS SDK&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.palm.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1597"&gt;Install&lt;/a&gt; it on your favorite OS&lt;/li&gt;&lt;li&gt;Compile the &lt;a href="http://developer.palm.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1758"&gt;Hello World application and run it in the emulator&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Setup &lt;a href="http://developer.palm.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1805"&gt;palm-log&lt;/a&gt; to understand how to capture log files&lt;/li&gt;&lt;/ol&gt;It's actually very straightforward and best of all, you'll be able to say you've compiled, run and tested a webOS app, as well as collected its log file, without spending any money and without even owning an actual device.&lt;br /&gt;&lt;br /&gt;Next we'll look at how to do this for the iPhone.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7877086593596822330?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7877086593596822330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7877086593596822330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7877086593596822330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7877086593596822330'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/learning-how-to-test-mobile-device.html' title='Learning How To Test Mobile Device Applications (Part 1) - Palm webOS'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/StyeY0a1WFI/AAAAAAAAAjU/Jv_QuJvpWRg/s72-c/palm-webos-testing.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4608571200524042787</id><published>2009-10-16T08:00:00.000-07:00</published><updated>2009-10-16T08:29:40.206-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Windows 7 Upgrade Helper</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/Stfl4l2R7gI/AAAAAAAAAjE/JQGQGf25TVg/s1600-h/windows-7-upgrade-helper.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/Stfl4l2R7gI/AAAAAAAAAjE/JQGQGf25TVg/s200/windows-7-upgrade-helper.jpg" /&gt;&lt;/a&gt;Did you know that upgrading from Windows XP to Windows 7 requires you to erase your hard drive before you can upgrade?  Doesn't sound like an upgrade to - more like a fresh install. Sure, you can back up your programs, files and settings first and then transfer them back. But all your applications will be nuked and you'll have to reinstall them (plus all updates). Again, sounds like a fresh install to me.&lt;br /&gt;&lt;br /&gt;For testers, this shouldn't be a problem since fresh installs should always be done before you start testing.  But what if your testing objective is to follow the same upgrade path as an end user might follow? That&amp;nbsp; end user is most likely going to save programs, files, settings, and applications, and then restore them after the install. Consequently, you'll need to test for that installation use case.&amp;nbsp; It's going to be a hassle either way, but at least there's a tool that can make it somewhat easier.  And it's available until October 22nd for only $15.  It's called &lt;a href="http://www.laplink.com/pcmover/pcmoverupgradeassistant.html" target="_blank"&gt;PCmover Windows 7 Upgrade Assistant&lt;/a&gt; from Laplink Software Inc. &lt;br /&gt;&lt;br /&gt;If you're interesting in finding out more, here's a video from WSJ's Katherine Boehret who reviewed the product:&lt;br /&gt;&lt;br /&gt;&lt;object height="363" id="wsj_fp" width="512"&gt;&lt;param name="movie" value="http://s.wsj.net/media/swf/main.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;param name="flashvars" value="videoGUID={FCB796D3-0FF5-4C3D-B6EE-82B3BEAE4ADB}&amp;playerid=1000&amp;plyMediaEnabled=1&amp;configURL=http://wsj.vo.llnwd.net/o28/players/&amp;autoStart=false" base="http://s.wsj.net/media/swf/"name="flashPlayer"&gt;&lt;/param&gt;&lt;embed src="http://s.wsj.net/media/swf/main.swf" bgcolor="#FFFFFF"flashVars="videoGUID={FCB796D3-0FF5-4C3D-B6EE-82B3BEAE4ADB}&amp;playerid=1000&amp;plyMediaEnabled=1&amp;configURL=http://wsj.vo.llnwd.net/o28/players/&amp;autoStart=false" base="http://s.wsj.net/media/swf/" name="flashPlayer" width="512" height="363" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4608571200524042787?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4608571200524042787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4608571200524042787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4608571200524042787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4608571200524042787'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/windows-7-upgrade-helper.html' title='Windows 7 Upgrade Helper'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/Stfl4l2R7gI/AAAAAAAAAjE/JQGQGf25TVg/s72-c/windows-7-upgrade-helper.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1022372932641084633</id><published>2009-10-15T08:00:00.000-07:00</published><updated>2009-10-15T10:27:11.818-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test theory'/><title type='text'>Is All Testing Essentially Exploratory In Nature?</title><content type='html'>&lt;a href="http://www.amazon.com/gp/product/0321636414?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321636414" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/StZw3jc1aDI/AAAAAAAAAi8/lgnJWEnN4UU/s320/exploratory-testing.jpg" /&gt;&lt;/a&gt;Having just been to STARWEST 2009, and actually seeing James Whittaker in person, exploratory testing is naturally on my mind.  And today, as I was browsing my favorite testing blogs, I ran across this quote, supposedly from Boris Beizer:&lt;br /&gt;&lt;blockquote&gt;All testing is essentially exploratory in nature.&lt;br /&gt;&lt;/blockquote&gt;Makes a great title for this article, and also calls into question of why exploratory testing is a separate test type.  I mean, after all, if all testing is essentially exploratory, then should there really be an exploratory test type?  &lt;br /&gt;&lt;br /&gt;In my quest to shed some light on this subject and find an answer, I dug up some articles from well known testing experts that have shared their opinions on exploratory testing, e.g. Kaner, Bach, Robinson,  Bj Rollison, and others.  But first stop is &lt;b&gt;Wikipedia&lt;/b&gt;:&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Exploratory testing is an approach to software testing that is concisely described as simultaneous learning, test design and test execution. Cem Kaner, who coined the term in 1983, now defines exploratory testing as "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project."...&lt;/i&gt; &lt;a href="http://en.wikipedia.org/wiki/Exploratory_testing"&gt;Exploratory testing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So naturally, we can't go any further until we hear what &lt;b&gt;Caner&lt;/b&gt; has to say:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I coined the phrase "exploratory testing" 24 years ago, to describe a style of skilled work that was common in Silicon Valley. Naturally, the concept &lt;br /&gt;has evolved since then, primarily as a way of focusing on how testers , p y y glearn about the product under test and its risks throughout the product's &lt;br /&gt;lifecycle....&lt;/i&gt;&lt;a href="http://www.kaner.com/pdfs/QAIExploring.pdf"&gt;A Tutorial in Exploratory Testing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At the risk of starting an argument, I would think that &lt;b&gt;James Bach&lt;/b&gt; may want to take some credit in popularizing exploratory testing:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Exploratory software testing is a powerful approach, yet widely misunderstood. In some situations, it can be orders of magnitude more productive than scripted testing. All testers practice some form of exploratory testing, unless they simply don’t create tests at all. Yet few of us study this approach, and it doesn't get much respect in our field. This attitude is beginning to change as companies seek ever more agile and cost effective methods of developing software....&lt;/i&gt;&lt;a href="http://www.satisfice.com/articles/et-article.pdf"&gt;Exploratory Testing Explained&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Now many of you know &lt;b&gt;Harry Robinson&lt;/b&gt; to be an expert on model-based testing and probably have attended one of his presentations at STARTWEST or STAREAST.  But did you know he has a fond appreciation for exploratory testing?&lt;br /&gt;&lt;br /&gt;The mission of the Lewis and Clark expedition was to explore and map the territory of the Pacific Northwest. William Clark was the chief mapmaker for the expedition. He spent months perfecting his mapmaking skills before the expedition left St. Louis. As it turned out, later explorers and settlers used Clark’s maps for the next thirty years until newer, more detailed maps were drawn up. The mapmaking was an essential part of the trip. It would have made little sense for Lewis and Clark to return home with collections of trinkets and souvenirs of the trip but no map of the territory that would tell others about the land and how to best navigate through it. On the other hand, it would have been equally foolish to send scores of settlers into that unexplored territory -- much better to send a handful of scouts to survey the territory and report back. Think about exploratory and automated testing from this same perspective.... &lt;a href="http://www.testingcraft.com/exploratory-robinson.html"&gt;Exploratory Modeling&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;We certainly can't leave out &lt;b&gt;James Whittaker&lt;/b&gt;, who has just released a &lt;a href="http://www.amazon.com/gp/product/0321636414?ie=UTF8&amp;amp;tag=testlabscom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321636414"&gt;book&lt;/a&gt; on exploratory testing.  You can find plenty about this subject in his book, but here's a blog post that revealed a little more about what James thinks:&lt;br /&gt;&lt;i&gt;&lt;br /&gt;I just got finished talking (actually the conversation was more like a debate) to a colleague, exploratory testing critic and a charter member of the plan-first-or-don’t-bother-testing-at-all society....&lt;/i&gt;&lt;a href="http://blogs.msdn.com/james_whittaker/archive/2009/01/08/explaining-exploratory-testing.aspx"&gt;explaining exploratory testing&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;I'm not sure that &lt;b&gt;Bj Rollinson&lt;/b&gt; is a big advocate of exploratory testing.  I've seen him take some digs at this subject before, but this article clearly shows an internalization of exploratory testing that transcends its most common use:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Much of the information about exploratory testing focuses on testing from an end-user perspective. Pundits of exploratory testing claim the approach is also useful from a white box test design approach, but I have yet to see any practical discussion or examples. But, professional testers use exploratory testing approaches all the time from a white box perspective to explore the code for untested paths. Professional testers learn about areas of the code that are at risk, and reactively design effective tests to evaluate previously untested or under-tested areas of the code....&lt;/i&gt; &lt;a href="http://blogs.msdn.com/imtesty/archive/2009/03/20/exploratory-testing-inside-the-box.aspx"&gt;Exploratory testing inside the box&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So what do you think - does exploratory testing warrant all this attention as a separate test type, or, as Beizer says, is all testing exploratory?&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1022372932641084633?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1022372932641084633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1022372932641084633' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1022372932641084633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1022372932641084633'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/is-all-testing-essentially-exploratory.html' title='Is All Testing Essentially Exploratory In Nature?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/StZw3jc1aDI/AAAAAAAAAi8/lgnJWEnN4UU/s72-c/exploratory-testing.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8203037576347063949</id><published>2009-10-13T08:00:00.000-07:00</published><updated>2009-10-13T08:00:00.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OS'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Become A Windows 7 Compatibility Testing Expert Now</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/StPuF5r4MBI/AAAAAAAAAis/aJb5R9Jg8R0/s1600-h/Compatible_with_Windows_7.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/StPuF5r4MBI/AAAAAAAAAis/aJb5R9Jg8R0/s200/Compatible_with_Windows_7.png" /&gt;&lt;/a&gt;If you're waiting to get your hands on a copy of Windows 7 before you can start your compatibility testing, you're going to be behind from the start. That's because you can test now for both system and application compatibility issues.  Microsoft provides tools for testing your system and your applications.  There are three tools you should become familiar with: &lt;b&gt;Windows 7 Upgrade Advisor&lt;/b&gt;, &lt;b&gt;Microsoft Application Compatibility Toolkit 5.5&lt;/b&gt;, and the &lt;b&gt;Windows 7 Software Logo Toolkit&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.microsoft.com/windows/windows-7/get/upgrade-advisor.aspx" target="_blank"&gt;Windows 7 Upgrade Advisor&lt;/a&gt; is important because it will tell you if your current test systems can run Windows 7.  Now's the time to find out if the test machines you're currently counting on upgrading to Windows 7 will work.  If not, you're going to be further behind in your compatibility testing as you wait to procure new systems.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;Microsoft Application Compatibility Toolkit 5.5&lt;/b&gt; contains tools and documentation to evaluate application compatibility issues before deploying Windows 7.  You can find out more information about the toolkit, as well as where to download it, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=24da89e9-b581-47b0-b45e-492dd6da2971&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The final tool is part of the Windows 7 logo program.  The &lt;a href="https://connect.microsoft.com/Downloads/DownloadDetails.aspx?SiteID=831&amp;amp;DownloadID=19072" target="_blank"&gt;Windows 7 Software Logo&lt;br /&gt;Toolkit&lt;/a&gt; provides you a quick and agile, automated, light weight tool to validate your application’s compliance with the Windows 7 Software Logo requirements.&lt;br /&gt;&lt;br /&gt;None of these tools require Windows 7, but each provides you valuable compatibility information.&amp;nbsp; By using these tools now, you'll have an almost complete pictures of your compatibility issues before Windows 7 even ships.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8203037576347063949?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8203037576347063949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8203037576347063949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8203037576347063949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8203037576347063949'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/become-windows-7-compatibility-testing.html' title='Become A Windows 7 Compatibility Testing Expert Now'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/StPuF5r4MBI/AAAAAAAAAis/aJb5R9Jg8R0/s72-c/Compatible_with_Windows_7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-6982806636092252608</id><published>2009-10-09T08:00:00.000-07:00</published><updated>2009-10-09T08:11:27.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><title type='text'>How Hot Is The iPhone Application Development Market?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss6A--E-DPI/AAAAAAAAAik/HVbjOjW1vlA/s1600-h/17289_rel.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss6A--E-DPI/AAAAAAAAAik/HVbjOjW1vlA/s200/17289_rel.jpg" /&gt;&lt;/a&gt;We've just returned from the STAR&lt;i&gt;WEST&lt;/i&gt; 2009 software testing conference.  While there we talked to hundreds of testing and QA people.  And as we shared with them our outsource testing services and our new product, myQMT, we asked them what their iPhone development plans were.  Since we both develop and test iPhone applications, we were interested in how many were developing for the iPhone market. What we found out was that most companies were planning an iPhone app.  And this information was coming from their QA folks.  &lt;br /&gt;&lt;br /&gt;Today I have some links to articles that provide some insight on how hot this market is becoming:&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;39% average growth was experienced by most developers from adding mobile application development to their business models.&lt;/i&gt; &lt;a href="http://sev.prnewswire.com/mobile-entertainment/20090929/FL8313029092009-1.html" target="_blank"&gt;NATIONAL SURVEY RESULTS: Developers Shift Business Model To Ride iPhone App Wave Developers and entrepreneurs change course and thrive as iPhone app development increases&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;University of Utah researchers created new iPhone programs.&lt;/i&gt; &lt;a href="http://www.eurekalert.org/pub_releases/2009-10/uou-itb100709.php" target="_blank"&gt;iPhone the body electric&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The exploding iPhone Application development community.&lt;/i&gt; &lt;a href="http://prmac.com/release-id-7901.htm"&gt;iPhoneAppQuotes Forges Strategic Partnership with Appular&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;American heavy metal band Metallica has launched a new iPhone application to allow fans to listen to its live show recordings on the move&lt;/i&gt;. &lt;a href="http://economictimes.indiatimes.com/news/news-by-industry/media-/-entertainment-/entertainment/Metallica-launches-iPhone-application-for-fans/articleshow/5104054.cms" target="_blank"&gt;Metallica launches iPhone application for fans&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The App Store taps the creative energy of entrepreneurial developers&lt;/i&gt;. &lt;a href="http://www.cnn.com/2009/TECH/10/08/apps.realworld/" target="_blank"&gt;From cars to TVs, apps are spreading to the real world&lt;/a&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;Mercedes-Benz joins other consumer-oriented companies, including Pizza Hut, Kraft, and Whole Foods, in developing apps for customers.&lt;/i&gt; &lt;a href="http://www.informationweek.com/news/personal_tech/iphone/showArticle.jhtml?articleID=220301084" target="_blank"&gt;Mercedes-Benz Launches iPhone App&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-6982806636092252608?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/6982806636092252608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=6982806636092252608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6982806636092252608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/6982806636092252608'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/how-hot-is-iphone-application.html' title='How Hot Is The iPhone Application Development Market?'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss6A--E-DPI/AAAAAAAAAik/HVbjOjW1vlA/s72-c/17289_rel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-3286062059207930521</id><published>2009-10-08T08:00:00.000-07:00</published><updated>2009-10-08T10:01:41.827-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBT'/><title type='text'>STARWEST 2009 EXPO - Day 2</title><content type='html'>&lt;em&gt;Live from the floor of the STAR&lt;span style="font-style: italic;"&gt;WEST&lt;/span&gt; 2009 Expo.&lt;/em&gt;&amp;nbsp; It's Day 2 here in the Disneyland Hotel.&amp;nbsp; The STARWEST folks have certainly done a great job again with this conference and EXPO. Throughout yesterday we've seen testers and QA managers from all over the world attending presentations and visiting the vendor booths.&amp;nbsp; We've been able to demo our new QA Management Toolkit (myQMT) to a number of different companies and&amp;nbsp;comments have been very positive.&amp;nbsp; Plus we've received a number of good ideas on&amp;nbsp;what to add next, such as&amp;nbsp;the configuration management system &lt;em&gt;&lt;a href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt;&lt;/em&gt;.&amp;nbsp; It's certainly been exciting and worth the trip.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/Ss4YMJ1cxHI/AAAAAAAAAic/otTDt8trStk/s1600-h/qtronic-flow.png" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img $r="true" border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/Ss4YMJ1cxHI/AAAAAAAAAic/otTDt8trStk/s200/qtronic-flow.png" /&gt;&lt;/a&gt;The readers of this blog know that we provide ample coverage of different testing techniques, and one of our favorite methodologies is &lt;a href="http://blog.testlabs.com/search/label/MBT"&gt;model-based testing&lt;/a&gt;&amp;nbsp;(MBT). We wrote about a MBT tool in May when we intoduced &lt;a href="http://blog.testlabs.com/2009/05/testoptimal-model-based-testing.html"&gt;Testoptimal&lt;/a&gt;. While visiting the other booths here at the EXPO we came across another interesting MBT tool called &lt;strong&gt;Conformiq Qtronic&lt;/strong&gt;. I spent some time with the developers talking about their product and it was very enlightening. As with Testoptimal, Qtronic requires that a model be developed before using their tool, but once you provide that as input, the generation of hundres of test cases is automatic and painless. &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The two features that really stood out for me was Qtronic's integration with Eclipse and the support for user-defineable output formats for test case output.&amp;nbsp; Eclipse integration gives you a familiar and powerful development environment, and being able to output test cases in any format your test environment supports is huge.&amp;nbsp; Here's a screen shot from the demo they gave me:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss4X3IKRr0I/AAAAAAAAAiU/VUbJ7m3x2VY/s1600-h/QtronicScreenshot.JPG" imageanchor="1" style="clear: right; cssfloat: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss4X3IKRr0I/AAAAAAAAAiU/VUbJ7m3x2VY/s1600/QtronicScreenshot.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img $r="true" border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ss4X3IKRr0I/AAAAAAAAAiU/VUbJ7m3x2VY/s400/QtronicScreenshot.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: left;"&gt;If your organization is looking for a tool to support the use of MBT, take a look at this product at the &lt;a href="http://www.conformiq.com/home.php" target="_blank"&gt;CONFORMIQ&lt;/a&gt; website.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-3286062059207930521?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/3286062059207930521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=3286062059207930521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3286062059207930521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/3286062059207930521'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/starwest-2009-expo-day-2.html' title='STARWEST 2009 EXPO - Day 2'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aBrawRpJ2MY/Ss4YMJ1cxHI/AAAAAAAAAic/otTDt8trStk/s72-c/qtronic-flow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2067030903735940821</id><published>2009-10-07T08:00:00.000-07:00</published><updated>2009-10-07T08:00:03.222-07:00</updated><title type='text'>STARWEST 2009 EXPO - Day 1</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsvoN5p2WSI/AAAAAAAAAiM/BCBBUhK6hEk/s1600-h/starwest-2009-expo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsvoN5p2WSI/AAAAAAAAAiM/BCBBUhK6hEk/s400/starwest-2009-expo.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;We're at STAR&lt;i&gt;WEST&lt;/i&gt; 2009 in Anaheim this week, and by "Anaheim" I mean the Disneyland Hotel.  Today is the first day of the EXPO and we are showing our new open source QA management product - myQMT.  myQMT runs on the Amazon cloud and offers software developers and QA managers a turn-key solution for defect tracking, test case management, Wiki and forums.&lt;br /&gt;&lt;br /&gt;This year's STAR&lt;i&gt;WEST&lt;/i&gt; looks to be exciting and all the major testing experts are here: Lee Copeland, James Bach, James Whittaker, Michael Bolton, Jonathan Kohl, Harry Robinson, Rex Black, etc.&lt;br /&gt;&lt;br /&gt;Our booth at the EXPO is next to Microsoft and across from HP and Oracle.  We look forward to lots of visitors. In between demos of our product, I plan to visit some of the other vendor booths and find out what's new and interesting.  In particular, I'm interested in talking to the folks at the American Software Testing Qualification Board and the Better Software Magazine.  They both have booths at the EXPO this year.&lt;br /&gt;&lt;br /&gt;The Vendor Technical Presentations look interesting this year.&amp;nbsp; HP's presentation is "Finding the Blue Sky - Performance Testing in the Cloud".&amp;nbsp; That's an area of interest to RTL, and we've been using the Amazon cloud to do load testing using JMeter.&amp;nbsp; Another presentation that looks worth attending is from Borland - "Testing AJAX Applications - What Does It Take?"&lt;br /&gt;&lt;br /&gt;Look for my update in tomorrow's STARWEST 2009 EXPO - Day 2.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2067030903735940821?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2067030903735940821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2067030903735940821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2067030903735940821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2067030903735940821'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/starwest-2009-expo-day-1.html' title='STARWEST 2009 EXPO - Day 1'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SsvoN5p2WSI/AAAAAAAAAiM/BCBBUhK6hEk/s72-c/starwest-2009-expo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2708543249742428043</id><published>2009-10-06T08:00:00.000-07:00</published><updated>2009-10-06T10:19:58.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Putting Together An Open Source QA Management System (Part 5) - Information Center</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Ssq1Kt8s-pI/AAAAAAAAAhU/NVa0jVsbAlI/s1600-h/myQMT-right-side.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Ssq1Kt8s-pI/AAAAAAAAAhU/NVa0jVsbAlI/s320/myQMT-right-side.jpg" /&gt;&lt;/a&gt;Last week we posted the first 4 parts to this series, which covered &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa.html"&gt;Defect Tracking&lt;/a&gt;, &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa_30.html"&gt;Test Case Management&lt;/a&gt;, &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa.html"&gt;Wiki&lt;/a&gt; and &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa_02.html"&gt;Forums&lt;/a&gt;. In this, the last article, we are going to look at the information center that ties all of the other components together.&amp;nbsp; In order to provide a "Home" page and tie each of the different open source applications together, we needed a malleable content management system that would provide project managers a way to customize the look-and-feel of their QA management system, as well as offer a way to create a dashboard that could pull information from each of the other applications.  &lt;a href="http://www.joomla.org/" target="_blank"&gt;Joomla&lt;/a&gt; proved to be the answer. &lt;br /&gt;&lt;br /&gt;With Joomla, we got a content management system with the capability of creating web pages, customized UI, and online applications. And since it's open source, it fit right in with the rest of the applications selected.  Even though our initial evaluation convinced us to go with Joomla, the more we used it and discovered more about the underlying architecture, the more it proved to exceed our expectations.  We anticipated that Joomla would serve as a flexible web site tool and had expected that links to the other applications would probably spawn new pages, but we found out that Joomla, and it's extensions, allowed us to keep the UI together and maintain a single page view for most of our needs.  Moreover, as we shared this QA management system with others, we were continually asked about having a dashboard feature that would pull data from Bugzilla, Testopia, MediaWiki and Forums. As it turns out, the "article" capability of Joomla, along with some PHP and MySQL calls, we could provide some nice dashboard "widgets".&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/Ssq76uMM6oI/AAAAAAAAAhc/qo3kQWRwx30/s1600-h/myQMT-bugs-widgets.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/Ssq76uMM6oI/AAAAAAAAAhc/qo3kQWRwx30/s320/myQMT-bugs-widgets.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;The dashboard "widgets" we created for defect tracking includes a snapshot of Assigned Defects and a Bug Summary from Bugzilla.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_aBrawRpJ2MY/Ssq8d9x1YHI/AAAAAAAAAhk/A3lR2GsXZws/s1600-h/myQMT-test-case-widget.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_aBrawRpJ2MY/Ssq8d9x1YHI/AAAAAAAAAhk/A3lR2GsXZws/s320/myQMT-test-case-widget.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For test case management, a widget was created that showed a summary of the current state of test cases development.  This information was directly extracted from Testopia. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Ssq9Lh0lAmI/AAAAAAAAAhs/1mSfGntsgLc/s1600-h/myQMT-forums-widget.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Ssq9Lh0lAmI/AAAAAAAAAhs/1mSfGntsgLc/s320/myQMT-forums-widget.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;And to provide a convenient way for testers to monitor forum posts, we created a widget that extracted out the title of the latest articles posted to the forums.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ssq-AV2IVKI/AAAAAAAAAh0/qwRkFqDU16o/s1600-h/myQMT-wiki-widget.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/Ssq-AV2IVKI/AAAAAAAAAh0/qwRkFqDU16o/s320/myQMT-wiki-widget.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Likewise, we found a way to monitor what articles have been written and placed on the Wiki.&amp;nbsp; This particularly useful given the non-hierarchical nature of the wiki - daily notifications with this widget keeps everyone informed about the work going on in the wiki.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition to the dashboard widgets, we found that we could create Joomla articles that provided other information that testers should see.&amp;nbsp; This included an area for daily instructions, Top 5 defects, Top 5 contributors, and a list of the most recent defects.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Ssq_Bue16tI/AAAAAAAAAh8/4xb2l0CPtk0/s1600-h/myQMT-articles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Ssq_Bue16tI/AAAAAAAAAh8/4xb2l0CPtk0/s400/myQMT-articles.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;On top of the ability to create dashboard widgets and articles, Joomla provided a very convenient way to link in all the other open source applications. It allowed us to provide navigation links via a left-hand navigation panel, as well as tabs along the top, complete with a "bread crumbs" mechanism for navigating back to the home page. All-in-all, Joomla proved to be a very powerful application that neatly integrated all the other components.  A snapshot of the home page is provided below and at this &lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsrC2kHQX5I/AAAAAAAAAiE/yyK2glQ_Btc/s1600-h/My+QA+Management+Toolkit+%2820091005%29.png"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We will be demoing this system, called My QA Management Toolkit, or myQMT, at our booth at STAR&lt;i&gt;WEST&lt;/i&gt; 2009 in Anaheim. And we expect to offer myQMT, via Amazon's Web Services, by the end of October.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsrC2kHQX5I/AAAAAAAAAiE/yyK2glQ_Btc/s1600-h/My+QA+Management+Toolkit+%2820091005%29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsrC2kHQX5I/AAAAAAAAAiE/yyK2glQ_Btc/s400/My+QA+Management+Toolkit+%2820091005%29.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2708543249742428043?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2708543249742428043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2708543249742428043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2708543249742428043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2708543249742428043'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/putting-together-open-source-qa_06.html' title='Putting Together An Open Source QA Management System (Part 5) - Information Center'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/Ssq1Kt8s-pI/AAAAAAAAAhU/NVa0jVsbAlI/s72-c/myQMT-right-side.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-4523599745306818555</id><published>2009-10-02T08:00:00.000-07:00</published><updated>2009-10-05T20:04:17.719-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Putting Together An Open Source QA Management System (Part 4) - Forums</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsVpbEszqVI/AAAAAAAAAhE/OZ7fKrqVB9c/s1600-h/myqmt-forums.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsVpbEszqVI/AAAAAAAAAhE/OZ7fKrqVB9c/s200/myqmt-forums.png" /&gt;&lt;/a&gt;In the last article we covered the knowledge management piece of our open source QA management system - &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa.html"&gt;the Wiki&lt;/a&gt;.  To complement the Wiki and provide a place for conversation threads and the ability for testers to create their own topics for discussions, we chose to add forums to our QA management system. With forums, managers, test leads and testers can create topical threads to discuss issues, concerns and explore ideas.   We chose a forum system (Agora Forums) that would integrate well and had all the things you'd expect in a forums package: public and private posting, moderators, WYSIWYG editor, stats, user participation reports, polls, search, etc.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;At RTL we use our forums to create discussions on everything from current projects to important client information to information specific to our different labs.&amp;nbsp; Our forums are organized by major topic, such as Test Engineering or Inside RTL, and testers customize their online persona with their own icons and graphics.&amp;nbsp; Addtionally, we use the forums to link to Wiki articles.&amp;nbsp; Sometimes discussions that ensue are easily answered by pointing others to articles that reside in our Wiki.&lt;br /&gt;&lt;br /&gt;Tuesday, we'll post &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa_02.html"&gt;the final article of this series&lt;/a&gt; and talk about the "information center" that integrates all the components into a single landing page and offers a dashboard with summary information from each of the components.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-4523599745306818555?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/4523599745306818555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=4523599745306818555' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4523599745306818555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/4523599745306818555'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/putting-together-open-source-qa_02.html' title='Putting Together An Open Source QA Management System (Part 4) - Forums'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SsVpbEszqVI/AAAAAAAAAhE/OZ7fKrqVB9c/s72-c/myqmt-forums.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-1915090427583663380</id><published>2009-10-01T08:00:00.000-07:00</published><updated>2009-10-05T20:14:26.160-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Putting Together An Open Source QA Management System (Part 3) - Wiki</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SsQWKDQFrrI/AAAAAAAAAgs/ax0726hSljo/s1600-h/mediawiki.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SsQWKDQFrrI/AAAAAAAAAgs/ax0726hSljo/s400/mediawiki.jpg" /&gt;&lt;/a&gt;Parts 1 and 2 of this series introduced the core components for our open source QA management system: &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa.html"&gt;Defect&lt;/a&gt; and &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa_30.html"&gt;Test Case Management&lt;/a&gt;.&amp;nbsp; In this article we introduce the "knowledge and content management system". We wanted to include a way to share information that should be persistent, such as tips, techniques and procedures.&amp;nbsp; Likewise, we wanted a repository for training articles that pertain to testing in general and customer-specific technologies.&amp;nbsp; For these needs we selected &lt;a href="http://www.mediawiki.org/wiki/MediaWiki" target="_blank"&gt;MediaWiki&lt;/a&gt;.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;MediaWiki is written in the PHP programming language, and can use either the MySQL or PostgreSQL relational database management system. Since our defect tracking (Bugzilla and Mantis) and test case management (Testopia and TestLink) systems use MySQL, we opted to stick with MySQL for MediaWiki.&lt;br /&gt;&lt;br /&gt;We've found that having a separate system for sharing knowledge has been very helpful in keeping technology lists current, such as OS lists.&amp;nbsp; And because each Wiki user can edit any document, collectively we are able to keep these lists current without having to assign that responsibility to any one person.&amp;nbsp; Here's an example of one of the OS lists we maintain on our wiki:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsQayCVMCnI/AAAAAAAAAg0/F0lN9p_Qr6s/s1600-h/wiki-iphone-os-versions.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsQayCVMCnI/AAAAAAAAAg0/F0lN9p_Qr6s/s400/wiki-iphone-os-versions.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Since wikis are somewhat non-hierarchical, most people search on keywords to find articles, which is pretty much how Wikipedia is used.&amp;nbsp; But there are times when you want to know the latest articles added to your wiki.&amp;nbsp; For that, we created some dashboard widgets that list the latest articles each time you log into the QA management system.&amp;nbsp; I'll describe these widgets in the last article in this series.&amp;nbsp; In &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa_02.html"&gt;Part 4&lt;/a&gt;, we'll describe the forums component we included this integrate, open source QA management system.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-1915090427583663380?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/1915090427583663380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=1915090427583663380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1915090427583663380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/1915090427583663380'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/10/putting-together-open-source-qa.html' title='Putting Together An Open Source QA Management System (Part 3) - Wiki'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/SsQWKDQFrrI/AAAAAAAAAgs/ax0726hSljo/s72-c/mediawiki.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-8373569351852509673</id><published>2009-09-30T08:00:00.000-07:00</published><updated>2009-10-05T20:13:18.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Putting Together An Open Source QA Management System (Part 2) - Test Case Management</title><content type='html'>In &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa.html" target="_blank"&gt;Part 1&lt;/a&gt; of this series, we introduced the defect tracking systems we selected as part of our integrated, open source QA management system.&amp;nbsp; In this article, we'll identify the test case management systems we paired with the defect tracking systems: Bugzilla and Mantis.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsICTPRmBOI/AAAAAAAAAgc/vRHNjwurm8k/s1600-h/testopia.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SsICTPRmBOI/AAAAAAAAAgc/vRHNjwurm8k/s320/testopia.png" /&gt;&lt;/a&gt;For Bugzilla, we found a convenient test case management system in &lt;a href="http://www.mozilla.org/projects/testopia/" target="_blank"&gt;Testopia&lt;/a&gt;. Testopia is a test case management extension for Bugzilla, and it's designed to integrate bug reporting with test case run results. Projects in Testopia consist of a test plan, test cases, test runs, test run environments, builds and test-case runs. And since Testopia is an extension to Bugzilla, it relies on many of the same objects that Bugzilla uses to track bugs. In order to use Testopia you first need to set up products and versions using the Bugzilla product editor. Testopia makes use of Bugzilla's target milestones feature as well.&lt;br /&gt;&lt;br /&gt;INTEGRATION POINTS&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Testopia integrates with Bugzilla products, components, versions, and milestones to allow a single management interface for high level objects.&lt;/li&gt;&lt;li&gt;Testopia allows users to login to one tool and uses Bugzilla group permissions to limit access to modifying test objects.&lt;/li&gt;&lt;li&gt;Testopia allows users to attach bugs to test case run results for centralized management of the software engineering process.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/SsICY7icfdI/AAAAAAAAAgk/0FPjbrfEqRo/s1600-h/testlink.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/SsICY7icfdI/AAAAAAAAAgk/0FPjbrfEqRo/s320/testlink.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;We paired Mantis with &lt;a href="http://www.teamst.org/" target="_blank"&gt;TestLink&lt;/a&gt; for test case management.&amp;nbsp; TestLink provides the capability to create and manage Test cases as well as organize them into Test plans. These Test plans allow team members to execute Test cases and track test results dynamically, generate reports, trace software requirements, prioritize and assign tasks. The tool has web based interface with PHP and background database MySQL, Postgres or MS-SQL.&lt;br /&gt;&lt;br /&gt;Both of these test case management systems integrate well with their respective defect tracking system.&amp;nbsp; In the next article we'll cover the &lt;a href="http://blog.testlabs.com/2009/10/putting-together-open-source-qa.html"&gt;Wiki system&lt;/a&gt; we integrated into our open source QA management system.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-8373569351852509673?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/8373569351852509673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=8373569351852509673' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8373569351852509673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/8373569351852509673'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/09/putting-together-open-source-qa_30.html' title='Putting Together An Open Source QA Management System (Part 2) - Test Case Management'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aBrawRpJ2MY/SsICTPRmBOI/AAAAAAAAAgc/vRHNjwurm8k/s72-c/testopia.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-7307298478832225449</id><published>2009-09-29T08:00:00.000-07:00</published><updated>2009-09-30T09:04:01.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><title type='text'>Putting Together An Open Source QA Management System (Part 1) - Defect Tracking</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SsF9fXPVxXI/AAAAAAAAAgM/EBxUCkHURLk/s1600-h/bugzilla.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SsF9fXPVxXI/AAAAAAAAAgM/EBxUCkHURLk/s200/bugzilla.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Often we are asked to recommend QA tools, in particular defect tracking systems. And given that there are now very good open source tools, we recommend that our clients take a look at defect tracking systems such as Bugzilla or Mantis.  We've found that is usually takes some time before they are able to install and set up one of these systems, and often they find it difficult to provision dedicated servers within their organization for hosting.  Moreover, these companies also end up needing a test case management, as well as some way to collaborate and share articles.  Even though they are happy about the costs of open source QA tools, the effort to get these systems installed and running is much bigger than they expected.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SsF9kDqCKxI/AAAAAAAAAgU/-WwOxwS250U/s1600-h/mantis.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SsF9kDqCKxI/AAAAAAAAAgU/-WwOxwS250U/s200/mantis.gif" /&gt;&lt;/a&gt;So this year we set out to create for our clients an easier path to a fully integrated, open source QA management system.  Over the course of the next several articles, I'll describe the systems we adopted and ultimately integrated into a turnkey system that runs on a popular cloud computing platform.  In this first article, we'll cover the two defect tracking systems we've included in the two editions of our QA management system.  They are Bugzilla and Mantis.&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;We chose these two open source defect tracking systems because they've been around for awhile and are very popular.&amp;nbsp; They are also strongly supported by their development communities.&amp;nbsp; Finally, they both integrate well with some open source test case management systems (which we'll cover in &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa_30.html"&gt;Part 2&lt;/a&gt; of this series).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.opensourcetesting.org/" target="_blank"&gt;opensourcetesting.org&lt;/a&gt; site is a great resource for researching open source testing tools.  Here's what they have to say about &lt;b&gt;Bugzilla&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;Bugzilla has matured immensely, and now boasts many advanced features. These include: integrated, product-based granular security schema, inter-bug dependencies and dependency graphing, advanced reporting capabilities, a robust, stable RDBMS back-end, extensive configurability, a very well-understood and well-thought-out natural bug resolution protocol, email, XML, console, and HTTP APIs, available integration with automated software configuration management systems, including Perforce and CVS (through the Bugzilla email interface and checkin/checkout scripts), too many more &lt;a href="http://www.bugzilla.org/features/" target="_blank"&gt;features&lt;/a&gt; to list.&lt;br /&gt;&lt;/blockquote&gt;Mantis is the other very popular (almost 1 million downloads - the highest download count at &lt;a href="http://www.opensourcetesting.org/" target="_blank"&gt;opensourcetesting.org&lt;/a&gt;) defect tracking system we adopted for our open source QA management system.  It too has a wealth of &lt;a href="http://www.mantisbt.org/wiki/doku.php/mantisbt:features" target="_blank"&gt;features&lt;/a&gt; and, very importantly, integrates with a popular test case management system.  Here's a brief description of &lt;b&gt;Mantis&lt;/b&gt;:&lt;br /&gt;&lt;blockquote&gt;MantisBT is a free popular web-based bugtracking system (&lt;a href="http://www.mantisbt.org/wiki/doku.php/mantisbt:features" target="_blank"&gt;feature list&lt;/a&gt;). It is written in the PHP scripting language and works with MySQL, MS SQL, and PostgreSQL databases and a webserver. MantisBT has been installed on Windows, Linux, Mac OS, OS/2, and others. Almost any web browser should be able to function as a client. It is released under the terms of the GNU General Public License (GPL).&lt;br /&gt;&lt;/blockquote&gt;We've worked with these two defect tracking system for most of this year and find them to be very stable and useful for tracking defects.  And both run very well on top of Ubuntu linux (the OS we chose for implementation on the cloud platform we selected).  &lt;a href="http://blog.testlabs.com/2009/09/putting-together-open-source-qa_30.html"&gt;Part 2&lt;/a&gt; of this series will introduce the test case management systems with which these two defect tracking systems integrate.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-7307298478832225449?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/7307298478832225449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=7307298478832225449' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7307298478832225449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/7307298478832225449'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/09/putting-together-open-source-qa.html' title='Putting Together An Open Source QA Management System (Part 1) - Defect Tracking'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aBrawRpJ2MY/SsF9fXPVxXI/AAAAAAAAAgM/EBxUCkHURLk/s72-c/bugzilla.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2980382386467037688</id><published>2009-09-28T08:00:00.000-07:00</published><updated>2009-09-28T08:00:01.092-07:00</updated><title type='text'>Car 2.0</title><content type='html'>How radically different do cars need to become in order to have a significant impact on the cost of fuel and emissions?  Hybrid's are great, but Shai Agassi is all in on electric cars. His company, Better Place, is already taking us towards all electrics.  And best of all, the trade-offs don't involve any guilt or inconvenience, just a recognition that what you used to pump into your car (gasoline), now plops (charged battery). And it gets better - overtime your "eMile" costs goes down.&lt;br /&gt;&lt;br /&gt;Here's the video of Shai Agassi's presentation at TED:&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/ShaiAgassi_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ShaiAgassi-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=512&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=shai_agassi_on_electric_cars;year=2009;theme=tales_of_invention;theme=a_greener_future;theme=what_s_next_in_tech;theme=bold_predictions_stern_warnings;theme=speaking_at_ted2009;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" flashvars="vu=http://video.ted.com/talks/dynamic/ShaiAgassi_2009-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ShaiAgassi-2009.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=512&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=shai_agassi_on_electric_cars;year=2009;theme=tales_of_invention;theme=a_greener_future;theme=what_s_next_in_tech;theme=bold_predictions_stern_warnings;theme=speaking_at_ted2009;event=TED2009;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2980382386467037688?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2980382386467037688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2980382386467037688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2980382386467037688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2980382386467037688'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/09/car-20.html' title='Car 2.0'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2708104400744472542</id><published>2009-09-25T08:00:00.001-07:00</published><updated>2009-09-25T08:16:49.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Clean System Testing Using Sandboxie</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_aBrawRpJ2MY/Srw_1t9jbMI/AAAAAAAAAe4/LKCUAmQOsyM/s1600-h/sandboxie.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_aBrawRpJ2MY/Srw_1t9jbMI/AAAAAAAAAe4/LKCUAmQOsyM/s200/sandboxie.jpg" /&gt;&lt;/a&gt;Sandboxie is one of those unique utilities that varies in description depending on how you intend to use it.  To some people, it's a security tool because it isolates your local drive from any modification when running selected applications, particularly ones you don't necessarily trust.  To others it's an anonymity tool that allows you to easily erase any files when web surfing.  To me it's a great clean system utility and investigation tool for testing.&lt;br /&gt;&lt;br /&gt;At RTL, we always prepare our test configurations with clean OS installs.  This ensures we are able to reproduce defects because we control the setups and don't have to contend with "dirty" systems - systems where OS and preference files have been changed because of previous testing.  So each time we begin a set of tests, we install a clean OS.  But there are times when you'd like to restart your testing without having to re-install the OS.  That's where Sandboxie can come in handy.  Sandboxie creates a private sandbox for your application under test, to include your browser when doing web testing. Here's how it's described at the &lt;a href="http://www.sandboxie.com/" target="_blank"&gt;Sandboxie website&lt;/a&gt;:&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;blockquote&gt;Think of your PC as a piece of paper. Every program you run writes on the paper. When you run your browser, it writes on the paper about every site you visited. And any malware you come across will usually try to write itself into the paper.&lt;br /&gt;&lt;br /&gt;Traditional privacy and anti-malware software try to locate and erase any writings they think you wouldn't want on the paper. Most of the times they get it right. But first the makers of these solutions must teach the solution what to look for on the paper, and also how to erase it safely.&lt;br /&gt;&lt;br /&gt;On the other hand, the Sandboxie sandbox works like a transparency layer placed over the paper. Programs write on the transparency layer and to them it looks like the real paper. When you delete the sandbox, it's like removing the transparency layer, the unchanged, real paper is revealed.&lt;br /&gt;&lt;/blockquote&gt;I've used Sandboxie a number of times and I'm always amazed at what I find in the sandbox.  All files, included those created by an installer, are&amp;nbsp; written to the drive in the sandbox.  Here's an example of what a sandbox looks like to give you and idea of what I'm talking about:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SrxB9-89W9I/AAAAAAAAAfA/n5mPU7d3q4c/s1600-h/MainWindow.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_aBrawRpJ2MY/SrxCU-AAD1I/AAAAAAAAAfI/29Q-HW4cRaA/s1600-h/FileViewNotepad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_aBrawRpJ2MY/SrxCU-AAD1I/AAAAAAAAAfI/29Q-HW4cRaA/s400/FileViewNotepad.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The graphic above shows that any file created by any sandboxed program, in this case NotePad, will be placed in a sandbox folder corresponding to the real folder where it would have been placed on your local drive.  When I saved my file "test1.txt", it was actually saved to the sandboxed C: drive as shown, but not to the local drive.  So if you use Sandboxie during testing, any application you install, while using the sandbox, ends up in the sandbox, along with any pref, config and other files.  Then once you're done, you throw away the sandbox and your system remains "clean".&lt;br /&gt;&lt;br /&gt;I've also used Sandboxie for investigative work.  Referring again to the graphic above, you can see that each and every file that is created and would have been written to your local drive, is identified and listed by location - even changes to the Registry (the All Files and Folders folder typically  contains RegHive files which represent the sandboxed copy of the Windows registry).  So if you're interested in knowing exactly what's going on when you install and run an application under test, you can find out by looking at the contents of the sandbox.&lt;br /&gt;&lt;br /&gt;Sandboxie only runs on Windows 2000, XP, 2003, Vista, 7; 32-bit only. And not all applications can be sandboxed.  The &lt;a href="http://www.sandboxie.com/index.php?HelpTopics" target="_blank"&gt;Help &amp;amp; FAQ page&lt;/a&gt; is has all the information you need to determine if it will work for you.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6804036780515725107-2708104400744472542?l=got-bugs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://got-bugs.blogspot.com/feeds/2708104400744472542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6804036780515725107&amp;postID=2708104400744472542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2708104400744472542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6804036780515725107/posts/default/2708104400744472542'/><link rel='alternate' type='text/html' href='http://got-bugs.blogspot.com/2009/09/clean-system-testing-using-sandboxie.html' title='Clean System Testing Using Sandboxie'/><author><name>Ray Vizzone</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aBrawRpJ2MY/Srw_1t9jbMI/AAAAAAAAAe4/LKCUAmQOsyM/s72-c/sandboxie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6804036780515725107.post-2446322575136676380</id><published>2009-09-24T08:00:00.000-07:00</published><updated>2009-09-24T08:00:03.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><title type='text'>Top 10 Software Testing and QA Groups On LinkedIn</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_aBrawRpJ2MY/SrrbpxXnyyI/AAAAAAAAAeQ/laffvlsQ-sI/s1600-h/linkedin.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_aBrawRpJ2MY/SrrbpxXnyyI/AAAAAAAAAeQ/laffvlsQ-sI/s400/linkedin.png" /&gt;&lt;/a&gt;LinkedIn is a great networking resource, especially if you join Groups.  And there are a lot of software testing and QA groups on LinkedIn.  I've found these groups helpful when I've been looking for contacts in other companies, as well as the articles and comments published by the members. Here are the 3 software testing and QA groups I subscribe to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linkedin.com/groups?gid=55636&amp;amp;trk=myg_ugrp_ovr" target="_blank"&gt;Software Testing &amp;amp; Quality Assurance&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linkedin.com/groups?gid=136519&amp;amp;trk=myg_ugrp_ovr" target="_blank"&gt;QAGuild Network&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linkedin.com/groups?gid=961927&amp;amp;trk=myg_ugrp_ovr" target="_blank"&gt;Selenium User Group&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Based on membership, the Top 10 software testing and QA groups on LinkedIn are:&lt;br /&gt;&lt;ol&gt;&lt;li value="10"&gt;&lt;a href="http://www.linkedin.com/groups?gid=72347&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_3" target="_blank"&gt;Senior Testing Professionals&lt;/a&gt; (1602 members): &lt;i&gt;This group is for senior testing professionals, test managers and above. Objective is to discuss various ideas / practical problems in test management.&lt;/i&gt;&lt;/li&gt;&lt;span id="fullpost"&gt;&lt;li value="9"&gt;&lt;a href="http://www.linkedin.com/groups?gid=79498&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_2" target="_blank"&gt;ValidationExperts&lt;/a&gt; (1867 members): &lt;i&gt;This group is to connect all Independent Validation &amp;amp; Verification Experts.&lt;/i&gt; &lt;/li&gt;&lt;li value="8"&gt;&lt;a href="http://www.linkedin.com/groups?gid=35922&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_2" target="_blank"&gt;Global Testing Professional&lt;/a&gt; (1966 members): &lt;i&gt;This is a group for Testing Professionals and its purpose is to expand our network of people and share Testing concepts &amp;amp; Ideas on a Globally.&lt;/i&gt;&lt;/li&gt;&lt;li value="7"&gt;&lt;a href="http://www.linkedin.com/groups?gid=81458&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_2" target="_blank"&gt;SQAforums&lt;/a&gt; (2365 members): &lt;i&gt;Moderators &amp;amp; Members of SQAforums.com, the largest professional group of software testing and quality assurance QA professionals. Largest Test Automation and Performance Testing community on the internet.&lt;/i&gt;&lt;/li&gt;&lt;li value="6"&gt;&lt;a href="http://www.linkedin.com/groups?gid=50998&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_2" target="_blank"&gt;Software Testing and Quality Assurance&lt;/a&gt; (2557 members): &lt;i&gt;Certified Software Quality Assurance Analysts (CSQA), Certified Software Test Engineers (CSTE) and anybody interested in Software quality and testing in general are more than welcome.&lt;/i&gt;&lt;/li&gt;&lt;li value="5"&gt;&lt;a href="http://www.linkedin.com/groups?gid=25412&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_1" target="_blank"&gt;Software Testing Club&lt;/a&gt; (3748 members): &lt;i&gt;the online software testing community.&lt;/i&gt;&lt;/li&gt;&lt;li value="4"&gt;&lt;a href="http://www.linkedin.com/groups?gid=95831&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_1" target="_blank"&gt;QA &amp;amp; Testing Group&lt;/a&gt; (4000 members): &lt;i&gt;The goal of this group is to help members: Reach other members of QA &amp;amp; Testing; Accelerate careers/business through referrals from QA &amp;amp; Testing Group members; Know more than a name – view rich professional profiles from fellow QA &amp;amp; Testing Group members.&lt;/i&gt;&lt;/li&gt;&lt;li value="3"&gt;&lt;a href="http://www.linkedin.com/groups?gid=23402&amp;amp;trk=anetsrch_name&amp;amp;goback=%2Egdr_1253759412790_1" target="_blank"&gt;Software Testing - ISTQB/ISEB&lt;/a&gt; (5302 members): &lt;i&gt;Putting people in touch with other software testing professionals, to meet, discuss and share ideas within the software and system testing marketplace.&lt;/i&gt;&lt;/li&gt;&lt;li value="2"&gt;&lt;a href="http://www.linkedin.com/groups?gid=136519&amp;amp;trk=anetsrch_name&amp
