<?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-7541565209413053886</id><updated>2012-02-16T20:01:28.624-05:00</updated><category term='theories'/><category term='real world'/><category term='logging'/><category term='TestNG'/><category term='web app'/><category term='magazine'/><category term='tools'/><category term='documentation'/><category term='QICT'/><category term='acceptance test'/><category term='web'/><category term='bugs'/><category term='bug'/><category term='production'/><category term='development'/><category term='small programs'/><category term='negative testing'/><category term='customer'/><category term='robustness'/><category term='instructions'/><category term='Oracle PL/SQL'/><category term='functions'/><category term='security test'/><category term='backward compatible'/><category term='Roy Osherove'/><category term='validation'/><category term='outsourcing'/><category term='HTTP'/><category term='V and V'/><category term='quality assurance'/><category term='expectations'/><category term='troubleshooting'/><category term='comparisons'/><category term='MSDN'/><category term='perfect'/><category term='TDD'/><category term='self tests'/><category term='. analysis'/><category term='input validation'/><category term='load testing'/><category term='beautiful testing'/><category term='developer'/><category term='data generation'/><category term='defects'/><category term='coverage tool'/><category term='positive testing'/><category term='test manager'/><category term='duplication'/><category term='variables'/><category term='changes'/><category term='stakeholders'/><category term='NUnit'/><category term='system'/><category term='manual methods'/><category term='business'/><category term='price'/><category term='verification'/><category term='refactoring'/><category term='logic'/><category term='QA'/><category term='waste'/><category term='security'/><category term='success'/><category term='schema'/><category term='test cases'/><category term='objectives'/><category term='PICT'/><category term='delivery'/><category term='.NET Framework'/><category term='adviser'/><category term='malformed data'/><category term='internal test'/><category term='improvements'/><category term='state'/><category term='test team'/><category term='user'/><category term='details'/><category term='getters'/><category term='integration'/><category term='disks'/><category term='fuzz testing'/><category term='facts'/><category term='weird errors'/><category term='errors'/><category term='prioritize'/><category term='impact'/><category term='HTML'/><category term='utPLSQL'/><category term='unit testing'/><category term='operations'/><category term='messages'/><category term='design'/><category term='quality'/><category term='fix'/><category term='domain experts'/><category term='centers of excellence'/><category term='testing'/><category term='requirements'/><category term='release'/><category term='cross site scripting'/><category term='automation'/><category term='error'/><category term='audit trail'/><category term='rules'/><category term='hooks'/><category term='contracts'/><category term='debugging'/><category term='Test Visualizer'/><category term='unit tests'/><category term='change'/><category term='reverse engineering'/><category term='input'/><category term='test plans'/><category term='RAM'/><category term='application'/><category term='SOA'/><category term='mashups'/><category term='help'/><category term='ASP.NET MVC'/><category term='guessing'/><category term='inputs'/><category term='Lab Manager'/><category term='subsystem'/><category term='Wikipedia'/><category term='ALM'/><category term='developers'/><category term='agile'/><category term='manual testing'/><category term='frameworks'/><category term='unit test'/><category term='metrics'/><category term='analysis'/><category term='peer review'/><category term='limits'/><category term='tester'/><category term='script'/><category term='versions'/><category term='business risk'/><category term='test driven development'/><category term='Jester'/><category term='maintenance'/><category term='WindRunner'/><category term='JUnit'/><category term='programmatically'/><category term='quality control'/><category term='database'/><category term='thinking'/><category term='manual'/><category term='writing code'/><category term='scenarios'/><category term='testing rigor'/><category term='hack'/><category term='processors'/><category term='generators'/><category term='symptoms'/><category term='variable'/><category term='transaction'/><category term='cause'/><category term='tool'/><category term='software debugging'/><category term='functionality'/><category term='records'/><category term='process'/><category term='technical risk'/><category term='employees'/><category term='random'/><category term='reset'/><category term='. theories'/><category term='Java'/><category term='test harness'/><category term='API'/><category term='versioning'/><category term='trouble tickets'/><category term='JavaBridge'/><category term='tests'/><category term='diagram'/><category term='testers'/><category term='reassignment'/><category term='abstraction'/><category term='behavior'/><category term='religion'/><category term='server'/><category term='oursourcing'/><category term='data set'/><category term='test scripts'/><category term='collections'/><category term='data'/><category term='test data'/><category term='problem'/><title type='text'>Verification and Validation</title><subtitle type='html'>Discussions on the field of computer software testing.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-4842347997608574006</id><published>2012-01-24T23:01:00.004-05:00</published><updated>2012-01-24T23:05:59.575-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='collections'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Test Data Generation</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-WDn8NqR1sO0/Tx9-rJLKCsI/AAAAAAAAAGs/d1s1N5jsYJk/s1600/Languages.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 292px; height: 274px;" src="http://4.bp.blogspot.com/-WDn8NqR1sO0/Tx9-rJLKCsI/AAAAAAAAAGs/d1s1N5jsYJk/s320/Languages.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5701414932936526530" /&gt;&lt;/a&gt;We have a big need to generate test data to verify all kinds of functionality in our system. Personally I like to use &lt;a href="http://ora-pl-sql.blogspot.com/"&gt;Oracle&lt;/a&gt; PL/SQL to do the job. This is very practical. The data needs to be in our Oracle 11g database. What better way than to use some code compiled into the database?&lt;br /&gt;&lt;br /&gt;Now PL/SQL does have some more advanced programming constructs such as collections. However you can't beat high level languages such as C++ or Java to have advanced features. I have been experimenting with writing some utility apps in &lt;a href="http://enableassertions.blogspot.com/"&gt;Java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The next step will be to start writing some Java apps to generate test data. I know how to use JDBC to do simple database queries and DML. Let's see where this takes me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-4842347997608574006?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/4842347997608574006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=4842347997608574006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4842347997608574006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4842347997608574006'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2012/01/test-data-generation.html' title='Test Data Generation'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/-WDn8NqR1sO0/Tx9-rJLKCsI/AAAAAAAAAGs/d1s1N5jsYJk/s72-c/Languages.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-868140943562185105</id><published>2011-10-13T15:41:00.002-04:00</published><updated>2011-10-13T15:45:21.114-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='subsystem'/><category scheme='http://www.blogger.com/atom/ns#' term='data generation'/><title type='text'>Automation Saves the Day</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-yWO7NOd9wZ4/Tpc_BAxi5FI/AAAAAAAAAGg/cDA75CeS2U0/s1600/Automation.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://4.bp.blogspot.com/-yWO7NOd9wZ4/Tpc_BAxi5FI/AAAAAAAAAGg/cDA75CeS2U0/s320/Automation.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5663064343061914706" /&gt;&lt;/a&gt;We have a new developer working on fixing some bugs. She got assigned a tough part of the system. The actual code is not too difficult. The testing is a real chore. The processes need a lot of requirements to be met before any of the data is processed. I have gone through this pain in the past while trying to test out large changes to this subsystem.&lt;br /&gt;&lt;br /&gt;Luckily I performed a lot of tests and set up a data generation system. This system creates just the right data to test out all parts of the subsystem. I found this data generation to have come in handy when the test team could not figure out how to test any of this stuff.&lt;br /&gt;&lt;br /&gt;The new developer was running a little behind schedule. She was finding, like all would, that it was next to impossible to test anything in this subsystem. I pointed her to the testing data generator and her problems were solved. Now she is teaching some testers how to use this tool to conduct their own test data sets. This tool is going a long way to making peoples' lives easier. Mine included.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-868140943562185105?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/868140943562185105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=868140943562185105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/868140943562185105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/868140943562185105'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2011/10/automation-saves-day.html' title='Automation Saves the Day'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/-yWO7NOd9wZ4/Tpc_BAxi5FI/AAAAAAAAAGg/cDA75CeS2U0/s72-c/Automation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8313912073522679191</id><published>2011-08-30T10:29:00.003-04:00</published><updated>2011-08-30T10:36:02.421-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>Independent Verification</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-4C_e2AmuKQY/Tlz1SOYV6pI/AAAAAAAAAGY/T36r7WWFy5o/s1600/AQT.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-4C_e2AmuKQY/Tlz1SOYV6pI/AAAAAAAAAGY/T36r7WWFy5o/s320/AQT.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5646657726262405778" /&gt;&lt;/a&gt;Our project has an independent testing team. Their goal is to verify that our software meets the requirements and has minimal bugs. The lead of this team recently left the company. Her replacement seems like she has management potential.&lt;br /&gt;&lt;br /&gt;We just got through a big release of our software. It was to be delivered on a Friday. I was taking it easy that Friday since it had been a long week. Things were supposed to go out easily, with a formality of checking our production install.&lt;br /&gt;&lt;br /&gt;One of the testers noticed some errors in the application. It turns out the changes for the release were not in order. The thing that was disturbing was that the software changes had passed test. Now it looked like the pass was achieved in error. Now the delivery was late and we had an emergency on our hands.&lt;br /&gt;&lt;br /&gt;They needed some testing to get done. The guy who was supposed to have completed the testing had already left the company. Darn. The existing testers had little clue as to how they might test the system. What did we do? The &lt;a href="http://susops.blogspot.com/"&gt;developers&lt;/a&gt; were brought in to rerun the testing. Sounds like a massive fail to me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8313912073522679191?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8313912073522679191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8313912073522679191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8313912073522679191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8313912073522679191'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2011/08/independent-verification.html' title='Independent Verification'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/-4C_e2AmuKQY/Tlz1SOYV6pI/AAAAAAAAAGY/T36r7WWFy5o/s72-c/AQT.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-5583713502655188958</id><published>2011-03-05T01:13:00.002-05:00</published><updated>2011-03-05T01:20:31.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web app'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='weird errors'/><title type='text'>Shopping Cart Validation</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-rU7S3KLqSKc/TXHUxjZ_amI/AAAAAAAAAGE/UcdVTStc0rs/s1600/Cart.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 319px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5580475361071688290" border="0" alt="" src="http://1.bp.blogspot.com/-rU7S3KLqSKc/TXHUxjZ_amI/AAAAAAAAAGE/UcdVTStc0rs/s320/Cart.jpg" /&gt;&lt;/a&gt;Recently I had the task to ensure a mock shopping cart app on the web was working correctly. I decided to play with the darn thing to gain insight on all the things I needed to check. At first glance all seemed well. I added items to my cart. The total amount at the bottom seemed to be incrementing correctly. Then I found some disturbing behavior.&lt;br /&gt;&lt;br /&gt;When I removed an item from my cart, it did not always accurately decrease my total price. It did work sometimes. But it did not work most of the time. There was also some weird errors when I removed the last item in the cart. I wanted to go further. I wanted to assist the developer in figuring out what was going wrong.&lt;br /&gt;&lt;br /&gt;Initially the incorrect total price seemed random. Then I started calculating the amount it would decrement. Although it was not the amount of the item I removed from the cart, it would decrement by the sales price of some other items in the store. I found that the error would be predictable when I removed items from certain positions in my cart list. Those were the details that let the developer hone in on the exact problem. The cart was implemented in &lt;a href="http://xmlhome.blogspot.com/2011/02/fragile-javascript.html"&gt;JavaScript&lt;/a&gt;. Multiple variables were used in the code. However some of them were supposed to be the same variable. The real lesson from this is that a tester can shine some great light into the nature of bugs. This can help get the bugs resolved faster.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-5583713502655188958?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/5583713502655188958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=5583713502655188958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5583713502655188958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5583713502655188958'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2011/03/shopping-cart-validation.html' title='Shopping Cart Validation'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/-rU7S3KLqSKc/TXHUxjZ_amI/AAAAAAAAAGE/UcdVTStc0rs/s72-c/Cart.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-6863581535003609357</id><published>2010-08-20T11:23:00.004-04:00</published><updated>2010-08-20T11:31:27.961-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaBridge'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Visualizer'/><category scheme='http://www.blogger.com/atom/ns#' term='test scripts'/><title type='text'>TestComplete by Smart Bear Software</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_X4SDk-K9iOc/TG6eFP2bzxI/AAAAAAAAAFk/IFHvBoK3Kyo/s1600/Test.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5507513207312076562" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 213px" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/TG6eFP2bzxI/AAAAAAAAAFk/IFHvBoK3Kyo/s320/Test.jpg" border="0" /&gt;&lt;/a&gt;Smart Bear Software has announced the newest version of their &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;TestComplete&lt;/span&gt; package. This has a number of tools for testing. I think it aims to allow people with limited technical skills to become productive in testing. However there are some hooks in there for advanced users as well.&lt;br /&gt;&lt;br /&gt;There is a Test Visualizer that let's you set up tests by clicking around in the user interface. There is also another tool that let's you type in free form text of the test. It then reads your text and generates test scripts. That seems pretty amazing.&lt;br /&gt;&lt;br /&gt;The tool also has a Data-Driven Loop Wizard which let's you import data from a file to create tests. Finally for the seasoned testers, there is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JavaBridge&lt;/span&gt;. It allows you to use an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt; to grab data from within a &lt;a href="http://enableassertions.blogspot.com/"&gt;Java&lt;/a&gt; application. That is sweet. If I get into more Java development, that feature alone could be worth the cost. Pricing starts at a grand for the Standard version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-6863581535003609357?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/6863581535003609357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=6863581535003609357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/6863581535003609357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/6863581535003609357'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/08/testcomplete-by-smart-bear-software.html' title='TestComplete by Smart Bear Software'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/TG6eFP2bzxI/AAAAAAAAAFk/IFHvBoK3Kyo/s72-c/Test.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-9111749606111352515</id><published>2010-08-19T13:25:00.002-04:00</published><updated>2010-08-19T13:25:00.451-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QA'/><category scheme='http://www.blogger.com/atom/ns#' term='verification'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='quality control'/><category scheme='http://www.blogger.com/atom/ns#' term='validation'/><title type='text'>The Many Faces of Quality</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/TGwXjDq4T2I/AAAAAAAAAFc/JCl_ImZZckk/s1600/Quality.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5506802335415291746" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 242px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/TGwXjDq4T2I/AAAAAAAAAFc/JCl_ImZZckk/s320/Quality.JPG" border="0" /&gt;&lt;/a&gt;I read an insightful article on the different quality professions out there. These include quality assurance, quality control, verification, and validation. These terms are often confused and used imprecisely. So what exactly do they refer to.&lt;br /&gt;&lt;br /&gt;Quality Assurance deals with processes. That does not necessarily mean testing. In fact, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QA&lt;/span&gt; can involve review of a design or requirements document. This is in line with verification, which checks that development was conducted correctly.&lt;br /&gt;&lt;br /&gt;Quality control deals with the product of software development. This is achieved through the execution of tests. It is closely related to validation, which is the execution of code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-9111749606111352515?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/9111749606111352515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=9111749606111352515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/9111749606111352515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/9111749606111352515'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/08/many-faces-of-quality.html' title='The Many Faces of Quality'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/TGwXjDq4T2I/AAAAAAAAAFc/JCl_ImZZckk/s72-c/Quality.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-4998841150746236706</id><published>2010-08-18T13:18:00.004-04:00</published><updated>2010-08-18T13:22:56.955-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test manager'/><category scheme='http://www.blogger.com/atom/ns#' term='Lab Manager'/><category scheme='http://www.blogger.com/atom/ns#' term='test cases'/><category scheme='http://www.blogger.com/atom/ns#' term='MSDN'/><title type='text'>Visual Studio Ultimate</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/TGwV6wNNpAI/AAAAAAAAAFU/_g7oDuSbfW4/s1600/Ultimate.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5506800543484191746" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 220px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/TGwV6wNNpAI/AAAAAAAAAFU/_g7oDuSbfW4/s320/Ultimate.jpg" border="0" /&gt;&lt;/a&gt;There are a number of tools in the Visual Studio Ultimate Edition that help the test mission. These tools are included in the price of Microsoft's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MSDN&lt;/span&gt; subscription. Some of these tools include Test Manager and Lab Manager.&lt;br /&gt;&lt;br /&gt;Test Manager is meant for non-techies to developer test cases. This helps eliminate non-technical testers clicking buttons manually.&lt;br /&gt;&lt;br /&gt;Lab Manager gives you an environment to conduct tests. It works with &lt;a href="http://micro-softus.blogspot.com/2010/04/intellitrace.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Intellitrace&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://micro-softus.blogspot.com/2010/03/hyper-v.html"&gt;Hyper-V&lt;/a&gt;. Unfortunately Lab Manager does not support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Silverlight&lt;/span&gt; applications. This tools does require a lot of hardware to run on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-4998841150746236706?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/4998841150746236706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=4998841150746236706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4998841150746236706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4998841150746236706'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/08/visual-studio-ultimate.html' title='Visual Studio Ultimate'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/TGwV6wNNpAI/AAAAAAAAAFU/_g7oDuSbfW4/s72-c/Ultimate.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-4915199483602797691</id><published>2010-05-25T17:03:00.003-04:00</published><updated>2010-05-25T17:10:14.395-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jester'/><category scheme='http://www.blogger.com/atom/ns#' term='refactoring'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><category scheme='http://www.blogger.com/atom/ns#' term='functions'/><title type='text'>Unit Test Worth</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/S_w7iDlKCpI/AAAAAAAAAFM/wfgSHUoPOHo/s1600/Unit.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5475316703238425234" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 244px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/S_w7iDlKCpI/AAAAAAAAAFM/wfgSHUoPOHo/s320/Unit.jpg" border="0" /&gt;&lt;/a&gt;Just read a rant that unit tests are all but worthless. Is this true? Let's start at the beginning. Unit tests are supposed to validate &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;independent&lt;/span&gt; pieces. They attack at the function level. Code with many dependencies do not work well with unit tests.&lt;br /&gt;&lt;br /&gt;Unit tests may help find some small errors. However isn't that what debugging is for? I am speaking &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;hypothetically&lt;/span&gt; here. You are supposed to be able to refactor your code and run your unit tests to check whether it still works. Unfortunately unit tests may be too brittle to still work after refactoring.&lt;br /&gt;&lt;br /&gt;Developers are &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;optimists&lt;/span&gt;. Therefore their unit tests may just choose the easy cases. That is not much of a return on investment. However you should use a tool like Jester. It rewrites your Java code to tweak the logic a bit. If you Jester your code, and the unit tests still past, your tests are not doing much.&lt;br /&gt;&lt;br /&gt;Acceptance tests are better predictors of whether your code works. These can be employed after a refactoring to make sure the code still works. Some people still swear by unit tests. They have stories of doing 100% coverage. Then the eventual deployment had no problems at all. I think the jury is still out on unit test effectiveness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-4915199483602797691?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/4915199483602797691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=4915199483602797691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4915199483602797691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4915199483602797691'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/05/unit-test-worth.html' title='Unit Test Worth'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S_w7iDlKCpI/AAAAAAAAAFM/wfgSHUoPOHo/s72-c/Unit.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-5528375481219451828</id><published>2010-04-05T20:51:00.003-04:00</published><updated>2010-04-05T20:55:32.627-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='contracts'/><category scheme='http://www.blogger.com/atom/ns#' term='oursourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='defects'/><category scheme='http://www.blogger.com/atom/ns#' term='price'/><title type='text'>Crowdsourcing</title><content type='html'>&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 213px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5456821747253038706" border="0" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/S7qGd7ekznI/AAAAAAAAAFE/QEDMq63Y-Jc/s320/Crowd.jpg" /&gt;You have heard of outsourcing to lower costs to testing. But have you heard of &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-error"&gt;crowdsourcing&lt;/span&gt;? This is a new spin where a company has independent testers all over the world. You company contracts with the umbrella company to get your tests executed. You only pay for defects found.&lt;br /&gt;&lt;br /&gt;This method has the advantage that you do not need to set up the outsourced testers. A company has already done that for you. You also only have to pay for results you verify. A test cycle can run you as little as $5k. I just wonder what quality of tests you can get for such a small price. It could be worth a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-5528375481219451828?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/5528375481219451828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=5528375481219451828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5528375481219451828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5528375481219451828'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/04/crowdsourcing.html' title='Crowdsourcing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S7qGd7ekznI/AAAAAAAAAFE/QEDMq63Y-Jc/s72-c/Crowd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-7163207489977342433</id><published>2010-04-04T22:57:00.002-04:00</published><updated>2010-04-04T23:01:00.620-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business risk'/><category scheme='http://www.blogger.com/atom/ns#' term='prioritize'/><category scheme='http://www.blogger.com/atom/ns#' term='technical risk'/><title type='text'>Risk Based Testing</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_X4SDk-K9iOc/S7lRttIOmvI/AAAAAAAAAE0/ZlOmcp2o4jo/s1600/Risk.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 214px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5456482269186136818" border="0" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/S7lRttIOmvI/AAAAAAAAAE0/ZlOmcp2o4jo/s320/Risk.jpg" /&gt;&lt;/a&gt;How do you prioritize testing? You can't do everything. So you should spend your time on tests that have the most bang for your buck. Risk based testing attempts to solve this problem.&lt;br /&gt;&lt;br /&gt;There are two dimensions to risk. One is the technical &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-corrected"&gt;dimension&lt;/span&gt;. This is where the developers use new technology. Another dimension is the business one. Where in the apps is there a high cost to the operations if there is failure?&lt;br /&gt;&lt;br /&gt;You can use the two risk dimensions to prioritize testing. The areas that involve both a technical and business risk need the most testing resources. Other areas that have either one or the other dimensions of risk should be tested next. The low risk areas can be saved for last or skipped entirely. The result is that you spent your time wisely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7163207489977342433?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7163207489977342433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7163207489977342433' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7163207489977342433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7163207489977342433'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/04/risk-based-testing.html' title='Risk Based Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S7lRttIOmvI/AAAAAAAAAE0/ZlOmcp2o4jo/s72-c/Risk.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3115843454044362868</id><published>2010-03-04T16:19:00.002-05:00</published><updated>2010-03-04T16:20:41.700-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='messages'/><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='state'/><category scheme='http://www.blogger.com/atom/ns#' term='test harness'/><category scheme='http://www.blogger.com/atom/ns#' term='hooks'/><title type='text'>Silverlight Testing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_X4SDk-K9iOc/S5Aj-GR60EI/AAAAAAAAAEs/FRQqh1-cI5M/s1600-h/Silverlight.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/S5Aj-GR60EI/AAAAAAAAAEs/FRQqh1-cI5M/s320/Silverlight.jpg" alt="" id="BLOGGER_PHOTO_ID_5444891499235561538" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;How do you test a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Silverlight&lt;/span&gt; application? That was the topic of a blog post I read recently. One way is to construct a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Silverlight&lt;/span&gt; test harness. This is where you modify the application that is being tested. You put in hooks to work with your app tester. Let’s discuss this idea.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Currently &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Silverlight&lt;/span&gt; 4 is in beta. The latest release version is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Silverlight&lt;/span&gt; 3. You can code up a test application. A good programming language for the test app is C#. This test app can send messages to the app you are testing. These messages interrogate the application for its current state.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;By default a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Silverlight&lt;/span&gt; app will take up the whole screen. So you need to make sure your test app can stay on top, or share the screen real estate with the app being testing. The use of Local Messaging is a simple way to communicate with the app being tested.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;Simplicity is the main idea here. You do have to modify the app being tested. This feels a little more like unit testing to me. However it is a light version of it. There are alternatives to testing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Silverlight&lt;/span&gt; apps. Perhaps I shall delve into those other techniques in a future post&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3115843454044362868?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3115843454044362868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3115843454044362868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3115843454044362868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3115843454044362868'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/03/silverlight-testing.html' title='Silverlight Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S5Aj-GR60EI/AAAAAAAAAEs/FRQqh1-cI5M/s72-c/Silverlight.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-890259930063505095</id><published>2010-02-12T23:44:00.002-05:00</published><updated>2010-02-12T23:51:06.622-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='stakeholders'/><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='expectations'/><title type='text'>Beauty in Testing</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/S3YubbXHyAI/AAAAAAAAAEk/T-WyNGIIfmw/s1600-h/Beautiful.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 214px; FLOAT: left; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5437584648832534530" border="0" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/S3YubbXHyAI/AAAAAAAAAEk/T-WyNGIIfmw/s320/Beautiful.jpg" /&gt;&lt;/a&gt;My favorite test magazine had a guest editor for last month's issue. He picked an excerpt from his book on beautiful testing for one of the articles. I guess when you are the boss, you can give yourself a competitive advantage. Let's see what this guy had to say about the beauty in testing.&lt;br /&gt;&lt;br /&gt;You got to know who you are testing for. You must know your stakeholders. Otherwise you cannot please them. This can be anybody from developers to managers to support staff to users. Many of these people could have unrealistic expectations of your work. Get used to it.&lt;br /&gt;&lt;br /&gt;It can be hard to impress the stakeholders. They want more than you finding a lot of bugs. Developers may want you to do the opposite. Metrics can help you quantify your success. I just want testers to find problems early so we can fix them on the cheap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-890259930063505095?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/890259930063505095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=890259930063505095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/890259930063505095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/890259930063505095'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/02/beauty-in-testing.html' title='Beauty in Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S3YubbXHyAI/AAAAAAAAAEk/T-WyNGIIfmw/s72-c/Beautiful.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1367087195374649622</id><published>2010-02-10T19:58:00.002-05:00</published><updated>2010-02-10T20:06:40.282-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adviser'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='process'/><category scheme='http://www.blogger.com/atom/ns#' term='objectives'/><title type='text'>Outsourced Testing</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/S3NWb5qdq3I/AAAAAAAAAEc/_PIXMTtjwAs/s1600-h/Outsourcing.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 318px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436784212501703538" border="0" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/S3NWb5qdq3I/AAAAAAAAAEc/_PIXMTtjwAs/s320/Outsourcing.jpg" /&gt;&lt;/a&gt;It is becoming popular to outsource testing. How do you make sure it turns out well? You might need to appoint a third party adviser to oversee the activity. You should also define what your goals are. Do you want a little extra help to test? You alternatively may be looking for someone else to do all the testing. Or perhaps there is a skill lacking in your test organization. Define your objectives up front.&lt;br /&gt;&lt;br /&gt;Choose outsourced help that has a process which matches your own. This results in less pain. To ensure you don't get ripped off, try to negotiate as fixed price contract for the outsourcing. Then the risk is put in the hands of the outsourcing company.&lt;br /&gt;&lt;br /&gt;Exercise caution when you grow the outsourcing effort. Also watch out for expensive tool choices by the outsourcing company. They may not have your best interests at heart. More importantly, the costs of the tool might be prohibitive. Luckily our own project has a good sized test team. They also have some really good talent. So far they have only outsourced a little work to other employees in our own company. They have been short term engagements. But you never know. We might look outside for some help to test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1367087195374649622?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1367087195374649622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1367087195374649622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1367087195374649622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1367087195374649622'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/02/outsourced-testing.html' title='Outsourced Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S3NWb5qdq3I/AAAAAAAAAEc/_PIXMTtjwAs/s72-c/Outsourcing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-4388104496300127117</id><published>2010-02-09T18:41:00.003-05:00</published><updated>2010-02-09T18:45:09.972-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centers of excellence'/><category scheme='http://www.blogger.com/atom/ns#' term='beautiful testing'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><title type='text'>Testing Trends</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/S3HyxiKXiOI/AAAAAAAAAEU/5p1sxrQkGm8/s1600-h/Testing.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 229px; FLOAT: left; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5436393158010702050" border="0" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/S3HyxiKXiOI/AAAAAAAAAEU/5p1sxrQkGm8/s320/Testing.jpg" /&gt;&lt;/a&gt;What's new in the state of software testing today? That was the question posed to the editor of Software Test and Performance magazine. It is difficult to get the top three. There are many important topics in modern testing. What did the editor choose?&lt;br /&gt;&lt;br /&gt;One is the creation of testing centers of excellence. Next is the use of test outsourcing. The third is delivering value to stakeholders using a technique called beautiful testing. These topics are the contents of the latest issue of the magazine.&lt;br /&gt;&lt;br /&gt;I will be talking more about these topics in the future as they are the state of the test art.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-4388104496300127117?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/4388104496300127117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=4388104496300127117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4388104496300127117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/4388104496300127117'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/02/testing-trends.html' title='Testing Trends'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S3HyxiKXiOI/AAAAAAAAAEU/5p1sxrQkGm8/s72-c/Testing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8939162083729937944</id><published>2010-01-21T00:43:00.001-05:00</published><updated>2010-01-21T00:45:18.293-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mashups'/><category scheme='http://www.blogger.com/atom/ns#' term='input validation'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><category scheme='http://www.blogger.com/atom/ns#' term='cross site scripting'/><title type='text'>Web 2.0 Testing</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_X4SDk-K9iOc/S1fp2NAWX7I/AAAAAAAAAEM/jPd1Z9XazHQ/s1600-h/Web.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5429064993231757234" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/S1fp2NAWX7I/AAAAAAAAAEM/jPd1Z9XazHQ/s320/Web.jpg" border="0" /&gt;&lt;/a&gt;There is a new breed of applications that have been labeled Web 2.0. They require a different test strategy. Web 2.0 apps are created by the users themselves. For example, users can create &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;mashups&lt;/span&gt; where they take different apps and integrate them into a new system. This complicates verification. What is a tester to do?&lt;br /&gt;&lt;br /&gt;The first thing is that you need to use the software like a user for a while. You can also ensure that actions get logged to disk. That way you can mine the log. The log can be used to drive future tests. You can use it to set up regression tests.&lt;br /&gt;&lt;br /&gt;You got to do all kinds of data inputs validation testing. Sure you can try some special characters as input. But you should also try a whole range of weird characters. Try to simulate a cross site scripting attack. Your app better be on lock down for this.&lt;br /&gt;&lt;br /&gt;A good goal is to test small feature sets. You should also clone your production data to seed your test database. If necessary, strip out any private data from the set. Above all ensure you can roll back to a stable release at any given time. This is the web. Things happen fast.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8939162083729937944?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8939162083729937944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8939162083729937944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8939162083729937944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8939162083729937944'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2010/01/web-20-testing.html' title='Web 2.0 Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/S1fp2NAWX7I/AAAAAAAAAEM/jPd1Z9XazHQ/s72-c/Web.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-7630424957432422290</id><published>2009-12-07T19:07:00.002-05:00</published><updated>2009-12-07T19:08:01.971-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='generators'/><category scheme='http://www.blogger.com/atom/ns#' term='inputs'/><category scheme='http://www.blogger.com/atom/ns#' term='security test'/><category scheme='http://www.blogger.com/atom/ns#' term='fuzz testing'/><title type='text'>More on Fuzzing</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_X4SDk-K9iOc/Sx2Y0ZbnhHI/AAAAAAAAAEE/7UbR86_TtwQ/s1600-h/Fuzz.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5412650353116546162" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 189px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/Sx2Y0ZbnhHI/AAAAAAAAAEE/7UbR86_TtwQ/s320/Fuzz.jpg" border="0" /&gt;&lt;/a&gt;Development magazines are paying more attention to fuzzing. Fuzz testing is subjecting an application to random data to see what breaks. This is applicable to web apps. It can be part of a comprehensive security test. Fuzz testing let’s you try inputs that stimulate paths a tester might not normally think about, or have time to manually perform.&lt;br /&gt;&lt;br /&gt;There are free fuzz test generators out there. Some are Peach &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Fuzzer&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MiniFuzz&lt;/span&gt;, and Spike. There are also some commercial products to assist with fuzzing as well. But let’s get back to why fuzzing is a good idea. Normally you test positive aspects of requirements. However you should also be testing for things not covered by any requirement. This is where fuzz testing can come in real handy.&lt;br /&gt;&lt;br /&gt;I am a developer. Right now I am not employing fuzz testing yet. However I hope the independent test team on my project is hot on the technique.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7630424957432422290?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7630424957432422290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7630424957432422290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7630424957432422290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7630424957432422290'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/12/more-on-fuzzing.html' title='More on Fuzzing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Sx2Y0ZbnhHI/AAAAAAAAAEE/7UbR86_TtwQ/s72-c/Fuzz.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-7245751177315878649</id><published>2009-12-02T22:18:00.001-05:00</published><updated>2009-12-02T22:19:51.299-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test cases'/><category scheme='http://www.blogger.com/atom/ns#' term='QICT'/><category scheme='http://www.blogger.com/atom/ns#' term='PICT'/><category scheme='http://www.blogger.com/atom/ns#' term='variables'/><title type='text'>Pairwise Testing</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SxcuPyJ1TXI/AAAAAAAAAD8/m2ynTak7kfw/s1600-h/Pair.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5410844326004870514" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 174px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SxcuPyJ1TXI/AAAAAAAAAD8/m2ynTak7kfw/s320/Pair.jpg" border="0" /&gt;&lt;/a&gt;Testers often need to verify systems with many related variables. This can result in a huge amount of test cases. Often the combinations can be out of control. However a technique called Pairwise Testing can reduce the amount of test cases while still covering all scenarios. The hard part of this is generating the minimal set of cases. This is a good time to use a program to do the hard work.&lt;br /&gt;&lt;br /&gt;One pairwise test case generator is Pairwise Independent Combinatorial Testing (PICT). This product is based on a tool that Microsoft themselves use. There is a recent new tool called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QICT&lt;/span&gt; which accomplishes the same task. The beauty of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;QICT&lt;/span&gt; is that the source code is provided free of charge.&lt;br /&gt;&lt;br /&gt;Pairwise testing is good for many test scenarios. Some good examples are testing databases and configuration data. I know that I often have an onslaught of test cases that I think need to be executed to provide full coverage. I might just have to use a tool such as PICT to make my job easier. This can potentially reduce the test time necessary, and improve my test throughput.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7245751177315878649?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7245751177315878649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7245751177315878649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7245751177315878649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7245751177315878649'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/12/pairwise-testing.html' title='Pairwise Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SxcuPyJ1TXI/AAAAAAAAAD8/m2ynTak7kfw/s72-c/Pair.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-2906279662972059648</id><published>2009-12-01T17:54:00.001-05:00</published><updated>2009-12-01T17:56:05.258-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backward compatible'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='versioning'/><title type='text'>.NET Runtimes</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SxWet4ULHtI/AAAAAAAAAD0/xg-Is9_XRis/s1600/Dot-Net.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5410405038403821266" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SxWet4ULHtI/AAAAAAAAAD0/xg-Is9_XRis/s320/Dot-Net.jpg" border="0" /&gt;&lt;/a&gt;Microsoft is changing the way that new versions of the &lt;a href="http://micro-soft-dot-net.blogspot.com/"&gt;.NET&lt;/a&gt; framework impact existing applications. Here are the goals that Microsoft has. Installing new versions of the .NET framework should not break existing applications that are installed. The new version should also be backward compatible. Finally applications should run against the version of the .NET framework they were released under.&lt;br /&gt;&lt;br /&gt;These new Microsoft goals are realized in the .NET framework version 4. This is a statement that must be tested thoroughly. Previously the new .NET frameworks would be used for any existing installed application. However now Microsoft claims the latest version will not break existing apps. I can envision the need of virtual machines to test .NET framework upgrades, and the impacts on applications which depend on prior versions of the framework.&lt;br /&gt;&lt;br /&gt;Microsoft claims that the .NET framework version 4 is the most backward compatible version yet. My recommendation is to trust, but verify.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2906279662972059648?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2906279662972059648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2906279662972059648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2906279662972059648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2906279662972059648'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/12/net-runtimes.html' title='.NET Runtimes'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SxWet4ULHtI/AAAAAAAAAD0/xg-Is9_XRis/s72-c/Dot-Net.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-5168766597133812377</id><published>2009-11-25T00:37:00.003-05:00</published><updated>2009-11-25T00:42:11.194-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operations'/><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='success'/><category scheme='http://www.blogger.com/atom/ns#' term='. analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>What Matters Most</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SwzCsYOSfkI/AAAAAAAAADs/8GWKt-6WLJE/s1600/Business.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5407911320237538882" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 242px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SwzCsYOSfkI/AAAAAAAAADs/8GWKt-6WLJE/s320/Business.jpg" border="0" /&gt;&lt;/a&gt;I read a whole issue of a testing magazine tonight. There was one article that stood out in my mind. It was an interview with a guy that had started as a junior tester in his company, and worked his way up to CEO. They asked him what is key for a tester to succeed. He had some very specific guidance.&lt;br /&gt;&lt;br /&gt;A tester must know what the end user needs. The tester must also be aware of what the user wants as well. You got to know the business. You get this by getting involved with &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;operations&lt;/span&gt;. Some other important traits include strong analytical skills.&lt;br /&gt;&lt;br /&gt;This advice matches what I see on my own project. We have a bunch of GUI applications. There are some programs that run on the server that do loading and computations. Add on a couple back end programs that do communications and you have our system. There is nothing special with this layout. However the business knowledge is king. If you can somehow figure out what the heck the users are trying to accomplish, the system makes a lot of sense. Otherwise you will be totally lost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-5168766597133812377?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/5168766597133812377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=5168766597133812377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5168766597133812377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5168766597133812377'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/11/what-matters-most.html' title='What Matters Most'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SwzCsYOSfkI/AAAAAAAAADs/8GWKt-6WLJE/s72-c/Business.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1888257366159088765</id><published>2009-11-20T02:37:00.002-05:00</published><updated>2009-11-20T02:41:43.951-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>The Trouble with ASP.NET</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5406086800136008690" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 257px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SwZHTVMI8_I/AAAAAAAAADk/7hZc7Guaeg4/s320/ASP.jpg" border="0" /&gt;It is great if you can automate testing of software with unit tests. This is not too easy with ASP.NET from Microsoft. ASP.NET is a web development framework. There are multiple issues making matters difficult.&lt;br /&gt;&lt;br /&gt;The first setback is that testing web sites requires transmission of HTTP requests, simulating browser clicks. The second trouble is the output. It is all HTML which is messy.&lt;br /&gt;&lt;br /&gt;How do a lot of testers deal with web site verification? They end up clicking around looking for problems. Ouch. Microsoft's answer to the woe is &lt;a href="http://micro-soft-dot-net.blogspot.com/2009/11/version-4.html"&gt;ASP.NET &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MVC&lt;/span&gt;&lt;/a&gt;. So far I have no experience with the technology. However Microsoft is pitching it as the way to simplify the testing of web apps. We shall see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1888257366159088765?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1888257366159088765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1888257366159088765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1888257366159088765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1888257366159088765'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/11/trouble-with-aspnet.html' title='The Trouble with ASP.NET'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SwZHTVMI8_I/AAAAAAAAADk/7hZc7Guaeg4/s72-c/ASP.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-9122617461631734468</id><published>2009-10-13T01:21:00.003-04:00</published><updated>2009-10-13T01:25:50.207-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='symptoms'/><category scheme='http://www.blogger.com/atom/ns#' term='audit trail'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><category scheme='http://www.blogger.com/atom/ns#' term='diagram'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Debugging Wrap Up</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5391950581107089138" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/StQOfFlZXvI/AAAAAAAAADc/Uogcwdd40I8/s320/Fix.jpg" border="0" /&gt;Two more trustworthy rules for debugging are to keep an audit trail and to only declare a bug fixed if you fixed it. The first rule is self explanatory. Just make sure you use a consistent format for all your logging. That will help later when you try to filter all the audit data.&lt;br /&gt;&lt;br /&gt;If you think you have a fix, remove it and see if the problem comes back. If not, then you probably have not fixed the problem. You have to be sure of yourself here.&lt;br /&gt;&lt;br /&gt;Here are some last ideas. Try and get a diagram of the whole system you are debugging. Feel free to ask for help. When you do get help, you should request that assistants just report the symptoms. You don't need theories. Good luck with your debugging. I have made a career out of this activity myself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-9122617461631734468?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/9122617461631734468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=9122617461631734468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/9122617461631734468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/9122617461631734468'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/debugging-wrap-up.html' title='Debugging Wrap Up'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/StQOfFlZXvI/AAAAAAAAADc/Uogcwdd40I8/s72-c/Fix.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3638831849467170178</id><published>2009-10-10T00:02:00.004-04:00</published><updated>2009-10-10T00:10:00.756-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='versions'/><category scheme='http://www.blogger.com/atom/ns#' term='facts'/><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='cause'/><title type='text'>Details are King</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/StAH8WjCBLI/AAAAAAAAADU/rIi5GQQryq4/s1600-h/Details.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5390817487388542130" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 229px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/StAH8WjCBLI/AAAAAAAAADU/rIi5GQQryq4/s320/Details.jpg" border="0" /&gt;&lt;/a&gt;Here are more tips to debug a problem. Keep &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;testing&lt;/span&gt; older versions of the software until the problem goes away. Now you have narrowed down the build when the problem was first introduced. It should be easier to determine what changed at that time.&lt;br /&gt;&lt;br /&gt;There are many instances where the smallest detail is the key to the problem. Let me tell you a story. My customer's acceptance team keep making the application crash. They said it happened at random. That never happened to me or any internal testers on my project. So I enlisted the help of the people experiencing the trouble.&lt;br /&gt;&lt;br /&gt;I asked the testers to notice everything that happened before and after the problem. What was the weather like outside? Were the lights on? Did you sit close to the desk? Was there anybody sitting next to you? What time did it happen? You know. I needed to know all the facts, even if they seemed insignificant. Guess what? This helped us crack the case.&lt;br /&gt;&lt;br /&gt;One tester found that when she swiveled her chair to the right, the application sometimes broke. Also when she dragged her &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;spiral&lt;/span&gt; notebook from left to right the problem always happened. This keep attention to details helped her identify the cause of the problem. Each time she was doing these movements, she was pressing the space key on the keyboard. Sure enough that was the cause of the application aborting. Amazing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3638831849467170178?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3638831849467170178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3638831849467170178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3638831849467170178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3638831849467170178'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/details-are-king.html' title='Details are King'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/StAH8WjCBLI/AAAAAAAAADU/rIi5GQQryq4/s72-c/Details.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-2659484778799318539</id><published>2009-10-08T19:53:00.003-04:00</published><updated>2009-10-08T19:58:11.051-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='state'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='change'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><category scheme='http://www.blogger.com/atom/ns#' term='variables'/><title type='text'>One Thing at a Time</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5390381751312067010" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 316px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/Ss57pLK0KcI/AAAAAAAAADM/a0TQk9ivZqs/s320/Tools.png" border="0" /&gt;Here is a guideline for debugging. Only change one variable at a time. I am not talking about programming variables. I am talking about one factor in the state of the system.&lt;br /&gt;&lt;br /&gt;This can be taken a bit further as well. Make a change and check the result. If the bug was not fixed, undo the change and make exactly one more change. Repeat. The converse is to fix just one thing at a time as well. Then you can go on to other bugs.&lt;br /&gt;&lt;br /&gt;Now let's talk a little about tools. Don't throw them away even if they seem like one time tools. You should actually build the tools into the initial design of the system. Make it easy to inspect the internal state of the system during runs.&lt;br /&gt;&lt;br /&gt;Next time I will talk about audit trails and logging in general.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2659484778799318539?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2659484778799318539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2659484778799318539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2659484778799318539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2659484778799318539'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/one-thing-at-time.html' title='One Thing at a Time'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Ss57pLK0KcI/AAAAAAAAADM/a0TQk9ivZqs/s72-c/Tools.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-855153745761380544</id><published>2009-10-07T22:18:00.002-04:00</published><updated>2009-10-07T22:24:53.514-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='. theories'/><category scheme='http://www.blogger.com/atom/ns#' term='variable'/><category scheme='http://www.blogger.com/atom/ns#' term='comparisons'/><title type='text'>Say No To Guessing</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5390048004721969778" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 253px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/Ss1MGkPBinI/AAAAAAAAADE/Axdvp1KifDQ/s320/Guess.jpg" border="0" /&gt;Here is a pseudo rule for debugging: Don't make guesses. What you should do instead is to compare runs that exhibit the problem with those that do not. That way you can narrow down the exact effects which contribute to the problem. This leads us to the &lt;a href="http://verifcation-and-validation.blogspot.com/2009/10/hints-for-debugging.html"&gt;Divide and Conquer&lt;/a&gt; rule I wrote about previously.&lt;br /&gt;&lt;br /&gt;Theories about what the problem might be are not worth much. In fact, the can be counter productive. You will most likely waste time &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;tyring&lt;/span&gt; to check whether your theory is correct or not. You end up right where you started, except it is much later in the day.&lt;br /&gt;&lt;br /&gt;Now this is not to say that you should never harbor a guess at the source of a bug. You should just limit the amount of guesses you make. Once you get good at debugging, you can use few guesses to get to the source of the problem.&lt;br /&gt;&lt;br /&gt;Stay tuned for a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;commentary&lt;/span&gt; on the use of tools for debugging. I will leave you with another debugging gem. Change but one variable each time you run a test. This will help focus your cause and effect research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-855153745761380544?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/855153745761380544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=855153745761380544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/855153745761380544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/855153745761380544'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/say-no-to-guessing.html' title='Say No To Guessing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Ss1MGkPBinI/AAAAAAAAADE/Axdvp1KifDQ/s72-c/Guess.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3563327973583131088</id><published>2009-10-07T00:20:00.003-04:00</published><updated>2009-10-07T00:26:29.906-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='duplication'/><category scheme='http://www.blogger.com/atom/ns#' term='thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='guessing'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>Hints for Debugging</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SswXXVjaVnI/AAAAAAAAAC8/aA_5t-Tbpv4/s1600-h/Hints.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5389708543745742450" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 318px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SswXXVjaVnI/AAAAAAAAAC8/aA_5t-Tbpv4/s320/Hints.jpg" border="0" /&gt;&lt;/a&gt;Here are some more hints and tips to debug problems in systems. Let's start with some more general rules for debugging:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Duplicate the problem&lt;/li&gt;&lt;li&gt;Do not think too much&lt;/li&gt;&lt;li&gt;Narrow down and focus&lt;/li&gt;&lt;/ul&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Ok&lt;/span&gt; let's now get back to the tips and tricks. You got to really know the tools you use. That includes knowing the limitations of the tool set.&lt;br /&gt;&lt;br /&gt;Don't guess. Act like a detective and look at clues. Once you think you have a solution, run the system with the same conditions that exhibited the problem and demonstrate that the specific problem was indeed fixed.&lt;br /&gt;&lt;br /&gt;Record each step required to make the problem occur. Do not fake the problem. Actually make it happen like it does in real use. You might need to employ automation to speed up the process of creating the bug. That is fine.&lt;br /&gt;&lt;br /&gt;I will continue next time with some more general rules for debugging. You know I will come back to tools. And I will examine cause and effect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3563327973583131088?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3563327973583131088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3563327973583131088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3563327973583131088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3563327973583131088'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/hints-for-debugging.html' title='Hints for Debugging'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SswXXVjaVnI/AAAAAAAAAC8/aA_5t-Tbpv4/s72-c/Hints.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1029760108948782355</id><published>2009-10-04T09:55:00.002-04:00</published><updated>2009-10-04T09:59:05.436-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instructions'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='manual'/><title type='text'>Understanding the System</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/SsipgK0wd1I/AAAAAAAAAC0/vIg0YbxVWCo/s1600-h/Understand.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388743324275341138" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 226px; CURSOR: hand; HEIGHT: 236px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/SsipgK0wd1I/AAAAAAAAAC0/vIg0YbxVWCo/s320/Understand.jpg" border="0" /&gt;&lt;/a&gt;You must understand the system before you can begin debugging it. Here is a novel thought. Read the instructions. This means you should go over the specification for the system. You can also read source code comments. Review the design documentation to gain understand.&lt;br /&gt;&lt;br /&gt;Now you must understand one other thing which reading the documentation. You need to take what you read with a grain of salt. Don't trust everything you read.&lt;br /&gt;&lt;br /&gt;On the other hand, you really need to know the contents of the user manual. Read it many times until you know it well. You must have a firm grasp on the fundamentals of the system. When I come back, we will get to the second rules of debugging - Make It Fail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1029760108948782355?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1029760108948782355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1029760108948782355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1029760108948782355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1029760108948782355'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/understanding-system.html' title='Understanding the System'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SsipgK0wd1I/AAAAAAAAAC0/vIg0YbxVWCo/s72-c/Understand.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3917976243009160618</id><published>2009-10-03T20:41:00.002-04:00</published><updated>2009-10-03T20:46:06.052-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rules'/><category scheme='http://www.blogger.com/atom/ns#' term='software debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><title type='text'>Debugging</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/SsfvRMMfyLI/AAAAAAAAACs/yDp5pUfWFrs/s1600-h/Debugging.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5388538557782542514" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 242px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SsfvRMMfyLI/AAAAAAAAACs/yDp5pUfWFrs/s320/Debugging.jpg" border="0" /&gt;&lt;/a&gt;Halfway though reading a book on debugging, I realized that I had read it before. It was a good book. So I completed it for a second time. There were a lot of good stories and examples.&lt;br /&gt;&lt;br /&gt;The book was written in 2002. However the rules it presented were timeless. The author was actually a hardware/electronics dude. But he nailed the software debugging process down well.&lt;br /&gt;&lt;br /&gt;The goal of the advice in the book is to help you find out what is wrong with a system quickly. If you fix your commercial software first, you get a competitive advantage. That translates to more money for your company. So you had better listen up.&lt;br /&gt;&lt;br /&gt;When you figure problems out fast, you get to go home quicker too. I know this all too well. If I do not solve problems, I am there to midnight, and I have to return on Saturday morning.&lt;br /&gt;&lt;br /&gt;It is difficult to find debuggers who follow the rules in this book. That means if you do learn and use these rules, you will be valuable. Let's first define some terms. Troubleshooting is trying to find out what is broken. Debugging is finding out why. This book is about debugging.&lt;br /&gt;&lt;br /&gt;Let's get on with it. The first rule is "understand the system". There are eight more rules. I will be sharing some of these in future posts. Until them, happy hunting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3917976243009160618?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3917976243009160618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3917976243009160618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3917976243009160618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3917976243009160618'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/10/debugging.html' title='Debugging'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SsfvRMMfyLI/AAAAAAAAACs/yDp5pUfWFrs/s72-c/Debugging.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-2720105252088620451</id><published>2009-09-26T12:28:00.002-04:00</published><updated>2009-09-26T12:33:41.342-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='production'/><category scheme='http://www.blogger.com/atom/ns#' term='limits'/><category scheme='http://www.blogger.com/atom/ns#' term='employees'/><category scheme='http://www.blogger.com/atom/ns#' term='delivery'/><title type='text'>Acceptance Test Limitations</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5385814038353917394" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 291px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/Sr5BVSZltdI/AAAAAAAAACk/KbyL2q0MkNA/s320/Test.png" border="0" /&gt;Our customer has a pretty mature organization. They have their own acceptance test group. They are all employees of the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;customer&lt;/span&gt; organization. Their goal is to test everything we do to ensure the stuff with work in Production.&lt;br /&gt;&lt;br /&gt;A while back we delivered a major release. The customer has found all kinds of problems that we missed upon delivery. Luckily we were able to fix most of those issues. However there was a significant piece we were not able to deliver on time. We have been trying to deliver the results piecemeal. However the acceptance team is discovering this effort is producing a lot of bugs. Back to the drawing board.&lt;br /&gt;&lt;br /&gt;Recently I read an article about the limits of acceptance tests. They cannot conduct a full regression test. You should not depend too heavily on tools for the tests. The testing only adds value to the effort. It needs management support. And the testers need to learn many skills for the project to benefit. I can honestly say that our customer organization has not let these limits hold back their testing. The acceptance test team really does add significant value to the project. My hat is off to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2720105252088620451?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2720105252088620451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2720105252088620451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2720105252088620451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2720105252088620451'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/09/acceptance-test-limitations.html' title='Acceptance Test Limitations'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Sr5BVSZltdI/AAAAAAAAACk/KbyL2q0MkNA/s72-c/Test.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-5492332046411737348</id><published>2009-09-23T19:31:00.002-04:00</published><updated>2009-09-23T19:37:37.593-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Roy Osherove'/><category scheme='http://www.blogger.com/atom/ns#' term='NUnit'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Stolen Art of Unit Testing</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/Srqvz05xzZI/AAAAAAAAACc/XuVI_dMmU6M/s1600-h/Unit-Test.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5384809609384021394" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 256px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/Srqvz05xzZI/AAAAAAAAACc/XuVI_dMmU6M/s320/Unit-Test.jpg" border="0" /&gt;&lt;/a&gt;I just read a blog post by the author of the book The Art of Unit Testing. He said a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;PDF&lt;/span&gt; version of his book was being shared illegally. The guy even posted a link to one such illegal download. So I downloaded it. I read the first chapter. That's as far as I got. I won't be buying the book.&lt;br /&gt;&lt;br /&gt;Even though I took a pass, there were some things to learn from Chapter 1. Your project may fail even if you have unit tests. If fact the unit tests can be a liability. It does not matter whether you employ Test Driven Development. You might still fail. I believe that.&lt;br /&gt;&lt;br /&gt;The author does encourage you to use a unit test &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;framework&lt;/span&gt;. The examples in his book use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NUnit&lt;/span&gt;. He also states that unit tests should run quickly. They should be able to finish in a few minutes. He must be talking about some specific unit tests, not the tests for a big system. You should also set up you tests so they do not require manually configuration before running.&lt;br /&gt;&lt;br /&gt;I will give the guy one thing. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PDF&lt;/span&gt; version of his book was pretty good for a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;PDF&lt;/span&gt;. Most &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PDFs&lt;/span&gt; I view are boring black and white things. He used color appropriately. Since he was getting ripped off by people passing around free copies of his book, I will give out a link to buy &lt;a href="http://www.amazon.com/Art-Unit-Testing-Examples-NET/dp/1933988274/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1253748984&amp;amp;sr=1-1"&gt;The Art of Unit Testing&lt;/a&gt; on Amazon. Good luck Roy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-5492332046411737348?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/5492332046411737348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=5492332046411737348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5492332046411737348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5492332046411737348'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/09/stolen-art-of-unit-testing.html' title='Stolen Art of Unit Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Srqvz05xzZI/AAAAAAAAACc/XuVI_dMmU6M/s72-c/Unit-Test.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8483044443770607166</id><published>2009-07-28T20:41:00.002-04:00</published><updated>2009-07-28T20:46:28.676-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='positive testing'/><category scheme='http://www.blogger.com/atom/ns#' term='manual testing'/><category scheme='http://www.blogger.com/atom/ns#' term='test data'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Automated Acceptance Tests</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5363675860246620146" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/Sm-axuRWZ_I/AAAAAAAAACU/uxAOc0-DoTk/s320/Acceptance.jpg" border="0" /&gt;Our customer is a savvy one. They have a full time team that conducts acceptance tests of our software. This team keeps on top of new requirements and the overall business. They make sure they are in the loop at all times during the decision making process. In the end, this team makes the final call on whether our software is ready for prime time.&lt;br /&gt;&lt;br /&gt;Here is something new I have read that might help our customer's acceptance test team. That is automated acceptance tests. No that will not put them out of a job. It may make their lives easier. You write up your test cases in some English like language. Most of the time you focus on positive testing. That is, you test the normal case. The benefit it that you can run the tests against every new release.&lt;br /&gt;&lt;br /&gt;Currently my customer does acceptance tests manually. That requires them to load up on resources during the software delivery period. It also means that the testers are forever generating huge volumes of interesting test data. That is a good step. However the tedious manual execution of the tests makes me dread the job. I must confess that they are successful in finding where our software breaks down or does not meet the business need. Automated acceptance testing might take their game to the next level. Do I hear a promotion in some acceptance tester's future?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8483044443770607166?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8483044443770607166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8483044443770607166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8483044443770607166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8483044443770607166'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/07/automated-acceptance-tests.html' title='Automated Acceptance Tests'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Sm-axuRWZ_I/AAAAAAAAACU/uxAOc0-DoTk/s72-c/Acceptance.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1464405033771930689</id><published>2009-07-27T23:48:00.002-04:00</published><updated>2009-07-27T23:55:08.194-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='functionality'/><category scheme='http://www.blogger.com/atom/ns#' term='manual methods'/><category scheme='http://www.blogger.com/atom/ns#' term='unit test'/><title type='text'>Test Automation</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/Sm51KfcMigI/AAAAAAAAACM/a4eqP_TdZBo/s1600-h/Automation.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5363353029343742466" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 214px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/Sm51KfcMigI/AAAAAAAAACM/a4eqP_TdZBo/s320/Automation.jpg" border="0" /&gt;&lt;/a&gt;A common theme I read a lot about is the automation of testing. At the root this is wise move. Automate your testing. Then you can code up some changes, and retesting quickly by kicking off the tests. The big three places where automation can be used are unit, regression, and system acceptance tests.&lt;br /&gt;&lt;br /&gt;On our own project, most of the test phases are manual. Once in a while I will automate a unit test if I have the time. However we normally have no time in development. Everything is rush rush rush.&lt;br /&gt;&lt;br /&gt;Let's step back a minute and define our testing. Unit tests is where small units of code are tested. Normally you write your test cases in the same language that the product is implemented in. You try to cover all the lines of code in your tests. There are popular frameworks which assist in this endeavor.&lt;br /&gt;&lt;br /&gt;Regression tests are supposed to cover all the functionality in your product. This is difficult to achieve. There is not really a framework you can pick up to help with this. That is because the products themselves are very diverse. The regression tests themselves can check different characteristics of the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;system&lt;/span&gt;. This includes things like performance.&lt;br /&gt;&lt;br /&gt;This one is getting long. So I will pick up with System Acceptance tests next time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1464405033771930689?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1464405033771930689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1464405033771930689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1464405033771930689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1464405033771930689'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/07/test-automation.html' title='Test Automation'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Sm51KfcMigI/AAAAAAAAACM/a4eqP_TdZBo/s72-c/Automation.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3820575911432146415</id><published>2009-06-24T21:31:00.002-04:00</published><updated>2009-06-24T21:31:56.309-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='self tests'/><category scheme='http://www.blogger.com/atom/ns#' term='analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='tests'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Time for TDD</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SkLTd7VO5OI/AAAAAAAAACE/VG_kK-HvjLI/s1600-h/TDD.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5351071818365986018" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 233px" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SkLTd7VO5OI/AAAAAAAAACE/VG_kK-HvjLI/s320/TDD.jpg" border="0" /&gt;&lt;/a&gt;Test Driven Development (TDD) is gaining more acceptance in programming circles. But at least one question still remains. When should you apply TDD? In other words, when do you develop the tests? A simple answer is to create the tests first. That way you have tested code from day one. However this may not always be the right way to go.&lt;br /&gt;&lt;br /&gt;I read a blog entry stressing that TDD is beneficial for maintenance work. You should have mature code complete with self tests. However the very first class you write for a new system may not need tests right away. Testing may in fact get in the way of rapid progress. I myself am divided on this very topic.&lt;br /&gt;&lt;br /&gt;In a perfect world, you would have understood all the requirements and performed a full analysis and design on the project. At that point you are ready to add TDD before you write the first line of code. The real world is never perfect. So this may not be the way to go. Sometimes you need to write some code to figure things out. I would not call this production code. This may be throw away code. And that code does not need TDD applied to it.&lt;br /&gt;&lt;br /&gt;We do not use TDD in general on my project. I have tried it. For small tasks it seems to work well. But when everything is crazy and we are terribly behind schedule, the TDD goes out the window and we hack together solutions. Sure it is not the best way to go. But it is life. There is probably a time and place for TDD. That time may not be before you write any code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3820575911432146415?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3820575911432146415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3820575911432146415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3820575911432146415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3820575911432146415'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/06/time-for-tdd.html' title='Time for TDD'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SkLTd7VO5OI/AAAAAAAAACE/VG_kK-HvjLI/s72-c/TDD.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-145076404439286168</id><published>2009-06-11T18:25:00.002-04:00</published><updated>2009-06-11T18:26:06.485-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit testing'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='maintenance'/><category scheme='http://www.blogger.com/atom/ns#' term='trouble tickets'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Cost of TDD</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/SjGEaAodeTI/AAAAAAAAAB8/Vm9gpeb69rU/s1600-h/TDD.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5346199815046658354" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 240px; CURSOR: hand; HEIGHT: 188px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SjGEaAodeTI/AAAAAAAAAB8/Vm9gpeb69rU/s320/TDD.jpg" border="0" /&gt;&lt;/a&gt;I read a blog about a developer that tried Test Driven Development (TDD) for a day. He found that a useful way to generate the tests is to debug your code. When you find errors, you can write a test that checks for that bug. This would be perfect for my project. It is a maintenance project. We get trouble tickets all the tine that we resolve. It would not take much more effort to integrate the tests for the bugs we fix into a automated test script. We already do the unit testing for each fix anyway.&lt;br /&gt;&lt;br /&gt;Getting back to the subject of TDD, the developer who tried it and wrote about it did not like it. He said the TDD technique led to very little actual debugging. He did gain some new respect for the method in general. However he would still not use it for everyday programming purposes. While the effort did seem to result in higher quality code, it took much longer to develop code that way.&lt;br /&gt;&lt;br /&gt;When can you use TDD? I know we can’t use it on our project. We hardly have the time to race through coding and hack together some solutions on my project. If TDD causes the development cycle to double in time, we would never get anything done at my job. Here is the funny thing about this.&lt;br /&gt;&lt;br /&gt;Perhaps we really are the best candidates for a TDD approach. The problem is that it would be a hard sell. One of the main things that drives our schedule is customer needs. And our particular customer wants more functionality in less time. They don’t seem to care about our methodology. Yes they do not like bugs. However they will tolerate bugs if it means they get a lot of features right away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-145076404439286168?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/145076404439286168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=145076404439286168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/145076404439286168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/145076404439286168'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/06/cost-of-tdd.html' title='Cost of TDD'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SjGEaAodeTI/AAAAAAAAAB8/Vm9gpeb69rU/s72-c/TDD.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-2742677512030646164</id><published>2009-06-02T22:41:00.003-04:00</published><updated>2009-06-02T22:44:38.198-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='disks'/><category scheme='http://www.blogger.com/atom/ns#' term='records'/><category scheme='http://www.blogger.com/atom/ns#' term='RAM'/><category scheme='http://www.blogger.com/atom/ns#' term='processors'/><title type='text'>Production Volume</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5342925921864081682" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 278px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/_X4SDk-K9iOc/SiXi0WHvYRI/AAAAAAAAAB0/T2hRE4tNwmU/s320/Volume.jpg" border="0" /&gt;I read this blog about how you should test using volume comparable to production. Big hard disks cost little these days right? Wrong. Well yes some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;el&lt;/span&gt; cheapo hard disk can be found for a bargain. However that disk will never match the characteristics of our production server box.&lt;br /&gt;&lt;br /&gt;Now I don't know all the details. But we have a massive box to run our production system. There is probably something like 128 processors on the darn thing. And there is more RAM in there than you could find on a mainframe.&lt;br /&gt;&lt;br /&gt;Don't get me started about the super speed disk array we got powering our database. But I guess you get the point. You cannot compare your little bitty workstation with a production box. To do some is futile. I guess the only pearl of wisdom from the blog post I read was that you should not do tests if you only have a couple records in your tests tables. Point taken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2742677512030646164?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2742677512030646164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2742677512030646164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2742677512030646164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2742677512030646164'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/06/production-volume.html' title='Production Volume'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SiXi0WHvYRI/AAAAAAAAAB0/T2hRE4tNwmU/s72-c/Volume.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-2123330333053003089</id><published>2009-05-03T15:24:00.002-04:00</published><updated>2009-05-03T15:33:41.276-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='load testing'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Oracle Application Suite</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/Sf3vkcLaYEI/AAAAAAAAABs/du0PWRkkjvs/s1600-h/Application.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5331680943194923074" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/Sf3vkcLaYEI/AAAAAAAAABs/du0PWRkkjvs/s320/Application.gif" border="0" /&gt;&lt;/a&gt;You would think a tool called Oracle Application Suite would be focused on some type of database work. Specifically it sounds like it does something with the &lt;a href="http://ora-pl-sql.blogspot.com/"&gt;Oracle Database&lt;/a&gt;. However I just read an article that tells how this tool can be used for testing.&lt;br /&gt;&lt;br /&gt;The Oracle Application Suite is actually a part of Oracle Enterprise Manager. Now I have heard of this product. However I have seen &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DBAs&lt;/span&gt; use this to manage Oracle databases. But I digress. Let's get back to how Oracle Application Suite can be used to test.&lt;br /&gt;&lt;br /&gt;There are three things that Oracle Application Suite does to assist testing. It helps load testing by simulating a lot of users logging on to the database. It also performs functional testing by automating test scripts. Finally it helps with all kinds of chores related to web application testing.&lt;br /&gt;&lt;br /&gt;Now like most Oracle tools, I hope this one is free. If so I plan on checking it out. On a final note, I understand this tool integrates with other products. I guess I will have to play with it to find out how that works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2123330333053003089?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2123330333053003089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2123330333053003089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2123330333053003089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2123330333053003089'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/05/oracle-application-suite.html' title='Oracle Application Suite'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Sf3vkcLaYEI/AAAAAAAAABs/du0PWRkkjvs/s72-c/Application.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1405041678194463633</id><published>2009-04-29T17:37:00.002-04:00</published><updated>2009-04-29T17:38:00.135-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robustness'/><category scheme='http://www.blogger.com/atom/ns#' term='negative testing'/><category scheme='http://www.blogger.com/atom/ns#' term='inputs'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='malformed data'/><title type='text'>Fuzzing</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5330230748976028210" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 248px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/SfjIoBuUmjI/AAAAAAAAABk/VmoEAAv00wc/s320/Fuzzing.jpg" border="0" /&gt;I read an article in Software Test and Performance magazine about the topic “Fuzzing”. This was the first time I had heard this term. However recently I heard some of my team’s tester talking about the issues involved with fuzzing. So I thought I would write about this as well.&lt;br /&gt;&lt;br /&gt;Fuzzing is a negative software testing method. That means you do not test for whether the system works correctly with correct inputs. Instead fuzzing concentrates on things such as inputting malformed data to an application. It also involves attempts to defeat system security. This used to be a hacking technique. Now it has been formalized as a testing methodology.&lt;br /&gt;&lt;br /&gt;Requirements themselves can be written in a positive and negative form. That is, requirements usually dictate what the software must do. However some requirements also define the desired system behavior by describing also what the system shall not do.&lt;br /&gt;&lt;br /&gt;A way to perform fuzzing is to start with a test case. Then you can modify the test data and rerun the test. The more general realm of testing is robustness testing. This is where you test how the system behaves when there are invalid inputs. One such form of robustness testing is fuzzing. The main purpose of fuzzing is to identify security problems in the system.&lt;br /&gt;&lt;br /&gt;When I was with some of our team’s testers, I heard them talking about their negative testing. I did not drop the “fuzzing” buzzword with them. However it was good to see that they are addressing modern topics in the test world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1405041678194463633?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1405041678194463633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1405041678194463633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1405041678194463633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1405041678194463633'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/04/fuzzing.html' title='Fuzzing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SfjIoBuUmjI/AAAAAAAAABk/VmoEAAv00wc/s72-c/Fuzzing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8301032263839070663</id><published>2009-03-23T21:43:00.002-04:00</published><updated>2009-03-23T21:44:32.036-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='production'/><category scheme='http://www.blogger.com/atom/ns#' term='bug'/><category scheme='http://www.blogger.com/atom/ns#' term='tester'/><category scheme='http://www.blogger.com/atom/ns#' term='theories'/><category scheme='http://www.blogger.com/atom/ns#' term='data generation'/><title type='text'>Changing Test Data</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/Scg657WfLqI/AAAAAAAAABc/r-hv5uhHXcE/s1600-h/Change.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5316564126969835170" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/Scg657WfLqI/AAAAAAAAABc/r-hv5uhHXcE/s320/Change.jpg" border="0" /&gt;&lt;/a&gt;Our customer reported a bug in production. There were many theories as to why this problem was happening. I told people that these were all interesting theories. But these theories, like any opinions, were really not worth much. When I got some time, I dug into the problem. I traced the problem back to the line of code that caused the problem. In the end I determined some configuration data was missing. That resulted in the good code causing a bad transaction. I unit tested my fix by hacking together some data to meet the specific scenario where the error occurs.&lt;br /&gt;&lt;br /&gt;Then the fix went to our internal test team. A tester called me up and asked me about the problem. I explained the problem from top to bottom. You would think that would be sufficient for a tester to run with the fix and test it out. However I got back a question that I seem to get a lot from our internal test team. How do I test that? In essence they wanted to know how you set up the data conditions that result in replication of the error.&lt;br /&gt;&lt;br /&gt;Now I am sympathetic somewhat to the testers. They do not have the source code in front of them. The documentation for our system is merely average. So it might be unreasonable to assume they had all the tools they needed to figure things out. Therefore I outlined a set of steps that could be taken to replicate this problem.&lt;br /&gt;&lt;br /&gt;Development had previously produced a tool which generated input files for our loads component. You could use the tool to generate input files which contain the data the make the problem happen. I recommended that the testers generate up the input files with the tool, run them through the loads program, and duplicate the problem.&lt;br /&gt;&lt;br /&gt;I guess this was too much work. The testers tried to simulate all that work by taking data previously mocked and loaded, and performing updates on that data. This is not a bad decision. But you have to know what you are doing. Unfortunately they were unable to replicate the problem. My boss told me to get in there and help them out to get this fix shipped. Essentially I had to reverse engineer our loading code. Then I kept giving them all the data they needed to change manually in order to duplicate the problem.&lt;br /&gt;&lt;br /&gt;This is not a good scene. I have things to do. If you want to add value as a tester, you got to do the hard work. Then you will come out smarter and be able to wing it one day. But not now guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8301032263839070663?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8301032263839070663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8301032263839070663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8301032263839070663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8301032263839070663'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/03/changing-test-data.html' title='Changing Test Data'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/Scg657WfLqI/AAAAAAAAABc/r-hv5uhHXcE/s72-c/Change.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3684251948418026461</id><published>2009-03-17T17:10:00.004-04:00</published><updated>2009-03-17T17:14:43.390-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test manager'/><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='changes'/><title type='text'>Testing is Hard Work</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/ScAR8CfYepI/AAAAAAAAABU/Jk8jcDiTOZM/s1600-h/Work.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5314267283455507090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 311px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/ScAR8CfYepI/AAAAAAAAABU/Jk8jcDiTOZM/s320/Work.bmp" border="0" /&gt;&lt;/a&gt;Yesterday the test manager on my project came to visit me. She was planning the tests for some new changes I am working on. She asked me to explain some of the changes as they did not make much sense to her.&lt;br /&gt;&lt;br /&gt;I tried to get into the details with her. She took some notes. Then she said she would get some people from her team to dig into it. Today I got a message from her. She said her team could not make heads or tails of the requirements, and asked me to help them.&lt;br /&gt;&lt;br /&gt;Well I shot off an informative email on the current state of the application, and what the customer wanted instead. Then I got a response on how they could test that. I gave the test team a little more information. Then I got another response asking how they could set up data to do the tests.&lt;br /&gt;&lt;br /&gt;I did not want to just provide them with my own unit test plan. Then they would not be adding any value to the work. In an ideal world, they would be able to figure out how to test according to the documented requirements. Unfortunately the requirements team does not know much more than the testers. So I continued to try to give more ideas until they felt like they had enough to go on. How do we get to that ideal world where there is independent validation of my work?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3684251948418026461?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3684251948418026461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3684251948418026461' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3684251948418026461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3684251948418026461'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/03/testing-is-hard-work.html' title='Testing is Hard Work'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/ScAR8CfYepI/AAAAAAAAABU/Jk8jcDiTOZM/s72-c/Work.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-7549780028393479724</id><published>2009-01-18T17:01:00.001-05:00</published><updated>2009-01-18T17:03:12.383-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='testers'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Wikipedia'/><category scheme='http://www.blogger.com/atom/ns#' term='magazine'/><title type='text'>Application Lifecycle Management</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_X4SDk-K9iOc/SXOm1lHLmMI/AAAAAAAAABM/-b0BlpX7BQA/s1600-h/ALM.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5292757426515974338" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 239px" alt="" src="http://3.bp.blogspot.com/_X4SDk-K9iOc/SXOm1lHLmMI/AAAAAAAAABM/-b0BlpX7BQA/s320/ALM.gif" border="0" /&gt;&lt;/a&gt;Recently I subscribed to Software Testing and Performance magazine. I just got my first issue. There were 30 pages in the issue. Within these pages, there were 3 large ads for conferences. I started to get suspicious that this magazine might be a front for advertising. Then I found a couple articles with technical content. One of these was the ST and Pedia column.&lt;br /&gt;&lt;br /&gt;This particular column boasted that it was “translating the jargon of testing into plain English”. This month’s column focused on describing parts of the ALM. There was one main problem with this. It did not define what ALM stood for. Perhaps every tester knows this acronym by now. I think I will email the many testers I know and see if that is true.&lt;br /&gt;&lt;br /&gt;Regardless, I did not know what ALM stood for. That made the whole column a damper. It was not quite clear how the different parts were related. Come on guys. You spell out SOA (Service Oriented Architecture). SOA is more common than ALM. Perhaps this was just an oversight. You should always write for an audience that does not know all the buzz words and acronyms. I will try to take this lesson to heart and spell out acronyms I use myself in my blog.&lt;br /&gt;&lt;br /&gt;The whole point of receiving a print magazine like Software Testing and Performance is that I like to read it in places where I do not have a computer in front of me. Once I got to the computer, I was able to head over to Wikipedia for guidance. There I found that ALM stands for Application Lifecycle Management. But at this point, I no longer needed or wanted to read the magazine. I was in Wikipedia for my research.&lt;br /&gt;&lt;br /&gt;I don’t know how else to combat this problem. Maybe I should write to the editor of the magazine. It did not look like the author’s of the column in question had listed their email addresses near the column. That is not too good. So far this magazine has shown me it has a lot of advertisements, and seems to be written for a specific audience which know more about testing than me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7549780028393479724?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7549780028393479724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7549780028393479724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7549780028393479724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7549780028393479724'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2009/01/application-lifecycle-management.html' title='Application Lifecycle Management'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SXOm1lHLmMI/AAAAAAAAABM/-b0BlpX7BQA/s72-c/ALM.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-5036885321440468472</id><published>2008-09-17T18:38:00.002-04:00</published><updated>2008-09-17T18:39:18.504-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='behavior'/><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='scenarios'/><category scheme='http://www.blogger.com/atom/ns#' term='reverse engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='details'/><title type='text'>True Testing</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SNGG_PLm4zI/AAAAAAAAAA8/JpsL_5euL9g/s1600-h/True.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5247123461828436786" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SNGG_PLm4zI/AAAAAAAAAA8/JpsL_5euL9g/s320/True.jpg" border="0" /&gt;&lt;/a&gt;A manager on my project wanted to know how some things worked in one of our applications. They needed to speak with a customer. So this information needed to be very accurate. I kind of knew how the application worked. However I did not know all the details for sure. We have a lot of documentation that describes the most intricate details of the applications. Some of this documentation is old. My instinct told me not to trust the documentation. I had no other alternative than to reverse engineer the application behavior through a series of tests.&lt;br /&gt;&lt;br /&gt;I spent a lot of time conducting different scenarios to test. It was good that I had some idea on how the application worked. That way I could choose tests where I was not sure of the results. I could also infer a lot from just a few tests results. This was not an exhaustive search of all the possibilities. That would have taken far too long. It took about half a day to get the data I needed.&lt;br /&gt;&lt;br /&gt;This technique may not work for everybody. You have to make sure you really get a firm understanding of what is going on behind the scenes. However I trust this more than &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;consulting&lt;/span&gt; some documentation or even reviewing the source code. In my experience, it is best to trust nothing. I know that sounds a bit like the X Files. But it is the safest approach.&lt;br /&gt;&lt;br /&gt;Now I can say with confidence how the application behaves for some certain behavior. If anybody wants to challenge me, I can ask them where they got their information. Is that just the way it is supposed to be? Did they hear it from somebody a long time ago? Did they read this in some document? I can top all of that. I just tested the actual application out. You can’t beat that kind of experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-5036885321440468472?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/5036885321440468472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=5036885321440468472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5036885321440468472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/5036885321440468472'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/09/true-testing.html' title='True Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SNGG_PLm4zI/AAAAAAAAAA8/JpsL_5euL9g/s72-c/True.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8739314556705329873</id><published>2008-09-13T22:38:00.002-04:00</published><updated>2008-09-13T22:45:29.622-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><category scheme='http://www.blogger.com/atom/ns#' term='production'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><category scheme='http://www.blogger.com/atom/ns#' term='real world'/><title type='text'>Good Test Data</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5245701416858544178" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SMx5pU2d6DI/AAAAAAAAAA0/ZPQqCBU0_I8/s320/Test.gif" border="0" /&gt;You need reliable test data to conduct independent verification. This is more complicated than it seems for some systems. The &lt;a href="http://susops.blogspot.com/"&gt;Software Maintenance&lt;/a&gt; blog demonstrates that sometimes even developers have trouble creating &lt;a href="http://susops.blogspot.com/2007/11/trouble-in-test-town.html"&gt;test data&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ideally you can run the system like it operates in a production environment. The closer to the real world you make it, the better the quality of your test data. However this is not always feasible. Sometimes you need to simulate the real world with generated test data. It is these circumstances where you really need to understand the system deeply. There is always the chance that you introduce differences in your data generation that skew test results.&lt;br /&gt;&lt;br /&gt;One way to perform test data generation is to do the hard work once. Then you can save a copy of the data that you can use time and time again. There may be some circumstances where you will need to tweak the test data. However the heavy lifting will already be done. This is how we approach test data generation on my project. Some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DBAs&lt;/span&gt; run processes each year to give us a new data set valid for that year. The results are passed to both the development and internal test teams. The work in generating this test data is not too high. The results are awesome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8739314556705329873?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8739314556705329873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8739314556705329873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8739314556705329873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8739314556705329873'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/09/good-test-data.html' title='Good Test Data'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SMx5pU2d6DI/AAAAAAAAAA0/ZPQqCBU0_I8/s72-c/Test.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3394048000612790679</id><published>2008-09-04T19:05:00.001-04:00</published><updated>2008-09-04T19:07:06.141-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='coverage tool'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='peer review'/><category scheme='http://www.blogger.com/atom/ns#' term='waste'/><category scheme='http://www.blogger.com/atom/ns#' term='getters'/><category scheme='http://www.blogger.com/atom/ns#' term='abstraction'/><title type='text'>Wasted Unit Tests</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/SMBqBcVJ-aI/AAAAAAAAAAs/8bI_2tG-4m4/s1600-h/Waste.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5242306539276597666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SMBqBcVJ-aI/AAAAAAAAAAs/8bI_2tG-4m4/s320/Waste.jpg" border="0" /&gt;&lt;/a&gt;I read a blog post entitled “Can Unit Testing Be A Waste” on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;AgileSoftwareDevelopment&lt;/span&gt;. It was written by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;pbielicki&lt;/span&gt;. He recommended you write unit tests at a high level of abstraction. Writing tests for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;getters&lt;/span&gt; and setters is a total waste of time. The goal of agile development is to eliminate waste. You should add tests just in time to verify functionality. You should also use common sense while choosing what to test.&lt;br /&gt;&lt;br /&gt;One of the most interesting parts of the blog post was the many comments it received. For example, there was agreement that you need a coverage tool to even know where you stand with unit testing. There was emphasis on the goal of unit testing being a quality product. Another goal is to satisfy the customer.&lt;br /&gt;Here on my project we are supposed to do unit testing. For the most part there is some level of unit test. Previously we had implemented a system of peer review to ensure there was adequate documentation of the unit tests. The peer review also ensured there was enough coverage for the unit test cases. However we have recently stopped performing such peer reviews. This is unfortunate. And I think it is starting to show in the quality of the code we are producing.&lt;br /&gt;&lt;br /&gt;I am certain we are not wasting time on unit testing. We try to determine the minimal set of tests that will ensure something we code actually works. Our team borders on the side of too little when developing unit tests. Like many developers, we do not particularly like unit testing. I do it because I like it even less when I ship out very buggy code. That only creates a whole new set of worse problems. My company works on a maintenance contract where we get penalized when there are a lot of bugs shipped out to production. So this is a dollar and cents type of issue.&lt;br /&gt;&lt;br /&gt;My manager has said that we have a documented peer review plan. The real problem is that I have never seen it. Thus it is truly not a priority. Yeah if I banged on doors and made a big deal about it, somebody would finally find me a copy of the thing. However it would be worthless if nobody is following it. Ouch. Get ready for a rough ride guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3394048000612790679?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3394048000612790679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3394048000612790679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3394048000612790679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3394048000612790679'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/09/wasted-unit-tests.html' title='Wasted Unit Tests'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SMBqBcVJ-aI/AAAAAAAAAAs/8bI_2tG-4m4/s72-c/Waste.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-1044056465514440079</id><published>2008-09-02T19:36:00.002-04:00</published><updated>2008-09-02T19:37:16.444-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='test driven development'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><category scheme='http://www.blogger.com/atom/ns#' term='TestNG'/><category scheme='http://www.blogger.com/atom/ns#' term='JUnit'/><title type='text'>The State of Unit Testing</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/SL3OErr_VpI/AAAAAAAAAAk/rb2p9eI6bhI/s1600-h/UnitTesting.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5241572121171154578" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SL3OErr_VpI/AAAAAAAAAAk/rb2p9eI6bhI/s320/UnitTesting.jpg" border="0" /&gt;&lt;/a&gt;Python and Ruby developers are big on unit testing. However there is not as much excitement with it in the Java world. Test Driven Development is getting to the point where it is becoming a religion. So if you are doing agile software development, you can expect to also be doing unit testing.&lt;br /&gt;&lt;br /&gt;There has been a few recent books on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;JUnit&lt;/span&gt;. Aside from that, there is really not a lot new with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JUnit&lt;/span&gt;. There are also other unit testing frameworks out there such as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;TestNG&lt;/span&gt;. None of these really help with enterprise systems though. They are very hard to test since they have a lot of dependencies. Unit testing is also very difficult with legacy applications.&lt;br /&gt;&lt;br /&gt;Like TDD, agile in general is going mainstream. And unit testing is one of the most adopted practices in software. However unit testing seems to be starting to be on the decline. In general it is hard to afford the time required for unit testing. Most projects and developers do basic unit testing. But if an existing system works, it is difficult to justify extra cost to add unit tests.&lt;br /&gt;&lt;br /&gt;The goal of unit testing is better code. There are free tools available for unit testing. So the tool cost is usually not an issue. Good unit tests, like good code, require a lot of time and skill. All developers on your team must unit test for you to get the maximum benefit. You also need to do a lot of work with unit tests when you system changes drastically.&lt;br /&gt;&lt;br /&gt;On my own project, we are supposed to do unit testing on all new code and any fixes. Previously we were required to generate documentation on the unit test activities. This documentation was inspected at the time of peer review. Now we only have management direction to make sure we do unit testing and produce some tangible results. However there are no checks to ensure this is done. You can imagine the tendencies given a hectic software life cycle where we work.&lt;br /&gt;&lt;br /&gt;For a while I was starting to slack a bit with my own unit tests. I would check a few things out, and decide to ship the software based on that. But I am always up to improving myself. One of the areas I determined needed help was my unit testing. I found myself writing a lot of scripts lately to fix problems. I have decided that for every script I write, I would also write at least one other script that performed a unit test. Many times I end up writing multiple unit test scripts to create data, run the tests, and clean up my development environment. Sometimes this uncovers critical bugs and saves the day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-1044056465514440079?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/1044056465514440079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=1044056465514440079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1044056465514440079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/1044056465514440079'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/09/state-of-unit-testing.html' title='The State of Unit Testing'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SL3OErr_VpI/AAAAAAAAAAk/rb2p9eI6bhI/s72-c/UnitTesting.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-3536917851391198640</id><published>2008-08-27T18:13:00.001-04:00</published><updated>2008-08-27T18:15:34.057-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='customer'/><category scheme='http://www.blogger.com/atom/ns#' term='unit tests'/><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='manual testing'/><category scheme='http://www.blogger.com/atom/ns#' term='test data'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Going the Distance</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_X4SDk-K9iOc/SLXR8Cm2bcI/AAAAAAAAAAc/0H75cFiNs50/s1600-h/Distance.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239324570937617858" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_X4SDk-K9iOc/SLXR8Cm2bcI/AAAAAAAAAAc/0H75cFiNs50/s320/Distance.jpg" border="0" /&gt;&lt;/a&gt;The customer encountered a problem while testing our application suite. We had just migrated to a new set of tools, and a new version of the database on the back end. It took a while for me to get around to researching the problem. Luckily I was able to duplicate the problem in a development environment. I tracked the source of the problem down to some bad test data. Then I checked the database where the customer performed their tests. They had the same problem there. The fix was to write a script to correct the data.&lt;br /&gt;&lt;br /&gt;At first when I ran the script to correct the problem, it just bombed. It logged the problems it encountered. So I manually executed each of the statements in the script until I found what the problem was. That’s when I was done with the coding. It was time to test it out. Luckily I had a lot of data that was corrupt in my development environment. I ran the script and it fixed about 5000 records. I used a tool to view the corrected data. In general it looked pretty good. I was tempted to just ship the fix at this point since I had 9 other problem to research and resolve.&lt;br /&gt;&lt;br /&gt;Instead I decided to take my unit tests a step further. I figured it would be easiest to write another script to verify all the records were updated correctly. It took about an hour to write this unit test script. That was not too much overhead considering the time it take to investigate and code a solution to the problem. I did find some exceptional scenarios in the script results when I churned the data with a script. I just checked all 5000 outputs records for correctness. At first I just output the number of problems the test script found. Then I actually wrote the problems out to a log for further analysis.&lt;br /&gt;&lt;br /&gt;Here in development we always seem to be in a rush because we are understaffed and overworked. But here is the funny thing. If I sent out a script that did not fully work, I would waste a whole lot more time dealing with the repercussions. Why not spend a little more time and get it right the first time? I love to code. Writing a script to verify the unit test results is just a little more coding. So it is in fact fun work. Now just don’t tell the management staff that. Otherwise they will get the wrong idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3536917851391198640?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3536917851391198640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3536917851391198640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3536917851391198640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3536917851391198640'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/08/going-distance.html' title='Going the Distance'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SLXR8Cm2bcI/AAAAAAAAAAc/0H75cFiNs50/s72-c/Distance.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-8389448558314548441</id><published>2008-08-21T18:00:00.001-04:00</published><updated>2008-08-21T18:02:05.579-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='utPLSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='production'/><category scheme='http://www.blogger.com/atom/ns#' term='schema'/><category scheme='http://www.blogger.com/atom/ns#' term='data set'/><category scheme='http://www.blogger.com/atom/ns#' term='reset'/><category scheme='http://www.blogger.com/atom/ns#' term='transaction'/><title type='text'>Testing Database Code</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_X4SDk-K9iOc/SK3lvUeo0PI/AAAAAAAAAAU/zto0lZUaVv0/s1600-h/DB.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5237094542815580402" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_X4SDk-K9iOc/SK3lvUeo0PI/AAAAAAAAAAU/zto0lZUaVv0/s320/DB.bmp" border="0" /&gt;&lt;/a&gt;Last night I read a blog entry entitled “How to Unit-Test Code That Interacts With a Database”. It stated that such testing is hard. But you still want to fully test the database interaction. The blog recommended that you connect to a separate database to do your unit testing. Each developer should ideally have their own database. In addition, the database should be reset to the state it started in prior to the unit test. The best database for testing is a small focused data set. Above all the unit test activity should not connect to the production database.&lt;br /&gt;&lt;br /&gt;On our project we conduct unit testing on new code that we write, as well as on fixes that we produce. Our main test &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;data set&lt;/span&gt; is a small but interesting combination of test cases for verification. In general most of our developers have their own schema for testing. This allows you to do whatever you want without impacting other developers. It also helps in that nobody else makes changes to the data in your database. In the past I have written elaborate unit test scripts which generate delete old test data, generate new test data, execute the tests, and report on the results. This is normally done when I write code that relies heavily on database interaction.&lt;br /&gt;&lt;br /&gt;One of the best parts of the blog post I read was the large number of comments from readers. I will share some of them here for your benefit. Multiple people pointed out that the type of testing discussed here is integration testing rather than unit testing. Unit tests are concerned with logic or combination checks. Oracle users recommended the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;utPLSQL&lt;/span&gt; framework for Oracle. You can use the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ut&lt;/span&gt;_setup and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ut&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;teardown&lt;/span&gt; functions to take care of unit test data.&lt;br /&gt;&lt;br /&gt;Some readers commented that you could treat the database changes as one big transaction, then roll it back after testing is done. This would definitely not work for my system. We commit transactions all over the place. We even have autonomous transactions which commit themselves without interacting with any outer transactions. You can do better than getting your own schema for testing. You can get a whole database installation of your own to conduct unit tests in. Express versions of Oracle and Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt; Server are free.&lt;br /&gt;&lt;br /&gt;It appears that unit testing is hot in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;blogosphere&lt;/span&gt;. This seems strange to me. But I am happy about it. Nobody seems to like unit testing where I work. Most developers seem to want to code, check it in, and ship it. I know I myself could use a more rigorous unit test habit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8389448558314548441?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8389448558314548441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8389448558314548441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8389448558314548441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8389448558314548441'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/08/testing-database-code.html' title='Testing Database Code'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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/_X4SDk-K9iOc/SK3lvUeo0PI/AAAAAAAAAAU/zto0lZUaVv0/s72-c/DB.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-7057273766662336912</id><published>2008-07-25T22:59:00.001-04:00</published><updated>2008-07-25T23:00:57.983-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='improvements'/><category scheme='http://www.blogger.com/atom/ns#' term='programmatically'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='perfect'/><category scheme='http://www.blogger.com/atom/ns#' term='WindRunner'/><title type='text'>Scripting</title><content type='html'>&lt;a href="http://bp0.blogger.com/_X4SDk-K9iOc/SIqTRpx2ktI/AAAAAAAAAAM/4gaTX5zZTxE/s1600-h/Winrunner.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5227152248998892242" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_X4SDk-K9iOc/SIqTRpx2ktI/AAAAAAAAAAM/4gaTX5zZTxE/s320/Winrunner.jpg" border="0" /&gt;&lt;/a&gt;I read a stimulating blog post by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Michiel&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;de&lt;/span&gt; Mare entitled “Is Your Program Perfect”. The post was essentially a bunch of questions that made you consider whether there were any improvements you could make to a program to make it better. There was a section on testing that asked whether your program could be scripted from the command line. It also inquired whether your program exposes an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt;. I thought long and hard about these questions as I considered my projects own suite of applications. And I determined they were very weak in this area. The question now is how do we make changes to the programs to improve in these areas.&lt;br /&gt;&lt;br /&gt;In the past I had played with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;WinRunner&lt;/span&gt; by Mercury Interactive. This tool pretty much allowed you to automate testing of any Windows application. The tests could be scripted and create easily by recording and playing back user actions. However this required you to purchase the expensive &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WinRunner&lt;/span&gt; tool. Furthermore this tool is going to be retired in a few years. It would be more economical and beneficial for our applications to provide better test and scripting support itself.&lt;br /&gt;&lt;br /&gt;Currently one of our applications has an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;API&lt;/span&gt; that allows you to instantiate at least one of its screens &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;programmatically&lt;/span&gt;. However it is a very cumbersome &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;API&lt;/span&gt;. You have to create a data on the file system or in shared memory. It also requires clunky windows messages to initiate the actions. This support only exists in one of the five applications in our suite. And this support is for one very specialized part of the app. It would be great if a more comprehensive and simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;API&lt;/span&gt; could be produce to control the application for test purposes. I envision this to be of great use during the unit test phase.&lt;br /&gt;&lt;br /&gt;Obviously it will take a while to add the hooks to our applications. But we could start small and work our way up from there. Perhaps the best place to start would be to automate access to the new feature we are currently coding into the application. We should be very familiar with the design and implementation of the new code. And we already have time in the schedule to work on these pieces. During the unit test phase of these features we could add in the automated support and actually use it for unit testing.&lt;br /&gt;&lt;br /&gt;All of this introspection was due to a small piece of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Michiel&lt;/span&gt;’s blog post to question whether your software is at its best. Opening our apps up to automation may go a long way to simplifying our unit test strategy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7057273766662336912?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7057273766662336912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7057273766662336912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7057273766662336912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7057273766662336912'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/07/scripting.html' title='Scripting'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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://bp0.blogger.com/_X4SDk-K9iOc/SIqTRpx2ktI/AAAAAAAAAAM/4gaTX5zZTxE/s72-c/Winrunner.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7541565209413053886.post-711949631844857435</id><published>2008-07-18T17:34:00.000-04:00</published><updated>2008-07-18T17:35:48.641-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='acceptance test'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='impact'/><category scheme='http://www.blogger.com/atom/ns#' term='input'/><title type='text'>White Space</title><content type='html'>Our client has a system acceptance test team. Recently they approached me regarding a problem our load software had last year. They knew it had something to do with the input data containing spaces. And they were trying to determine the impact on the system, and whether they needed to do any additional testing of it this year. I gave this problem some thought and told the test team what I knew.&lt;br /&gt;&lt;br /&gt;There is a certain field in one of our input files that is 4 characters in length. We are required to read this field, trim off any white spaces, and store the result in the database. This had worked properly for a number of years. A developer rewrote the load routine using a new tool. They did not correctly follow the requirements and trim the white space from the field. As a result, post load processing could not match the loaded value up with other values that had trimmed. Additionally the application that queries the data could not form the match either.&lt;br /&gt;&lt;br /&gt;It took quite a bit to resolve this problem. We had to correct the loaded data for millions of records. Then we had to run the data back through post loads processing. Finally the original load software was corrected to deal properly with future files loaded. It was this last part that the test team wanted to verify. It was good that they are paying attention. Since we only load this particular file once a year, nobody other than the developer tested the fix to the loads code.&lt;br /&gt;&lt;br /&gt;The test team was happy to hear the information I provided them. They were immediately running off identifying test cases and planning to generate some input file data to check out our code. We have an internal test team at our company. For some reason I doubt they also have this type of insight and premonition to verify that development follows through on the fixes we produce. Its always easier to deal with problems during test before the software goes out into a production environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-711949631844857435?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/711949631844857435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=711949631844857435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/711949631844857435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/711949631844857435'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/07/white-space.html' title='White Space'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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-7541565209413053886.post-7017066080562824368</id><published>2008-07-08T06:55:00.000-04:00</published><updated>2008-07-08T06:56:34.326-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='problem'/><category scheme='http://www.blogger.com/atom/ns#' term='developers'/><category scheme='http://www.blogger.com/atom/ns#' term='user'/><category scheme='http://www.blogger.com/atom/ns#' term='test team'/><title type='text'>Access Levels</title><content type='html'>Our application suite supports a number of access levels. Each user is assigned one of five access levels. Each level has a uniquely defined behavior in the application. In general, the higher the level, the more you can do. But higher levels do not always have the ability to do everything a lower level user can do.&lt;br /&gt;&lt;br /&gt;There are a number of times when people believe the application is not behaving correctly. Frequently this is due to an ignorance of what each access level is allowed to do. Normally this happens with the newer developers or testers. It usually takes a senior developer to sort out the problem and trace it back to an access level issue.&lt;br /&gt;&lt;br /&gt;I have been working with a new tester recently. He is testing out the application that I am responsible for. He has found some weird problems in my application. There is a lot of interaction between us since I often need to know exactly how to reproduce a problem, or what specific data the tester is using to validate the application.&lt;br /&gt;&lt;br /&gt;The other day I asked the tester to reproduce the problem he had documented. He had to do a lot of work to reset the application access levels to the ones used when he encountered the problem. He told me that he was doing a lot of testing in the application at each of the access levels. This was recommended to him by a senior tester. This encouraged me. I have to admit that, while conducting my own unit tests, I did not test all the functionality at each of the access levels.&lt;br /&gt;&lt;br /&gt;This emphasizes the differences between developers and testers conducting verification. A developer may be quick to declare success once one test passes. Or sometimes a developer will assume that some tests will pass based on the results of one other test. A tester may also have this opinion. But they will actually perform the tests to verify the hypothesis. However a developer may be quick to skip steps that seem repetitive and boring.&lt;br /&gt;&lt;br /&gt;It is a good thing that we have an internal test team to keep development honest. Their absence would not be a total loss. Our customer has their own system acceptance test team. And since we are migrating to all new development tools this year, the users themselves have scheduled a functionality test of our upgraded application. I have the feeling that I am going to be researching a lot of trouble tickets this year. Since I like fixing bugs, this is a good thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-7017066080562824368?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/7017066080562824368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=7017066080562824368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7017066080562824368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/7017066080562824368'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/07/access-levels.html' title='Access Levels'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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-7541565209413053886.post-8545335655245282258</id><published>2008-03-22T19:52:00.002-04:00</published><updated>2008-03-22T19:59:19.816-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='small programs'/><category scheme='http://www.blogger.com/atom/ns#' term='V and V'/><category scheme='http://www.blogger.com/atom/ns#' term='testing rigor'/><title type='text'>Time to Market</title><content type='html'>I have a software development business on the side of my day job. Recently I have focused my business on writing small programs that would be of interest to hackers. The programs I develop are posted on my &lt;a href="http://black-of-hat.blogspot.com/"&gt;Black of Hat&lt;/a&gt; blog. Currently I am giving my programs away for free to try to increase readership of my new blog.&lt;br /&gt;&lt;br /&gt;The interesting thing about these programs is that I have not been subjecting them to rigorous testing. Often times the goal is to get some software posted out on my blog quickly. So I run a couple quick unit tests, fix the obvious bugs, and warn my readers that the software may be in an early state.&lt;br /&gt;&lt;br /&gt;My goal is to write many useful programs quickly. Of course I plan to improve and fix any bugs that pop up. But there is a definite lack of V&amp;amp;V being done. The question is whether formal test methods would be of any value in this fast paced environment. I don't get any direct penalty for releasing a program that crashes and burns. There may be some unhappy readers which turn away from my blog. However I am considering the faster time to market to be the prime objective.&lt;br /&gt;&lt;br /&gt;Perhaps I could take my next program developed by my side business, apply more thorough testing to it, and try to measure the outcome subjectively. I am not against going through a formal test cycle for these programs. The objective is to gain the most amount of readers so that I can monetize my blog. Any way I can do that more effectively is worthwhile. Besides I feel as if I may be developing bad habits in my side business software development. It would be easier if I use the same methods in both my day and night jobs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-8545335655245282258?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/8545335655245282258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=8545335655245282258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8545335655245282258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/8545335655245282258'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/03/time-to-market.html' title='Time to Market'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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-7541565209413053886.post-6459859584812087507</id><published>2008-03-08T21:23:00.002-05:00</published><updated>2008-03-08T21:29:31.707-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='writing code'/><category scheme='http://www.blogger.com/atom/ns#' term='reassignment'/><category scheme='http://www.blogger.com/atom/ns#' term='test plans'/><title type='text'>Test to Dev to Test</title><content type='html'>Over my career, I have met a number of software developers that have become testers. These testers often tell me that they got tired of working the long hours in development. They say that testing, while challenging, is less stressful and easier that writing code. And these are usually the testers that are creating scripts or writing code to test data.&lt;br /&gt;&lt;br /&gt;I have also met developers who said they got trapped in the test environment. First it starts out with the need to write a high profile master test plan. Then who better to oversee the test execution than the author. Pretty soon you get known as somebody proficient who can run tests, and then you are &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;pigeon&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;holed&lt;/span&gt; into being a tester.&lt;br /&gt;&lt;br /&gt;There is one other scenario which is not encouraging. Sometimes developers who just do not cut it as programmers get reassigned to the test team. It is almost as if this is a demotion. This seems strange as the top talent in the test world seem to make good money. Maybe it is just a psychological effect.&lt;br /&gt;&lt;br /&gt;The reverse path appears to be difficult if not impossible. I have not met many developers who said they started out as a tester. There was one guy I knew who was pretty good with code. He wrote a lot of scripts to generate test data. But he was still officially assigned to the test team. Maybe there are such developers, but they don't want to talk about their test background. Still it seems a very rare move. It looks like a one way street between development and testing roles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-6459859584812087507?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/6459859584812087507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=6459859584812087507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/6459859584812087507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/6459859584812087507'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/03/test-to-dev-to-test.html' title='Test to Dev to Test'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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-7541565209413053886.post-2011054978828606817</id><published>2008-03-05T18:31:00.002-05:00</published><updated>2008-03-05T18:36:33.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='internal test'/><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>Top Notch Testers</title><content type='html'>Recently we had some late new requirements that needed to get into the system. We rolled them out after our latest major release of the software. There was a hasty test cycle before shipping the software out the door. And guess what? There are a lot of problems with the code in the Production environment.&lt;br /&gt;&lt;br /&gt;The good news is now that we are fixing the problem, our internal test team is better equipped and has more time to verify our changes. A recent set of changes has failed internal test a couple times. Seems I have made a number of invalid assumptions about the data in the system.&lt;br /&gt;&lt;br /&gt;A lot of the good testing comes from the fact that the tester assigned to my code is actually an old developer. He used to sit next to me in my cubicle on a past project. Somehow he got moved to the test organization. And now he is taking test to a whole new level.&lt;br /&gt;&lt;br /&gt;This reminds me of another tester from a couple years ago. Let's call her "SJ". She astounded me and my team when she first started verifying out fixes. SJ has a deep technical understanding about the changes we were making. Sometimes she even dug down and showed me where I had made mistakes in the code. When I asked SJ how she was able to figure this out, she said that she too was a developer in a past life. She wanted something different and was doing testing now.&lt;br /&gt;&lt;br /&gt;Not all testers have to be developers at heart. But I have found that it certainly helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-2011054978828606817?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/2011054978828606817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=2011054978828606817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2011054978828606817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/2011054978828606817'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/03/top-notch-testers.html' title='Top Notch Testers'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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-7541565209413053886.post-3741207545063475144</id><published>2008-01-19T01:10:00.000-05:00</published><updated>2008-01-19T01:17:40.313-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unit tests'/><category scheme='http://www.blogger.com/atom/ns#' term='quality assurance'/><category scheme='http://www.blogger.com/atom/ns#' term='domain experts'/><title type='text'>Dev Test</title><content type='html'>I am a software developer by trade. Most projects I have worked on were mainly software maintenance. However I have worked on quite a few new development projects. It seems that I often write more code to do unit tests that I do to implement the software. This is normally for code that is mission critical, where errors can be very costly for everyone involved.&lt;br /&gt;&lt;br /&gt;So I have started this blog to research the verification and validation field. Specifically I want to focus on the testing of computer software. Sometimes normal developers consider test professionals to be a step or two below a coder. However I have worked on projects where the quality assurance team were the domain experts and knew what the users wanted the software to do. I am sure those that test at big commercial companies like Microsoft are no slouches.&lt;br /&gt;&lt;br /&gt;On a related note, I recently went to an interview for a software position. Got interviewed by a number of people on the project. The most intense interview was with the lead of the test team. This guy was a former developer and the one that had been on the project the longest. I aced a couple of tough testing questions from him. But I got some others that I had trouble working my way through. Perhaps those questions will serve as a starting point for the discussions here:&lt;br /&gt;&lt;br /&gt;1. What is a load test?&lt;br /&gt;2. What is a stress test?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7541565209413053886-3741207545063475144?l=verifcation-and-validation.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://verifcation-and-validation.blogspot.com/feeds/3741207545063475144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7541565209413053886&amp;postID=3741207545063475144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3741207545063475144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7541565209413053886/posts/default/3741207545063475144'/><link rel='alternate' type='text/html' href='http://verifcation-and-validation.blogspot.com/2008/01/dev-test.html' title='Dev Test'/><author><name>Software Tester</name><uri>http://www.blogger.com/profile/11874638229898968118</uri><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></feed>
