<?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-4499103662049903393</id><updated>2011-11-23T16:52:19.226-08:00</updated><title type='text'>Kuldeep - founder of KR Testing Solutions</title><subtitle type='html'>Quality is effected by your work process.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4499103662049903393.post-5919590800496337712</id><published>2010-07-16T11:17:00.001-07:00</published><updated>2011-11-04T11:23:23.692-07:00</updated><title type='text'>About Me</title><content type='html'>&lt;span style="color: white;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Professional History and Credentials&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;I have been involved in Software Testing as Software Test Engineer from past few years, and have tested a number of software applications on a variety of platforms. I have also been involved in some form of automated testing or another during this period.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;At &lt;b&gt;SGS Infotech&lt;/b&gt;, I was involved in testing &lt;b&gt;Geographical Information System (GIS)&lt;/b&gt; applications written in ASP. Here I tested the &lt;b&gt;“PROGis”, &lt;/b&gt;which was allow to view the acquired Land record of "Taj Expressway, Noida" using the different-2 maps (using Archview). I was also involved in testing the &lt;b&gt;Enterprise Resource Planning (ERP)&lt;/b&gt; application written in Java. I tested the &lt;b&gt;“JOfficeDesk”, &lt;/b&gt;which allowed to automate the complete SGS Infotech.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;During my employment at&lt;b&gt; Orion India&lt;/b&gt; I successfully implemented &lt;b&gt;Testing Team&lt;/b&gt;. I was in charge of testing Complete &lt;b&gt;Garment ERP AMTPlus&lt;/b&gt;. I tested the Complete ERP System there. You can get the summary on &lt;b&gt;www.obsllc.com &lt;/b&gt;. I have played a good role of Team Lead there. Now lot of Garment players are using this system in &lt;b&gt;US like SLFashion, Apollo Garments&amp;nbsp;&lt;/b&gt;etc.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;During my employment at &lt;b&gt;WNS IT Services &lt;/b&gt;I successfully Tested Mortgage Banking application &lt;b&gt;Risk Management DB (RMD)&lt;/b&gt;of &lt;b&gt;First Magnus Finance Corporation, USA&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;Current I am working with &lt;b&gt;MNC&lt;/b&gt; as a Testing Architect.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: white;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;KR TESTING SOLUTIONS&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;KR Testing Solutions &lt;/b&gt;is an independent quality assurance and testing Organisation. Founded in 2006. We provide comprehensive software testing services and solutions for all testing needs. Our goal is to provide the better quality product to our clients.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;KR Testing Solutions&lt;/b&gt; delivers effective, customized solutions for clients in a wide array of industries and technologies, and at significant cost savings. We have the expertise to perform functional testing of applications, performance, load and stress testing of web sites, and automation of regression tests. In addition, we will check sites for browser compatibility and accessibility compliance.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;I hope that you will give me a chance for providing a better solutions of your problems.&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://kuldeepse.wordpress.com/"&gt;&lt;span style="color: white;"&gt;&lt;b&gt;Go to KR Testing Solutions&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="left" nowrap="nowrap"&gt;&lt;br /&gt;&lt;form action="http://kuldeepse.blogspot.com/p/google-it.html" id="cse-search-box"&gt;&lt;div&gt;&lt;input name="cx" type="hidden" value="partner-pub-5550323354273273:dm5xc0cbrju" /&gt;&lt;br /&gt;&lt;input name="cof" type="hidden" value="FORID:10" /&gt;&lt;br /&gt;&lt;input name="ie" type="hidden" value="ISO-8859-1" /&gt;&lt;br /&gt;&lt;input name="q" size="50" /&gt;&lt;br /&gt;&lt;input name="sa" type="submit" value="Search on this site" /&gt;&lt;/div&gt;&lt;/form&gt;&lt;script src="http://www.google.com/cse/brand?form=cse-search-box&amp;amp;lang=en" type="text/javascript"&gt;&lt;/script&gt;&lt;/td&gt;&lt;td align="left" nowrap="nowrap"&gt;&lt;br /&gt;&lt;form action="http://kuldeepse.blogspot.com/p/google-it.html" id="cse-search-box"&gt;&lt;div&gt;&lt;input name="cx" type="hidden" value="partner-pub-5550323354273273:7dxtth8agc4" /&gt;&lt;br /&gt;&lt;input name="cof" type="hidden" value="FORID:10" /&gt;&lt;br /&gt;&lt;input name="ie" type="hidden" value="ISO-8859-1" /&gt;&lt;br /&gt;&lt;input name="q" size="50" /&gt;&lt;br /&gt;&lt;input name="sa" type="submit" value="Web Search" /&gt;&lt;/div&gt;&lt;/form&gt;&lt;script src="http://www.google.com/cse/brand?form=cse-search-box&amp;amp;lang=en" type="text/javascript"&gt;&lt;/script&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="900" scrolling="No" src="http://astore.amazon.com/kuldeepsefound-20" width="100%"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-5919590800496337712?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/5919590800496337712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=5919590800496337712' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5919590800496337712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5919590800496337712'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2007/12/kr-testing-solutions.html' title='About Me'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4499103662049903393.post-4163584764523301419</id><published>2010-07-16T11:17:00.000-07:00</published><updated>2010-07-16T12:44:52.517-07:00</updated><title type='text'>Tutorial 1 - What is QTP?</title><content type='html'>This tutorial introduces Quick Test Professional , features of QTP as Functional Automation Tool &amp; the concept of ADD-ins&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtniAC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Quick Test Professional , popularly know by its acronym QTP is the flagship functional automation testing tool from Mercury Interactive now acquired by HP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is an icon based tool, which automates the functional &amp; regression testing of an application&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP is easier to use and implement for both technical &amp; non technical testers in comparison to other functional testing tools available.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Quick Test  is the market leader in Functional Automation Tool with over 50% market share&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP's Scripting Language is VB Script which is easy to use , understand and program&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Quick Test Professional  enables Business Process Testing (BPT)&lt;br /&gt;Supports large pool of  software development environments like SAP , Web , Oracle etc.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The trainings have been recorded using QTP version 9.5 but you may use any higher or lower versions for your learning purposes&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For All  Hands On in these trainings, we will be using “Flight Reservation” Application which comes bundled with QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-4163584764523301419?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/4163584764523301419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=4163584764523301419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4163584764523301419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4163584764523301419'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/qtp-video-tutorial.html' title='Tutorial 1 - What is QTP?'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-1958967154251672782</id><published>2010-07-16T11:16:00.001-07:00</published><updated>2010-07-16T12:43:11.972-07:00</updated><title type='text'>Tutorial 2 - First Look Flight Reservation Application</title><content type='html'>This tutorial introduces Flight Reservation Application which will be used for hands-on for the rest of the tutorials.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnyEC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="alwajavascript:void(0)ys" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Notes:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Flight Reservation Application comes pre-installed with QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using Flight Reservation , you can book a flight between two cities,  even modify or delete and exisiting booking.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You may also fax a booking to a customer with your custom signature.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Flight Reservation has a  Reports and Graphs section which helps analyze the  ticket selling trends.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A small number of bookings is pre-populated for any new agent , so that you do not have to create test data.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The application has been designed to help learn all the features provided by QTP. At times , you may find this application buggy but your focus should not be technical accuracy of the application, but on its use as a  tool, to learn various features of QTP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1958967154251672782?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1958967154251672782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1958967154251672782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1958967154251672782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1958967154251672782'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-2-first-look-flight.html' title='Tutorial 2 - First Look Flight Reservation Application'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-296494933636082119</id><published>2010-07-16T11:16:00.000-07:00</published><updated>2010-07-16T12:41:07.386-07:00</updated><title type='text'>Tutorial 3 - First Look QTP IDE</title><content type='html'>This tutorial introduces the Quick Test Professional IDE&lt;br /&gt;&lt;br /&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="400" src="http://blip.tv/play/AYGtolsC" type="application/x-shockwave-flash" width="480"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Without further ado , Lets look into QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To launch QTP, In Start Menu, Choose Programs &gt; Quick Test Professional Folder  &gt; Quick Test Professional&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The first time you start QTP, the Add-in Manager dialog box opens.It Displays list of all installed add-in along with license expiry date.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is recommended you select only the add-ins required for your particular testing session . Because at times , different add-in interfere with each other degrading object identification and QTP's performance. QTP  will remember the add-ins you load so that the next time you open QTP  the add-ins you selected in the previous session are selected by default.Also, If you do not want this dialog box to open the next time you start QTP clear the Show on startup check box.Click OK.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Start Page describes the new features in this release—including links to more information about these features.It also provides links to Process Guidance, a tool that offers best practices for working with QTP.You can open a document from the list of Recently Used Files,or you can click the buttons in the Welcome! area to open new or existing documents.If you do not want QTP to display the Start Page when you next open QTP ,select the "Don’t show the Start Page window on startup" check box.When you select this option, the Start Page is also automatically hidden for the current QTP session as soon as you open another QTP document.To display the Start Page again, select View &gt; Start.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Title Bar Displays the name of the active document. If changes have been made since it was last saved, an asterisk (*) is displayed next to the document name in the title bar.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Menu Bar Displays menus of QTP commands.&lt;br /&gt;Toolbars Contains buttons to assist you in managing your document&lt;br /&gt;Document Tabs Enables you to navigate open documents&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Keyword View Displays test steps in a graphical representation&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Expert View Displays test steps as a VB Script line.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Active Screen Provides a snapshot of your application as it appeared when you performed a certain step during the recording session.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Data Table Assists you to parametrize your test.&lt;br /&gt;Test Flow Displays the hierarchy of actions and action calls in the current test, and shows the order in which they are run.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Below are Tabs For Other Panes.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can change the look and feel of the main QTP window, as required&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In the QTP window, select View &gt; Window Theme, and then select the way the window should appear from the list of available themes.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can move the QTP window panes to suit your own personal preferences.Say we want to Move the Test Flow Pane .In the QTP window, drag the title bar of the Test Flow Pane.As you drag the pane, markers are displayed in the active pane and on each edge of the QTP window.Drag the Test Flow and hold the cursor over the various markers.A shaded area is displayed, indicating the new location of the pane.Lets move it to Right. Release the mouse button.The Test Flow Pane snaps into place and is displayed as a new pane in the shaded area.&lt;br /&gt;That’s all to the QTP IDE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-296494933636082119?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/296494933636082119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=296494933636082119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/296494933636082119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/296494933636082119'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-3-first-look-qtp-ide.html' title='Tutorial 3 - First Look QTP IDE'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7963733135217461537</id><published>2010-07-16T11:15:00.001-07:00</published><updated>2010-07-16T12:40:35.392-07:00</updated><title type='text'>Tutorial 4 - HP Quick Test Professional</title><content type='html'>This tutorial identifies the TEST STEPS that need to be automated for your First Test Script using QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnyIC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now, Lets Record Our First Script.For Our Application Under Test i.e. Flight Reservation - lets validate a simple test scenario out of possible many&lt;br /&gt;The Scenario Would Be"Check that user successfully logs in to the application on inputting valid Agent Name &amp; Password"&lt;br /&gt;Test Steps required to validate this scenario would be &lt;br /&gt;Step 1) Open Flight Reservation Application &lt;br /&gt;Step 2) Enter Valid Agent Name &lt;br /&gt;Step 3) Enter Valid Password &lt;br /&gt;Step 4) Press Ok &lt;br /&gt;Step 5) Close Application After Successful Login. &lt;br /&gt;Lets automate these 5 steps in QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7963733135217461537?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7963733135217461537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7963733135217461537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7963733135217461537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7963733135217461537'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-4-hp-quick-test-professional.html' title='Tutorial 4 - HP Quick Test Professional'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7046227901304972588</id><published>2010-07-16T11:15:00.000-07:00</published><updated>2010-07-16T12:38:14.827-07:00</updated><title type='text'>Tutorial 5 - Record and Run Settings QTP</title><content type='html'>This tutorial introduces the Record &amp; Run settings &amp;  It demonstrates , how to record a script in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnywC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP click the record button.The Record and Run settings Dialog Box Opens.This box opens automatically each time you  begin recording a new test. &lt;br /&gt;Record &amp; Run settings shows a tabs corresponding to add-ins installed and loaded for your test.So, for example if you have SAP Add-in Installed and loaded you will see a SAP tab.&lt;br /&gt;The Windows Application tab is always available and be used for  environments, such as  Visual Basic, ActiveX, and terminal emulators.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For any Environment, the Record and Run settings can be classified into two generic groups&lt;br /&gt;1) Record &amp; Run on ANY window belonging to that particular environment&lt;br /&gt;2) Record &amp; Run on a SPECIFIC window belonging to that particular environment - which is the recommended Option&lt;br /&gt;For the time being , lets stick to default settings .Once settings are done , QTP remembers and uses the same settings for additional record sessions on the same test, unless you manually open the Record and Run Settings dialog box to modify the settings.&lt;br /&gt;Click okay&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP Starts Recoding Mode&lt;br /&gt;Step # 1 is to Open Flight Reservation Application&lt;br /&gt;Click Start Menu &gt; Program Files &gt; Quick Test Professional &gt; Sample Applications &gt; Flight Reservation &lt;br /&gt;Step # 2 Enter a Valid Agent Name greater than 4 characters say Guru&lt;br /&gt;Step # 3 Enter a Valid Password which is by default MERCURY&lt;br /&gt;Step # 4 Click Okay&lt;br /&gt;Step # 5 Check that the Flight Reservation opens successfully which it is  . Click the close button.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; All the 5 steps are now recorded&lt;br /&gt;In QTP , Stop recording&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Save the script as "LogIn"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7046227901304972588?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7046227901304972588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7046227901304972588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7046227901304972588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7046227901304972588'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-5-record-and-run-settings-qtp.html' title='Tutorial 5 - Record and Run Settings QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-8006954264662842208</id><published>2010-07-16T11:14:00.002-07:00</published><updated>2010-07-16T12:30:51.893-07:00</updated><title type='text'>Tutorial 6 - All about Object Identification</title><content type='html'>This tutorial demonstrates how QTP identifies an on - screen GUI Object and the concept of QTP's Test Object Model&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnzQC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP also uses a  "human" like technology for object identification&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During Record Time QTP tries to learn properties of a GUI object on which operation is performed.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During Run-Time QTP compares the stored object properties with actual properties of object available on screen and uniquely identifies an object independent of its location on screen&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The stored object and together with its properties is called TEST Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During Run-Time, the actual object available on the application under test is called Run-Time Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This is Quick Tests "Test Object Model"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Information about the Test Objects is stored in Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Add-ins help in  instructing Quick Test&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-8006954264662842208?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/8006954264662842208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=8006954264662842208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8006954264662842208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8006954264662842208'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-6-all-about-object.html' title='Tutorial 6 - All about Object Identification'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-8803924411634511496</id><published>2010-07-16T11:14:00.001-07:00</published><updated>2010-07-16T12:29:25.824-07:00</updated><title type='text'>Tutorial 7 - Expert View in QTP</title><content type='html'>This tutorial interprets the Expert View and gives its Syntax&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtoXEC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In the Expert View , each line represents a Test Step in VB Script&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To understand expert view better , lets analyze Step # 2 from our TEST recorded earlier&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; An Object's Name is displayed in parentheses following the Object Type.Here the  Object Name is Login and &lt;b&gt;*&lt;/b&gt; Object Type is Dialog&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Objects in Object Hierarchy are separated by a "dot".Here Dialog and WinEdit are fall in the same Object Hierarchy&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Just to put things in perspective, Object Hierarchy is  Object Oriented Concept where set of objects that are grouped together in a parent-child relationship.In our case Dialog Box is the Parent Object and WinEdit is the Child Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Operation performed on the object is always displayed at the end of the statement followed by any values associated with the operation.Here the word "Guru" is inserted in the AgentName Edit Box using the Set Method&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Syntax for a statement in expert view is GUI object on which the operation is performed along with its complete hierarchy followed by the Operation on the Object and value associated with that Operation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-8803924411634511496?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/8803924411634511496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=8803924411634511496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8803924411634511496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8803924411634511496'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-7-expert-view-in-qtp.html' title='Tutorial 7 - Expert View in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2626833117012696134</id><published>2010-07-16T11:14:00.000-07:00</published><updated>2010-07-16T12:27:27.422-07:00</updated><title type='text'>Tutorial 8 - Compare Keyword view and Export view in QTP</title><content type='html'>This tutorial interprets the Keyword View and compares the Expert &amp; Keyword View&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtoXMC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Keyword View is comprised of a table-like view where&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Each step is a separate row in the table and&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Each column represents different parts of the steps.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Item Column contains the item on which you want to perform the step. This column uses icons displays the hierarchy of the GUI object on which operation is performed&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Operation Column contains the operation to be performed on the item.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Value Column contains the argument values for the selected operation,&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP automatically documents each step for easy understanding in the Documentation Column&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; These 4 columns are default but you can also use assignment &amp; comment columns in Keyword View&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; That’s all to the Keyword View&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets Compare the Keyword and Expert View using Step no 2 from our script. You will observe that the same object hierarchy is displayed in both Expert &amp; Keyword Views and they map to the same operation and argument value.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Essentially , Keyword &amp; Expert view contain the same data but arranged in different format.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In fact you can perform all operations like create , modifying  a step .  using the Keyword View but to gain mastery over the tool we will restrict ourselves to the Expert View&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2626833117012696134?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2626833117012696134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2626833117012696134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2626833117012696134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2626833117012696134'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-8-compare-keyword-view-and.html' title='Tutorial 8 - Compare Keyword view and Export view in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-269373003038274643</id><published>2010-07-16T11:13:00.001-07:00</published><updated>2010-07-16T12:25:55.133-07:00</updated><title type='text'>Tutorial 9 - QTP</title><content type='html'>This tutorial interprets the script that was recorded in earlier tutorials&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtoX4C" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now , Lets go ahead and understand our recorded test.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The first step is the SystemUtil.Run Command which is used by default by QTP to open a application.So during recording , using the Windows Start Menu , when we finally navigated to the "Flight Reservation"  application QTP identified the location of its executable file and inserted the System.Util Command to Open it.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step No 2 is Setting Agent Name as Guru as shown in the Active Screen&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step no 3 is Pressing the Tab key on keyboard to bring Focus from Agent Name Field To Password Field  , which is exactly this step. Human users need to use tab or click operations to focus on a particular object on screen.. On the other hand , QTP can directly identify an object using object properties and does not required these "maneuvering" operations. We can delete this step , as QTP will still be able to set the password field without this operation&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next Step is Setting the Password as Mercury. QTP automatically encrypts passwords entered while recording to avoid security breaches. This value can not be decrypted ie. There is no way to recover the original value  using this cryptic data. You can explicitly encrypt a password using the Password Encoder Tool. For our learning purposes , we will use the password in its raw form. And the operation will also change to Set&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next Step is clicking the okay button&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next Step is closing the application after successful log on&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; So the 5 steps mentioned in our test script are recorded in QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-269373003038274643?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/269373003038274643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=269373003038274643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/269373003038274643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/269373003038274643'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-9-qtp.html' title='Tutorial 9 - QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-8097253661637382033</id><published>2010-07-16T11:13:00.000-07:00</published><updated>2010-07-16T12:24:34.720-07:00</updated><title type='text'>Tutorial 10 - What is Replay in QTP?</title><content type='html'>This tutorial introduces the concept of REPLAY . It demonstrates the Run Settings available in Quick Test&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtojgC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now , lets go ahead and REPLAY the script to ensure the test steps have recorded correctly.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Click the Run Button.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Run Dialog Box Opens which enables you to specify the location in which you want to save the run session results.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This option displays the default path  and folder name in which results are stored. By default results are stored in Test Folder .A new sub-folder is created with the name RESn .The number n is incremented for each run.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You may accept the default settings or specify a folder of your choice&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Temporary run results folder options saves the run results in a temporary folder. This option overwrites any results previously saved in this folder.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Its recommended that while developing your test script choose the Temporary option and once the script is baseline you can use the new folder option&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In our case we will use the temporary option and click okay. QTP enters the run mode&lt;br /&gt;and will start executing steps one by one.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP window you can see a yellow marker pointing at the step which is currently being executed.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During Replay the script performed exactly the same 5 steps that were recorded  which signifies that there were no errors in recording.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Test Results are also shown&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-8097253661637382033?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/8097253661637382033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=8097253661637382033' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8097253661637382033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8097253661637382033'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-10-what-is-replay-in-qtp.html' title='Tutorial 10 - What is Replay in QTP?'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-9127309029204722267</id><published>2010-07-16T11:12:00.003-07:00</published><updated>2010-07-16T12:23:25.771-07:00</updated><title type='text'>Tutorial 11 - Test Results in QTP</title><content type='html'>This tutorial demonstrates the various features available in the Test Results generated by QTP &lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnicC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets understand the Test Results generated by QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Right Hand Side shows Test Results Summary&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Left Hand Side is Test Results Tree - an icon-based view of the test steps that were performed while the test was running. Similar to the test tree in Keyword View&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If you select a step in the tree , the right panel gives it complete details&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This Apart&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can capture Movie / Screenshots of entire Test Run using Tools &gt; Options &gt; Run Tab&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In our case this movie was recorded and , screen shots were captured&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can print/export  full/part of results in HTML , Word or PDF format.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can exports the results to Quality Center&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can change the format of Results by using  Results.xml and creating a XSL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-9127309029204722267?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/9127309029204722267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=9127309029204722267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/9127309029204722267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/9127309029204722267'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-11-test-results-in-qtp.html' title='Tutorial 11 - Test Results in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2177315637929991227</id><published>2010-07-16T11:12:00.002-07:00</published><updated>2010-07-16T12:22:33.909-07:00</updated><title type='text'>Tutorial 12 - All about parameters in QTP</title><content type='html'>This tutorial demonstrates parameterization&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnj0C" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You may be wondering why take the Herculean effort to automate this simple scenario&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Check that user successfully logs in to the application on inputting valid Agent Name &amp; Password&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The need becomes obvious if we extend the scope of the scenario to include a Combination of valid ALPHANUMERIC  Agent Name &amp; Password&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In this case , the Test Steps Will Remain the Same. But we will have more combinations of  Data To TEST. We will restrict to just 3 of possible 8 combinations&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To achieve this  you can either copy the six steps and give different data values which is in fact &lt;b&gt;*&lt;/b&gt; something you would do manually. Or you can use Parameterization&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The easiest way to  parameterize an argument , in our case Guru is in Keyword view , Click the Parameterization Icon&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Value Configuration Dialog Box Opens. Currently the value is set to a Constant. Click on Parameter Radio Button. QTP assigns a default name to these parameter. You can give a name of your choice. Click Okay&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In the Global Sheet , a column with Header "Agent Name" and value Guru is created. You can enter more values for this parameter&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Likewise you can also parameterize the argument Password and enter different test data sets.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; What this Data sheet means is QTP will iterate the same 6 steps that we have recorded 3 times. During &lt;b&gt;*&lt;/b&gt; first iteration it will use the data in the first row. During second it will use data in the second row and so on&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now lets run the script. This is the first iteration. This is the second iteration&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In the status bar QTP gives information of the row, it is currently using as test data and highlights the &lt;b&gt;*&lt;/b&gt; corresponding row in the data sheet. The results will show summary of the 3 iterations.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A brief recap of parameterization&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Parameterization allows us to pick different values at run time.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It Reduces Time and Effort.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Usage of Data Drivers allow us to use the same data for various input boxes. Data Drivers is feature provided by QTP which shows all the constants that could be parameterized in one single window&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2177315637929991227?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2177315637929991227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2177315637929991227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2177315637929991227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2177315637929991227'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-12-all-about-parameters-in-qtp.html' title='Tutorial 12 - All about parameters in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7037657074102203943</id><published>2010-07-16T11:12:00.001-07:00</published><updated>2010-07-16T12:21:29.963-07:00</updated><title type='text'>Tutorial 13 - What are the standard checkpoints in QTP?</title><content type='html'>This tutorial introduces Checkpoints&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnlIC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You may have notice that results generated for our test script has no Pass/ Fail Status without which our automation is incomplete&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The expected TEST RESULT for our scenario should be - Flight Reservation Window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; which is this screen should appear after entering valid username and password. To accomplish this we will need to record an additional step # 6 which is Check Flight Reservation Window is Displayed..&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Automation of this verification step can be achieved using Checkpoints- A checkpoint is a verification point that compares the current value with the expected value for specified properties of an Object. If they current and expected value match it generates a PASS status otherwise FAIL status&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets go ahead and record step # 6&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To add a checkpoint , right click on the step #  5 after which checkpoint needs to be inserted .Choose Insert Standard Checkpoint. Checkpoint Properties Dialog Box Opens.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP assigns a default name to checkpoint. You can input your preferred name&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The table shows all the recorded properties and their corresponding values for the object. The Selection mark indicates that these properties will be checked&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; ABC icon indicated that the property values are a constant. If you parameterize any of the selected properties the icon changes correspondingly&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets stick to the default and insert the statement after the current step. Click okay&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A check statement with checkpoint name is inserted at line # 6.Lets replay the script&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The script gives a Run-Time Error&lt;br /&gt;Well this is a common source of error for beginners and happens because at step # 5 , QTP closes the Flight &lt;b&gt;*&lt;/b&gt; Reservation Screen and when the execution reaches step # 6 there is no Flight Reservation Screen  Object available to very its properties. You need to ensure , that the object which are verifying is available while QTP executes the Checkpoint Step&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This error can be rectified by changing the sequence of Tests Steps. You need to switch&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step 5  &amp; step 6 . In the new scenario step 5 is verify the Flight Reservation Window Exists and step 6 is to Close the application&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP , you just need to cut step # 6 and paste it at location of step # 5.Lets replay the script again. &lt;b&gt;*&lt;/b&gt; The Script passes and the results tree gives the checkpoint values that were compared. That's all to standard checkpoints&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A recap of checkpoints-&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There are many types of checkpoints and the most generic is the standard checkpoint.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Standard checkpoints compare the expected values of object properties captured during recording to the object's current values during a run session&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7037657074102203943?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7037657074102203943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7037657074102203943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7037657074102203943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7037657074102203943'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-13-what-are-standard.html' title='Tutorial 13 - What are the standard checkpoints in QTP?'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-4301289304627773459</id><published>2010-07-16T11:12:00.000-07:00</published><updated>2010-07-16T12:19:02.948-07:00</updated><title type='text'>Tutorial 14 - Types of checkpoints in QTP</title><content type='html'>This tutorial demonstrates different types of Checkpoints in Quick Test Professional&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnmwC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A Checkpoint is a confirmation or verification point in which the value of some property which is expected at a particular step is compared with the actual value which is displayed in the application. Based on the expected values Checkpoints are classified as follows&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Page Checkpoint : A Standard Checkpoint created for a web page can be called a Page Checkpoint.  It is used to check total number of links &amp; images on a web page. Page Checkpoints can be used to check Load Time i.e. time taken to load a web page.&lt;br /&gt;Bitmap Checkpoint helps a user in checking the bitmap of an image or a full web page. It does a pixel by pixel comparison between actual and expected images.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Image Checkpoint enable you to check properties like source file location of a web image. Unlike , Bitmap Checkpoint  you can not check pixels(bitmaps) using image checkpoint.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Text Checkpoint is Used to check expected text in a web-page or application. This text could be from a specific region of the application or a small portion of text displayed&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Accessibility Checkpoints verifies compliance with World Wide Web Consortium (W3C)  instructions and guidelines for &lt;b&gt;*&lt;/b&gt; Web-based technology and information systems. These Guidelines make it easy for disabled to access the web.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Database Checkpoints create  a query  during record time and database values are stored as expected values. Same query is executed during run time and actual &amp; expected values are compared.&lt;br /&gt;In Table Checkpoint , you dynamically can check the contents of cells of a table (grid) appearing in your &lt;b&gt;*&lt;/b&gt; environment. You can also check various table properties like row height , cell width and so on. Table Checkpoint is similar to Database Checkpoint&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using XML Checkpoints you can verify XML Data ,XML Schema,   XML Data&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-4301289304627773459?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/4301289304627773459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=4301289304627773459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4301289304627773459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4301289304627773459'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-14-types-of-checkpoints-in-qtp.html' title='Tutorial 14 - Types of checkpoints in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-1410440820368950899</id><published>2010-07-16T11:11:00.001-07:00</published><updated>2010-07-16T12:16:31.224-07:00</updated><title type='text'>Tutorial 15 - How to insert output values in QTP?</title><content type='html'>This tutorial demonstrates the concept of Output values in Quick Test Professional&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnwwC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;An output value step ,is a step in which a object property value is  captured at a specific point in your test and stored at a desired location. The stored values can be used as input at a different points in test script. Multiple properties of an object can be selected and outputted.&lt;br /&gt; &lt;br /&gt;Types of Output Values&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Standard output value&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Text /Text Area output value&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Data base output value&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Xml output value (from application/resources)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1410440820368950899?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1410440820368950899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1410440820368950899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1410440820368950899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1410440820368950899'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-15-how-to-insert-output-values.html' title='Tutorial 15 - How to insert output values in QTP?'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-3944283074206232113</id><published>2010-07-16T11:11:00.000-07:00</published><updated>2010-07-16T12:14:43.276-07:00</updated><title type='text'>Tutorial 16 - Conditional Loops in QTP</title><content type='html'>This tutorial demonstrates advanced coding in QTP using if and else loop&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYGtnxEC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; From your testing background you will certainly infer that a more accurate Test scenario would be  &lt;b&gt;*&lt;/b&gt; Validate the Login Functionality of Flight Reservation which should have two sub scenarios&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Check that user successfully logs in to the application on inputting a COMBINATION OF valid ALPHANUMERIC  Agent Name &amp; Password&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Check that user log on fails on inputting INVALID Agent Name &amp; Password&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; More so , a robut automation script should be able to accept and handle both valid and invalid login details&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; We have the sub-scenarios already recorded  So the challenge is to integrate them.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You May observe for both the scripts - STEPS ,Launch Flight Reservation Application, Enter Agent Name ,Enter Password ,Click OK ,while steps Checkpoint ,,Close Flight Reservation Window, for positive scenario, and steps ,Output Error Information ,Close Error Info Window ,Close Login Dialog Box, for negative scenario are different&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There are many ways to integrate them and once of the ways ,is to use if and else loop and check whether error information screen exists after entering the agent name and password. if yes do the steps for negative scenario, if no do the steps for positive scenario&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP Window, After step # 4,Add a step if else loop, The check condition  is whether error information screen exists. Copy this step and paste it as check condition.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Delete the Click Operation. And replace it with Exists method. This method is applicable to almost all objects and checks whether the particular objects exists on screen or not&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If result is true do the negative scenario steps. I will cut and paste the steps inside the loop&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Copy the steps from the positive scenario and paste it in the else loop. Lets run the test for one valid and one invalid login credentials. The test Runs successfully .Note is you saved the tests in the order mentioned in the tutorials&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; PositiveLogon to NegativeLogon and Negative Logon to Combined you should have no problem running the test.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Apart from if and else you can also use -  if elseif., while wend.,do case ,for Loops. as per your requirements&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-3944283074206232113?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/3944283074206232113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=3944283074206232113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3944283074206232113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3944283074206232113'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-16-conditional-loops-in-qtp.html' title='Tutorial 16 - Conditional Loops in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7975949522283352652</id><published>2010-07-16T11:10:00.002-07:00</published><updated>2010-07-16T12:12:47.427-07:00</updated><title type='text'>Tutorial 17 - How to user Report.Report Event in QTP</title><content type='html'>This tutorial demonstrates the use of function Reporter.Report Event and Results Formatting.The tutorial will ask you to develop a script. To maximise your learning , please do  complete the scripting exercise.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hh4C" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember about QTPs Test Results Formatting&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use Reporter.ReportEvent to report custom test steps in QTP's test results tree&lt;br /&gt;Syntax -Reporter.ReportEvent EventStatus, ReportStepName, Details [, ImageFilePath]&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Event Status can have values&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 0 or micPass  sends a pass status to test result window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1 or micFail sends a pass status to test result window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2 or micDone sends a message to test result window without affecting the Pass/Fail status&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 3 or micWarning sends a warning message to the result window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When test cases are executed using automation tools it may be difficult for certain users to understand the test results  You can use  results.xml to create an xsl which will present the test results as per your preferences&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use VBScript Library functions to store the results in xls or a text file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7975949522283352652?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7975949522283352652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7975949522283352652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7975949522283352652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7975949522283352652'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-17-how-to-user-reportreport.html' title='Tutorial 17 - How to user Report.Report Event in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-1768964258918308593</id><published>2010-07-16T11:10:00.001-07:00</published><updated>2010-07-16T12:08:25.633-07:00</updated><title type='text'>Tutorial 18 - Complete Guide on Actions in QTP</title><content type='html'>This tutorial demonstrates Actions. It uses the vanilla Test Script created in previous tutorials with 5 steps to log in into Flight Reservation.This tutorial is the longest in all QTP tutorials and its recommended you take notes while viewing it.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYHSpGEC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;key takeaways:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Actions help divide your test into logical units or Business Processes&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Actions help create a script which is more modular and efficient.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When a script is newly created it consists of only one action .A script can consist of one or more Actions .&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There two types of Actions 1)Reusable Actions &amp; 2) Non-Reusable Actions&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Reusable Action can be used in other Tests. They can be used in the same Test Script multiple times.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Non reusable Action can not be used in other Tests. They can be called in the same script only once&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can split an existing action in two ways  1) Independent of each other which  splits the selected action into two sibling actions 2)  Nested Action which splits the selected action into a parent action whose last step calls the second, child action&lt;br /&gt;Q&lt;b&gt;*&lt;/b&gt; TP provides 2 type of datasheets 1) Global &amp; 2) Local&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; GLOBAL Datasheet : It is Unique for the entire test. Any Action can access and write data into Global Datasheet. Sheet is named “GLOBAL”&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; LOCAL Datasheet : Equal to number of Actions in the sheet. An Action can read and write data into its own local Datasheet only. Sheet name =  “ACTION NAME”&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There are two methods to import Actions into a Test 1) Call to Copy &amp; 2) Call to Existing.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Call to COPY of an Action : When you make a Copy of an Action , the action is copied in its entirety, including checkpoints, parameterization, and the corresponding action tab in the Data Table into the calling test . When you insert a copy of an existing action, you can make changes to the copied action, and your changes will not affect nor be affected by any other test. You can insert copies of both reusable and non-reusable actions&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Call to an EXISTING Action : Calls to actions are read-only in the calling test. They can only be modified in the test in which they were created. Enables you to use the same action in several tests and makes it easy to maintain tests. You can  make  calls to only “Reusable” actions.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can change the action iteration frequency by selecting Action Call Properties  &gt; Run Tab&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1768964258918308593?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1768964258918308593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1768964258918308593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1768964258918308593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1768964258918308593'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-18-complete-guide-on-actions.html' title='Tutorial 18 - Complete Guide on Actions in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7188969104447017678</id><published>2010-07-16T11:10:00.000-07:00</published><updated>2010-07-16T12:06:55.270-07:00</updated><title type='text'>Tutorial 19 - QTP Object Identification</title><content type='html'>This tutorial demonstrates how Object Identification works in QTP.Before you begin , you must know an object property and its value is called Object Description used to identify the corresponding Object.For example , for a WebButton property "name" and its value "Login" together can be termed as Object Description for that Web Button.The term Unique Description implies finding typical Object Description for fast object identification.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hlwC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP stores Object and its properties in Object Repository  to identify them during run-time.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; An Object could have large number of properties associated with it. For example in Web Environment a Button could have the following properties associated.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If QTP will try and remember all the available properties for an object, size of Object Repository will bloat and script execution time will increase drastically&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To avoid this,  QTP  by default , does not store all the properties of an object but  a limited no of typical properties for an object which helps in its unique identification.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; These settings are store in Object Identification&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP in Tools Menu , select Object Identification&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In Object Identification Dialog Box you can see a drop down of all the environments installed and loaded.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can select an environment and QTP auto populates list of all the supported objects belonging to that environment. On the right QTP lists the properties that will be stored for the object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The list is divided into 2 columns 1) Mandatory &amp; 2) Assistive&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1) Mandatory properties will be stored by default for that object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2) In case during record time of script QTP can NOT create a unique description of the object it will store the assistive properties&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To understand this better consider the example of an Image. QTP will store value of alt ,html tag, image type, properties mandatory  even if it can uniquely identity it using the alt property alone.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In case it can not create unique description using mandatory property ,QTP will store assistive property. In this case QTP will store the class property .&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If this property helps create a unique description of the object, QTP will not store file name, height property. If class property is not sufficient to create unique description, QTP will store file name property . If file name property creates a unique description QTP will not store height property and so on.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Suppose during Record Time, QTP has only stored class property&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; At Run - time ,QTP will forget the distinction between mandatory and assistive properties and compare all the recorded properties.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Even if any  one of the properties does not match its stored value , Script fails&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7188969104447017678?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7188969104447017678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7188969104447017678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7188969104447017678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7188969104447017678'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-19-qtp-object-identification.html' title='Tutorial 19 - QTP Object Identification'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-5055582747756631741</id><published>2010-07-16T11:09:00.004-07:00</published><updated>2010-07-16T12:05:03.012-07:00</updated><title type='text'>Tutorial 20 - All about Smart Identification in QTP</title><content type='html'>This tutorial demonstrates SMART Identification process in QTP.For the first time, the tutorial makes  use of a Web Environment.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8g1YC" type="application/x-shockwave-flash" width="480" height=400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If the usual object identification process fails , QTP triggers Smart Identification , which is more flexible mechanism for identifying objects provided it is enabled in Object Identification settings.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Smart Identification uses two categories of properties 1) Base Filter Properties &amp; 2) Optional Filter Properties&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Base Filter Properties. It  contains the  most fundamental properties of a particular test object class; those whose values cannot be changed without changing the essence of the original object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Optional Filter Properties. Other properties that can help identify objects&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Quick Test "forgets" the learned test object description and creates a new object candidate list containing the objects that match all of the properties defined in the Base Filter Properties list.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP the Uses Base Filter Property to reduce the Object Candidate list&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The idea is to narrow down only one object matching the some or all of the  saved description properties&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If smart identification is invoked during a test run ,in the test results tree a warning message is generated indicating smart identification was invoked  and a smart identification step is inserted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-5055582747756631741?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/5055582747756631741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=5055582747756631741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5055582747756631741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5055582747756631741'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-20-all-about-smart.html' title='Tutorial 20 - All about Smart Identification in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-1218413872125969566</id><published>2010-07-16T11:09:00.003-07:00</published><updated>2010-07-16T12:01:22.084-07:00</updated><title type='text'>Tutorial 21 - Object Property Modification</title><content type='html'>This tutorial uses Object Property Modification to address the property change issue faced in Tutorial 20 (smart identification).It is recommeded you go through Tutorial 20 before taking this tutorial&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8g14C" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You may have observe that smart identification slows down script execution which is not desirable&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To avoid smart identification , we can change the default object identification properties&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP , Object Identification , lets remove "name" from the mandatory properties and replace it with "html id" to make our test independent of name changes&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can re-record the same steps for the script&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now if you change the name from "Submit" to "Login" and run the script the script executes without any smart identification&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Similarly , in your application under test if any of the mandatory or assistive properties change frequently for an object you can replace it with some other suitable property  to enable faster script execution&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Property tweaking is an experience game field and you will pick it up as you age with the tool&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1218413872125969566?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1218413872125969566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1218413872125969566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1218413872125969566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1218413872125969566'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-20-object-property.html' title='Tutorial 21 - Object Property Modification'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-3139711644921983205</id><published>2010-07-16T11:09:00.002-07:00</published><updated>2010-07-16T12:00:12.741-07:00</updated><title type='text'>Tutorial 22 - Ordinal Identifiers</title><content type='html'>This tutorial introduces Ordinal Identifiers .It is recommended you complete Tutorials 19 , 20 &amp; 21 before taking this tutorial.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hBAC" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to note:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;If mandatory  and assistive properties are insufficient to identify an object during record session ,QTP uses Ordinal Identifier in addition to other captured properties to identify the objects during a record session&lt;br /&gt;By default, an ordinal identifier type exists for each test object class.&lt;br /&gt;In the Object Identification Window, you can modify the default Ordinal Identifier for an Object&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;There 3 types of Ordinal Identifiers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1) Index based&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2) Location based&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 3) Creation Time&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Index Based&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When using Index based ordinal identifier, while recording , QTP will assign a value to INDEX property of an object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The value is based on the order in which the object appears within the source code.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The first occurrence has value 0&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Index property values are object-specific.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Therefore, if you use Index:=3 to describe a WebEdit test object, Quick Test searches for the fourth WebEdit object on the page.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Likewise , you use Index:=1 to describe a WebButton test object, Quick Test searches for the third WebButton object on the page&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Location Based&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When using location based ordinal identifier, while recording , QTP will assign a value to LOCATION  property of an object to uniquely identify the object.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The value is based on the order in which the object appears within the window, frame, or dialog box, in relation to other objects with identical properties.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The first occurrence of  the object is 0.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Values are assigned in columns from top to bottom, and left to right.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Creation Time&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When using creation time ordinal identifier, while recording , QTP will assign a value to CreationTime property of an WebBrowser&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Identifier is only available for the Web Environment&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This value indicates the order in which the browser was opened relative to other open browsers.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The first browser that opens while recording receives the value CreationTime=0 and succeeding browsers are give values 1 , 2 , 3 … an so on&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-3139711644921983205?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/3139711644921983205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=3139711644921983205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3139711644921983205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3139711644921983205'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-22-ordinal-identifiers.html' title='Tutorial 22 - Ordinal Identifiers'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-3301444244329598585</id><published>2010-07-16T11:09:00.001-07:00</published><updated>2010-07-16T11:58:20.906-07:00</updated><title type='text'>Tutorial 23 - Local Per-Action Repository in QTP</title><content type='html'>This tutorial introduces the different  types of Object Repositories and discusses Local Object Repository in detail&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hCsC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to note:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Local Object Repository is the default object repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is specific to actions and can be used only for a particular action&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Local Object Repository   is preferable when application is not dynamic with respect to time&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Local Object Repository  cannot be reused&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can perform many a operations in the local object repository such as -&lt;br /&gt; &lt;br /&gt;   &lt;b&gt;*&lt;/b&gt; Highlight an object stored in repository on the application under test&lt;br /&gt;   &lt;b&gt;*&lt;/b&gt; Check whether a particular object in your AUT is stored in the Object Repository&lt;br /&gt;   &lt;b&gt;*&lt;/b&gt; Cut , Copy , Paste  , Modify and Delete Objects&lt;br /&gt;   &lt;b&gt;*&lt;/b&gt; In case you have accidentally modified the value of a property you can update its description from the application using update function.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-3301444244329598585?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/3301444244329598585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=3301444244329598585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3301444244329598585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3301444244329598585'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-23-local-per-action-repository.html' title='Tutorial 23 - Local Per-Action Repository in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-3747472564086065049</id><published>2010-07-16T11:09:00.000-07:00</published><updated>2010-07-16T11:56:59.323-07:00</updated><title type='text'>Tutorial 24 - How to create shared repository in QTP</title><content type='html'>This tutorial demonstartes Shared Object Repository in detail&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hFcC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Summary:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Global or Shared Object  Repository is preferable when application is dynamic and object description change frequently&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Between Shared and local object repository , shared object repository is more commonly used in automation projects&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; But it has maintenance and administration overheads as compared to local object repository.&lt;br /&gt; &lt;br /&gt;To create and use a shared object repository you need to perform three broad steps&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1) Creating a Shared Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2) Associating a Shared Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 3) Editing a Shared Object Repository&lt;br /&gt; &lt;br /&gt;&lt;u&gt;&lt;b&gt;Lets look at them one at a time&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;1) Creating a Shared Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; All repositories are local by default .  To create a Shared Object Repository, in the Object Repository Dialog Box  , Click File &gt; Export Local Objects&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Repository files have an extension .tsr .Give a suitable name say "guru99" and save&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The Shared Repository File is now created&lt;br /&gt; &lt;br /&gt;2)Associating a Shared Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next step is to associate the repository to your test, which enables you to use it&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To associate repository with a test, Click Resources &gt; Associate Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can select the Repository to associate with Actions available in your test.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Now you  can now use this shared repository to develop your test&lt;br /&gt; &lt;br /&gt;3) Editing a Shared Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use the Object Repository Manager to Edit a Share Repository.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Select Resources &gt; Object Repository Manager .Open the Object Repository we created "guru99"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; By Default , Repository is opened in Read-only mode. To enable editing click File &gt; Enable Editing&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Once editing is enabled you can all the operations like cut , copy , pate , rename objects etc that you can also do in Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using  Object Repository Manager  is you can compare two Object Repositories .QTP will give you a static's of what's unique and common in both the repositories&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use the Object repository merge tool to merge two repositories into oneT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-3747472564086065049?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/3747472564086065049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=3747472564086065049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3747472564086065049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/3747472564086065049'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-24-how-to-create-shared.html' title='Tutorial 24 - How to create shared repository in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2092493431493301867</id><published>2010-07-16T11:08:00.003-07:00</published><updated>2010-07-16T11:54:12.601-07:00</updated><title type='text'>Tutorial 25 - Guide to develop a script in Export View of QTP</title><content type='html'>This tutorial demonstartes how you can develop a script directly in EXPERT view in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hF8C" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Suppose my objective is to code the following statement directly in keyword view&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Dialog(Login).WinEdit(Agent Name:).Set Guru99&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP screen when I press Cntrl + spacebar ,a list containing of all possible properties , methods is shown&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Also the list shows the objects stored in the object repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Select Dialog&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; As soon as I open the parentheses , object name login is auto populated , if there are more than one &lt;b&gt;*&lt;/b&gt; object for the same object type a list is displayed&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; On pressing the . key a list of all the methods for the Dialog object  and its child objects are displayed. Select WinEdit&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; On inputting the dot operator a list of methods for Winedit box is displayed select SE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2092493431493301867?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2092493431493301867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2092493431493301867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2092493431493301867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2092493431493301867'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-25-guide-to-develop-script-in.html' title='Tutorial 25 - Guide to develop a script in Export View of QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-4382543488495760093</id><published>2010-07-16T11:08:00.002-07:00</published><updated>2010-07-16T11:52:45.073-07:00</updated><title type='text'>Tutorial 26 - Type of Recording Modes</title><content type='html'>This tutorial demonstrates the 3 types of Recording Modes in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hQEC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;QTP supports 3 types of recording modes&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1) Context Sensitive&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2)Analog&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 3) Low Level&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Context Sensitive Recording mode&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Normal recording mode is also called Context Sensitive Mode&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is the default mode of recording which takes full advantage of Quick Test Professional's  test object model.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It recognizes objects in application regardless of their location on the screen.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It records the objects in your application and the operations performed on them&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Analog Recording Mode&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In analog recording mode, Quick Test Professional  records and tracks every movement of the mouse as you drag the mouse around a screen or window.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; QTP’s Analog recording is captured as  Tracks and stored in the directory of your test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is useful  for recording operations that cannot be recorded at the level of an object. Eg., A signature produced by dragging the mouse&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In Analog mode you can record 1) Record Relative to screen &amp; 2) Relative to window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When your analog operation are confined to just one window , use relative to window&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When your analog operation involve multiple screens like dragging and dropping an object from one window to other use the screen option&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Low Level Mode&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This mode enables you to record on any object in your application, irrespective of  QTP recognizes the specific object or the specific operation.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; This mode records at the object level and records all run-time objects as either Window or WinObject test objects..&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It is used when the exact coordinates of the object are important for your tests.  A good example would be hashmaps where clicking different sections of a picture takes you to different links&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Used when recording tests in an environment (or on an object) not recognized by QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Low level mode records the x,y coordinates of any clicks&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Summary&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Analog recording and low-level recording require more disk space than normal recording mode.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For both modes , screen positions during the record and run time needs to be identical otherwise script fails&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Hence, Use analog recording or low-level recording only when normal recording mode does not accurately record your operation.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; At times QTP automatically switches to low level mode while recording objects or environments not supported by QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-4382543488495760093?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/4382543488495760093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=4382543488495760093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4382543488495760093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/4382543488495760093'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-26-type-of-recording-modes.html' title='Tutorial 26 - Type of Recording Modes'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-272190364658448926</id><published>2010-07-16T11:08:00.001-07:00</published><updated>2010-07-16T11:48:49.589-07:00</updated><title type='text'>Tutorial 27 - All about user defined functions in QTP</title><content type='html'>This tutorial describes how you could use Functions in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hQsC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If you have segments of code that you need to use several times in your tests, you may want to create a user-defined function.  By using user-defined functions, your tests are shorter, and easier to design, read, and maintain&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Your own function libraries, can contain VBScript functions, subroutines, modules etc.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You need to follow 3 simple steps to use a function from a library in your test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To create a new function library in QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Select File &gt; New &gt; Function Library. It opens as a new tab in QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets a create a very simple function which shows Message Box.So whenever this function is called a message box must be displayed&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can have mutliple functions defined in the same file.Let's save the function&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A function has an extension .qfl&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next Step Associate the library with your test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Click File &gt; Settings &gt; Resources &gt; Associate Function Library.Click Add. Select The Function Library File.Click Okay&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Last step to use the function&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In your test simply call the function. When you run the test as expected Message Box is displayed&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using COM , DCOM objects you can create very advanced Functions&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Infact, many of the features provided by QTP can be coded using VBScript&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; We have seen automation engineers who make it more of a VB project rather than automation project&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Our recommendation is to focus on 100% automation rather than flaunting your VB skills&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-272190364658448926?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/272190364658448926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=272190364658448926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/272190364658448926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/272190364658448926'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-27-all-about-user-defined.html' title='Tutorial 27 - All about user defined functions in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-1391989831752326142</id><published>2010-07-16T11:08:00.000-07:00</published><updated>2010-07-16T11:46:11.429-07:00</updated><title type='text'>Tutorial 28 - All about Transanctions in QTP</title><content type='html'>This tutorial describes how you could use TRANSACTIONS in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hRcC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can measure how long it takes to run a section of your test by defining transactions.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You define transactions within your test by enclosing the appropriate sections of the test with start and end transaction statements.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For example, you may want to note the time taken to book a flight&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In QTP , select the appropriate statement where you want to start your transaction .&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Select Insert Start Transaction.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Start Transaction Dialog Box opens&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Give the transaction a suitable name, say "Booking Time"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A start transaction statement is added in the test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Select the statement where you want to end the transaction&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Click Insert &gt; End Transaction&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; End Transaction Dialog Box Opens with the list of all available transactions&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Click Okay. An end transaction statement is added&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets runt the test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; &lt;b&gt;*&lt;/b&gt; In results , the end transaction statement gives the time taken to insert the order &lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Transactions can be inserted anywhere in the script&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There is no limit to the number of transactions that can be added to a test.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can also insert a transaction within a transaction&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1391989831752326142?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1391989831752326142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1391989831752326142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1391989831752326142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1391989831752326142'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-28-all-about-transanctions-in.html' title='Tutorial 28 - All about Transanctions in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-5389448915022848076</id><published>2010-07-16T11:07:00.000-07:00</published><updated>2010-07-16T11:43:37.423-07:00</updated><title type='text'>Tutorial 29 - All about Recovery Scenario in QTP</title><content type='html'>This tutorial demonstrates Recovery Scenarios in QTP&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hT8C" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Using Recovery Scenarios you can instruct QTP to recover from unexpected events and errors that occur in your testing environment during a run session.&lt;br /&gt;&lt;br /&gt;Recovery scenario become crucial for large tests, which run unattended and are paused until recovery operation, is performed increasing the test execution time.&lt;br /&gt;&lt;br /&gt;There are 6 steps involved in creating a recovery scenario&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 1) In QTP , Select Resources &gt; Recovery Scenario Manager .Create new Scenario&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 2) Specify the Trigger Event.  A Trigger Event is an event that interrupts your run session&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 3) Specigy the  Recovery Operation which is the corrective action you take when trigger happens&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 4) Specify Post-recovery test run options which specify how to continue the run session after Quick Test  Professional has identified the event and performed all of the specified recovery operations.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 5)  Check and verify Summary  of the scenario you created.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; 6) Add Recovery Scenario to your test using  File &gt; Settings &gt; Recovery.&lt;br /&gt;&lt;br /&gt;The test results window show the details of the recovery scenario&lt;br /&gt;&lt;br /&gt;Use can also use statements&lt;br /&gt;On Error Resume Next :&lt;br /&gt;On Error Go to 0 :&lt;br /&gt;&lt;br /&gt;to handle errors in your script&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-5389448915022848076?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/5389448915022848076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=5389448915022848076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5389448915022848076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5389448915022848076'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-29-all-about-recovery-scenario.html' title='Tutorial 29 - All about Recovery Scenario in QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-9060780118990759</id><published>2010-07-16T11:06:00.003-07:00</published><updated>2010-07-16T11:40:56.565-07:00</updated><title type='text'>Tutorial 30 - What is an Optional Step in QTP?</title><content type='html'>This tutorial describes an OPTIONAL STEP and how it can be used.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hUMC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; An optional step is a step that is not necessarily required to successfully complete a run session.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During a run session, if the object of an optional step does not exist in the application &lt;b&gt;*&lt;/b&gt; QTP  bypasses this step and continues to run the test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To set a step as optional in keyword view right click on the step and select Optional Step&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Alternatively, you can directly write the keyword "OptionalStep" preceding a statement to make it optional&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-9060780118990759?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/9060780118990759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=9060780118990759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/9060780118990759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/9060780118990759'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-30-what-is-optional-step-in.html' title='Tutorial 30 - What is an Optional Step in QTP?'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2730502127976839038</id><published>2010-07-16T11:06:00.002-07:00</published><updated>2010-07-16T11:36:04.059-07:00</updated><title type='text'>Tutorial 31 - Guide to Object Sopy | GetROProperty, GetTOProperty  &amp; SetTOPropert</title><content type='html'>This tutorial demonstrates OBJECT SPY.Object Spy can help determine useful  properties and methods associated with an object in your environment .The tutorials also describes GetROProperty, GetTOProperty  &amp; SetTOProperty&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hXAC" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;points to remember&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;GetRoProperty&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; GetRoProperty – is an in-built method used to retrieve runtime value of an object property.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; There are 4 steps involved in using the GetRoProperty&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step 1)  Record the Object on which you want to use the GetRoProperty in Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step 2) For the recorded object identify the run-time property which could be used. You may use Object Spy.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step 3) Use GetRoProperty method to retrieve the identified Run-time property and store the value in a variable&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Step 4) Use this value for further deductions&lt;br /&gt; &lt;br /&gt;&lt;b&gt;&lt;u&gt;SetToProperty &amp; GetToProperty&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Consider a Web Button stored in the Object Repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When the test is run QTP creates a copy of this object  called Test Object and compares it with the Run Time Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using GetToProperty you can retrieve the value of a property of Test Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Using SetToProperty you can change the property value of a Test Object&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When the test is completed, this test object is discarded and so are any modifications you made in the object properties using the SetToProperty&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; When the test is re-run, a new copy of the test object is created with original property values stored in the object repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can consider using GetToProperty and SetToProperty when your test script has multiple lines of codes and your environment is sporadic&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For a note ,there is no SetRoProperty&lt;br /&gt; &lt;br /&gt;&lt;u&gt;&lt;b&gt;Object Spy:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Object spy is feature in QTP using which you can view both the test and run-time object properties and methods.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It also gives the syntax for a selected method.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Object Spy gives the complete hierarchy of the object you have selected&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2730502127976839038?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2730502127976839038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2730502127976839038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2730502127976839038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2730502127976839038'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-31-guide-to-object-sopy.html' title='Tutorial 31 - Guide to Object Sopy | GetROProperty, GetTOProperty  &amp; SetTOPropert'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-5309587319091556497</id><published>2010-07-16T11:06:00.001-07:00</published><updated>2010-07-16T11:33:16.127-07:00</updated><title type='text'>Tutorial 32 - Descriptive Programming</title><content type='html'>This is the 1st part of a two part tutorial for Descriptive Programming. It introduces Descriptive Programming and its two type viz. static and dynamic.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8hgwC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways Highlighted:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; To understand the concept of descriptive programming lets understand the significance of an objects name in QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; An object name is simply used to map an object in script with its description in object repository.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Meaning if I change the object name here to ABC  and correspondingly change the object name in script to ABC the script will still work fine.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Consider this statement, which sets the Agent Name as Guru99. Let us do an experiment..Let's delete the Object Description of Agent Name Win Edit Box from the Object Repository.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If I run the test again it will fail since it can not recognize the object. Lets examine the reason why the script is failing&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; During Run Time, QTP identifies the operation that is performed on WinEdit box and the Object Description in Object Repository is stored as Agent Name&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It uses this name to track the object in object repository. For a parent you cannot have two child objects with the same name. Hence, QTP uniquely maps the object in the repository&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; It then uses the stored description in the Object Repository and replaces the name with the description. It then uses this statement to identify the object in the application under test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Since in our case we had deleted this object description all together the script fails&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; But what if instead of QTP replacing the object description, you as a tester directly specify the object descriptions in your script. This is nothing but "Descriptive Programming"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use Descriptive programming in two ways 1) Static 2) Dynamic&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Lets look at Static First. In Static Method , for object identification  in the following format property:=values , you mention an objects property ,and its corresponding values separated by a colon and equal to sign. This format is called property value pair and is enclosed in inverted commas&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If your object uses multiple descriptions for identification, you can specify those using commas&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; So in our case the description for Agent Name becomes "nativeclass:=Edit", "attached text:=Agent Name:"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next Step is to Replace Object Name with above description. In QTP , lets do the replacement and run the test. It  runs fine .    In the test results the Agent Name object is enclosed in parentheses indicating that Descriptive Programming was used in its identification. &lt;b&gt;*&lt;/b&gt; This is the static method&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The second method of doing the same action is using Dynamic Descriptive programming&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In case your script uses the descriptive programming object candidate multiple times, &lt;b&gt;*&lt;/b&gt; it will be very tiresome to specify all the property value pairs for each statement&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In such cases you can make use of Description Class provided by QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Syntax for creating an description object is&lt;br /&gt;Set MyDescription = Description.Create();&lt;br /&gt;MyDescription("property").Value = "property-value";&lt;br /&gt;This is the Dynamic Method&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-5309587319091556497?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/5309587319091556497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=5309587319091556497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5309587319091556497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5309587319091556497'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-32-descriptive-programming.html' title='Tutorial 32 - Descriptive Programming'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-5938319396492890774</id><published>2010-07-16T11:06:00.000-07:00</published><updated>2010-07-16T11:27:36.683-07:00</updated><title type='text'>Tutorial 33 - Descriptive Programming Practical Application</title><content type='html'>This is the 2nd part of a two part tutorial for Descriptive Programming. It describes practical application of  Descriptive Programming .It makes use of ChildObjects() a method used to find all Child Objects for a Parent object.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/AYG8g3EC" type="application/x-shockwave-flash" width="480" height="400" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Video Transcript with Key Takeaways highlighted&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; The million dollar question is why use DP when the Object Identification process is handled by QTP&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Suppose you are assigned to test a job portal. You enter a search query into the portal and&lt;br /&gt;your test expects you to select all available jobs .and click the apply job&lt;br /&gt;But the no of jobs reflected will depend on the search query and jobs available at time of script execution but there is no way to predict in advance the no of jobs that would be reflected&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In such cases, you can use descriptive programming. Even though you do not know the number and names of the checkboxes you do know the class for the objects as "WebCheckBox"&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can use the ChildObject method to return objects belonging to a particular parent&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; A line of code like - Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()&lt;br /&gt;Will return all child objects for this page.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; But we want only WebCheckBox objects.To do so we can create a filter creation object and set its property as WebcheckBox and pass this filter as an argument for the ChildObjects method&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In this case only the checkboxes are returned.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next you can write a code like this which access the entire collection of checkboxes starting from zero and sets all checkboxes ON.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; Next you can click apply button to complete the test&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can also use Descriptive Programming to run objects which are difficult to record like Auto-Hide Panels, Objects with changing hierarchies, Nested Inner Objects ,Sub-menus.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; You can also do advanced string manipulations using descriptive programming&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; In conjunction with index property, descriptive programming could be very useful in identifying difficult objects.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; If you use programmatic description for an object in object hierarchy you will need to use description programming for succeeding child objects&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; For example, for page object descriptive programming was used but for succeeding child object WinEdit Object Repository is used which is incorrect&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; On the contrary here for both Page and WinEdit descriptive programming is used which is correct&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-5938319396492890774?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/5938319396492890774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=5938319396492890774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5938319396492890774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/5938319396492890774'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2010/07/tutorial-33-descriptive-programming.html' title='Tutorial 33 - Descriptive Programming Practical Application'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2316588360770725394</id><published>2009-07-26T10:08:00.000-07:00</published><updated>2010-07-26T21:08:42.501-07:00</updated><title type='text'>Khols Shopping</title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2316588360770725394?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2316588360770725394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2316588360770725394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2316588360770725394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2316588360770725394'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2009/07/khols-shopping.html' title='Khols Shopping'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-6222040422937153929</id><published>2008-03-04T20:39:00.000-08:00</published><updated>2008-03-04T20:40:26.110-08:00</updated><title type='text'>QTP 9.2</title><content type='html'>&lt;h3&gt;QTP 9.2&lt;/h3&gt;&lt;br /&gt;&lt;div id="__ss_88914" style="WIDTH: 425px; TEXT-ALIGN: left"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=qtp-92-1202983412605251-4" width="425" height="355" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px" height="0" src="http://counters.gigya.com/wildfire/CIMP/JnB*PTEyMDE1MTAxMDk3NDMmcD*xMDE5MSZkPSZuPWJsb2dnZXI=.jpg" width="0" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-6222040422937153929?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/6222040422937153929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=6222040422937153929' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/6222040422937153929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/6222040422937153929'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2008/03/qtp-92.html' title='QTP 9.2'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4499103662049903393.post-1776840391493559370</id><published>2008-03-04T19:44:00.000-08:00</published><updated>2010-06-25T14:17:31.488-07:00</updated><title type='text'>Google Search</title><content type='html'>&lt;a href="http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=193780&amp;subid=0"&gt;&lt;img alt="Footwear etc." border="0"  width="728" height="90" src="http://ad.linksynergy.com/fs-bin/show?id=zqSj6REvfko&amp;bids=193780&amp;gridnum=16&amp;catid=-1&amp;subid=0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=.10000005&amp;type=4&amp;subid=0"&gt;&lt;IMG alt="John Lewis Partnership PLC" border="0" src="http://s7v1.scene7.com/is/image/JohnLewis/468x60_fash_300410"&gt;&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=zqSj6REvfko&amp;bids=.10000005&amp;type=4&amp;subid=0"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=.10000327&amp;type=4&amp;subid=0"&gt;&lt;IMG alt="Bliss World, LLC" border="0" src="http://blissworld.com/images/en_US/local/banners/WB_363_10_affiliate_bath_body_banner/468x60.gif "&gt;&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=zqSj6REvfko&amp;bids=.10000327&amp;type=4&amp;subid=0"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=200680.10000024&amp;type=4&amp;subid=0"&gt;&lt;IMG alt="" border="0" src="http://www.home-decorating-co.com/affiliates/hilfiger468x60.gif"&gt;&lt;/a&gt;&lt;IMG border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=zqSj6REvfko&amp;bids=200680.10000024&amp;type=4&amp;subid=0"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="250px" height="250px"&gt; &lt;param name="movie" value="http://affiliate.megameeting.com/MegaMeetingFinal.swf" /&gt;&lt;/param&gt;&lt;param name="quality" value="high" /&gt;&lt;/param&gt;&lt;param name="allowScriptAccess"value="always"&gt;&lt;/param&gt;&lt;param name="FlashVars"value="clickTag=http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=189625.6278&amp;type=13&amp;subid=0"&gt;&lt;/param&gt;&lt;embed src="http://affiliate.megameeting.com/MegaMeetingFinal.swf" width="250px" height="250px" quality="high"pluginspage="http://www.macromedia.com/go/getflashplayer"type="application/x-shockwave-flash"allowScriptAccess="always" FlashVars="clickTag=http://click.linksynergy.com/fs-bin/click?id=zqSj6REvfko&amp;offerid=189625.6278&amp;type=13&amp;subid=0"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;img border="0" width="1" height="1" src="http://ad.linksynergy.com/fs-bin/show?id=zqSj6REvfko&amp;bids=189625.6278&amp;type=13&amp;subid=0"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-1776840391493559370?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/1776840391493559370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=1776840391493559370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1776840391493559370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/1776840391493559370'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2006/12/google-search.html' title='Google Search'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7966995075764832881</id><published>2008-02-07T04:08:00.000-08:00</published><updated>2008-02-07T04:14:58.867-08:00</updated><title type='text'>More On QTP</title><content type='html'>&lt;div id="__ss_88914" style="WIDTH: 425px; TEXT-ALIGN: left"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=qtp-training1294" width="425" height="355" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px" height="0" src="http://counters.gigya.com/wildfire/CIMP/JnB*PTEyMDE1MTAxMDk3NDMmcD*xMDE5MSZkPSZuPWJsb2dnZXI=.jpg" width="0" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7966995075764832881?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7966995075764832881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7966995075764832881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7966995075764832881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7966995075764832881'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2008/02/more-on-qtp.html' title='More On QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-2064510014619980691</id><published>2008-01-28T03:11:00.000-08:00</published><updated>2008-01-28T03:12:44.006-08:00</updated><title type='text'>Automation Framework</title><content type='html'>&lt;h3&gt;Automation Framework&lt;/h3&gt;&lt;br /&gt;&lt;div id="__ss_88914" style="WIDTH: 425px; TEXT-ALIGN: left"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=automation-framework4356" width="425" height="355" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px" height="0" src="http://counters.gigya.com/wildfire/CIMP/JnB*PTEyMDE1MTAxMDk3NDMmcD*xMDE5MSZkPSZuPWJsb2dnZXI=.jpg" width="0" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-2064510014619980691?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/2064510014619980691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=2064510014619980691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2064510014619980691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/2064510014619980691'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2008/01/automation-framework.html' title='Automation Framework'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-601913931116305561</id><published>2008-01-28T03:00:00.000-08:00</published><updated>2008-01-28T03:07:21.702-08:00</updated><title type='text'>Starting QTP</title><content type='html'>&lt;h3&gt;Qtp Basics&lt;/h3&gt;&lt;br /&gt;&lt;div id="__ss_88914" style="WIDTH: 425px; TEXT-ALIGN: left"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=qtp-basics2988" width="425" height="355" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="VISIBILITY: hidden; WIDTH: 0px; HEIGHT: 0px" height="0" src="http://counters.gigya.com/wildfire/CIMP/JnB*PTEyMDE1MTAxMDk3NDMmcD*xMDE5MSZkPSZuPWJsb2dnZXI=.jpg" width="0" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-601913931116305561?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/601913931116305561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=601913931116305561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/601913931116305561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/601913931116305561'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2008/01/starting-qtp.html' title='Starting QTP'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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-4499103662049903393.post-7388313622165618857</id><published>2007-02-15T21:00:00.000-08:00</published><updated>2007-02-15T22:04:01.138-08:00</updated><title type='text'>ISTQB Syllabus</title><content type='html'>&lt;strong&gt;Certified Tester Foundation Level Syllabus&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Fundamentals of testing (K2) 155 minutes&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Learning objectives for fundamentals of testing&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;&lt;strong&gt;1.1 Why is testing necessary? (K2)&lt;/strong&gt;&lt;br /&gt; Describe, with examples, the way in which a defect in software can cause harm to a person, to&lt;br /&gt;the environment or to a company. (K2)&lt;br /&gt; Distinguish between the root cause of a defect and its effects. (K2)&lt;br /&gt; Give reasons why testing is necessary by giving examples. (K2)&lt;br /&gt; Describe why testing is part of quality assurance and give examples of how testing contributes&lt;br /&gt;to higher quality. (K2)&lt;br /&gt; Recall the terms mistake, defect, failure and corresponding terms error and bug. (K1)&lt;br /&gt;&lt;strong&gt;1.2 What is testing? (K2)&lt;/strong&gt;&lt;br /&gt; Recall the common objectives of testing. (K1)&lt;br /&gt; Describe the purpose of testing in software development, maintenance and operations as a&lt;br /&gt;means to find defects, provide confidence and information, and prevent defects. (K2)&lt;br /&gt;&lt;strong&gt;1.3 General testing principles (K2)&lt;/strong&gt;&lt;br /&gt; Explain the fundamental principles in testing. (K2)&lt;br /&gt;&lt;strong&gt;1.4 Fundamental test process (K1)&lt;/strong&gt;&lt;br /&gt; Recall the fundamental test activities from planning to test closure activities and the main&lt;br /&gt;tasks of each test activity. (K1)&lt;br /&gt;&lt;strong&gt;1.5 The psychology of testing (K2)&lt;/strong&gt;&lt;br /&gt; Recall that the success of testing is influenced by psychological factors (K1):&lt;br /&gt;o clear objectives;&lt;br /&gt;o a balance of self-testing and independent testing;&lt;br /&gt;o recognition of courteous communication and feedback on defects.&lt;br /&gt; Contrast the mindset of a tester and of a developer. (K2)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;1.1 Why is testing necessary (K2) 20 minutes&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Terms&lt;br /&gt;Bug, defect, error, failure, fault, mistake, quality, risk, software, testing.&lt;br /&gt;&lt;strong&gt;1.1.1 Software systems context (K1)&lt;/strong&gt;&lt;br /&gt;Software systems are an increasing part of life, from business applications (e.g. banking) to consumer&lt;br /&gt;products (e.g. cars). Most people have had an experience with software that did not work as expected.&lt;br /&gt;Software that does not work correctly can lead to many problems, including loss of money, time or&lt;br /&gt;business reputation, and could even cause injury or death.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.1.2 Causes of software defects (K2)&lt;/strong&gt;&lt;br /&gt;A human being can make an error (mistake), which produces a defect (fault, bug) in the code, in&lt;br /&gt;software or a system, or in a document. If a defect in code is executed, the system will fail to do what it&lt;br /&gt;should do (or do something it shouldn’t), causing a failure. Defects in software, systems or documents&lt;br /&gt;may result in failures, but not all defects do so.&lt;br /&gt;Defects occur because human beings are fallible and because there is time pressure, complex code,&lt;br /&gt;complexity of infrastructure, changed technologies, and/or many system interactions.&lt;br /&gt;Failures can be caused by environmental conditions as well: radiation, magnetism, electronic fields,&lt;br /&gt;and pollution can cause faults in firmware or influence the execution of software by changing hardware&lt;br /&gt;conditions.&lt;br /&gt;&lt;strong&gt;1.1.3 Role of testing in software development, maintenance and operations&lt;br /&gt;(K2)&lt;/strong&gt;&lt;br /&gt;Rigorous testing of systems and documentation can help to reduce the risk of problems occurring in&lt;br /&gt;an operational environment and contribute to the quality of the software system, if defects found are&lt;br /&gt;corrected before the system is released for operational use.&lt;br /&gt;Software testing may also be required to meet contractual or legal requirements, or industry-specific&lt;br /&gt;standards.&lt;br /&gt;&lt;strong&gt;1.1.4 Testing and quality (K2)&lt;/strong&gt;&lt;br /&gt;With the help of testing, it is possible to measure the quality of software in terms of defects found, for&lt;br /&gt;both functional and non-functional software requirements and characteristics (e.g. reliability, usability,&lt;br /&gt;efficiency and maintainability). For more information on non-functional testing see Chapter 2; for more&lt;br /&gt;information on software characteristics see ‘Software Engineering – Software Product Quality’ (ISO&lt;br /&gt;9126).&lt;br /&gt;Testing can give confidence in the quality of the software if it finds few or no defects. A properly&lt;br /&gt;designed test that passes reduces the overall level of risk in a system. When testing does find defects,&lt;br /&gt;the quality of the software system increases when those defects are fixed.&lt;br /&gt;&lt;br /&gt;Lessons should be learned from previous projects. By understanding the root causes of defects found&lt;br /&gt;in other projects, processes can be improved, which in turn should prevent those defects reoccurring&lt;br /&gt;and, as a consequence, improve the quality of future systems.&lt;br /&gt;Testing should be integrated as one of the quality assurance activities (e.g. alongside development&lt;br /&gt;standards, training and defect analysis).&lt;br /&gt;&lt;strong&gt;1.1.5 How much testing is enough? (K2)&lt;/strong&gt;&lt;br /&gt;Deciding how much testing is enough should take account of the level of risk, including technical and&lt;br /&gt;business product and project risks, and project constraints such as time and budget. (Risk is&lt;br /&gt;discussed further in Chapter 5.)&lt;br /&gt;Testing should provide sufficient information to stakeholders to make informed decisions about the&lt;br /&gt;release of the software or system being tested, for the next development step or handover to&lt;br /&gt;customers.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;1.2 What is testing (K2) 30 minutes&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Terms&lt;br /&gt;Code, debugging, development (of software), requirement, review, test basis, test case, testing, test&lt;br /&gt;objectives.&lt;br /&gt;Background&lt;br /&gt;A common perception of testing is that it only consists of running tests, i.e. executing the software.&lt;br /&gt;This is part of testing, but not all of the testing activities.&lt;br /&gt;Test activities exist before and after test execution, activities such as planning and control, choosing&lt;br /&gt;test conditions, designing test cases and checking results, evaluating completion criteria, reporting on&lt;br /&gt;the testing process and system under test, and finalizing or closure (e.g. after a test phase has been&lt;br /&gt;completed). Testing also includes reviewing of documents (including source code) and static analysis.&lt;br /&gt;Both dynamic testing and static testing can be used as a means for achieving similar objectives, and&lt;br /&gt;will provide information in order to improve both the system to be tested, and the development and&lt;br /&gt;testing processes.&lt;br /&gt;There can be different test objectives:&lt;br /&gt; finding defects;&lt;br /&gt; gaining confidence about the level of quality and providing information;&lt;br /&gt; preventing defects.&lt;br /&gt;The thought process of designing tests early in the life cycle (verifying the test basis via test design)&lt;br /&gt;can help to prevent defects from being introduced into code. Reviews of documents (e.g.&lt;br /&gt;requirements) also help to prevent defects appearing in the code.&lt;br /&gt;Different viewpoints in testing take different objectives into account. For example, in development&lt;br /&gt;testing (e.g. component, integration and system testing), the main objective may be to cause as many&lt;br /&gt;failures as possible so that defects in the software are identified and can be fixed. In acceptance&lt;br /&gt;testing, the main objective may be to confirm that the system works as expected, to gain confidence&lt;br /&gt;that it has met the requirements. In some cases the main objective of testing may be to assess the&lt;br /&gt;quality of the software (with no intention of fixing defects), to give information to stakeholders of the&lt;br /&gt;risk of releasing the system at a given time. Maintenance testing often includes testing that no new&lt;br /&gt;errors have been introduced during development of the changes. During operational testing, the main&lt;br /&gt;objective may be to assess system characteristics such as reliability or availability.&lt;br /&gt;Debugging and testing are different. Testing can show failures that are caused by defects. Debugging&lt;br /&gt;is the development activity that identifies the cause of a defect, repairs the code and checks that the&lt;br /&gt;defect has been fixed correctly. Subsequent confirmation testing by a tester ensures that the fix does&lt;br /&gt;indeed resolve the failure. The responsibility for each activity is very different, i.e. testers test and&lt;br /&gt;developers debug.&lt;br /&gt;The process of testing and its activities is explained in Section 1.4.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.3 General testing principles (K2) 35 minutes&lt;/strong&gt;&lt;br /&gt;Terms&lt;br /&gt;Exhaustive testing.&lt;br /&gt;Principles&lt;br /&gt;A number of testing principles have been suggested over the past 40 years and offer general&lt;br /&gt;guidelines common for all testing.&lt;br /&gt;&lt;strong&gt;Principle 1&lt;/strong&gt; – Testing shows presence of defects&lt;br /&gt;Testing can show that defects are present, but cannot prove that there are no defects. Testing&lt;br /&gt;reduces the probability of undiscovered defects remaining in the software but, even if no defects are&lt;br /&gt;found, it is not a proof of correctness.&lt;br /&gt;&lt;strong&gt;Principle 2&lt;/strong&gt; – Exhaustive testing is impossible&lt;br /&gt;Testing everything (all combinations of inputs and preconditions) is not feasible except for trivial&lt;br /&gt;cases. Instead of exhaustive testing, we use risk and priorities to focus testing efforts.&lt;br /&gt;&lt;strong&gt;Principle 3 &lt;/strong&gt;– Early testing&lt;br /&gt;Testing activities should start as early as possible in the software or system development life cycle,&lt;br /&gt;and should be focused on defined objectives.&lt;br /&gt;&lt;strong&gt;Principle 4&lt;/strong&gt; – Defect clustering&lt;br /&gt;A small number of modules contain most of the defects discovered during pre-release testing, or show&lt;br /&gt;the most operational failures.&lt;br /&gt;&lt;strong&gt;Principle 5&lt;/strong&gt; – Pesticide paradox&lt;br /&gt;If the same tests are repeated over and over again, eventually the same set of test cases will no&lt;br /&gt;longer find any new bugs. To overcome this “pesticide paradox”, the test cases need to be regularly&lt;br /&gt;reviewed and revised, and new and different tests need to be written to exercise different parts of the&lt;br /&gt;software or system to potentially find more defects.&lt;br /&gt;&lt;strong&gt;Principle 6&lt;/strong&gt; – Testing is context dependent&lt;br /&gt;Testing is done differently in different contexts. For example, safety-critical software is tested&lt;br /&gt;differently from an e-commerce site.&lt;br /&gt;&lt;strong&gt;Principle 7&lt;/strong&gt; – Absence-of-errors fallacy&lt;br /&gt;Finding and fixing defects does not help if the system built is unusable and does not fulfill the users’&lt;br /&gt;needs and expectations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.4 Fundamental test process (K1) &lt;/strong&gt;35 minutes&lt;br /&gt;Terms&lt;br /&gt;Confirmation testing, exit criteria, incident, regression testing, test basis, test condition, test coverage,&lt;br /&gt;test data, test execution, test log, test plan, test strategy, test summary report, testware.&lt;br /&gt;Background&lt;br /&gt;The most visible part of testing is executing tests. But to be effective and efficient, test plans should&lt;br /&gt;also include time to be spent on planning the tests, designing test cases, preparing for execution and&lt;br /&gt;evaluating status.&lt;br /&gt;The fundamental test process consists of the following main activities:&lt;br /&gt; planning and control;&lt;br /&gt; analysis and design;&lt;br /&gt; implementation and execution;&lt;br /&gt; evaluating exit criteria and reporting;&lt;br /&gt; test closure activities.&lt;br /&gt;Although logically sequential, the activities in the process may overlap or take place concurrently.&lt;br /&gt;&lt;strong&gt;1.4.1 Test planning and control (K1)&lt;/strong&gt;&lt;br /&gt;Test planning is the activity of verifying the mission of testing, defining the objectives of testing and the&lt;br /&gt;specification of test activities in order to meet the objectives and mission.&lt;br /&gt;Test control is the ongoing activity of comparing actual progress against the plan, and reporting the&lt;br /&gt;status, including deviations from the plan. It involves taking actions necessary to meet the mission and&lt;br /&gt;objectives of the project. In order to control testing, it should be monitored throughout the project. Test&lt;br /&gt;planning takes into account the feedback from monitoring and control activities.&lt;br /&gt;Test planning has the following major tasks:&lt;br /&gt; Determining the scope and risks, and identifying the objectives of testing.&lt;br /&gt; Determining the test approach (techniques, test items, coverage, identifying and interfacing&lt;br /&gt;the teams involved in testing, testware).&lt;br /&gt; Determining the required test resources (e.g. people, test environment, PCs).&lt;br /&gt; Implementing the test policy and/or the test strategy.&lt;br /&gt; Scheduling test analysis and design tasks.&lt;br /&gt; Scheduling test implementation, execution and evaluation.&lt;br /&gt; Determining the exit criteria.&lt;br /&gt;Test control has the following major tasks:&lt;br /&gt; measuring and analyzing results;&lt;br /&gt; monitoring and documenting progress, test coverage and exit criteria;&lt;br /&gt; initiation of corrective actions;&lt;br /&gt; making decisions.&lt;br /&gt;&lt;strong&gt;1.4.2 Test analysis and design (K1)&lt;/strong&gt;&lt;br /&gt;Test analysis and design is the activity where general testing objectives are transformed into tangible&lt;br /&gt;test conditions and test designs.&lt;br /&gt;Test analysis and design has the following major tasks:&lt;br /&gt;&lt;br /&gt; Reviewing the test basis (such as requirements, architecture, design, interfaces).&lt;br /&gt; Identifying test conditions or test requirements and required test data based on analysis of test&lt;br /&gt;items, the specification, behavior and structure.&lt;br /&gt; Designing the tests.&lt;br /&gt; Evaluating testability of the requirements and system.&lt;br /&gt; Designing the test environment set-up and identifying any required infrastructure and tools.&lt;br /&gt;&lt;strong&gt;1.4.3 Test implementation and execution (K1)&lt;/strong&gt;&lt;br /&gt;Test implementation and execution is the activity where test conditions are transformed into test cases&lt;br /&gt;and testware, and the environment is set up.&lt;br /&gt;Test implementation and execution has the following major tasks:&lt;br /&gt; Developing and prioritizing test cases, creating test data, writing test procedures and,&lt;br /&gt;optionally, preparing test harnesses and writing automated test scripts.&lt;br /&gt; Creating test suites from the test cases for efficient test execution.&lt;br /&gt; Verifying that the test environment has been set up correctly.&lt;br /&gt; Executing test cases either manually or by using test execution tools, according to the planned&lt;br /&gt;sequence.&lt;br /&gt; Logging the outcome of test execution and recording the identities and versions of the&lt;br /&gt;software under test, test tools and testware.&lt;br /&gt; Comparing actual results with expected results.&lt;br /&gt; Reporting discrepancies as incidents and analyzing them in order to establish their cause (e.g.&lt;br /&gt;a defect in the code, in specified test data, in the test document, or a mistake in the way the&lt;br /&gt;test was executed).&lt;br /&gt; Repeating test activities as result of action taken for each discrepancy. For example, reexecution&lt;br /&gt;of a test that previously failed in order to confirm a fix (confirmation testing),&lt;br /&gt;execution of a corrected test and/or execution of tests in order to ensure that defects have not&lt;br /&gt;been introduced in unchanged areas of the software or that defect fixing did not uncover other&lt;br /&gt;defects (regression testing).&lt;br /&gt;&lt;strong&gt;1.4.4 Evaluating exit criteria and reporting (K1)&lt;/strong&gt;&lt;br /&gt;Evaluating exit criteria is the activity where test execution is assessed against the defined objectives.&lt;br /&gt;This should be done for each test level.&lt;br /&gt;Evaluating exit criteria has the following major tasks:&lt;br /&gt; Checking test logs against the exit criteria specified in test planning.&lt;br /&gt; Assessing if more tests are needed or if the exit criteria specified should be changed.&lt;br /&gt; Writing a test summary report for stakeholders.&lt;br /&gt;&lt;strong&gt;1.4.5 Test closure activities (K1)&lt;/strong&gt;&lt;br /&gt;Test closure activities collect data from completed test activities to consolidate experience, testware,&lt;br /&gt;facts and numbers. For example, when a software system is released, a test project is completed (or&lt;br /&gt;cancelled), a milestone has been achieved, or a maintenance release has been completed.&lt;br /&gt;Test closure activities include the following major tasks:&lt;br /&gt; Checking which planned deliverables have been delivered, the closure of incident reports or&lt;br /&gt;raising of change records for any that remain open, and the documentation of the acceptance&lt;br /&gt;of the system.&lt;br /&gt; Finalizing and archiving testware, the test environment and the test infrastructure for later&lt;br /&gt;reuse.&lt;br /&gt; Handover of testware to the maintenance organization.&lt;br /&gt; Analyzing lessons learned for future releases and projects, and the improvement of test&lt;br /&gt;maturity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.5 The psychology of testing (K2)&lt;/strong&gt; 35 minutes&lt;br /&gt;Terms&lt;br /&gt;Independent testing.&lt;br /&gt;Background&lt;br /&gt;The mindset to be used while testing and reviewing is different to that used while analyzing or&lt;br /&gt;developing. With the right mindset developers are able to test their own code, but separation of this&lt;br /&gt;responsibility to a tester is typically done to help focus effort and provide additional benefits, such as&lt;br /&gt;an independent view by trained and professional testing resources. Independent testing may be&lt;br /&gt;carried out at any level of testing.&lt;br /&gt;A certain degree of independence (avoiding the author bias) is often more effective at finding defects&lt;br /&gt;and failures. Independence is not, however, a replacement for familiarity, and developers can&lt;br /&gt;efficiently find many defects in their own code. Several levels of independence can be defined:&lt;br /&gt; Tests designed by the person(s) who wrote the software under test (low level of&lt;br /&gt;independence).&lt;br /&gt; Tests designed by another person(s) (e.g. from the development team).&lt;br /&gt; Tests designed by a person(s) from a different organizational group (e.g. an independent test&lt;br /&gt;team).&lt;br /&gt; Tests designed by a person(s) from a different organization or company (i.e. outsourcing or&lt;br /&gt;certification by an external body).&lt;br /&gt;People and projects are driven by objectives. People tend to align their plans with the objectives set by&lt;br /&gt;management and other stakeholders, for example, to find defects or to confirm that software works.&lt;br /&gt;Therefore, it is important to clearly state the objectives of testing.&lt;br /&gt;Identifying failures during testing may be perceived as criticism against the product and against the&lt;br /&gt;author. Testing is, therefore, often seen as a destructive activity, even though it is very constructive in&lt;br /&gt;the management of product risks. Looking for failures in a system requires curiosity, professional&lt;br /&gt;pessimism, a critical eye, attention to detail, good communication with development peers, and&lt;br /&gt;experience on which to base error guessing.&lt;br /&gt;If errors, defects or failures are communicated in a constructive way, bad feelings between the testers&lt;br /&gt;and the analysts, designers and developers can be avoided. This applies to reviewing as well as in&lt;br /&gt;testing.&lt;br /&gt;The tester and test leader need good interpersonal skills to communicate factual information about&lt;br /&gt;defects, progress and risks, in a constructive way. For the author of the software or document, defect&lt;br /&gt;information can help them improve their skills. Defects found and fixed during testing will save time&lt;br /&gt;and money later, and reduce risks.&lt;br /&gt;Communication problems may occur, particularly if testers are seen only as messengers of unwanted&lt;br /&gt;news about defects. However, there are several ways to improve communication and relationships&lt;br /&gt;between testers and others:&lt;br /&gt;&lt;br /&gt; Start with collaboration rather than battles – remind everyone of the common goal of better&lt;br /&gt;quality systems.&lt;br /&gt; Communicate findings on the product in a neutral, fact-focused way without criticizing the&lt;br /&gt;person who created it, for example, write objective and factual incident reports and review&lt;br /&gt;findings.&lt;br /&gt; Try to understand how the other person feels and why they react as they do.&lt;br /&gt; Confirm that the other person has understood what you have said and vice versa.&lt;br /&gt;References&lt;br /&gt;1.1.5 Black, 2001, Kaner, 2002&lt;br /&gt;1.2 Beizer, 1990, Black, 2001, Myers, 1979&lt;br /&gt;1.3 Beizer, 1990, Hetzel, 1998, Myers, 1979&lt;br /&gt;1.4 Hetzel, 1998&lt;br /&gt;1.4.5 Black, 2001, Craig, 2002&lt;br /&gt;1.5 Black, 2001, Hetzel, 1998&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;2. Testing throughout the software life&lt;br /&gt;cycle (K2)&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;135 minutes&lt;br /&gt;Learning objectives for testing throughout the software life cycle&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;&lt;strong&gt;2.1 Software development models (K2)&lt;/strong&gt;&lt;br /&gt; Understand the relationship between development, test activities and work products in the&lt;br /&gt;development life cycle, and give examples based on project and product characteristics and&lt;br /&gt;context (K2).&lt;br /&gt; Recognize the fact that software development models must be adapted to the context of&lt;br /&gt;project and product characteristics. (K1)&lt;br /&gt; Recall reasons for different levels of testing, and characteristics of good testing in any life&lt;br /&gt;cycle model. (K1)&lt;br /&gt;&lt;strong&gt;2.2 Test levels (K2)&lt;/strong&gt;&lt;br /&gt; Compare the different levels of testing: major objectives, typical objects of testing, typical&lt;br /&gt;targets of testing (e.g. functional or structural) and related work products, people who test,&lt;br /&gt;types of defects and failures to be identified. (K2)&lt;br /&gt;&lt;strong&gt;2.3 Test types: the targets of testing (K2)&lt;/strong&gt;&lt;br /&gt; Compare four software test types (functional, non-functional, structural and change-related) by&lt;br /&gt;example. (K2)&lt;br /&gt; Recognize that functional and structural tests occur at any test level. (K1)&lt;br /&gt; Identify and describe non-functional test types based on non-functional requirements. (K2)&lt;br /&gt; Identify and describe test types based on the analysis of a software system’s structure or&lt;br /&gt;architecture. (K2)&lt;br /&gt; Describe the purpose of confirmation testing and regression testing. (K2)&lt;br /&gt;&lt;strong&gt;2.4 Maintenance testing (K2)&lt;/strong&gt;&lt;br /&gt; Compare maintenance testing (testing an existing system) to testing a new application with&lt;br /&gt;respect to test types, triggers for testing and amount of testing. (K2)&lt;br /&gt; Identify reasons for maintenance testing (modification, migration and retirement). (K1)&lt;br /&gt; Describe the role of regression testing and impact analysis in maintenance. (K2)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.1 Software development models (K2)&lt;/strong&gt;&lt;br /&gt;Terms&lt;br /&gt;Commercial off the shelf (COTS), incremental development model, test level, validation, verification,&lt;br /&gt;V-model.&lt;br /&gt;Background&lt;br /&gt;Testing does not exist in isolation; test activities are related to software development activities.&lt;br /&gt;Different development life cycle models need different approaches to testing.&lt;br /&gt;2.1.1 V-model (K2)&lt;br /&gt;Although variants of the V-model exist, a common type of V-model uses four test levels,&lt;br /&gt;corresponding to four development levels.&lt;br /&gt;The four levels used in this syllabus are:&lt;br /&gt; component (unit) testing;&lt;br /&gt; integration testing;&lt;br /&gt; system testing;&lt;br /&gt; acceptance testing.&lt;br /&gt;In practice, a V-model may have more, fewer or different levels of development and testing, depending&lt;br /&gt;on the project and the software product. For example, there may be component integration testing&lt;br /&gt;after component testing, and system integration testing after system testing.&lt;br /&gt;Software work products (such as business scenarios or use cases, requirement specifications, design&lt;br /&gt;documents and code) produced during development are often the basis of testing in one or more test&lt;br /&gt;levels. References for generic work products include Capability Maturity Model Integration (CMMI) or&lt;br /&gt;‘Software life cycle processes’ (IEEE/IEC 12207). Verification and validation (and early test design)&lt;br /&gt;can be carried out during the development of the software work products.&lt;br /&gt;&lt;strong&gt;2.1.2 Iterative development models (K2)&lt;/strong&gt;&lt;br /&gt;Iterative development is the process of establishing requirements, designing, building and testing a&lt;br /&gt;system, done as a series of smaller developments. Examples are: prototyping, rapid application&lt;br /&gt;development (RAD), Rational Unified Process (RUP) and agile development models. The increment&lt;br /&gt;produced by an iteration may be tested at several levels as part of its development. An increment,&lt;br /&gt;added to others developed previously, forms a growing partial system, which should also be tested.&lt;br /&gt;Regression testing is increasingly important on all iterations after the first one. Verification and&lt;br /&gt;validation can be carried out on each increment.&lt;br /&gt;&lt;strong&gt;2.1.3 Testing within a life cycle model (K2)&lt;/strong&gt;&lt;br /&gt;In any life cycle model, there are several characteristics of good testing:&lt;br /&gt; For every development activity there is a corresponding testing activity.&lt;br /&gt; Each test level has test objectives specific to that level.&lt;br /&gt; The analysis and design of tests for a given test level should begin during the corresponding&lt;br /&gt;development activity.&lt;br /&gt; Testers should be involved in reviewing documents as soon as drafts are available in the&lt;br /&gt;development life cycle.&lt;br /&gt;Test levels can be combined or reorganized depending on the nature of the project or the system&lt;br /&gt;architecture. For example, for the integration of a commercial off the shelf (COTS) software product&lt;br /&gt;into a system, the purchaser may perform integration testing at the system level (e.g. integration to the&lt;br /&gt;&lt;br /&gt;infrastructure and other systems, or system deployment) and acceptance testing (functional and/or&lt;br /&gt;non-functional, and user and/or operational testing).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2.2 Test levels (K2) 60 minutes&lt;/strong&gt;&lt;br /&gt;Terms&lt;br /&gt;Alpha testing, beta testing, component testing (also known as unit, module or program testing),&lt;br /&gt;contract acceptance testing, drivers, field testing, functional requirements, integration, integration&lt;br /&gt;testing, non-functional requirements, operational (acceptance) testing, regulation acceptance testing,&lt;br /&gt;robustness testing, stubs, system testing, test-driven development, test environment, user acceptance&lt;br /&gt;testing.&lt;br /&gt;Background&lt;br /&gt;For each of the test levels, the following can be identified: their generic objectives, the work product(s)&lt;br /&gt;being referenced for deriving test cases (i.e. the test basis), the test object (i.e. what is being tested),&lt;br /&gt;typical defects and failures to be found, test harness requirements and tool support, and specific&lt;br /&gt;approaches and responsibilities.&lt;br /&gt;&lt;strong&gt;2.2.1 Component testing (K2)&lt;/strong&gt;&lt;br /&gt;Component testing searches for defects in, and verifies the functioning of, software (e.g. modules,&lt;br /&gt;programs, objects, classes, etc.) that are separately testable. It may be done in isolation from the rest&lt;br /&gt;of the system, depending on the context of the development life cycle and the system. Stubs, drivers&lt;br /&gt;and simulators may be used.&lt;br /&gt;Component testing may include testing of functionality and specific non-functional characteristics,&lt;br /&gt;such as resource-behavior (e.g. memory leaks) or robustness testing, as well as structural testing (e.g.&lt;br /&gt;branch coverage). Test cases are derived from work products such as a specification of the&lt;br /&gt;component, the software design or the data model.&lt;br /&gt;Typically, component testing occurs with access to the code being tested and with the support of the&lt;br /&gt;development environment, such as a unit test framework or debugging tool, and, in practice, usually&lt;br /&gt;involves the programmer who wrote the code. Defects are typically fixed as soon as they are found,&lt;br /&gt;without formally recording incidents.&lt;br /&gt;One approach in component testing is to prepare and automate test cases before coding. This is&lt;br /&gt;called a test-first approach or test-driven development. This approach is highly iterative and is based&lt;br /&gt;on cycles of developing test cases, then building and integrating small pieces of code, and executing&lt;br /&gt;the component tests until they pass.&lt;br /&gt;&lt;strong&gt;2.2.2 Integration testing (K2)&lt;/strong&gt;&lt;br /&gt;Integration testing tests interfaces between components, interactions to different parts of a system,&lt;br /&gt;such as the operating system, file system, hardware or interfaces between systems.&lt;br /&gt;There may be more than one level of integration testing and it may be carried out on test objects of&lt;br /&gt;varying size. For example:&lt;br /&gt; Component integration testing tests the interactions between software components and is&lt;br /&gt;done after component testing;&lt;br /&gt; System integration testing tests the interactions between different systems and may be done&lt;br /&gt;after system testing. In this case, the developing organization may control only one side of the&lt;br /&gt;interface, so changes may be destabilizing. Business processes implemented as workflows&lt;br /&gt;may involve a series of systems. Cross-platform issues may be significant.&lt;br /&gt;The greater the scope of integration, the more difficult it becomes to isolate failures to a specific&lt;br /&gt;component or system, which may lead to increased risk.&lt;br /&gt;Systematic integration strategies may be based on the system architecture (such as top-down and&lt;br /&gt;bottom-up), functional tasks, transaction processing sequences, or some other aspect of the system or&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;component. In order to reduce the risk of late defect discovery, integration should normally be&lt;br /&gt;incremental rather than “big bang”.&lt;br /&gt;Testing of specific non-functional characteristics (e.g. performance) may be included in integration&lt;br /&gt;testing.&lt;br /&gt;At each stage of integration, testers concentrate solely on the integration itself. For example, if they&lt;br /&gt;are integrating module A with module B they are interested in testing the communication between the&lt;br /&gt;modules, not the functionality of either module. Both functional and structural approaches may be&lt;br /&gt;used.&lt;br /&gt;Ideally, testers should understand the architecture and influence integration planning. If integration&lt;br /&gt;tests are planned before components or systems are built, they can be built in the order required for&lt;br /&gt;most efficient testing.&lt;br /&gt;2.2.3 System testing (K2)&lt;br /&gt;System testing is concerned with the behavior of a whole system/product as defined by the scope of a&lt;br /&gt;development project or programme.&lt;br /&gt;In system testing, the test environment should correspond to the final target or production environment&lt;br /&gt;as much as possible in order to minimize the risk of environment-specific failures not being found in&lt;br /&gt;testing.&lt;br /&gt;System testing may include tests based on risks and/or on requirements specifications, business&lt;br /&gt;processes, use cases, or other high level descriptions of system behavior, interactions with the&lt;br /&gt;operating system, and system resources.&lt;br /&gt;System testing should investigate both functional and non-functional requirements of the system.&lt;br /&gt;Requirements may exist as text and/or models. Testers also need to deal with incomplete or&lt;br /&gt;undocumented requirements. System testing of functional requirements starts by using the most&lt;br /&gt;appropriate specification-based (black-box) techniques for the aspect of the system to be tested. For&lt;br /&gt;example, a decision table may be created for combinations of effects described in business rules.&lt;br /&gt;Structure-based techniques (white-box) may then be used to assess the thoroughness of the testing&lt;br /&gt;with respect to a structural element, such as menu structure or web page navigation. (See Chapter 4.)&lt;br /&gt;An independent test team often carries out system testing.&lt;br /&gt;2.2.4 Acceptance testing (K2)&lt;br /&gt;Acceptance testing is often the responsibility of the customers or users of a system; other&lt;br /&gt;stakeholders may be involved as well.&lt;br /&gt;The goal in acceptance testing is to establish confidence in the system, parts of the system or specific&lt;br /&gt;non-functional characteristics of the system. Finding defects is not the main focus in acceptance&lt;br /&gt;testing. Acceptance testing may assess the system’s readiness for deployment and use, although it is&lt;br /&gt;not necessarily the final level of testing. For example, a large-scale system integration test may come&lt;br /&gt;after the acceptance test for a system.&lt;br /&gt;Acceptance testing may occur as more than just a single test level, for example:&lt;br /&gt; A COTS software product may be acceptance tested when it is installed or integrated.&lt;br /&gt; Acceptance testing of the usability of a component may be done during component testing.&lt;br /&gt; Acceptance testing of a new functional enhancement may come before system testing.&lt;br /&gt;Typical forms of acceptance testing include the following:&lt;br /&gt;User acceptance testing&lt;br /&gt;Typically verifies the fitness for use of the system by business users.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 23 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Operational (acceptance) testing&lt;br /&gt;The acceptance of the system by the system administrators, including:&lt;br /&gt; testing of backup/restore;&lt;br /&gt; disaster recovery;&lt;br /&gt; user management;&lt;br /&gt; maintenance tasks;&lt;br /&gt; periodic checks of security vulnerabilities.&lt;br /&gt;Contract and regulation acceptance testing&lt;br /&gt;Contract acceptance testing is performed against a contract’s acceptance criteria for producing&lt;br /&gt;custom-developed software. Acceptance criteria should be defined when the contract is agreed.&lt;br /&gt;Regulation acceptance testing is performed against any regulations which must be adhered to, such&lt;br /&gt;as governmental, legal or safety regulations.&lt;br /&gt;Alpha and beta (or field) testing&lt;br /&gt;Developers of market, or COTS, software often want to get feedback from potential or existing&lt;br /&gt;customers in their market before the software product is put up for sale commercially. Alpha testing is&lt;br /&gt;performed at the developing organization’s site. Beta testing, or field testing, is performed by people at&lt;br /&gt;their own locations. Both are performed by potential customers, not the developers of the product.&lt;br /&gt;Organizations may use other terms as well, such as factory acceptance testing and site acceptance&lt;br /&gt;testing for systems that are tested before and after being moved to a customer’s site.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 24 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;2.3 Test types: the targets of testing (K2) 40 minutes&lt;br /&gt;Terms&lt;br /&gt;Automation, black-box testing, code coverage, confirmation testing, functional testing, interoperability&lt;br /&gt;testing, load testing, maintainability testing, performance testing, portability testing, regression testing,&lt;br /&gt;reliability testing, security testing, specification-based testing, stress testing, structural testing, test&lt;br /&gt;suite, usability testing, white-box testing.&lt;br /&gt;Background&lt;br /&gt;A group of test activities can be aimed at verifying the software system (or a part of a system) based&lt;br /&gt;on a specific reason or target for testing.&lt;br /&gt;A test type is focused on a particular test objective, which could be the testing of a function to be&lt;br /&gt;performed by the software; a non-functional quality characteristic, such as reliability or usability, the&lt;br /&gt;structure or architecture of the software or system; or related to changes, i.e. confirming that defects&lt;br /&gt;have been fixed (confirmation testing) and looking for unintended changes (regression testing).&lt;br /&gt;A model of the software may be developed and/or used in structural and functional testing. For&lt;br /&gt;example, in functional testing a process flow model, a state transition model or a plain language&lt;br /&gt;specification; and for structural testing a control flow model or menu structure model.&lt;br /&gt;2.3.1 Testing of function (functional testing) (K2)&lt;br /&gt;The functions that a system, subsystem or component are to perform may be described in work&lt;br /&gt;products such as a requirements specification, use cases, or a functional specification, or they may be&lt;br /&gt;undocumented. The functions are “what” the system does.&lt;br /&gt;Functional tests are based on these functions and features (described in documents or understood by&lt;br /&gt;the testers), and may be performed at all test levels (e.g. tests for components may be based on a&lt;br /&gt;component specification).&lt;br /&gt;Specification-based techniques may be used to derive test conditions and test cases from the&lt;br /&gt;functionality of the software or system. (See Chapter 4.) Functional testing considers the external&lt;br /&gt;behaviour of the software (black-box testing).&lt;br /&gt;A type of functional testing, security testing, investigates the functions (e.g. a firewall) relating to&lt;br /&gt;detection of threats, such as viruses, from malicious outsiders.&lt;br /&gt;2.3.2 Testing of software product characteristics (non-functional testing) (K2)&lt;br /&gt;Non-functional testing includes, but is not limited to, performance testing, load testing, stress testing,&lt;br /&gt;usability testing, interoperability testing, maintainability testing, reliability testing and portability testing.&lt;br /&gt;It is the testing of “how” the system works.&lt;br /&gt;Non-functional testing may be performed at all test levels. The term non-functional testing describes&lt;br /&gt;the tests required to measure characteristics of systems and software that can be quantified on a&lt;br /&gt;varying scale, such as response times for performance testing. These tests can be referenced to a&lt;br /&gt;quality model such as the one defined in ‘Software Engineering – Software Product Quality’ (ISO&lt;br /&gt;9126).&lt;br /&gt;2.3.3 Testing of software structure/architecture (structural testing) (K2)&lt;br /&gt;Structural (white-box) testing may be performed at all test levels. Structural techniques are best used&lt;br /&gt;after specification-based techniques, in order to help measure the thoroughness of testing through&lt;br /&gt;assessment of coverage of a type of structure.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 25 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Coverage is the extent that a structure has been exercised by a test suite, expressed as a percentage&lt;br /&gt;of the items being covered. If coverage is not 100%, then more tests may be designed to test those&lt;br /&gt;items that were missed and, therefore, increase coverage. Coverage techniques are covered in&lt;br /&gt;Chapter 4.&lt;br /&gt;At all test levels, but especially in component testing and component integration testing, tools can be&lt;br /&gt;used to measure the code coverage of elements, such as statements or decisions. Structural testing&lt;br /&gt;may be based on the architecture of the system, such as a calling hierarchy.&lt;br /&gt;Structural testing approaches can also be applied at system, system integration or acceptance testing&lt;br /&gt;levels (e.g. to business models or menu structures).&lt;br /&gt;2.3.4 Testing related to changes (confirmation and regression testing) (K2)&lt;br /&gt;When a defect is detected and fixed then the software should be retested to confirm that the original&lt;br /&gt;defect has been successfully removed. This is called confirmation testing. Debugging (defect fixing) is&lt;br /&gt;a development activity, not a testing activity.&lt;br /&gt;Regression testing is the repeated testing of an already tested program, after modification, to discover&lt;br /&gt;any defects introduced or uncovered as a result of the change(s). These defects may be either in the&lt;br /&gt;software being tested, or in another related or unrelated software component. It is performed when the&lt;br /&gt;software, or its environment, is changed. The extent of regression testing is based on the risk of not&lt;br /&gt;finding defects in software that was working previously.&lt;br /&gt;Tests should be repeatable if they are to be used for confirmation testing and to assist regression&lt;br /&gt;testing.&lt;br /&gt;Regression testing may be performed at all test levels, and applies to functional, non-functional and&lt;br /&gt;structural testing. Regression test suites are run many times and generally evolve slowly, so&lt;br /&gt;regression testing is a strong candidate for automation.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 26 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;2.4 Maintenance testing (K2) 15 minutes&lt;br /&gt;Terms&lt;br /&gt;Impact analysis, maintenance testing, migration, modifications, retirement.&lt;br /&gt;Background&lt;br /&gt;Once deployed, a software system is often in service for years or decades. During this time the system&lt;br /&gt;and its environment is often corrected, changed or extended. Maintenance testing is done on an&lt;br /&gt;existing operational system, and is triggered by modifications, migration, or retirement of the software&lt;br /&gt;or system.&lt;br /&gt;Modifications include planned enhancement changes (e.g. release-based), corrective and emergency&lt;br /&gt;changes, and changes of environment, such as planned operating system or database upgrades, or&lt;br /&gt;patches to newly exposed or discovered vulnerabilities of the operating system.&lt;br /&gt;Maintenance testing for migration (e.g. from one platform to another) should include operational tests&lt;br /&gt;of the new environment, as well as of the changed software.&lt;br /&gt;Maintenance testing for the retirement of a system may include the testing of data migration or&lt;br /&gt;archiving if long data-retention periods are required.&lt;br /&gt;In addition to testing what has been changed, maintenance testing includes extensive regression&lt;br /&gt;testing to parts of the system that have not been changed. The scope of maintenance testing is&lt;br /&gt;related to the risk of the change, the size of the existing system and to the size of the change.&lt;br /&gt;Depending on the changes, maintenance testing may be done at any or all test levels and for any or&lt;br /&gt;all test types.&lt;br /&gt;Determining how the existing system may be affected by changes is called impact analysis, and is&lt;br /&gt;used to help decide how much regression testing to do.&lt;br /&gt;Maintenance testing can be difficult if specifications are out of date or missing.&lt;br /&gt;References&lt;br /&gt;2.1.3 CMMI, Craig, 2002, Hetzel, 1998, IEEE 12207&lt;br /&gt;2.2 Hetzel, 1998&lt;br /&gt;2.2.4 Copeland, 2004, Myers, 1979&lt;br /&gt;2.3.1 Beizer, 1990, Black, 2001, Copeland, 2004&lt;br /&gt;2.3.2 Black, 2001, ISO 9126&lt;br /&gt;2.3.3 Beizer, 1990, Copeland, 2004, Hetzel, 1998&lt;br /&gt;2.3.4 Hetzel, 1998, IEEE 829&lt;br /&gt;2.4 Black, 2001, Craig, 2002, Hetzel, 1998, IEEE 829&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 27 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;3. Static techniques (K2) 60 minutes&lt;br /&gt;Learning objectives for static techniques&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;3.1 Reviews and the test process (K2)&lt;br /&gt; Recognize software work products that can be examined by the different static techniques.&lt;br /&gt;(K1)&lt;br /&gt; Describe the importance and value of considering static techniques for the assessment of&lt;br /&gt;software work products. (K2)&lt;br /&gt; Explain the difference between static and dynamic techniques. (K2)&lt;br /&gt;3.2 Review process (K2)&lt;br /&gt; Recall the phases, roles and responsibilities of a typical formal review. (K1)&lt;br /&gt; Explain the differences between different types of review: informal review, technical review,&lt;br /&gt;walkthrough and inspection. (K2)&lt;br /&gt; Explain the factors for successful performance of reviews. (K2)&lt;br /&gt;3.3 Static analysis by tools (K2)&lt;br /&gt; Describe the objective of static analysis and compare it to dynamic testing. (K2)&lt;br /&gt; Recall typical defects and errors identified by static analysis and compare them to reviews and&lt;br /&gt;dynamic testing. (K1)&lt;br /&gt; List typical benefits of static analysis. (K1)&lt;br /&gt; List typical code and design defects that may be identified by static analysis tools. (K1)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 28 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;3.1 Reviews and the test process (K2) 15 minutes&lt;br /&gt;Terms&lt;br /&gt;Dynamic testing, reviews, static analysis.&lt;br /&gt;Background&lt;br /&gt;Static testing techniques do not execute the software that is being tested; they are manual (reviews) or&lt;br /&gt;automated (static analysis).&lt;br /&gt;Reviews are a way of testing software work products (including code) and can be performed well&lt;br /&gt;before dynamic test execution. Defects detected during reviews early in the life cycle are often much&lt;br /&gt;cheaper to remove than those detected while running tests (e.g. defects found in requirements).&lt;br /&gt;A review could be done entirely as a manual activity, but there is also tool support. The main manual&lt;br /&gt;activity is to examine a work product and make comments about it. Any software work product can be&lt;br /&gt;reviewed, including requirement specifications, design specifications, code, test plans, test&lt;br /&gt;specifications, test cases, test scripts, user guides or web pages.&lt;br /&gt;Benefits of reviews include early defect detection and correction, development productivity&lt;br /&gt;improvements, reduced development timescales, reduced testing cost and time, lifetime cost&lt;br /&gt;reductions, fewer defects and improved communication. Reviews can find omissions, for example, in&lt;br /&gt;requirements, which are unlikely to be found in dynamic testing.&lt;br /&gt;Reviews, static analysis and dynamic testing have the same objective – identifying defects. They are&lt;br /&gt;complementary: the different techniques can find different types of defect effectively and efficiently. In&lt;br /&gt;contrast to dynamic testing, reviews find defects rather than failures.&lt;br /&gt;Typical defects that are easier to find in reviews than in dynamic testing are: deviations from&lt;br /&gt;standards, requirement defects, design defects, insufficient maintainability and incorrect interface&lt;br /&gt;specifications.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 29 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;3.2 Review process (K2) 25 minutes&lt;br /&gt;Terms&lt;br /&gt;Entry criteria, exit criteria, formal review, informal review, inspection, kick-off, metrics, moderator/&lt;br /&gt;inspection leader, peer review, reviewer, review meeting, review process, scribe, technical review,&lt;br /&gt;walkthrough.&lt;br /&gt;Background&lt;br /&gt;Reviews vary from very informal to very formal (i.e. well structured and regulated). The formality of a&lt;br /&gt;review process is related to factors such as the maturity of the development process, any legal or&lt;br /&gt;regulatory requirements or the need for an audit trail.&lt;br /&gt;The way a review is carried out depends on the agreed objective of the review (e.g. find defects, gain&lt;br /&gt;understanding, or discussion and decision by consensus).&lt;br /&gt;3.2.1 Phases of a formal review (K1)&lt;br /&gt;A typical formal review has the following main phases:&lt;br /&gt; Planning: selecting the personnel, allocating roles; defining the entry and exit criteria for more&lt;br /&gt;formal review types (e.g. inspection); and selecting which parts of documents to look at.&lt;br /&gt; Kick-off: distributing documents; explaining the objectives, process and documents to the&lt;br /&gt;participants; and checking entry criteria (for more formal review types).&lt;br /&gt; Individual preparation: work done by each of the participants on their own before the review&lt;br /&gt;meeting, noting potential defects, questions and comments.&lt;br /&gt; Review meeting: discussion or logging, with documented results or minutes (for more formal&lt;br /&gt;review types). The meeting participants may simply note defects, make recommendations for&lt;br /&gt;handling the defects, or make decisions about the defects.&lt;br /&gt; Rework: fixing defects found, typically done by the author.&lt;br /&gt; Follow-up: checking that defects have been addressed, gathering metrics and checking on&lt;br /&gt;exit criteria (for more formal review types).&lt;br /&gt;3.2.2 Roles and responsibilities (K1)&lt;br /&gt;A typical formal review will include the roles below:&lt;br /&gt; Manager: decides on the execution of reviews, allocates time in project schedules and&lt;br /&gt;determines if the review objectives have been met.&lt;br /&gt; Moderator: the person who leads the review of the document or set of documents, including&lt;br /&gt;planning the review, running the meeting, and follow-up after the meeting. If necessary, the&lt;br /&gt;moderator may mediate between the various points of view and is often the person upon&lt;br /&gt;whom the success of the review rests.&lt;br /&gt; Author: the writer or person with chief responsibility for the document(s) to be reviewed.&lt;br /&gt; Reviewers: individuals with a specific technical or business background (also called checkers&lt;br /&gt;or inspectors) who, after the necessary preparation, identify and describe findings (e.g.&lt;br /&gt;defects) in the product under review. Reviewers should be chosen to represent different&lt;br /&gt;perspectives and roles in the review process and they take part in any review meetings.&lt;br /&gt; Scribe (or recorder): documents all the issues, problems and open points that were identified&lt;br /&gt;during the meeting.&lt;br /&gt;Looking at documents from different perspectives, and using checklists, can make reviews more&lt;br /&gt;effective and efficient, for example, a checklist based on perspectives such as user, maintainer, tester&lt;br /&gt;or operations, or a checklist of typical requirements problems.&lt;br /&gt;3.2.3 Types of review (K2)&lt;br /&gt;A single document may be the subject of more than one review. If more than one type of review is&lt;br /&gt;used, the order may vary. For example, an informal review may be carried out before a technical&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 30 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;review, or an inspection may be carried out on a requirement specification before a walkthrough with&lt;br /&gt;customers. The main characteristics, options and purposes of common review types are:&lt;br /&gt;Informal review&lt;br /&gt;Key characteristics:&lt;br /&gt; no formal process;&lt;br /&gt; there may be pair programming or a technical lead reviewing designs and code;&lt;br /&gt; optionally may be documented;&lt;br /&gt; may vary in usefulness depending on the reviewer;&lt;br /&gt; main purpose: inexpensive way to get some benefit.&lt;br /&gt;Walkthrough&lt;br /&gt;Key characteristics:&lt;br /&gt; meeting led by author;&lt;br /&gt; scenarios, dry runs, peer group;&lt;br /&gt; open-ended sessions;&lt;br /&gt; optionally a pre-meeting preparation of reviewers, review report, list of findings and scribe&lt;br /&gt;(who is not the author)&lt;br /&gt; may vary in practice from quite informal to very formal;&lt;br /&gt; main purposes: learning, gaining understanding, defect finding.&lt;br /&gt;Technical review&lt;br /&gt;Key characteristics:&lt;br /&gt; documented, defined defect-detection process that includes peers and technical experts;&lt;br /&gt; may be performed as a peer review without management participation;&lt;br /&gt; ideally led by trained moderator (not the author);&lt;br /&gt; pre-meeting preparation;&lt;br /&gt; optionally the use of checklists, review report, list of findings and management participation;&lt;br /&gt; may vary in practice from quite informal to very formal;&lt;br /&gt; main purposes: discuss, make decisions, evaluate alternatives, find defects, solve technical&lt;br /&gt;problems and check conformance to specifications and standards.&lt;br /&gt;Inspection&lt;br /&gt;Key characteristics:&lt;br /&gt; led by trained moderator (not the author);&lt;br /&gt; usually peer examination;&lt;br /&gt; defined roles;&lt;br /&gt; includes metrics;&lt;br /&gt; formal process based on rules and checklists with entry and exit criteria;&lt;br /&gt; pre-meeting preparation;&lt;br /&gt; inspection report, list of findings;&lt;br /&gt; formal follow-up process;&lt;br /&gt; optionally, process improvement and reader;&lt;br /&gt; main purpose: find defects.&lt;br /&gt;3.2.4 Success factors for reviews (K2)&lt;br /&gt;Success factors for reviews include:&lt;br /&gt; Each review has a clear predefined objective.&lt;br /&gt; The right people for the review objectives are involved.&lt;br /&gt; Defects found are welcomed, and expressed objectively.&lt;br /&gt; People issues and psychological aspects are dealt with (e.g. making it a positive experience&lt;br /&gt;for the author).&lt;br /&gt; Review techniques are applied that are suitable to the type and level of software work&lt;br /&gt;products and reviewers.&lt;br /&gt; Checklists or roles are used if appropriate to increase effectiveness of defect identification.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 31 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt; Training is given in review techniques, especially the more formal techniques, such as&lt;br /&gt;inspection.&lt;br /&gt; Management supports a good review process (e.g. by incorporating adequate time for review&lt;br /&gt;activities in project schedules).&lt;br /&gt; There is an emphasis on learning and process improvement.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 32 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;3.3 Static analysis by tools (K2) 20 minutes&lt;br /&gt;Terms&lt;br /&gt;Compiler, complexity, control flow, data flow, static analysis.&lt;br /&gt;Background&lt;br /&gt;The objective of static analysis is to find defects in software source code and software models. Static&lt;br /&gt;analysis is performed without actually executing the software being examined by the tool; dynamic&lt;br /&gt;testing does execute the software code. Static analysis can locate defects that are hard to find in&lt;br /&gt;testing. As with reviews, static analysis finds defects rather than failures. Static analysis tools analyze&lt;br /&gt;program code (e.g. control flow and data flow), as well as generated output such as HTML and XML.&lt;br /&gt;The value of static analysis is:&lt;br /&gt; Early detection of defects prior to test execution.&lt;br /&gt; Early warning about suspicious aspects of the code or design, by the calculation of metrics,&lt;br /&gt;such as a high complexity measure.&lt;br /&gt; Identification of defects not easily found by dynamic testing.&lt;br /&gt; Detecting dependencies and inconsistencies in software models, such as links.&lt;br /&gt; Improved maintainability of code and design.&lt;br /&gt; Prevention of defects, if lessons are learned in development.&lt;br /&gt;Typical defects discovered by static analysis tools include:&lt;br /&gt; referencing a variable with an undefined value;&lt;br /&gt; inconsistent interface between modules and components;&lt;br /&gt; variables that are never used;&lt;br /&gt; unreachable (dead) code;&lt;br /&gt; programming standards violations;&lt;br /&gt; security vulnerabilities;&lt;br /&gt; syntax violations of code and software models.&lt;br /&gt;Static analysis tools are typically used by developers (checking against predefined rules or&lt;br /&gt;programming standards) before and during component and integration testing, and by designers&lt;br /&gt;during software modeling. Static analysis tools may produce a large number of warning messages,&lt;br /&gt;which need to be well managed to allow the most effective use of the tool.&lt;br /&gt;Compilers may offer some support for static analysis, including the calculation of metrics.&lt;br /&gt;References&lt;br /&gt;3.2 IEEE 1028&lt;br /&gt;3.2.2 Gilb, 1993, van Veenendaal, 2004&lt;br /&gt;3.2.4 Gilb, 1993, IEEE 1028&lt;br /&gt;3.3 Van Veenendaal, 2004&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 33 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4. Test design techniques (K3) 255 minutes&lt;br /&gt;Learning objectives for test design techniques&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;4.1 Identifying test conditions and designing test cases (K3)&lt;br /&gt; Differentiate between a test design specification, test case specification and test procedure&lt;br /&gt;specification. (K1)&lt;br /&gt; Compare the terms test condition, test case and test procedure. (K2)&lt;br /&gt; Write test cases: (K3)&lt;br /&gt;o showing a clear traceability to the requirements;&lt;br /&gt;o containing an expected result.&lt;br /&gt; Translate test cases into a well-structured test procedure specification at a level of detail&lt;br /&gt;relevant to the knowledge of the testers. (K3)&lt;br /&gt; Write a test execution schedule for a given set of test cases, considering prioritization, and&lt;br /&gt;technical and logical dependencies. (K3)&lt;br /&gt;4.2 Categories of test design techniques (K2)&lt;br /&gt; Recall reasons that both specification-based (black-box) and structure-based (white-box)&lt;br /&gt;approaches to test case design are useful, and list the common techniques for each. (K1)&lt;br /&gt; Explain the characteristics and differences between specification-based testing, structurebased&lt;br /&gt;testing and experience-based testing. (K2)&lt;br /&gt;4.3 Specification-based or black-box techniques (K3)&lt;br /&gt; Write test cases from given software models using the following test design techniques: (K3)&lt;br /&gt;o equivalence partitioning;&lt;br /&gt;o boundary value analysis;&lt;br /&gt;o decision tables;&lt;br /&gt;o state transition diagrams.&lt;br /&gt; Understand the main purpose of each of the four techniques, what level and type of testing&lt;br /&gt;could use the technique, and how coverage may be measured. (K2)&lt;br /&gt; Understand the concept of use case testing and its benefits. (K2)&lt;br /&gt;4.4 Structure-based or white-box techniques (K3)&lt;br /&gt; Describe the concept and importance of code coverage. (K2)&lt;br /&gt; Explain the concepts of statement and decision coverage, and understand that these concepts&lt;br /&gt;can also be used at other test levels than component testing (e.g. on business procedures at&lt;br /&gt;system level). (K2)&lt;br /&gt; Write test cases from given control flows using the following test design techniques: (K3)&lt;br /&gt;o statement testing;&lt;br /&gt;o decision testing.&lt;br /&gt; Assess statement and decision coverage for completeness. (K3)&lt;br /&gt;4.5 Experience-based techniques (K2)&lt;br /&gt; Recall reasons for writing test cases based on intuition, experience and knowledge about&lt;br /&gt;common defects. (K1)&lt;br /&gt; Compare experience-based techniques with specification-based testing techniques. (K2)&lt;br /&gt;4.6 Choosing test techniques (K2)&lt;br /&gt; List the factors that influence the selection of the appropriate test design technique for a&lt;br /&gt;particular kind of problem, such as the type of system, risk, customer requirements, models for&lt;br /&gt;use case modeling, requirements models or tester knowledge. (K2)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 34 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.1 Identifying test conditions and designing test&lt;br /&gt;cases (K3)&lt;br /&gt;15 minutes&lt;br /&gt;Terms&lt;br /&gt;Test cases, test case specification, test condition, test data, test procedure specification, test script,&lt;br /&gt;traceability.&lt;br /&gt;Background&lt;br /&gt;The process of identifying test conditions and designing tests consists of a number of steps:&lt;br /&gt; Designing tests by identifying test conditions.&lt;br /&gt; Specifying test cases.&lt;br /&gt; Specifying test procedures.&lt;br /&gt;The process can be done in different ways, from very informal with little or no documentation, to very&lt;br /&gt;formal (as it is described in this section). The level of formality depends on the context of the testing,&lt;br /&gt;including the organization, the maturity of testing and development processes, time constraints, and&lt;br /&gt;the people involved.&lt;br /&gt;During test design, the test basis documentation is analyzed in order to determine what to test, i.e. to&lt;br /&gt;identify the test conditions. A test condition is defined as an item or event that could be verified by one&lt;br /&gt;or more test cases (e.g. a function, transaction, quality characteristic or structural element).&lt;br /&gt;Establishing traceability from test conditions back to the specifications and requirements enables both&lt;br /&gt;impact analysis, when requirements change, and requirements coverage to be determined for a set of&lt;br /&gt;tests. During test design the detailed test approach is implemented based on, among other&lt;br /&gt;considerations, the risks identified (see Chapter 5 for more on risk analysis).&lt;br /&gt;During test case specification the test cases and test data are developed and described in detail by&lt;br /&gt;using test design techniques. A test case consists of a set of input values, execution preconditions,&lt;br /&gt;expected results and execution post-conditions, developed to cover certain test condition(s). The&lt;br /&gt;‘Standard for Software Test Documentation’ (IEEE 829) describes the content of test design&lt;br /&gt;specifications and test case specifications.&lt;br /&gt;Expected results should be produced as part of the specification of a test case and include outputs,&lt;br /&gt;changes to data and states, and any other consequences of the test. If expected results have not&lt;br /&gt;been defined then a plausible, but erroneous, result may be interpreted as the correct one. Expected&lt;br /&gt;results should ideally be defined prior to test execution.&lt;br /&gt;The test cases are put in an executable order; this is the test procedure specification. The test&lt;br /&gt;procedure (or manual test script) specifies the sequence of action for the execution of a test. If tests&lt;br /&gt;are run using a test execution tool, the sequence of actions is specified in a test script (which is an&lt;br /&gt;automated test procedure).&lt;br /&gt;The various test procedures and automated test scripts are subsequently formed into a test execution&lt;br /&gt;schedule that defines the order in which the various test procedures, and possibly automated test&lt;br /&gt;scripts, are executed, when they are to be carried out and by whom. The test execution schedule will&lt;br /&gt;take into account such factors as regression tests, prioritization, and technical and logical&lt;br /&gt;dependencies.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 35 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.2 Categories of test design techniques (K2) 15 minutes&lt;br /&gt;Terms&lt;br /&gt;Black-box techniques, experience-based techniques, specification-based techniques, structure-based&lt;br /&gt;techniques, white-box techniques.&lt;br /&gt;Background&lt;br /&gt;The purpose of a test design technique is to identify test conditions and test cases.&lt;br /&gt;It is a classic distinction to denote test techniques as black box or white box. Black-box techniques&lt;br /&gt;(also called specification-based techniques) are a way to derive and select test conditions or test&lt;br /&gt;cases based on an analysis of the test basis documentation, whether functional or non-functional, for&lt;br /&gt;a component or system without reference to its internal structure. White-box techniques (also called&lt;br /&gt;structural or structure-based techniques) are based on an analysis of the internal structure of the&lt;br /&gt;component or system.&lt;br /&gt;Some techniques fall clearly into a single category; others have elements of more than one category.&lt;br /&gt;This syllabus refers to specification-based or experience-based approaches as black-box techniques&lt;br /&gt;and structure-based as white-box techniques.&lt;br /&gt;Common features of specification-based techniques:&lt;br /&gt; Models, either formal or informal, are used for the specification of the problem to be solved,&lt;br /&gt;the software or its components.&lt;br /&gt; From these models test cases can be derived systematically.&lt;br /&gt;Common features of structure-based techniques:&lt;br /&gt; Information about how the software is constructed is used to derive the test cases, for&lt;br /&gt;example, code and design.&lt;br /&gt; The extent of coverage of the software can be measured for existing test cases, and further&lt;br /&gt;test cases can be derived systematically to increase coverage.&lt;br /&gt;Common features of experience-based techniques:&lt;br /&gt; The knowledge and experience of people are used to derive the test cases.&lt;br /&gt;o knowledge of testers, developers, users and other stakeholders about the software, its&lt;br /&gt;usage and its environment;&lt;br /&gt;o knowledge about likely defects and their distribution.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 36 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.3 Specification-based or black-box techniques&lt;br /&gt;(K3)&lt;br /&gt;120 minutes&lt;br /&gt;Terms&lt;br /&gt;Boundary value analysis, decision table testing, equivalence partitioning, state transition testing, use&lt;br /&gt;case testing.&lt;br /&gt;4.3.1 Equivalence partitioning (K3)&lt;br /&gt;Inputs to the software or system are divided into groups that are expected to exhibit similar behavior,&lt;br /&gt;so they are likely to be processed in the same way. Equivalence partitions (or classes) can be found&lt;br /&gt;for both valid data and invalid data, i.e. values that should be rejected. Partitions can also be identified&lt;br /&gt;for outputs, internal values, time-related values (e.g. before or after an event) and for interface&lt;br /&gt;parameters (e.g. during integration testing). Tests can be designed to cover partitions. Equivalence&lt;br /&gt;partitioning (EP) is applicable at all levels of testing.&lt;br /&gt;Equivalence partitioning as a technique can be used to achieve input and output coverage. It can be&lt;br /&gt;applied to human input, input via interfaces to a system, or interface parameters in integration testing.&lt;br /&gt;4.3.2 Boundary value analysis (K3)&lt;br /&gt;Behavior at the edge of each equivalence partition is more likely to be incorrect, so boundaries are an&lt;br /&gt;area where testing is likely to yield defects. The maximum and minimum values of a partition are its&lt;br /&gt;boundary values. A boundary value for a valid partition is a valid boundary value; the boundary of an&lt;br /&gt;invalid partition is an invalid boundary value. Tests can be designed to cover both valid and invalid&lt;br /&gt;boundary values. When designing test cases, a value on each boundary is chosen.&lt;br /&gt;Boundary value analysis can be applied at all test levels. It is relatively easy to apply and its defectfinding&lt;br /&gt;capability is high; detailed specifications are helpful.&lt;br /&gt;This technique is often considered an extension of equivalence partitioning and can be used on input&lt;br /&gt;by humans as well as, for example, on timing or table boundaries. Boundary values may also be used&lt;br /&gt;for test data selection.&lt;br /&gt;4.3.3 Decision table testing (K3)&lt;br /&gt;Decision tables are a good way to capture system requirements that contain logical conditions, and to&lt;br /&gt;document internal system design. They may be used to record complex business rules that a system&lt;br /&gt;is to implement. The specification is analyzed, and conditions and actions of the system are identified.&lt;br /&gt;The input conditions and actions are most often stated in such a way that they can either be true or&lt;br /&gt;false (Boolean). The decision table contains the triggering conditions, often combinations of true and&lt;br /&gt;false for all input conditions, and the resulting actions for each combination of conditions. Each column&lt;br /&gt;of the table corresponds to a business rule that defines a unique combination of conditions that result&lt;br /&gt;in the execution of the actions associated with that rule. The coverage standard commonly used with&lt;br /&gt;decision table testing is to have at least one test per column, which typically involves covering all&lt;br /&gt;combinations of triggering conditions.&lt;br /&gt;The strength of decision table testing is that it creates combinations of conditions that might not&lt;br /&gt;otherwise have been exercised during testing. It may be applied to all situations when the action of the&lt;br /&gt;software depends on several logical decisions.&lt;br /&gt;4.3.4 State transition testing (K3)&lt;br /&gt;A system may exhibit a different response depending on current conditions or previous history (its&lt;br /&gt;state). In this case, that aspect of the system can be shown as a state transition diagram. It allows the&lt;br /&gt;tester to view the software in terms of its states, transitions between states, the inputs or events that&lt;br /&gt;trigger state changes (transitions) and the actions which may result from those transitions. The states&lt;br /&gt;of the system or object under test are separate, identifiable and finite in number. A state table shows&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 37 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;the relationship between the states and inputs, and can highlight possible transitions that are invalid.&lt;br /&gt;Tests can be designed to cover a typical sequence of states, to cover every state, to exercise every&lt;br /&gt;transition, to exercise specific sequences of transitions or to test invalid transitions.&lt;br /&gt;State transition testing is much used within the embedded software industry and technical automation&lt;br /&gt;in general. However, the technique is also suitable for modeling a business object having specific&lt;br /&gt;states or testing screen-dialogue flows (e.g. for internet applications or business scenarios).&lt;br /&gt;4.3.5 Use case testing (K2)&lt;br /&gt;Tests can be specified from use cases or business scenarios. A use case describes interactions&lt;br /&gt;between actors, including users and the system, which produce a result of value to a system user.&lt;br /&gt;Each use case has preconditions, which need to be met for a use case to work successfully. Each use&lt;br /&gt;case terminates with post-conditions, which are the observable results and final state of the system&lt;br /&gt;after the use case has been completed. A use case usually has a mainstream (i.e. most likely)&lt;br /&gt;scenario, and sometimes alternative branches.&lt;br /&gt;Use cases describe the “process flows” through a system based on its actual likely use, so the test&lt;br /&gt;cases derived from use cases are most useful in uncovering defects in the process flows during realworld&lt;br /&gt;use of the system. Use cases, often referred to as scenarios, are very useful for designing&lt;br /&gt;acceptance tests with customer/user participation. They also help uncover integration defects caused&lt;br /&gt;by the interaction and interference of different components, which individual component testing would&lt;br /&gt;not see.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 38 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.4 Structure-based or white-box techniques (K3) 60 minutes&lt;br /&gt;Terms&lt;br /&gt;Code coverage, decision coverage, statement coverage, structural testing, structure-based testing,&lt;br /&gt;white-box testing.&lt;br /&gt;Background&lt;br /&gt;Structure-based testing/white-box testing is based on an identified structure of the software or system,&lt;br /&gt;as seen in the following examples:&lt;br /&gt; Component level: the structure is that of the code itself, i.e. statements, decisions or branches.&lt;br /&gt; Integration level: the structure may be a call tree (a diagram in which modules call other&lt;br /&gt;modules).&lt;br /&gt; System level: the structure may be a menu structure, business process or web page structure.&lt;br /&gt;In this section, two code-related structural techniques for code coverage, based on statements and&lt;br /&gt;decisions, are discussed. For decision testing, a control flow diagram may be used to visualize the&lt;br /&gt;alternatives for each decision.&lt;br /&gt;4.4.1 Statement testing and coverage (K3)&lt;br /&gt;In component testing, statement coverage is the assessment of the percentage of executable&lt;br /&gt;statements that have been exercised by a test case suite. Statement testing derives test cases to&lt;br /&gt;execute specific statements, normally to increase statement coverage.&lt;br /&gt;4.4.2 Decision testing and coverage (K3)&lt;br /&gt;Decision coverage, related to branch testing, is the assessment of the percentage of decision&lt;br /&gt;outcomes (e.g. the True and False options of an IF statement) that have been exercised by a test&lt;br /&gt;case suite. Decision testing derives test cases to execute specific decision outcomes, normally to&lt;br /&gt;increase decision coverage.&lt;br /&gt;Decision testing is a form of control flow testing as it generates a specific flow of control through the&lt;br /&gt;decision points. Decision coverage is stronger than statement coverage: 100% decision coverage&lt;br /&gt;guarantees 100% statement coverage, but not vice versa.&lt;br /&gt;4.4.3 Other structure-based techniques (K1)&lt;br /&gt;There are stronger levels of structural coverage beyond decision coverage, for example, condition&lt;br /&gt;coverage and multiple condition coverage.&lt;br /&gt;The concept of coverage can also be applied at other test levels (e.g. at integration level) where the&lt;br /&gt;percentage of modules, components or classes that have been exercised by a test case suite could be&lt;br /&gt;expressed as module, component or class coverage.&lt;br /&gt;Tool support is useful for the structural testing of code.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 39 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.5 Experience-based techniques (K2) 30 minutes&lt;br /&gt;Terms&lt;br /&gt;Error guessing, exploratory testing.&lt;br /&gt;Background&lt;br /&gt;Perhaps the most widely practiced technique is error guessing. Tests are derived from the tester’s skill&lt;br /&gt;and intuition and their experience with similar applications and technologies. When used to augment&lt;br /&gt;systematic techniques, intuitive testing can be useful to identify special tests not easily captured by&lt;br /&gt;formal techniques, especially when applied after more formal approaches. However, this technique&lt;br /&gt;may yield widely varying degrees of effectiveness, depending on the testers’ experience. A structured&lt;br /&gt;approach to the error guessing technique is to enumerate a list of possible errors and to design tests&lt;br /&gt;that attack these errors. These defect and failure lists can be built based on experience, available&lt;br /&gt;defect and failure data, and from common knowledge about why software fails.&lt;br /&gt;Exploratory testing is concurrent test design, test execution, test logging and learning, based on a test&lt;br /&gt;charter containing test objectives, and carried out within time-boxes. It is an approach that is most&lt;br /&gt;useful where there are few or inadequate specifications and severe time pressure, or in order to&lt;br /&gt;augment or complement other, more formal testing. It can serve as a check on the test process, to&lt;br /&gt;help ensure that the most serious defects are found.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 40 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;4.6 Choosing test techniques (K2) 15 minutes&lt;br /&gt;Terms&lt;br /&gt;No specific terms.&lt;br /&gt;Background&lt;br /&gt;The choice of which test techniques to use depends on a number of factors, including the type of&lt;br /&gt;system, regulatory standards, customer or contractual requirements, level of risk, type of risk, test&lt;br /&gt;objective, documentation available, knowledge of the testers, time and budget, development life cycle,&lt;br /&gt;use case models and previous experience of types of defects found.&lt;br /&gt;Some techniques are more applicable to certain situations and test levels; others are applicable to all&lt;br /&gt;test levels.&lt;br /&gt;References&lt;br /&gt;4.1 Craig, 2002, Hetzel, 1998, IEEE 829&lt;br /&gt;4.2 Beizer, 1990, Copeland, 2004&lt;br /&gt;4.3.1 Copeland, 2004, Myers, 1979&lt;br /&gt;4.3.2 Copeland, 2004, Myers, 1979&lt;br /&gt;4.3.3 Beizer, 1990, Copeland, 2004&lt;br /&gt;4.3.4 Beizer, 1990, Copeland, 2004&lt;br /&gt;4.3.5 Copeland, 2004&lt;br /&gt;4.4.3 Beizer, 1990, Copeland, 2004&lt;br /&gt;4.5 Kaner, 2002&lt;br /&gt;4.6 Beizer, 1990, Copeland, 2004&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 41 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5. Test management (K3) 180 minutes&lt;br /&gt;Learning objectives for test management&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;5.1 Test organization (K2)&lt;br /&gt; Recognize the importance of independent testing. (K1)&lt;br /&gt; List the benefits and drawbacks of independent testing within an organization. (K2)&lt;br /&gt; Recognize the different team members to be considered for the creation of a test team. (K1)&lt;br /&gt; Recall the tasks of typical test leader and tester. (K1)&lt;br /&gt;5.2 Test planning and estimation (K2)&lt;br /&gt; Recognize the different levels and objectives of test planning. (K1)&lt;br /&gt; Summarize the purpose and content of the test plan, test design specification and test&lt;br /&gt;procedure documents according to the ‘Standard for Software Test Documentation’ (IEEE&lt;br /&gt;829). (K2)&lt;br /&gt; Recall typical factors that influence the effort related to testing. (K1)&lt;br /&gt; Differentiate between two conceptually different estimation approaches: the metrics-based&lt;br /&gt;approach and the expert-based approach. (K2)&lt;br /&gt; Differentiate between the subject of test planning for a project, for individual test levels (e.g.&lt;br /&gt;system test) or specific test targets (e.g. usability test), and for test execution. (K2)&lt;br /&gt; List test preparation and execution tasks that need planning. (K1)&lt;br /&gt; Recognize/justify adequate exit criteria for specific test levels and groups of test cases (e.g.&lt;br /&gt;for integration testing, acceptance testing or test cases for usability testing). (K2)&lt;br /&gt;5.3 Test progress monitoring and control (K2)&lt;br /&gt; Recall common metrics used for monitoring test preparation and execution. (K1)&lt;br /&gt; Understand and interpret test metrics for test reporting and test control (e.g. defects found and&lt;br /&gt;fixed, and tests passed and failed). (K2)&lt;br /&gt; Summarize the purpose and content of the test summary report document according to the&lt;br /&gt;‘Standard for Software Test Documentation’ (IEEE 829). (K2)&lt;br /&gt;5.4 Configuration management (K2)&lt;br /&gt; Summarize how configuration management supports testing. (K2)&lt;br /&gt;5.5 Risk and testing (K2)&lt;br /&gt; Describe a risk as a possible problem that would threaten the achievement of one or more&lt;br /&gt;stakeholders’ project objectives. (K2)&lt;br /&gt; Remember that risks are determined by likelihood (of happening) and impact (harm resulting if&lt;br /&gt;it does happen). (K1)&lt;br /&gt; Distinguish between the project and product risks. (K2)&lt;br /&gt; Recognize typical product and project risks. (K1)&lt;br /&gt; Describe, using examples, how risk analysis and risk management may be used for test&lt;br /&gt;planning. (K2)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 42 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.6 Incident Management (K3)&lt;br /&gt; Recognize the content of the ‘Standard for Software Test Documentation’ (IEEE 829) incident&lt;br /&gt;report. (K1)&lt;br /&gt; Write an incident report covering the observation of a failure during testing. (K3)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 43 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.1 Test organization (K2) 30 minutes&lt;br /&gt;Terms&lt;br /&gt;Tester, test leader, test manager.&lt;br /&gt;5.1.1 Test organization and independence (K2)&lt;br /&gt;The effectiveness of finding defects by testing and reviews can be improved by using independent&lt;br /&gt;testers. Options for independence are:&lt;br /&gt; Independent testers within the development teams.&lt;br /&gt; Independent test team or group within the organization, reporting to project management or&lt;br /&gt;executive management.&lt;br /&gt; Independent testers from the business organization, user community and IT.&lt;br /&gt; Independent test specialists for specific test targets such as usability testers, security testers&lt;br /&gt;or certification testers (who certify a software product against standards and regulations).&lt;br /&gt; Independent testers outsourced or external to the organization.&lt;br /&gt;For large, complex or safety critical projects, it is usually best to have multiple levels of testing, with&lt;br /&gt;some or all of the levels done by independent testers. Development staff may participate in testing,&lt;br /&gt;especially at the lower levels, but their lack of objectivity often limits their effectiveness. The&lt;br /&gt;independent testers may have the authority to require and define test processes and rules, but testers&lt;br /&gt;should take on such process-related roles only in the presence of a clear management mandate to do&lt;br /&gt;so.&lt;br /&gt;The benefits of independence include:&lt;br /&gt; Independent testers see other and different defects, and are unbiased.&lt;br /&gt; An independent tester can verify assumptions people made during specification and&lt;br /&gt;implementation of the system.&lt;br /&gt;Drawbacks include:&lt;br /&gt; Isolation from the development team (if treated as totally independent).&lt;br /&gt; Independent testers may be the bottleneck as the last checkpoint.&lt;br /&gt; Developers lose a sense of responsibility for quality.&lt;br /&gt;Testing tasks may be done by people in a specific testing role, or may be done by someone in another&lt;br /&gt;role, such as a project manager, quality manager, developer, business and domain expert,&lt;br /&gt;infrastructure or IT operations.&lt;br /&gt;5.1.2 Tasks of the test leader and tester (K1)&lt;br /&gt;In this syllabus two test positions are covered, test leader and tester. The activities and tasks&lt;br /&gt;performed by people in these two roles depend on the project and product context, the people in the&lt;br /&gt;roles, and the organization.&lt;br /&gt;Sometimes the test leader is called a test manager or test coordinator. The role of the test leader may&lt;br /&gt;be performed by a project manager, a development manager, a quality assurance manager or the&lt;br /&gt;manager of a test group. In larger projects two positions may exist: test leader and test manager.&lt;br /&gt;Typically the test leader plans, monitors and controls the testing activities and tasks as defined in&lt;br /&gt;Section 1.4.&lt;br /&gt;Typical test leader tasks may include:&lt;br /&gt; Coordinate the test strategy and plan with project managers and others.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 44 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt; Write or review a test strategy for the project, and test policy for the organization.&lt;br /&gt; Contribute the testing perspective to other project activities, such as integration planning.&lt;br /&gt; Plan the tests – considering the context and understanding the risks – including selecting test&lt;br /&gt;approaches, estimating the time, effort and cost of testing, acquiring resources, defining test&lt;br /&gt;levels, cycles, approach, and objectives, and planning incident management;&lt;br /&gt; Initiate the specification, preparation, implementation and execution of tests, and monitor and&lt;br /&gt;control the execution.&lt;br /&gt; Adapt planning based on test results and progress (sometimes documented in status reports)&lt;br /&gt;and take any action necessary to compensate for problems.&lt;br /&gt; Set up adequate configuration management of testware for traceability.&lt;br /&gt; Introduce suitable metrics for measuring test progress and evaluating the quality of the testing&lt;br /&gt;and the product.&lt;br /&gt; Decide what should be automated, to what degree, and how.&lt;br /&gt; Select tools to support testing and organize any training in tool use for testers.&lt;br /&gt; Decide about the implementation of the test environment.&lt;br /&gt; Schedule tests.&lt;br /&gt; Write test summary reports based on the information gathered during testing.&lt;br /&gt;Typical tester tasks may include:&lt;br /&gt; Review and contribute to test plans.&lt;br /&gt; Analyze, review and assess user requirements, specifications and models for testability.&lt;br /&gt; Create test specifications.&lt;br /&gt; Set up the test environment (often coordinating with system administration and network&lt;br /&gt;management).&lt;br /&gt; Prepare and acquire test data.&lt;br /&gt; Implement tests on all test levels, execute and log the tests, evaluate the results and&lt;br /&gt;document the deviations from expected results.&lt;br /&gt; Use test administration or management tools and test monitoring tools as required.&lt;br /&gt; Automate tests (may be supported by a developer or a test automation expert).&lt;br /&gt; Measure performance of components and systems (if applicable).&lt;br /&gt; Review tests developed by others.&lt;br /&gt;People who work on test analysis, test design, specific test types or test automation may be&lt;br /&gt;specialists in these roles. Depending on the test level and the risks related to the product and the&lt;br /&gt;project, different people may take over the role of tester, keeping some degree of independence.&lt;br /&gt;Typically testers at the component and integration level would be developers, testers at the&lt;br /&gt;acceptance test level would be business experts and users, and testers for operational acceptance&lt;br /&gt;testing would be operators.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 45 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.2 Test planning and estimation (K2) 50 minutes&lt;br /&gt;Terms&lt;br /&gt;Entry criteria, exit criteria, exploratory testing, test approach, test level, test plan, test procedure, test&lt;br /&gt;strategy.&lt;br /&gt;5.2.1 Test planning (K2)&lt;br /&gt;This section covers the purpose of test planning within development and implementation projects, and&lt;br /&gt;for maintenance activities. Planning may be documented in a project or master test plan, and in&lt;br /&gt;separate test plans for test levels, such as system testing and acceptance testing. Outlines of test&lt;br /&gt;planning documents are covered by the ‘Standard for Software Test Documentation’ (IEEE 829).&lt;br /&gt;Planning is influenced by the test policy of the organization, the scope of testing, objectives, risks,&lt;br /&gt;constraints, criticality, testability and the availability of resources. The more the project and test&lt;br /&gt;planning progresses the more information is available and the more detail that can be included in the&lt;br /&gt;plan.&lt;br /&gt;Test planning is a continuous activity and is performed in all life cycle processes and activities.&lt;br /&gt;Feedback from test activities is used to recognize changing risks so that planning can be adjusted.&lt;br /&gt;5.2.2 Test planning activities (K2)&lt;br /&gt;Test planning activities may include:&lt;br /&gt; Defining the overall approach of testing (the test strategy), including the definition of the test&lt;br /&gt;levels and entry and exit criteria.&lt;br /&gt; Integrating and coordinating the testing activities into the software life cycle activities:&lt;br /&gt;acquisition, supply, development, operation and maintenance.&lt;br /&gt; Making decisions about what to test, what roles will perform the test activities, when and how&lt;br /&gt;the test activities should be done, how the test results will be evaluated, and when to stop&lt;br /&gt;testing (exit criteria).&lt;br /&gt; Assigning resources for the different tasks defined.&lt;br /&gt; Defining the amount, level of detail, structure and templates for the test documentation.&lt;br /&gt; Selecting metrics for monitoring and controlling test preparation and execution, defect&lt;br /&gt;resolution and risk issues.&lt;br /&gt; Setting the level of detail for test procedures in order to provide enough information to support&lt;br /&gt;reproducible test preparation and execution.&lt;br /&gt;5.2.3 Exit criteria (K2)&lt;br /&gt;The purpose of exit criteria is to define when to stop testing, such as at the end of a test level or when&lt;br /&gt;a set of tests has a specific goal.&lt;br /&gt;Typically exit criteria may consist of:&lt;br /&gt; Thoroughness measures, such as coverage of code, functionality or risk.&lt;br /&gt; Estimates of defect density or reliability measures.&lt;br /&gt; Cost.&lt;br /&gt; Residual risks, such as defects not fixed or lack of test coverage in certain areas.&lt;br /&gt; Schedules such as those based on time to market.&lt;br /&gt;5.2.4 Test estimation (K2)&lt;br /&gt;Two approaches for the estimation of test effort are covered in this syllabus:&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 46 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt; Estimating the testing effort based on metrics of former or similar projects or based on typical&lt;br /&gt;values.&lt;br /&gt; Estimating the tasks by the owner of these tasks or by experts.&lt;br /&gt;Once the test effort is estimated, resources can be identified and a schedule can be drawn up.&lt;br /&gt;The testing effort may depend on a number of factors, including:&lt;br /&gt; Characteristics of the product: the quality of the specification and other information used for&lt;br /&gt;test models (i.e. the test basis), the size of the product, the complexity of the problem domain,&lt;br /&gt;the requirements for reliability and security, and the requirements for documentation.&lt;br /&gt; Characteristics of the development process: the stability of the organization, tools used, test&lt;br /&gt;process, skills of the people involved, and time pressure.&lt;br /&gt; The outcome of testing: the number of defects and the amount of rework required.&lt;br /&gt;5.2.5 Test approaches (test strategies) (K2)&lt;br /&gt;One way to classify test approaches or strategies is based on the point in time at which the bulk of the&lt;br /&gt;test design work is begun:&lt;br /&gt; Preventative approaches, where tests are designed as early as possible.&lt;br /&gt; Reactive approaches, where test design comes after the software or system has been&lt;br /&gt;produced.&lt;br /&gt;Typical approaches or strategies include:&lt;br /&gt; Analytical approaches, such as risk-based testing where testing is directed to areas of&lt;br /&gt;greatest risk.&lt;br /&gt; Model-based approaches, such as stochastic testing using statistical information about failure&lt;br /&gt;rates (such as reliability growth models) or usage (such as operational profiles).&lt;br /&gt; Methodical approaches, such as failure based (including error guessing and fault-attacks),&lt;br /&gt;check-list based, and quality characteristic based.&lt;br /&gt; Process- or standard-compliant approaches, such as those specified by industry-specific&lt;br /&gt;standards or the various agile methodologies.&lt;br /&gt; Dynamic and heuristic approaches, such as exploratory testing where testing is more reactive&lt;br /&gt;to events than pre-planned, and where execution and evaluation are concurrent tasks.&lt;br /&gt; Consultative approaches, such as those where test coverage is driven primarily by the advice&lt;br /&gt;and guidance of technology and/or business domain experts outside the test team.&lt;br /&gt; Regression-averse approaches, such as those that include reuse of existing test material,&lt;br /&gt;extensive automation of functional regression tests, and standard test suites.&lt;br /&gt;Different approaches may be combined, for example, a risk-based dynamic approach.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 47 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;The selection of a test approach should consider the context, including:&lt;br /&gt; Risk of failure of the project, hazards to the product and risks of product failure to humans, the&lt;br /&gt;environment and the company.&lt;br /&gt; Skills and experience of the people in the proposed techniques, tools and methods.&lt;br /&gt; The objective of the testing endeavour and the mission of the testing team.&lt;br /&gt; Regulatory aspects, such as external and internal regulations for the development process.&lt;br /&gt; The nature of the product and the business.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 48 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.3 Test progress monitoring and control (K2) 20 minutes&lt;br /&gt;Terms&lt;br /&gt;Defect density, failure rate, test control, test coverage, test monitoring, test report.&lt;br /&gt;5.3.1 Test progress monitoring (K1)&lt;br /&gt;The purpose of test monitoring is to give feedback and visibility about test activities. Information to be&lt;br /&gt;monitored may be collected manually or automatically and may be used to measure exit criteria, such&lt;br /&gt;as coverage. Metrics may also be used to assess progress against the planned schedule and budget.&lt;br /&gt;Common test metrics include:&lt;br /&gt; Percentage of work done in test case preparation (or percentage of planned test cases&lt;br /&gt;prepared).&lt;br /&gt; Percentage of work done in test environment preparation.&lt;br /&gt; Test case execution (e.g. number of test cases run/not run, and test cases passed/failed).&lt;br /&gt; Defect information (e.g. defect density, defects found and fixed, failure rate, and retest&lt;br /&gt;results).&lt;br /&gt; Test coverage of requirements, risks or code.&lt;br /&gt; Subjective confidence of testers in the product.&lt;br /&gt; Dates of test milestones.&lt;br /&gt; Testing costs, including the cost compared to the benefit of finding the next defect or to run&lt;br /&gt;the next test.&lt;br /&gt;5.3.2 Test Reporting (K2)&lt;br /&gt;Test reporting is concerned with summarizing information about the testing endeavour, including:&lt;br /&gt; What happened during a period of testing, such as dates when exit criteria were met.&lt;br /&gt; Analyzed information and metrics to support recommendations and decisions about future&lt;br /&gt;actions, such as an assessment of defects remaining, the economic benefit of continued&lt;br /&gt;testing, outstanding risks, and the level of confidence in tested software.&lt;br /&gt;The outline of a test summary report is given in ‘Standard for Software Test Documentation’ (IEEE&lt;br /&gt;829).&lt;br /&gt;Metrics should be collected during and at the end of a test level in order to assess:&lt;br /&gt; The adequacy of the test objectives for that test level.&lt;br /&gt; The adequacy of the test approaches taken.&lt;br /&gt; The effectiveness of the testing with respect to its objectives.&lt;br /&gt;5.3.3 Test control (K2)&lt;br /&gt;Test control describes any guiding or corrective actions taken as a result of information and metrics&lt;br /&gt;gathered and reported. Actions may cover any test activity and may affect any other software life cycle&lt;br /&gt;activity or task.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 49 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Examples of test control actions are:&lt;br /&gt; Re-prioritize tests when an identified risk occurs (e.g. software delivered late).&lt;br /&gt; Change the test schedule due to availability of a test environment.&lt;br /&gt; Set an entry criterion requiring fixes to have been retested by a developer before accepting&lt;br /&gt;them into a build.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 50 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.4 Configuration management (K2) 10 minutes&lt;br /&gt;Terms&lt;br /&gt;Configuration management, version control.&lt;br /&gt;Background&lt;br /&gt;The purpose of configuration management is to establish and maintain the integrity of the products&lt;br /&gt;(components, data and documentation) of the software or system through the project and product life&lt;br /&gt;cycle.&lt;br /&gt;For testing, configuration management may involve ensuring that:&lt;br /&gt; All items of testware are identified, version controlled, tracked for changes, related to each&lt;br /&gt;other and related to development items (test objects) so that traceability can be maintained&lt;br /&gt;throughout the test process.&lt;br /&gt; All identified documents and software items are referenced unambiguously in test&lt;br /&gt;documentation.&lt;br /&gt;For the tester, configuration management helps to uniquely identify (and to reproduce) the tested item,&lt;br /&gt;test documents, the tests and the test harness.&lt;br /&gt;During test planning, the configuration management procedures and infrastructure (tools) should be&lt;br /&gt;chosen, documented and implemented.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 51 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.5 Risk and testing (K2) 30 minutes&lt;br /&gt;Terms&lt;br /&gt;Product risk, project risk, risk, risk-based testing.&lt;br /&gt;Background&lt;br /&gt;Risk can be defined as the chance of an event, hazard, threat or situation occurring and its&lt;br /&gt;undesirable consequences, a potential problem. The level of risk will be determined by the likelihood&lt;br /&gt;of an adverse event happening and the impact (the harm resulting from that event).&lt;br /&gt;5.5.1 Project risks (K1, K2)&lt;br /&gt;Project risks are the risks that surround the project’s capability to deliver its objectives, such as:&lt;br /&gt; Supplier issues:&lt;br /&gt;o failure of a third party;&lt;br /&gt;o contractual issues.&lt;br /&gt; Organizational factors:&lt;br /&gt;o skill and staff shortages;&lt;br /&gt;o personal and training issues;&lt;br /&gt;o political issues, such as&lt;br /&gt; problems with testers communicating their needs and test results;&lt;br /&gt; failure to follow up on information found in testing and reviews (e.g. not&lt;br /&gt;improving development and testing practices).&lt;br /&gt;o improper attitude toward or expectations of testing (e.g. not appreciating the value of&lt;br /&gt;finding defects during testing).&lt;br /&gt; Technical issues:&lt;br /&gt;o problems in defining the right requirements;&lt;br /&gt;o the extent that requirements can be met given existing constraints;&lt;br /&gt;o the quality of the design, code and tests.&lt;br /&gt;When analyzing, managing and mitigating these risks, the test manager is following well established&lt;br /&gt;project management principles. The ‘Standard for Software Test Documentation’ (IEEE 829) outline&lt;br /&gt;for test plans requires risks and contingencies to be stated.&lt;br /&gt;5.5.2 Product Risks (K2)&lt;br /&gt;Potential failure areas (adverse future events or hazards) in the software or system are known as&lt;br /&gt;product risks, as they are a risk to the quality of the product, such as:&lt;br /&gt; Error-prone software delivered.&lt;br /&gt; The potential that the software/hardware could cause harm to an individual or company.&lt;br /&gt; Poor software characteristics (e.g. functionality, security, reliability, usability and performance).&lt;br /&gt; Software that does not perform its intended functions.&lt;br /&gt;Risks are used to decide where to start testing and where to test more; testing is used to reduce the&lt;br /&gt;risk of an adverse effect occurring, or to reduce the impact of an adverse effect.&lt;br /&gt;Product risks are a special type of risk to the success of a project. Testing as a risk-control activity&lt;br /&gt;provides feedback about the residual risk by measuring the effectiveness of critical defect removal and&lt;br /&gt;of contingency plans.&lt;br /&gt;A risk-based approach to testing provides proactive opportunities to reduce the levels of product risk,&lt;br /&gt;starting in the initial stages of a project. It involves the identification of product risks and their use in&lt;br /&gt;guiding the test planning, specification, preparation and execution of tests. In a risk-based approach&lt;br /&gt;the risks identified may be used to:&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 52 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt; Determine the test techniques to be employed.&lt;br /&gt; Determine the extent of testing to be carried out.&lt;br /&gt; Prioritize testing in an attempt to find the critical defects as early as possible.&lt;br /&gt; Determine whether any non-testing activities could be employed to reduce risk (e.g. providing&lt;br /&gt;training to inexperienced designers).&lt;br /&gt;Risk-based testing draws on the collective knowledge and insight of the project stakeholders to&lt;br /&gt;determine the risks and the levels of testing required to address those risks.&lt;br /&gt;To ensure that the chance of a product failure is minimized, risk management activities provide a&lt;br /&gt;disciplined approach to:&lt;br /&gt; Assess (and reassess on a regular basis) what can go wrong (risks).&lt;br /&gt; Determine what risks are important to deal with.&lt;br /&gt; Implement actions to deal with those risks.&lt;br /&gt;In addition, testing may support the identification of new risks, may help to determine what risks&lt;br /&gt;should be reduced, and may lower uncertainty about risks.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 53 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.6 Incident management (K3) 40 minutes&lt;br /&gt;Terms&lt;br /&gt;Incident logging.&lt;br /&gt;Background&lt;br /&gt;Since one of the objectives of testing is to find defects, the discrepancies between actual and&lt;br /&gt;expected outcomes need to be logged as incidents. Incidents should be tracked from discovery and&lt;br /&gt;classification to correction and confirmation of the solution. In order to manage all incidents to&lt;br /&gt;completion, an organization should establish a process and rules for classification.&lt;br /&gt;Incidents may be raised during development, review, testing or use of a software product. They may&lt;br /&gt;be raised for issues in code or the working system, or in any type of documentation including&lt;br /&gt;development documents, test documents or user information such as “Help” or installation guides.&lt;br /&gt;Incident reports have the following objectives:&lt;br /&gt; Provide developers and other parties with feedback about the problem to enable identification,&lt;br /&gt;isolation and correction as necessary.&lt;br /&gt; Provide test leaders a means of tracking the quality of the system under test and the progress&lt;br /&gt;of the testing.&lt;br /&gt; Provide ideas for test process improvement.&lt;br /&gt;A tester or reviewer typically logs the following information, if known, regarding an incident:&lt;br /&gt; Date of issue, issuing organization, author, approvals and status.&lt;br /&gt; Scope, severity and priority of the incident.&lt;br /&gt; References, including the identity of the test case specification that revealed the problem.&lt;br /&gt;Details of the incident report may include:&lt;br /&gt; Expected and actual results.&lt;br /&gt; Date the incident was discovered.&lt;br /&gt; Identification or configuration item of the software or system.&lt;br /&gt; Software or system life cycle process in which the incident was observed.&lt;br /&gt; Description of the anomaly to enable resolution.&lt;br /&gt; Degree of impact on stakeholder(s) interests.&lt;br /&gt; Severity of the impact on the system.&lt;br /&gt; Urgency/priority to fix.&lt;br /&gt; Status of the incident (e.g. open, deferred, duplicate, waiting to be fixed, fixed awaiting&lt;br /&gt;confirmation test or closed).&lt;br /&gt; Conclusions and recommendations.&lt;br /&gt; Global issues, such as other areas that may be affected by a change resulting from the&lt;br /&gt;incident.&lt;br /&gt; Change history, such as the sequence of actions taken by project team members with respect&lt;br /&gt;to the incident to isolate, repair and confirm it as fixed.&lt;br /&gt;The structure of an incident report is covered in the ‘Standard for Software Test Documentation’ (IEEE&lt;br /&gt;829) and is called an anomaly report.&lt;br /&gt;References&lt;br /&gt;5.1.1 Black, 2001, Hetzel, 1998&lt;br /&gt;5.1.2 Black, 2001, Hetzel, 1998&lt;br /&gt;5.2.5 Black, 2001, Craig, 2002, IEEE 829, Kaner 2002&lt;br /&gt;5.3.3 Black, 2001, Craig, 2002, Hetzel, 1998, IEEE 829&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 54 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;5.4 Craig, 2002&lt;br /&gt;5.5.2 Black, 2001 , IEEE 829&lt;br /&gt;5.6 Black, 2001, IEEE 829&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 55 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;6. Tool support for testing (K2) 80 minutes&lt;br /&gt;Learning objectives for tool support for testing&lt;br /&gt;The objectives identify what you will be able to do following the completion of each module.&lt;br /&gt;6.1 Types of test tool (K2)&lt;br /&gt; Classify different types of test tools according to the test process activities. (K2)&lt;br /&gt; Recognize tools that may help developers in their testing. (K1)&lt;br /&gt;6.2 Effective use of tools: potential benefits and risks (K2)&lt;br /&gt; Summarize the potential benefits and risks of test automation and tool support for testing. (K2)&lt;br /&gt; Recognize that test execution tools can have different scripting techniques, including data&lt;br /&gt;driven and keyword driven. (K1)&lt;br /&gt;6.3 Introducing a tool into an organization (K1)&lt;br /&gt; State the main principles of introducing a tool into an organization. (K1)&lt;br /&gt; State the goals of a proof-of-concept/piloting phase for tool evaluation. (K1)&lt;br /&gt; Recognize that factors other than simply acquiring a tool are required for good tool support.&lt;br /&gt;(K1)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 56 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;6.1 Types of test tool (K2) 45 minutes&lt;br /&gt;Terms&lt;br /&gt;Configuration management tool, coverage measurement tool, debugging tool, driver, dynamic analysis&lt;br /&gt;tool, incident management tool, load testing tool, modeling tool, monitoring tool, performance testing&lt;br /&gt;tool, probe effect, requirements management tool, review process support tool, security tool, static&lt;br /&gt;analysis tool, stress testing tool, stub, test comparator, test data preparation tool, test design tool, test&lt;br /&gt;harness, test execution tool, test management tool, unit test framework tool.&lt;br /&gt;6.1.1 Test tool classification (K2)&lt;br /&gt;There are a number of tools that support different aspects of testing. Tools are classified in this&lt;br /&gt;syllabus according to the testing activities that they support.&lt;br /&gt;Some tools clearly support one activity; others may support more than one activity, but are classified&lt;br /&gt;under the activity with which they are most closely associated. Some commercial tools offer support&lt;br /&gt;for only one type of activity; other commercial tool vendors offer suites or families of tools that provide&lt;br /&gt;support for many or all of these activities.&lt;br /&gt;Testing tools can improve the efficiency of testing activities by automating repetitive tasks. Testing&lt;br /&gt;tools can also improve the reliability of testing by, for example, automating large data comparisons or&lt;br /&gt;simulating behavior.&lt;br /&gt;Some types of test tool can be intrusive in that the tool itself can affect the actual outcome of the test.&lt;br /&gt;For example, the actual timing may be different depending on how you measure it with different&lt;br /&gt;performance tools, or you may get a different measure of code coverage depending on which&lt;br /&gt;coverage tool you use. The consequence of intrusive tools is called the probe effect.&lt;br /&gt;Some tools offer support more appropriate for developers (e.g. during component and component&lt;br /&gt;integration testing). Such tools are marked with “(D)” in the classifications below.&lt;br /&gt;6.1.2 Tool support for management of testing and tests (K1)&lt;br /&gt;Management tools apply to all test activities over the entire software life cycle.&lt;br /&gt;Test management tools&lt;br /&gt;Characteristics of test management tools include:&lt;br /&gt; Support for the management of tests and the testing activities carried out.&lt;br /&gt; Interfaces to test execution tools, defect tracking tools and requirement management tools.&lt;br /&gt; Independent version control or interface with an external configuration management tool.&lt;br /&gt; Support for traceability of tests, test results and incidents to source documents, such as&lt;br /&gt;requirement specifications.&lt;br /&gt; Logging of test results and generation of progress reports.&lt;br /&gt; Quantitative analysis (metrics) related to the tests (e.g. tests run and tests passed) and the&lt;br /&gt;test object (e.g. incidents raised), in order to give information about the test object, and to&lt;br /&gt;control and improve the test process.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 57 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Requirements management tools&lt;br /&gt;Requirements management tools store requirement statements, check for consistency and undefined&lt;br /&gt;(missing) requirements, allow requirements to be prioritized and enable individual tests to be traceable&lt;br /&gt;to requirements, functions and/or features. Traceability may be reported in test management progress&lt;br /&gt;reports. The coverage of requirements, functions and/or features by a set of tests may also be&lt;br /&gt;reported.&lt;br /&gt;Incident management tools&lt;br /&gt;Incident management tools store and manage incident reports, i.e. defects, failures or perceived&lt;br /&gt;problems and anomalies, and support management of incident reports in ways that include:&lt;br /&gt; Facilitating their prioritization.&lt;br /&gt; Assignment of actions to people (e.g. fix or confirmation test).&lt;br /&gt; Attribution of status (e.g. rejected, ready to be tested or deferred to next release).&lt;br /&gt;These tools enable the progress of incidents to be monitored over time, often provide support for&lt;br /&gt;statistical analysis and provide reports about incidents. They are also known as defect tracking tools.&lt;br /&gt;Configuration management tools&lt;br /&gt;Configuration management (CM) tools are not strictly testing tools, but are typically necessary to keep&lt;br /&gt;track of different versions and builds of the software and tests.&lt;br /&gt;Configuration Management tools:&lt;br /&gt; Store information about versions and builds of software and testware.&lt;br /&gt; Enable traceability between testware and software work products and product variants.&lt;br /&gt; Are particularly useful when developing on more than one configuration of the&lt;br /&gt;hardware/software environment (e.g. for different operating system versions, different libraries&lt;br /&gt;or compilers, different browsers or different computers).&lt;br /&gt;6.1.3 Tool support for static testing (K1)&lt;br /&gt;Review process support tools&lt;br /&gt;Review process support tools may store information about review processes, store and communicate&lt;br /&gt;review comments, report on defects and effort, manage references to review rules and/or checklists&lt;br /&gt;and keep track of traceability between documents and source code. They may also provide aid for&lt;br /&gt;online reviews, which is useful if the team is geographically dispersed.&lt;br /&gt;Static analysis tools (D)&lt;br /&gt;Static analysis tools support developers, testers and quality assurance personnel in finding defects&lt;br /&gt;before dynamic testing. Their major purposes include:&lt;br /&gt; The enforcement of coding standards.&lt;br /&gt; The analysis of structures and dependencies (e.g. linked web pages).&lt;br /&gt; Aiding in understanding the code.&lt;br /&gt;Static analysis tools can calculate metrics from the code (e.g. complexity), which can give valuable&lt;br /&gt;information, for example, for planning or risk analysis.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 58 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Modeling tools (D)&lt;br /&gt;Modeling tools are able to validate models of the software. For example, a database model checker&lt;br /&gt;may find defects and inconsistencies in the data model; other modeling tools may find defects in a&lt;br /&gt;state model or an object model. These tools can often aid in generating some test cases based on the&lt;br /&gt;model (see also Test design tools below).&lt;br /&gt;The major benefit of static analysis tools and modeling tools is the cost effectiveness of finding more&lt;br /&gt;defects at an earlier time in the development process. As a result, the development process may&lt;br /&gt;accelerate and improve by having less rework.&lt;br /&gt;6.1.4 Tool support for test specification (K1)&lt;br /&gt;Test design tools&lt;br /&gt;Test design tools generate test inputs or the actual tests from requirements, from a graphical user&lt;br /&gt;interface, from design models (state, data or object) or from code. This type of tool may generate&lt;br /&gt;expected outcomes as well (i.e. may use a test oracle). The generated tests from a state or object&lt;br /&gt;model are useful for verifying the implementation of the model in the software, but are seldom&lt;br /&gt;sufficient for verifying all aspects of the software or system. They can save valuable time and provide&lt;br /&gt;increased thoroughness of testing because of the completeness of the tests that the tool can&lt;br /&gt;generate.&lt;br /&gt;Other tools in this category can aid in supporting the generation of tests by providing structured&lt;br /&gt;templates, sometimes called a test frame, that generate tests or test stubs, and thus speed up the test&lt;br /&gt;design process.&lt;br /&gt;Test data preparation tools (D)&lt;br /&gt;Test data preparation tools manipulate databases, files or data transmissions to set up test data to be&lt;br /&gt;used during the execution of tests. A benefit of these tools is to ensure that live data transferred to a&lt;br /&gt;test environment is made anonymous, for data protection.&lt;br /&gt;6.1.5 Tool support for test execution and logging (K1)&lt;br /&gt;Test execution tools&lt;br /&gt;Test execution tools enable tests to be executed automatically, or semi-automatically, using stored&lt;br /&gt;inputs and expected outcomes, through the use of a scripting language. The scripting language makes&lt;br /&gt;it possible to manipulate the tests with limited effort, for example, to repeat the test with different data&lt;br /&gt;or to test a different part of the system with similar steps. Generally these tools include dynamic&lt;br /&gt;comparison features and provide a test log for each test run.&lt;br /&gt;Test execution tools can also be used to record tests, when they may be referred to as capture&lt;br /&gt;playback tools. Capturing test inputs during exploratory testing or unscripted testing can be useful in&lt;br /&gt;order to reproduce and/or document a test, for example, if a failure occurs.&lt;br /&gt;Test harness/unit test framework tools (D)&lt;br /&gt;A test harness may facilitate the testing of components or part of a system by simulating the&lt;br /&gt;environment in which that test object will run. This may be done either because other components of&lt;br /&gt;that environment are not yet available and are replaced by stubs and/or drivers, or simply to provide a&lt;br /&gt;predictable and controllable environment in which any faults can be localized to the object under test.&lt;br /&gt;A framework may be created where part of the code, object, method or function, unit or component&lt;br /&gt;can be executed, by calling the object to be tested and/or giving feedback to that object. It can do this&lt;br /&gt;by providing artificial means of supplying input to the test object, and/or by supplying stubs to take&lt;br /&gt;output from the object, in place of the real output targets.&lt;br /&gt;Test harness tools can also be used to provide an execution framework in middleware, where&lt;br /&gt;languages, operating systems or hardware must be tested together.&lt;br /&gt;They may be called unit test framework tools when they have a particular focus on the component test&lt;br /&gt;level. This type of tool aids in executing the component tests in parallel with building the code.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 59 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Test comparators&lt;br /&gt;Test comparators determine differences between files, databases or test results. Test execution tools&lt;br /&gt;typically include dynamic comparators, but post-execution comparison may be done by a separate&lt;br /&gt;comparison tool. A test comparator may use a test oracle, especially if it is automated.&lt;br /&gt;Coverage measurement tools (D)&lt;br /&gt;Coverage measurement tools can be either intrusive or non-intrusive depending on the measurement&lt;br /&gt;techniques used, what is measured and the coding language. Code coverage tools measure the&lt;br /&gt;percentage of specific types of code structure that have been exercised (e.g. statements, branches or&lt;br /&gt;decisions, and module or function calls). These tools show how thoroughly the measured type of&lt;br /&gt;structure has been exercised by a set of tests.&lt;br /&gt;Security tools&lt;br /&gt;Security tools check for computer viruses and denial of service attacks. A firewall, for example, is not&lt;br /&gt;strictly a testing tool, but may be used in security testing. Other security tools stress the system by&lt;br /&gt;searching specific vulnerabilities of the system.&lt;br /&gt;6.1.6 Tool support for performance and monitoring (K1)&lt;br /&gt;Dynamic analysis tools (D)&lt;br /&gt;Dynamic analysis tools find defects that are evident only when software is executing, such as time&lt;br /&gt;dependencies or memory leaks. They are typically used in component and component integration&lt;br /&gt;testing, and when testing middleware.&lt;br /&gt;Performance testing/load testing/stress testing tools&lt;br /&gt;Performance testing tools monitor and report on how a system behaves under a variety of simulated&lt;br /&gt;usage conditions. They simulate a load on an application, a database, or a system environment, such&lt;br /&gt;as a network or server. The tools are often named after the aspect of performance that it measures,&lt;br /&gt;such as load or stress, so are also known as load testing tools or stress testing tools. They are often&lt;br /&gt;based on automated repetitive execution of tests, controlled by parameters.&lt;br /&gt;Monitoring tools&lt;br /&gt;Monitoring tools are not strictly testing tools but provide information that can be used for testing&lt;br /&gt;purposes and which is not available by other means.&lt;br /&gt;Monitoring tools continuously analyze, verify and report on usage of specific system resources, and&lt;br /&gt;give warnings of possible service problems. They store information about the version and build of the&lt;br /&gt;software and testware, and enable traceability.&lt;br /&gt;6.1.7 Tool support for specific application areas (K1)&lt;br /&gt;Individual examples of the types of tool classified above can be specialized for use in a particular type&lt;br /&gt;of application. For example, there are performance testing tools specifically for web-based&lt;br /&gt;applications, static analysis tools for specific development platforms, and dynamic analysis tools&lt;br /&gt;specifically for testing security aspects.&lt;br /&gt;Commercial tool suites may target specific application areas (e.g. embedded systems).&lt;br /&gt;6.1.8 Tool support using other tools (K1)&lt;br /&gt;The test tools listed here are not the only types of tools used by testers – they may also use&lt;br /&gt;spreadsheets, SQL, resource or debugging tools (D), for example.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 60 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;6.2 Effective use of tools: potential benefits and&lt;br /&gt;risks (K2)&lt;br /&gt;20 minutes&lt;br /&gt;Terms&lt;br /&gt;Data-driven (testing), keyword-driven (testing), scripting language.&lt;br /&gt;6.2.1 Potential benefits and risks of tool support for testing (for all&lt;br /&gt;tools) (K2)&lt;br /&gt;Simply purchasing or leasing a tool does not guarantee success with that tool. Each type of tool may&lt;br /&gt;require additional effort to achieve real and lasting benefits. There are potential benefit opportunities&lt;br /&gt;with the use of tools in testing, but there are also risks.&lt;br /&gt;Potential benefits of using tools include:&lt;br /&gt; Repetitive work is reduced (e.g. running regression tests, re-entering the same test data, and&lt;br /&gt;checking against coding standards).&lt;br /&gt; Greater consistency and repeatability (e.g. tests executed by a tool, and tests derived from&lt;br /&gt;requirements).&lt;br /&gt; Objective assessment (e.g. static measures, coverage and system behavior).&lt;br /&gt; Ease of access to information about tests or testing (e.g. statistics and graphs about test&lt;br /&gt;progress, incident rates and performance).&lt;br /&gt;Risks of using tools include:&lt;br /&gt; Unrealistic expectations for the tool (including functionality and ease of use).&lt;br /&gt; Underestimating the time, cost and effort for the initial introduction of a tool (including training&lt;br /&gt;and external expertise).&lt;br /&gt; Underestimating the time and effort needed to achieve significant and continuing benefits from&lt;br /&gt;the tool (including the need for changes in the testing process and continuous improvement of&lt;br /&gt;the way the tool is used).&lt;br /&gt; Underestimating the effort required to maintain the test assets generated by the tool.&lt;br /&gt; Over-reliance on the tool (replacement for test design or where manual testing would be&lt;br /&gt;better).&lt;br /&gt;6.2.2 Special considerations for some types of tool (K1)&lt;br /&gt;Test execution tools&lt;br /&gt;Test execution tools replay scripts designed to implement tests that are stored electronically. This type&lt;br /&gt;of tool often requires significant effort in order to achieve significant benefits.&lt;br /&gt;Capturing tests by recording the actions of a manual tester seems attractive, but this approach does&lt;br /&gt;not scale to large numbers of automated tests. A captured script is a linear representation with specific&lt;br /&gt;data and actions as part of each script. This type of script may be unstable when unexpected events&lt;br /&gt;occur.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 61 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;A data-driven approach separates out the test inputs (the data), usually into a spreadsheet, and uses&lt;br /&gt;a more generic script that can read the test data and perform the same test with different data. Testers&lt;br /&gt;who are not familiar with the scripting language can enter test data for these predefined scripts.&lt;br /&gt;In a keyword-driven approach, the spreadsheet contains keywords describing the actions to be taken&lt;br /&gt;(also called action words), and test data. Testers (even if they are not familiar with the scripting&lt;br /&gt;language) can then define tests using the keywords, which can be tailored to the application being&lt;br /&gt;tested.&lt;br /&gt;Technical expertise in the scripting language is needed for all approaches (either by testers or by&lt;br /&gt;specialists in test automation).&lt;br /&gt;Whichever scripting technique is used, the expected results for each test need to be stored for later&lt;br /&gt;comparison.&lt;br /&gt;Performance testing tools&lt;br /&gt;Performance testing tools need someone with expertise in performance testing to help design the&lt;br /&gt;tests and interpret the results.&lt;br /&gt;Static analysis tools&lt;br /&gt;Static analysis tools applied to source code can enforce coding standards, but if applied to existing&lt;br /&gt;code may generate a lot of messages. Warning messages do not stop the code being translated into&lt;br /&gt;an executable program, but should ideally be addressed so that maintenance of the code is easier in&lt;br /&gt;the future. A gradual implementation with initial filters to exclude some messages would be an&lt;br /&gt;effective approach.&lt;br /&gt;Test management tools&lt;br /&gt;Test management tools need to interface with other tools or spreadsheets in order to produce&lt;br /&gt;information in the best format for the current needs of the organization. The reports need to be&lt;br /&gt;designed and monitored so that they provide benefit.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 62 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;6.3 Introducing a tool into an organization (K1) 15 minutes&lt;br /&gt;Terms&lt;br /&gt;No specific terms.&lt;br /&gt;Background&lt;br /&gt;The main principles of introducing a tool into an organization include:&lt;br /&gt; Assessment of organizational maturity, strengths and weaknesses and identification of&lt;br /&gt;opportunities for an improved test process supported by tools.&lt;br /&gt; Evaluation against clear requirements and objective criteria.&lt;br /&gt; A proof-of-concept to test the required functionality and determine whether the product meets&lt;br /&gt;its objectives.&lt;br /&gt; Evaluation of the vendor (including training, support and commercial aspects).&lt;br /&gt; Identification of internal requirements for coaching and mentoring in the use of the tool.&lt;br /&gt;The proof-of-concept could be done in a small-scale pilot project, making it possible to minimize&lt;br /&gt;impacts if major hurdles are found and the pilot is not successful.&lt;br /&gt;A pilot project has the following objectives:&lt;br /&gt; Learn more detail about the tool.&lt;br /&gt; See how the tool would fit with existing processes and practices, and how they would need to&lt;br /&gt;change.&lt;br /&gt; Decide on standard ways of using, managing, storing and maintaining the tool and the test&lt;br /&gt;assets (e.g. deciding on naming conventions for files and tests, creating libraries and defining&lt;br /&gt;the modularity of test suites).&lt;br /&gt; Assess whether the benefits will be achieved at reasonable cost.&lt;br /&gt;Success factors for the deployment of the tool within an organization include:&lt;br /&gt; Rolling out the tool to the rest of the organization incrementally.&lt;br /&gt; Adapting and improving processes to fit with the use of the tool.&lt;br /&gt; Providing training and coaching/mentoring for new users.&lt;br /&gt; Defining usage guidelines.&lt;br /&gt; Implementing a way to learn lessons from tool use.&lt;br /&gt; Monitoring tool use and benefits.&lt;br /&gt;References&lt;br /&gt;6.2.2 Buwalda, 2001, Fewster, 1999&lt;br /&gt;6.3 Fewster, 1999&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 63 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;7. References&lt;br /&gt;Standards&lt;br /&gt;ISTQB Glossary of terms used in Software Testing Version 1.0&lt;br /&gt;[CMMI] Chrissis, M.B., Konrad, M. and Shrum, S. (2004) CMMI, Guidelines for Process Integration&lt;br /&gt;and Product Improvement, Addison Wesley: Reading, MA&lt;br /&gt;See section 2.1&lt;br /&gt;[IEEE 829] IEEE Std 829™ (1998/2005) IEEE Standard for Software Test Documentation (currently&lt;br /&gt;under revision)&lt;br /&gt;See sections 2.3, 2.4, 4.1, 5.2, 5.3, 5.5, 5.6&lt;br /&gt;[IEEE 1028] IEEE Std 1028™ (1997) IEEE Standard for Software Reviews&lt;br /&gt;See section 3.2&lt;br /&gt;[IEEE 12207] IEEE 12207/ISO/IEC 12207-1996, Software life cycle processes&lt;br /&gt;See section 2.1&lt;br /&gt;[ISO 9126] ISO/IEC 9126-1:2001, Software Engineering – Software Product Quality&lt;br /&gt;See section 2.3&lt;br /&gt;Books&lt;br /&gt;[Beizer, 1990] Beizer, B. (1990) Software Testing Techniques (2nd edition), Van Nostrand Reinhold:&lt;br /&gt;Boston&lt;br /&gt;See sections 1.2, 1.3, 2.3, 4.2, 4.3, 4.4, 4.6&lt;br /&gt;[Black, 2001] Black, R. (2001) Managing the Testing Process (2nd edition), John Wiley &amp; Sons: New&lt;br /&gt;York&lt;br /&gt;See sections 1.1, 1.2, 1.4, 1.5, 2.3, 2.4, 5.1, 5.2, 5.3, 5.5, 5.6&lt;br /&gt;[Buwalda, 2001] Buwalda, H. et al. (2001) Integrated Test Design and Automation, Addison Wesley:&lt;br /&gt;Reading, MA&lt;br /&gt;See section 6.2&lt;br /&gt;[Copeland, 2004] Copeland, L. (2004) A Practitioner’s Guide to Software Test Design, Artech House:&lt;br /&gt;Norwood, MA&lt;br /&gt;See sections 2.2, 2.3, 4.2, 4.3, 4.4, 4.6&lt;br /&gt;[Craig, 2002] Craig, Rick D. and Jaskiel, Stefan P. (2002) Systematic Software Testing, Artech House:&lt;br /&gt;Norwood, MA&lt;br /&gt;See sections 1.4.5, 2.1.3, 2.4, 4.1, 5.2.5, 5.3, 5.4&lt;br /&gt;[Fewster, 1999] Fewster, M. and Graham, D. (1999) Software Test Automation, Addison Wesley:&lt;br /&gt;Reading, MA&lt;br /&gt;See sections 6.2, 6.3&lt;br /&gt;[Gilb, 1993]: Gilb, Tom and Graham, Dorothy (1993) Software Inspection, Addison Wesley: Reading,&lt;br /&gt;MA&lt;br /&gt;See sections 3.2.2, 3.2.4&lt;br /&gt;[Hetzel, 1988] Hetzel, W. (1988) Complete Guide to Software Testing, QED: Wellesley, MA&lt;br /&gt;See sections 1.3, 1.4, 1.5, 2.1, 2.2, 2.3, 2.4, 4.1, 5.1, 5.3&lt;br /&gt;[Kaner, 2002] Kaner, C., Bach, J. and Pettticord, B. (2002) Lessons Learned in Software Testing,&lt;br /&gt;John Wiley &amp;amp; Sons:&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 64 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;See sections 1.1, 4.5, 5.2&lt;br /&gt;[Myers 1979] Myers, Glenford J. (1979) The Art of Software Testing, John Wiley &amp; Sons:&lt;br /&gt;See sections 1.2, 1.3, 2.2, 4.3&lt;br /&gt;[van Veenendaal, 2004] van Veenendaal, E. (ed.) (2004) The Testing Practitioner (Chapters 6, 8, 10),&lt;br /&gt;UTN Publishers: The Netherlands&lt;br /&gt;See sections 3.2, 3.3&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 65 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Appendix A – Syllabus background&lt;br /&gt;History of this document&lt;br /&gt;This document was prepared during 2004–2005 by a working party comprising members appointed by&lt;br /&gt;the International Software Testing Qualifications Board (ISTQB). It was initially reviewed by a selected&lt;br /&gt;review panel, and then by representatives drawn from the international software testing community.&lt;br /&gt;The rules used in the production of this document are shown in Appendix C.&lt;br /&gt;This document is the syllabus for the International Foundation Certificate in Software Testing, the first&lt;br /&gt;level international qualification approved by the ISTQB (www.istqb.org). At the time of writing (2005),&lt;br /&gt;ISTQB membership includes Austria, Denmark, Finland, France, Germany, India, Israel, Japan,&lt;br /&gt;Korea, Norway, Poland, Portugal, Spain, Sweden, Switzerland, The Netherlands, UK and USA.&lt;br /&gt;Objectives of the Foundation Certificate qualification&lt;br /&gt; To gain recognition for testing as an essential and professional software engineering&lt;br /&gt;specialization.&lt;br /&gt; To provide a standard framework for the development of testers' careers.&lt;br /&gt; To enable professionally qualified testers to be recognized by employers, customers and&lt;br /&gt;peers, and to raise the profile of testers.&lt;br /&gt; To promote consistent and good testing practices within all software engineering disciplines.&lt;br /&gt; To identify testing topics that are relevant and of value to industry.&lt;br /&gt; To enable software suppliers to hire certified testers and thereby gain commercial advantage&lt;br /&gt;over their competitors by advertising their tester recruitment policy.&lt;br /&gt; To provide an opportunity for testers and those with an interest in testing to acquire an&lt;br /&gt;internationally recognized qualification in the subject.&lt;br /&gt;Objectives of the international qualification (adapted from ISTQB meeting&lt;br /&gt;at Sollentuna, November 2001)&lt;br /&gt; To be able to compare testing skills across different countries.&lt;br /&gt; To enable testers to move across country borders more easily.&lt;br /&gt; To enable multi-national/international projects to have a common understanding of testing&lt;br /&gt;issues.&lt;br /&gt; To increase the number of qualified testers worldwide.&lt;br /&gt; To have more impact/value as an internationally based initiative than from any country-specific&lt;br /&gt;approach.&lt;br /&gt; To develop a common international body of understanding and knowledge about testing&lt;br /&gt;through the syllabus and terminology, and to increase the level of knowledge about testing for&lt;br /&gt;all participants.&lt;br /&gt; To promote testing as a profession in more countries.&lt;br /&gt; To enable testers to gain a recognized qualification in their native language.&lt;br /&gt; To enable sharing of knowledge and resources across countries.&lt;br /&gt; To provide international recognition of testers and this qualification due to participation from&lt;br /&gt;many countries.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 66 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Entry requirements for this qualification&lt;br /&gt;The entry criterion for taking the ISTQB Foundation Certificate in Software Testing examination is that&lt;br /&gt;candidates have an interest in software testing. However, it is strongly recommended that candidates&lt;br /&gt;also:&lt;br /&gt; Have at least a minimal background in either software development or software testing, such&lt;br /&gt;as six months experience as a system or user acceptance tester or as a software developer.&lt;br /&gt; Take a course that has been accredited to ISTQB standards (by one of the ISTQB-recognized&lt;br /&gt;national boards).&lt;br /&gt;Background and history of the Foundation Certificate in Software Testing&lt;br /&gt;The independent certification of software testers began in the UK with the British Computer Society's&lt;br /&gt;Information Systems Examination Board (ISEB), when a Software Testing Board was set up in 1998&lt;br /&gt;(www.bcs.org.uk/iseb). In 2002, ASQF in Germany began to support a German tester qualification&lt;br /&gt;scheme (www.asqf.de). This syllabus is based on the ISEB and ASQF syllabi; it includes reorganized,&lt;br /&gt;updated and some new content, and the emphasis is directed at topics that will provide the most&lt;br /&gt;practical help to testers.&lt;br /&gt;An existing Foundation Certificate in Software Testing (e.g. from ISEB, ASQF or an ISTQB-recognized&lt;br /&gt;national board) awarded before this International Certificate was released, will be deemed to be&lt;br /&gt;equivalent to the International Certificate. The Foundation Certificate does not expire and does not&lt;br /&gt;need to be renewed. The date it was awarded is shown on the Certificate.&lt;br /&gt;Within each participating country, local aspects are controlled by a national ISTQB-recognized&lt;br /&gt;Software Testing Board. Duties of national boards are specified by the ISTQB, but are implemented&lt;br /&gt;within each country. The duties of the country boards are expected to include accreditation of training&lt;br /&gt;providers and the setting of exams.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 67 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Appendix B – Learning objectives/level of&lt;br /&gt;knowledge&lt;br /&gt;The following learning objectives are defined as applying to this syllabus. Each topic in the syllabus&lt;br /&gt;will be examined according to the learning objective for it.&lt;br /&gt;Level 1: Remember (K1)&lt;br /&gt;The candidate will recognize, remember and recall a term or concept.&lt;br /&gt;Example&lt;br /&gt;Can recognize the definition of “failure” as:&lt;br /&gt; “non-delivery of service to an end user or any other stakeholder” or&lt;br /&gt; “actual deviation of the component or system from its expected delivery, service or result”.&lt;br /&gt;Level 2: Understand (K2)&lt;br /&gt;The candidate can select the reasons or explanations for statements related to the topic, and can&lt;br /&gt;summarize, compare, classify and give examples for the testing concept.&lt;br /&gt;Examples&lt;br /&gt;Can explain the reason why tests should be designed as early as possible:&lt;br /&gt; To find defects when they are cheaper to remove.&lt;br /&gt; To find the most important defects first.&lt;br /&gt;Can explain the similarities and differences between integration and system testing:&lt;br /&gt; Similarities: testing more than one component, and can test non-functional aspects.&lt;br /&gt; Differences: integration testing concentrates on interfaces and interactions, and system testing&lt;br /&gt;concentrates on whole-system aspects, such as end to end processing.&lt;br /&gt;Level 3: Apply (K3)&lt;br /&gt;The candidate can select the correct application of a concept or technique and apply it to a given&lt;br /&gt;context.&lt;br /&gt;Example&lt;br /&gt; Can identify boundary values for valid and invalid partitions.&lt;br /&gt; Can select test cases from a given state transition diagram in order to cover all transitions.&lt;br /&gt;Reference&lt;br /&gt;(For the cognitive levels of learning objectives)&lt;br /&gt;Anderson, L. W. and Krathwohl, D. R. (eds) (2001) A Taxonomy for Learning, Teaching, and&lt;br /&gt;Assessing: A Revision of Bloom's Taxonomy of Educational Objectives, Allyn &amp;amp; Bacon:&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 68 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Appendix C – Rules applied to the ISTQB&lt;br /&gt;Foundation syllabus&lt;br /&gt;The rules listed here were used in the development and review of this syllabus. (A “TAG” is shown&lt;br /&gt;after each rule as a shorthand abbreviation of the rule.)&lt;br /&gt;General rules&lt;br /&gt;SG1. The syllabus should be understandable and absorbable by people with 0 to 6 months (or more)&lt;br /&gt;experience in testing. (6-MONTH)&lt;br /&gt;SG2. The syllabus should be practical rather than theoretical. (PRACTICAL)&lt;br /&gt;SG3. The syllabus should be clear and unambiguous to its intended readers. (CLEAR)&lt;br /&gt;SG4. The syllabus should be understandable to people from different countries, and easily&lt;br /&gt;translatable into different languages. (TRANSLATABLE)&lt;br /&gt;SG5. The syllabus should use American English. (AMERICAN-ENGLISH)&lt;br /&gt;Current content&lt;br /&gt;SC1. The syllabus should include recent testing concepts and should reflect current best practice in&lt;br /&gt;software testing where this is generally agreed. The syllabus is subject to review every three to five&lt;br /&gt;years. (RECENT)&lt;br /&gt;SC2. The syllabus should minimize time-related issues, such as current market conditions, to enable it&lt;br /&gt;to have a shelf life of three to five years. (SHELF-LIFE).&lt;br /&gt;Learning Objectives&lt;br /&gt;LO1. Learning objectives should distinguish between items to be recognized/remembered (cognitive&lt;br /&gt;level K1), items the candidate should understand conceptually (K2) and those which the candidate&lt;br /&gt;should be able to practice/use (K3). (KNOWLEDGE-LEVEL)&lt;br /&gt;LO2. The description of the content should be consistent with the learning objectives. (LOCONSISTENT)&lt;br /&gt;LO3. To illustrate the learning objectives, sample exam questions for each major section should be&lt;br /&gt;issued along with the syllabus. (LO-EXAM)&lt;br /&gt;Overall structure&lt;br /&gt;ST1. The structure of the syllabus should be clear and allow cross-referencing to and from other parts,&lt;br /&gt;from exam questions and from other relevant documents. (CROSS-REF)&lt;br /&gt;ST2. Overlap between sections of the syllabus should be minimized. (OVERLAP)&lt;br /&gt;ST3. Each section of the syllabus should have the same structure. (STRUCTURE-CONSISTENT)&lt;br /&gt;ST4. The syllabus should contain version, date of issue and page number on every page. (VERSION)&lt;br /&gt;ST5. The syllabus should include a guideline for the amount of time to be spent in each section (to&lt;br /&gt;reflect the relative importance of each topic). (TIME-SPENT)&lt;br /&gt;References&lt;br /&gt;SR1. Sources and references will be given for concepts in the syllabus to help training providers find&lt;br /&gt;out more information about the topic. (REFS)&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 69 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;SR2. Where there are not readily identified and clear sources, more detail should be provided in the&lt;br /&gt;syllabus. For example, definitions are in the Glossary, so only the terms are listed in the syllabus.&lt;br /&gt;(NON-REF DETAIL)&lt;br /&gt;Sources of information&lt;br /&gt;Terms used in the syllabus are defined in ISTQB’s Glossary of terms used in Software Testing. A&lt;br /&gt;version of the Glossary is available from ISTQB.&lt;br /&gt;A list of recommended books on software testing is also issued in parallel with this syllabus. The main&lt;br /&gt;book list is part of the References section.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;br /&gt;Version 2005 Page 70 of 73 July 1st 2005&lt;br /&gt;© International Software Testing Qualifications Board&lt;br /&gt;Appendix D – Notice to training providers&lt;br /&gt;Each major subject heading in the syllabus is assigned an allocated time in minutes. The purpose of&lt;br /&gt;this is both to give guidance on the relative proportion of time to be allocated to each section of an&lt;br /&gt;accredited course, and to give an approximate minimum time for the teaching of each section.&lt;br /&gt;Training providers may spend more time than is indicated and candidates may spend more time again&lt;br /&gt;in reading and research. A course curriculum does not have to follow the same order as the syllabus.&lt;br /&gt;The syllabus contains references to established standards, which must be used in the preparation of&lt;br /&gt;training material. Each standard used must be the version quoted in the current version of this&lt;br /&gt;syllabus. Other publications, templates or standards not referenced in this syllabus may also be used&lt;br /&gt;and referenced, but will not be examined.&lt;br /&gt;The specific areas of the syllabus requiring practical exercises are as follows:&lt;br /&gt;4.3 Specification-based or black-box techniques&lt;br /&gt;Practical work (short exercises) should be included covering the four techniques: equivalence&lt;br /&gt;partitioning, boundary value analysis, decision table testing and state transition testing. The lectures&lt;br /&gt;and exercises relating to these techniques should be based on the references provided for each&lt;br /&gt;technique.&lt;br /&gt;4.4 Structure-based or white-box techniques&lt;br /&gt;Practical work (short exercises) should be included to assess whether or not a set of tests achieve&lt;br /&gt;100% statement and 100% decision coverage, as well as to design test cases for given control flows.&lt;br /&gt;5.6 Incident management&lt;br /&gt;Practical work (short exercise) should be included to cover the writing and/or assessment of an&lt;br /&gt;incident report.&lt;br /&gt;Certified Tester&lt;br /&gt;Foundation Level Syllabus&lt;br /&gt;International&lt;br /&gt;Software Testing&lt;br /&gt;Qualifications Board&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-7388313622165618857?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/7388313622165618857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=7388313622165618857' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7388313622165618857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/7388313622165618857'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2007/02/istqb-syllabus.html' title='ISTQB Syllabus'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4499103662049903393.post-8598427106664305298</id><published>2007-02-15T20:57:00.000-08:00</published><updated>2007-02-15T20:58:47.330-08:00</updated><title type='text'>Automated Testing Lifecycle Methodology</title><content type='html'>Introducing the ATLM&lt;br /&gt;Software project managers and software developers building today's applications face the challenge of doing so within an ever-shrinking schedule and with minimal resources. As part of their attempt to do more with less, organizations want to test software adequately, but as quickly and thoroughly as possible. To accomplish this goal, organizations are turning to automated testing.&lt;br /&gt;Faced with this reality and realizing that many tests cannot be executed manually, such as simulating 1,000 virtual users for volume testing, software professionals are introducing automated testing to their projects. But these software professionals may not know what's involved in introducing an automated test tool to a software project, and they may be unfamiliar with the breadth of application that automated test tools have today. The Automated Testing Lifecycle Methodology (ATLM), depicted in &lt;a href="javascript:popUp("&gt;Figure 1&lt;/a&gt;, provides guidance in these areas.&lt;br /&gt;&lt;a href="javascript:popUp("&gt;Figure 1&lt;/a&gt; The Automated Test Lifecycle Methodology (ATLM).&lt;br /&gt;By using the systematic approach outlined within the ATLM, organizations can organize and execute test activities in such a way as to maximize test coverage within the limits of testing resources. This structured test methodology involves a multi-stage process, supporting the detailed and interrelated activities that are required to introduce and utilize an automated test tool:&lt;br /&gt;·         Develop test design.&lt;br /&gt;·         Develop and execute test cases.&lt;br /&gt;·         Develop and manage test data and the test environment.&lt;br /&gt;·         Document, track, and obtain closure on issue/trouble reports.&lt;br /&gt;Clearly, the emphasis on automated testing represents a paradigm change for the software industry. This change doesn't simply involve the application of tools and the performance of test automation. Rather, it blankets the entire test lifecycle and the system development lifecycle. The ATLM implementation takes place in parallel with the system development lifecycle. For software professionals to make a successful leap to automated testing, they must embrace structured approaches to testing. The ATLM is revolutionary in the fact that it promulgates a new structured, building-block approach to the entire test lifecycle, which enables software test professionals to approach software testing in a methodical and repeatable fashion.&lt;br /&gt;The growth of automated test capability has stemmed in large part from the growing popularity of the iterative and incremental development lifecycle, a software development methodology that focuses on minimizing the development schedule while providing frequent, incremental software builds. The objective of this incremental and iterative development is to engage the user and the test team early throughout the design and development of each build in order to refine the software, thereby ensuring that it more closely reflects the needs and preferences of the user and thus addressing the riskiest aspects of development in early builds.&lt;br /&gt;In this environment of continual changes and additions to the software through each software build, software testing itself takes on an iterative nature. Each new build is accompanied by a considerable number of new tests as well as rework to existing test scripts, just as there is rework on previously released software modules. Given the continual changes and additions to software applications, especially Web applications, automated software testing becomes an important control mechanism to ensure accuracy and stability of the software through each build.&lt;br /&gt;The ATLM, invoked to support testing efforts involving automated test tools, incorporates a multi-stage process. The methodology supports the detailed and interrelated activities that are required to decide whether to acquire an automated testing tool. The methodology includes the process of how to introduce and utilize an automated test tool, covers test development and test design, and addresses test execution and management. The methodology also supports the development and management of test data and the test environment, and addresses test documentation to include problem reports.&lt;br /&gt;The ATLM methodology represents a structured approach, which depicts a process with which to approach and execute testing. This structured approach is necessary to help steer the test team away from these common test program mistakes:&lt;br /&gt;·         Implementing the use of an automated test tool without a testing process in place, resulting in an ad hoc, non-repeatable, non-measurable test program.&lt;br /&gt;·         Implementing a test design without following any design standards, resulting in the creation of test scripts that are not repeatable and therefore not reusable for incremental software builds.&lt;br /&gt;·         Attempting to automate 100% of test requirements, when tools or in-house–developed automated test harnesses do not support automation of all tests required.&lt;br /&gt;·         Using the wrong tool or developing a too-elaborate in-house test harness.&lt;br /&gt;·         Initiating test tool implementation too late in the application-development lifecycle—not allowing sufficient time for tool setup and test tool introduction process (learning curve).&lt;br /&gt;·         Initiating test engineer involvement too late in the application-development lifecycle, resulting in poor understanding of the application and system design, which results in incomplete testing.&lt;br /&gt;The Automated Test Lifecycle Methodology (ATLM) comprises six primary processes or components:&lt;br /&gt;1.        Decision to Automate Testing&lt;br /&gt;2.        Test Tool Acquisition&lt;br /&gt;3.        Automated Testing Introduction Process&lt;br /&gt;4.        Test Planning, Design, and Development&lt;br /&gt;5.        Execution and Management of Tests&lt;br /&gt;6.        Test Program Review and Assessment&lt;br /&gt;The following sections describe each primary process, as well as the subordinate processes contained within each primary process.&lt;br /&gt;Phase 1: Decision to Automate Testing&lt;br /&gt;The decision to automate testing represents the first phase of the ATLM. This phase covers the entire process that goes into the automated testing decision. During this phase, it's important for the test team to manage automated testing expectations and to outline the potential benefits of automated testing when implemented correctly. A test tool proposal needs to be outlined, which will be helpful in acquiring management support.&lt;br /&gt;Overcoming False Expectations for Automated Testing&lt;br /&gt;While it has been proven that automated testing is valuable and can produce a successful return on investment, there isn't always an immediate payback on investment. It's important to address some of the misconceptions that persist in the software industry and to manage the automated testing utopia. Following is a list of just a few of the misconceptions that need to be addressed. People often see test automation as a silver bullet; when they find that test automation requires a significant short-term investment of time and energy to achieve a long-term return on investment (ROI) of faster and cheaper regression testing (for example), the testing tool often becomes "shelfware." This is why it's important to manage expectations in order to introduce automated testing correctly into a project.&lt;br /&gt;Automatic Test Plan Generation&lt;br /&gt;Currently, there is no commercially available tool that can automatically create a comprehensive test plan while also supporting test design and execution.&lt;br /&gt;Throughout a software test career, the test engineer can expect to witness test tool demonstrations and review an abundant amount of test tool literature. Often the test engineer will be asked to stand before one or more senior managers to give a test tool functionality overview. As always, the presenter must bear in mind the audience. In this case, the audience may represent individuals with just enough technical knowledge to make them enthusiastic about automated testing, while unaware of the complexity involved with an automated test effort. Specifically, the managers may have obtained secondhand information about automated test tools, and may have reached the wrong interpretation of the actual capability of automated test tools.&lt;br /&gt;What the audience at the management presentation may be waiting to hear is that the tool you're proposing automatically develops the test plan, designs and creates the test procedures, executes all the test procedures, and analyzes the results automatically. Meanwhile, you start out the presentation by informing the group that automated test tools should be viewed as enhancements to manual testing, and that automated test tools will not automatically develop the test plan, design and create the test procedures, or execute the test procedures.&lt;br /&gt;Shortly into the presentation and after several management questions, it becomes very apparent just how much of a divide exists between the reality of the test tool capabilities and the perceptions of the individuals in the audience. The term automated test tool seems to bring with it a great deal of wishful thinking that's not closely aligned with reality. An automated test tool will not replace the human factor necessary for testing a product. The proficiencies of test engineers and other quality assurance experts will still be needed to keep the test machinery running. A test tool can be viewed as an additional part of the machinery that supports the release of a good product.&lt;br /&gt;One Test Tool Fits All&lt;br /&gt;Currently, no single test tool exists that can be used to support all operating system environments.&lt;br /&gt;Generally, a single test tool will not fulfill all the testing requirements for an organization. Consider the experience of one test engineer encountering such a situation. The test engineer was asked by a manager to find a test tool that could be used to automate the testing of all the department's applications. The department was using various technologies including mainframe computers and Sun workstations; operating systems such as Windows 3.1, Windows 95, Windows NT, and Windows 2000; programming languages such as Visual C++ and Visual Basic; other client/server technologies; and Web technologies such as DHTML, XML, ASP, and so on.&lt;br /&gt;After conducting a tool evaluation, the test engineer determined that the tool of choice was not compatible with the Visual C++ third-party add-ons (in this case, Stingray grids). Another tool had to be brought in that was compatible with this specific application.&lt;br /&gt;Immediate Reduction in Schedule&lt;br /&gt;An automated test tool will not immediately minimize the testing schedule.&lt;br /&gt;Another automated test misconception is the expectation that the use of an automated testing tool on a new project will immediately minimize the test schedule. The testing schedule will not experience the anticipated decrease at first, and an allowance for schedule increase is required when initially introducing an automated test tool. This is due to the fact that when rolling out an automated test tool, the current testing process has to be augmented or an entirely new testing process has to be developed and implemented. The entire test team—and possibly the development team—needs to become familiar with this new automated testing process (such as ATLM) and needs to follow it. Once an automatic testing process has been established and effectively implemented, the project can expect to experience gains in productivity and turnaround time that have a positive effect on schedule and cost.&lt;br /&gt;Benefits of Automated Testing&lt;br /&gt;The previous discussion points out and clarifies some of the false automated testing expectations that exist. The test engineer will also need to be able to elaborate on the true benefits of automated testing, when automated testing is implemented correctly and a process is followed. The test engineer must evaluate whether potential benefits fit required improvement criteria and whether the pursuit of automated testing on the project is still a logical fit, given the organizational needs. There are three significant automated test benefits (in combination with manual testing):&lt;br /&gt;·         Producing a reliable system.&lt;br /&gt;·         Improving the quality of the test effort.&lt;br /&gt;·         Reducing test effort and minimizing schedule.&lt;br /&gt;Many return on investment case studies have been done with regard to the implementation of automated testing. One example is a research effort conducted by &lt;a href="http://www.imbus.de/"&gt;imbus GmbH&lt;/a&gt;. They conducted a test automation value study in order to collect test automation measurements with the purpose of studying the benefits of test automation versus the implementation of manual test methods. Their research determined that the breakeven point of automated testing is on average at 2.03 test runs. (T. Linz and M. Daigl, "GUI Testing Made Painless: Implementation and Results of the ESSI Project Number 24306," 1998.)&lt;br /&gt;Acquiring Management Support&lt;br /&gt;Whenever an organization tries to adopt a new technology, they encounter a significant effort when determining how to apply it to their needs. Even with completed training, organizations wrestle with time-consuming false starts before they become capable with the new technology. For the test team interested in implementing automated test tools, the challenge is how to best present the case for a new test automation technology and its implementation to the management team.&lt;br /&gt;Test engineers need to influence management's expectations for the use of automated testing on projects. Test engineers can help to manage expectations of others in the organization by forwarding helpful information to the management staff. Bringing up test tool issues during strategy and planning meetings can also help develop better understanding of test tool capabilities for everyone involved on a project or within the organization. A test engineer can develop training material on the subject of automated testing and can advocate to management that a seminar be scheduled to conduct the training.&lt;br /&gt;The first step in moving toward a decision to automate testing on a project requires that the test team adjust management understanding of the appropriate application of automated testing for the specific need at hand. For example, the test team needs to check early on whether management is cost-averse and would be unwilling to accept the estimated cost of automated test tools for a particular effort. If so, test personnel need to convince management about the potential return on investment by conducting cost/benefit analysis.&lt;br /&gt;If management is willing to invest in an automated test tool, but is unable or unwilling to staff a test team with individuals having the proper software skill level or to provide for adequate test tool training, the test team needs to point out the risks involved and/or may need to reconsider a recommendation to automate test.&lt;br /&gt;Management also needs to be made aware of the additional cost involved when introducing a new tool—not only for the tool purchase, but for initial schedule/cost increase, additional training costs, and for enhancing an existing testing process or implementing a new testing process.&lt;br /&gt;Test automation represents highly flexible technology, which provides several ways to accomplish an objective. Use of this technology requires new ways of thinking, which only amplifies the problem of test tool implementation. Many organizations can readily come up with examples of their own experience of technology that failed to deliver on its potential because of the difficulty of overcoming the "Now what?" syndrome. The issues that organizations face when adopting automated test systems include those outlined below:&lt;br /&gt;·         Finding/hiring test tool experts.&lt;br /&gt;·         Using the correct tool for the task at hand.&lt;br /&gt;·         Developing and implementing an automated testing process, which includes developing automated test design and development standards.&lt;br /&gt;·         Analyzing various applications to determine those that are best suited for automation.&lt;br /&gt;·         Analyzing the test requirements to determine the ones suitable for automation.&lt;br /&gt;·         Training the test team on the automated testing process, automated test design, development, and execution.&lt;br /&gt;·         Initial increase in schedule and cost.&lt;br /&gt;The Automated Testing Lifecycle Methodology (ATLM)&lt;br /&gt;&lt;a href="javascript:;"&gt;Article Information&lt;/a&gt;&lt;br /&gt;Contents&lt;br /&gt;1.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=1"&gt;Introducing the ATLM&lt;/a&gt;&lt;br /&gt;2.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=3"&gt;Phase 1: Decision to Automate Testing&lt;/a&gt;&lt;br /&gt;3.        Phase 2: Test Tool Acquisition&lt;br /&gt;4.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=5"&gt;Phase 3: Automated Testing Introduction Process&lt;/a&gt;&lt;br /&gt;5.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=6"&gt;Phase 4: Test Planning, Design, and Development&lt;/a&gt;&lt;br /&gt;6.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=7"&gt;Phase 5: Execution and Management of Tests&lt;/a&gt;&lt;br /&gt;7.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=8"&gt;Phase 6: Test Program Review and Assessment&lt;/a&gt;&lt;br /&gt;8.        &lt;a href="http://www.awprofessional.com/articles/article.asp?p=21468&amp;seqNum=9"&gt;Summary&lt;/a&gt;&lt;br /&gt;Phase 2: Test Tool Acquisition&lt;br /&gt;Test tool acquisition represents the second phase of the ATLM. This phase guides the test engineer through the entire test tool evaluation and selection process, starting with confirmation of management support. Since a tool should support most of the organizations' testing requirements, whenever feasible the test engineer will need to review the system's engineering environment and other organizational needs and come up with a list of tool evaluation criteria. A review of the different types of tools available to support aspects of the entire testing lifecycle is provided in &lt;a href="http://www.informit.com/content/index.asp?product_id=%7bCBB19A2E-D0BE-40B9-9250-15E4D89A61EF%7d&amp;amp;t=%7b94AE5B48-1D7D-462A-A4A6-83CE19EC0705%7d&amp;n=%7b1CBD305F-D503-49FA-9699-8B2C06C9C520%7d"&gt;Automated Software Testing: Introduction, Management, and Performance&lt;/a&gt; (as part of the ATLM), enabling the reader to make an informed decision with regard to the types of tests to be performed on a particular project. The test engineer then needs to define an evaluation domain to pilot the test tool. Finally, after all those steps have been completed, the test engineer can make vendor contact to bring in the selected tool(s). Test personnel then evaluate the tool, based on sample criteria provided.&lt;br /&gt;Phase 3: Automated Testing Introduction Process&lt;br /&gt;The process of introducing automated testing to a new project team constitutes the third phase of the ATLM. This phase outlines the steps necessary to successfully introduce automated testing to a new project, which are summarized in the following sections.&lt;br /&gt;Test Process Analysis&lt;br /&gt;Test process analysis ensures that an overall test process and strategy are in place and are modified, if necessary, to allow automated testing to be introduced in a successful fashion. The test engineers define and collect test process metrics in order to allow for process improvement. Here test goals/objectives and strategies need to be defined and test process needs to be documented and communicated to the test team. In this phase, the kinds of testing applicable for the technical environment will be defined, and tests are defined that can be supported by automated tools.&lt;br /&gt;During the test process analysis, techniques are defined. Best practices are laid out, such as conducting performance testing during the unit-testing phase.&lt;br /&gt;Plans for user involvement are assessed, and test team personnel skills are analyzed against test requirements and planned test activities. Early test team participation is emphasized, supporting refinement of requirement specifications into terms that can be adequately tested while also supporting test team understanding of application requirements and design.&lt;br /&gt;Test Tool Consideration&lt;br /&gt;The test tool consideration process includes steps that investigate whether incorporation of automated test tools that have been brought into the company without a specific project in mind now would be beneficial to a specific project, given the project testing requirements, available test environment, personnel resources, user environment, platform, and product features of the application under test. Schedule is reviewed to ensure sufficient time for test tool setup and development of requirements hierarchy; potential test tools and utilities are mapped to test requirements, test tool compatibility with the application and environment is verified, and workaround solutions are investigated for incompatibility problems that surfaced during compatibility tests.&lt;br /&gt;Phase 4: Test Planning, Design, and Development&lt;br /&gt;Test planning, design, and development is the fourth phase of the ATLM. These subjects are summarized in the following sections.&lt;br /&gt;Test Planning&lt;br /&gt;The test planning stage represents the need to review long–lead-time test planning activities. During this phase, the test team identifies test procedure creation standards and guidelines; hardware, software, and network required to support test environment; test data requirements; a preliminary test schedule; performance measure requirements; a procedure to control test configuration and environment; as well as defect-tracking procedure(s) and associated tracking tool(s).&lt;br /&gt;The test plan contains the results of each preliminary phase of the structured test methodology (ATLM). The test plan will define roles and responsibilities, project test schedule, test planning and design activities, test environment preparation, test risks and contingencies, and acceptable level of thoroughness (test acceptance criteria). Test plan appendices may include test procedures, naming conventions, test procedure format standards, and a test procedure traceability matrix.&lt;br /&gt;The test environment setup is part of test planning. It represents the need to plan, track, and manage test environment setup activities, where material procurements may have long lead times. The test team needs to schedule and track environment setup activities; install test environment hardware, software, and network resources; integrate and install test environment resources; obtain/refine test databases; and develop environment setup scripts and test bed scripts.&lt;br /&gt;Test Design&lt;br /&gt;The test design component addresses the need to define the number of tests to be performed, the ways that testing will be approached (paths, functions), and the test conditions that need to be exercised. Test design standards need to be defined and followed.&lt;br /&gt;An effective test program, incorporating the automation of software testing, involves a mini-development lifecycle of its own, complete with strategy and goal planning, test requirement definition, analysis, design, and coding. Similar to software application development, test requirements must be specified before test design is constructed. Test requirements need to be clearly defined and documented, so that all project personnel will understand the basis of the test effort. Test requirements are defined within requirement statements as an outcome of test requirement analysis.&lt;br /&gt;After test requirements have been derived using the described techniques, test procedure design can begin. Test procedure design consists of the definition of logical groups of test procedures and a naming convention for the suite of test procedures. With a test procedure definition in place, each test procedure is then identified as either an automated or a manual test. During the test planning phase, the test team gets an understanding of the number of test techniques being employed and an estimate for the number of test procedures that will be required. The test team also will have an estimate of the number of test procedures that will need to be performed manually, as well as with an automated test tool.&lt;br /&gt;Much like a software development effort, the test program must be mapped out and consciously designed to ensure that test activities performed represent the most efficient and effective tests for the system under test. Test program resources are limited, yet ways of testing the system are endless. A test design is developed to portray the test effort, in order to give project and test personnel a mental framework on the boundary and scope of the test program.&lt;br /&gt;Following test analysis, the test team develops the test program design models. The first of these design models, the test program model, consists of a graphical illustration that depicts the scope of the test program. This model typically depicts the test techniques required to support the dynamic test effort and also outline static test strategies.&lt;br /&gt;Having defined a test program model, the test team constructs a test architecture, which depicts the structure of the test program and defines the way that test procedures will be organized in support of the test effort.&lt;br /&gt;The next step in the test procedure design process (see Table 1) is to identify those test procedures that stand out as being more sophisticated, and as a result are required to be defined further as part of detailed test design. These test procedures are flagged and a detailed design document is prepared in support of the more sophisticated test procedures. Following detailed test design, test data requirements are mapped against the defined test procedures. To create a repeatable, reusable process for producing test procedures, the test team needs to create a document that outlines test procedure design standards. Only when these standards are followed can the automated test program achieve real efficiency and success, by being repeatable and maintainable.&lt;br /&gt;Table 1 Test Procedure Design Process&lt;br /&gt;Step&lt;br /&gt;Description&lt;br /&gt;1&lt;br /&gt;Test Architecture Review. The test team reviews the test architecture in order to identify the test techniques that apply.&lt;br /&gt;2&lt;br /&gt;Test Procedure Definition (Development Level). A test procedure definition is constructed at the development test level, identifying the test procedure series that applies for the various design components and test techniques.&lt;br /&gt;3&lt;br /&gt;Test Procedure Definition (System Level). A test procedure definition is constructed at the system test level, identifying the test procedure series that applies for the various test techniques.&lt;br /&gt;4&lt;br /&gt;Test Procedure Design Standards. Design standards are adopted and a unique naming convention is adopted that distinguishes the test procedures on the project from test procedures developed in the past or on other projects.&lt;br /&gt;5&lt;br /&gt;Manual Versus Automated Tests. Test procedures will be depicted as being either performed manually or as part of an automated test.&lt;br /&gt;6&lt;br /&gt;Test Procedures Flagged for Detailed Design. Test procedures that stand out as more sophisticated are flagged. These test procedures are further defined as part of detailed test design.&lt;br /&gt;7&lt;br /&gt;Detailed Design. Those test procedures flagged as part of step 7 are designed in further detail within a detailed test design file or document. Test procedure detailed design may consist of pseudo-code of algorithms, preliminary test step definition, or pseudo-code of test automation programs.&lt;br /&gt;8&lt;br /&gt;Test Data Mapping. Test procedure matrix is modified to reflect test data requirements for each test procedure.&lt;br /&gt;&lt;br /&gt;The exercise of developing the test procedure definition not only aids in test development, but helps to quantify or bound the test effort. The development of the test procedure definition involves the identification of the suite of test procedures that need to be developed and executed in support of the test effort. The design exercise involves the organization of test procedures into logical groups and the definition of a naming convention for the suite of test procedures.&lt;br /&gt;At the system level, it may be worthwhile to develop a detailed test design for sophisticated tests. These tests might involve test procedures that perform complex algorithms, consist of both manual and automated steps, and test programming scripts that are modified for use in multiple test procedures. The first step in the detailed design process is to review the test procedure definition at the system test level. This review is conducted for the purpose of identifying those test procedures that stand out as being more sophisticated and that, as a result, are required to be defined further as part of detailed test design.&lt;br /&gt;Detailed test design may take the form of test program pseudo-code, when test programming is required. The detailed design may be represented simply as a sequence of steps that need to be performed in support of a test. When programming variables and multiple data values are involved, the detailed design may reflect the programming construct of a loop supporting an iterative series of tests involving different values, together with a list or table identifying the kinds of data or ranges of data required for the test.&lt;br /&gt;Following the performance of detailed test design, test data requirements need to be mapped against the defined test procedures. Once test data requirements are outlined, the test team needs to plan the means for obtaining, generating, or developing the test data.&lt;br /&gt;The structure of the test program (test architecture) is commonly portrayed in two ways. One test procedure organization method involves the logical grouping of test procedures with the system application design components, and is referred to as a design-based test architecture. Another method represents a test technique perspective and associates test procedures with the various kinds of test techniques represented within the test program model, and is referred to as a technique-based test architecture.&lt;br /&gt;An understanding of test techniques is necessary when developing test design and the test program design models. Personnel performing testing need to be familiar with the test techniques associated with the white box and black box test-approach methods. White box test techniques are aimed at exercising software program internals; black box techniques generally compare the application under test behavior against requirements that address testing via established public interfaces such as the user interface or the published application programming interface (API).&lt;br /&gt;Test Development&lt;br /&gt;For automated tests to be reusable, repeatable, and maintainable, test development standards need to be defined and followed.&lt;br /&gt;After performing test analysis and design, the test team is now ready to perform test development.&lt;br /&gt;Keep in mind that the test design and development activities follow an iterative and incremental approach, in order to address the highest risk functionality up front. Table 2 correlates the development process phases to the test process phases. The testing processes and steps outlined in the table are strategically aligned with the development process, and the execution of these steps results in the refinement of test procedures at the same time as developers are creating the software modules. Automated and/or manual test procedures are developed during the integration test phase with the intention of reusing them during the system test phase.&lt;br /&gt;Table 2 Development/Test Relationship&lt;br /&gt;Phase&lt;br /&gt;Development Process&lt;br /&gt;Test Process&lt;br /&gt;Module (Unit) Development&lt;br /&gt;Design module from requirements.&lt;br /&gt;Perform test planning and test environment setup.&lt;br /&gt;&lt;br /&gt;Code module.&lt;br /&gt;Create test design and develop test data.&lt;br /&gt;&lt;br /&gt;Debug module.&lt;br /&gt;Write test scripts or record test scenario using module.&lt;br /&gt;&lt;br /&gt;Unit test module.&lt;br /&gt;Debug automated test script by running against module. Use tools that support unit testing.&lt;br /&gt;&lt;br /&gt;Correct defects.&lt;br /&gt;Rerun automated test script to regression test as defects are corrected.&lt;br /&gt;&lt;br /&gt;Conduct performance testing.&lt;br /&gt;Verify that system is scalable and will meet performance requirements.&lt;br /&gt;Integration&lt;br /&gt;Build system by connecting modules.&lt;br /&gt;Integration-test connected modules.&lt;br /&gt;Review trouble reports.&lt;br /&gt;Combine unit test scripts and add new scripts that demonstrate module interconnectivity. Use test tool to support automated integration testing.&lt;br /&gt;&lt;br /&gt;Correct defects and update defect status.&lt;br /&gt;Rerun automated test script as part of regression test, as defects are corrected.&lt;br /&gt;&lt;br /&gt;Continued performance testing activities.&lt;br /&gt;Verify that system is scalable and will meet performance requirements.&lt;br /&gt;System Test&lt;br /&gt;Review trouble reports.&lt;br /&gt;Integrate automated test scripts into system-level test procedures where possible, and develop additional system-level test procedures. Execute system test and record test results.&lt;br /&gt;&lt;br /&gt;Correct defects and update defect status.&lt;br /&gt;Rerun automated test script as part of regression test as defects are corrected.&lt;br /&gt;Acceptance Test&lt;br /&gt;Review incident reports.&lt;br /&gt;Perform subset of system test as part of demonstration of user acceptance test.&lt;br /&gt;&lt;br /&gt;Correct defects.&lt;br /&gt;Rerun automated test script as part of regression test as defects are corrected.&lt;br /&gt;&lt;br /&gt;Many preparation activities need to take place before test development can begin. A test development architecture is developed (described in the next section), which provides the test team with a clear picture of the test development preparation activities or building blocks necessary for the efficient creation of test procedures. The test team will need to tailor the sample test development architecture to reflect the priorities of their particular project. Part of these setup and preparation activities involves the need to track and manage test environment set up activities, where material procurements may have long lead times. Prior to the commencement of test development, the test team also needs to perform analysis to identify the potential for reuse of existing test procedures and scripts within the automation infrastructure (reuse library).&lt;br /&gt;The test team needs to develop test procedures according to a test procedure development/execution schedule. This schedule needs to allocate personnel resources and reflect development due dates, among other factors. The test team needs to monitor development progress and produce progress status reports. Prior to the creation of a complete suite of test procedures, the test team performs a modularity relationship analysis. The results of this analysis help to incorporate data dependencies, plan for workflow dependencies between tests, and identify common scripts that can be applied repeatedly to the test effort. As test procedures are being developed, the test team needs to ensure that configuration control is performed for the entire test bed to include test design, test scripts, and test data, as well as for each individual test procedure. The test bed needs to be baselined using a configuration management tool.&lt;br /&gt;Test development involves the development of test procedures that are maintainable, reusable, simple, and robust, which in itself can be as challenging as the development of the application under test. Test procedure development standards need to be in place supporting structured and consistent development of automated tests. Test development standards can be based on the scripting language standards of a particular test tool. For example, Rational's Robot uses SQABasic, a Visual Basic–like scripting language, and therefore the script development standards could be based on the Visual Basic development standards, outlined in a number of books on the subject.&lt;br /&gt;Usually internal development standards exist that can be followed if the organization is developing in a language similar to the tool's scripting language. The adoption or slight modification of existing development standards is generally a better approach than creating a standard from scratch. If no development standards exist within the organization for the particular tool scripting language, it's important for the test team to develop script development guidelines. Such guidelines can include directions on context independence, which addresses the particular place where a test procedure should start and where it should end. Additionally, modularity and reusability guidelines need to be addressed.&lt;br /&gt;By developing test procedures based on development guidelines, the test team creates the initial building blocks for an automation infrastructure. The automation infrastructure will eventually contain a library of common, reusable scripts. Throughout the test effort and in future releases, the test engineer can make use of the automation infrastructure to support reuse of archived test procedures, minimize duplication, and thus enhance the entire automation effort.&lt;br /&gt;Test Development Architecture&lt;br /&gt;Test team members responsible for test development need to be prepared with the proper materials. Test team personnel need to follow a test development architecture that includes, for example, a listing of the test procedures assigned to them and a listing of the outcome of automated versus manual test analysis. Also, test team personnel need to decide when to automate. At times a test team might want to avoid automating using a GUI testing tool before the interface—whether API, character UI, or GUI—is stabilized, to avoid having to reengineer the automated tests in response to non–bug-related changes. At other times, the test team might find workaround solutions when automating an unstable GUI, such as focusing automation on the known stable parts only.&lt;br /&gt;The test engineer needs to adhere to the test procedure development and execution schedule, test design information, automated test tool user manuals, and test procedure development guidelines. Armed with the proper instructions, documentation, and guidelines, test engineers will have the foundation that allows them to develop a more cohesive and structured set of test procedures. Repeating a process and repeatedly demonstrating a strong test program depends on the availability of documented processes and standard guidelines such as the test development architecture.&lt;br /&gt;&lt;a href="javascript:popUp("&gt;Figure 2&lt;/a&gt; shows an example of a graphical illustration containing the major activities to be performed as part of the test development architecture. Test development starts with test environment setup and preparation activities, discussed earlier. Once they're concluded, the test team needs to make sure that all pertinent information necessary to support development has been documented or gathered. The test team will need to tailor the sample test development architecture in Figure 2 to reflect the priorities of their particular project. Note that &lt;a href="javascript:popUp("&gt;Figure 2&lt;/a&gt; should be read from bottom to top.&lt;br /&gt;&lt;a href="javascript:popUp("&gt;Figure 2&lt;/a&gt; Building blocks of the test development architecture.&lt;br /&gt;Technical Environment&lt;br /&gt;Test procedure development needs to be preceded by several setup activities. The test development activity needs to be supported by a technical environment, which facilitates the development of test procedures. As a result, the test environment needs to be set up and ready to go. The test environment includes the technical environment, which may include facility resources as well as the hardware and software necessary to support test development and execution. The test team needs to ensure that there are enough workstations to support the entire team. The various elements of the test environment need to be outlined within the test plan, as discussed earlier.&lt;br /&gt;Environment setup activities can also include the use of an environment setup script to load test data or restore a drive image, and to calibrate the test tool to the environment. When test tool compatibility problems arise with the application under test, workaround solutions have to be identified. When developing test procedures, it's important that the schedule for developing test procedures is consistent with the test execution schedule. It's also important that the test team follow test procedure development guidelines.&lt;br /&gt;The test team must ensure that the proper test room or laboratory facilities are reserved and set up. Once the physical environment is established, the test team ensures that all necessary equipment is installed and operational. The test plan defined the required technical environment and addressed test environment planning. Within the test environment section of the test plan, the test team has already identified operational support required to install and check out the operational readiness of the technical environment. The test team needs to ensure that operational support activities have been properly scheduled and must monitor progress of these tasks.&lt;br /&gt;Specific tasks and potential issues outlined in the test plan should now have been addressed and resolved. Such issues could include network installation, network server configuration and allocated disk space, network access privileges, required desktop computer processing speed and memory, number and types of desktop computers (clients), video resolution requirements, and any additional software required to support the application, such as browser software. Automated test tools that apply should have been scheduled for installation and checkout. These tools now should be configured to support the test team and be operational within the test environment.&lt;br /&gt;The test environment setup activity includes the need to track and manage test environment setup activities, where material procurements may have long lead times. These activities include the need to schedule and track environment setup activities; install test environment hardware, software, and network resources; integrate and test-install test environment resources; obtain/refine test databases; and develop environment setup scripts and test bed scripts.&lt;br /&gt;The hardware supporting the test environment must be sufficient to ensure complete functionality of the production application. Test environment hardware needs to be sufficient to support performance analysis. In cases where the test environment utilizes hardware resources that are also supporting other development or management activities, special arrangements may be necessary during actual performance testing. During system test, the software configuration loaded within the test environment must be a complete, fully integrated release with no patches and no disabled sections. The hardware configuration supporting the test environment needs to be designed to support processing, storage, and retrieval activities, which may be performed across a local or wide area network, reflecting the target environment.&lt;br /&gt;The test environment design also needs to consider stress testing requirements. Stress and load tests may require the use of multiple workstations that will run multiple test procedures simultaneously; some automated test tools include a virtual user simulation functionality that eliminates or minimizes the need for multiple workstations.&lt;br /&gt;Test data will need to be obtained with enough lead time to support refinement and manipulation to support test requirements. Data preparation activities include the identification of conversion data requirements, the preprocessing of raw data files, loading of temporary tables—possibly in a relational database management system format, and the performance of consistency checks. Identifying conversion data requirements involves performing in-depth analysis on data elements, which includes defining data-mapping criteria, clarifying data-element definitions, confirming primary keys, and defining data-acceptable parameters.&lt;br /&gt;During test planning, the test team defined and scheduled the test environment activities. Now the team needs to track the test environment setup activities. Resources need to be identified to install hardware, software, and network resources into the test environment and integrate and test installed test environment resources. The test environment materials and the application under test need to be baselined within a configuration management tool. Additionally, test environment materials may include test data and test processes.&lt;br /&gt;The test team needs to obtain and modify test databases necessary to exercise software applications, and develop environment setup scripts and test bed scripts. The test team should perform product reviews and validation of all test source materials. The location of the test environment for each project or task should be defined within the test plan for each project. Early identification of the test site is critical to cost-effective test environment planning and development.&lt;br /&gt;Phase 5: Execution and Management of Tests&lt;br /&gt;At this stage, the test team has addressed test design and test development. Test procedures are now ready to be executed in support of exercising the application under test. Also, test environment setup planning and implementation was addressed consistent with the test requirements and guidelines provided within the test plan.&lt;br /&gt;With the test plan in hand and the test environment now operational, it's time to execute the tests defined for the test program. When executing test procedures, the test team must comply with a test procedure execution schedule, as discussed earlier. The test procedure execution schedule implements the strategy defined within the test plan. Plans for unit, integration, system, and user acceptance testing are executed. Together, these testing phases make up the steps that are required to test the system as a whole. The various steps involved during execution and management of tests are outlined below.&lt;br /&gt;·         When executing test procedures, the test team needs to comply with a test procedure execution schedule. Following test execution, test outcome evaluations are performed and test result documentation is prepared.&lt;br /&gt;·         Plans for unit, integration, system, and user acceptance testing are executed, which together make up the steps that are required to test the system as a whole. During the unit test phase, code profiling can be performed. Traditionally, profiling is a tuning process that determines whether an algorithm is inefficient or a function is being called too frequently. Profiling can discover instances where there is improper scaling of algorithms, instantiations, and resource utilization.&lt;br /&gt;·         Integration testing is performed, which focuses on the application internals. During integration testing, units are incrementally integrated and tested together based on control flow. Since units may consist of other units, some integration testing, also called module testing, may take place during unit testing.&lt;br /&gt;·         During system test, the test engineer is testing the integration of parts that comprise the entire system. A separate test team usually performs system-level tests. The test team implements the test procedure execution schedule and the system test plan.&lt;br /&gt;·         The test team also performs analysis to identify particular components or functionality that are experiencing a greater relative number of problem reports. As a result of this analysis, additional test procedures and test effort may need to be assigned to the components. Test results analysis can also confirm whether executed test procedures are proving to be worthwhile in terms of identifying errors.&lt;br /&gt;·         Each test team needs to perform problem-reporting operations in compliance with a defined process. The documentation and tracking of software problem reports is greatly facilitated by an automated defect-tracking tool.&lt;br /&gt;·         The test team manager is responsible for ensuring that tests are executed according to schedule, and test personnel are allocated and redirected when necessary to handle problems that arise during the test effort. To perform this oversight function effectively, the test manager needs to perform test program status tracking and management reporting.&lt;br /&gt;·         Test metrics provide the test manager with key indicators of the test coverage, progress, and the quality of the test effort. During white box testing, the test engineer measures the depth of testing, by collecting data relative to path coverage and test coverage. During black box testing, metrics collection focuses on the breadth of testing, to include the amount of demonstrated functionality and the amount of testing that has been performed.&lt;br /&gt;Phase 6: Test Program Review and Assessment&lt;br /&gt;Test program review and assessment activities need to be conducted throughout the testing lifecycle, to allow for continuous improvement activities. Throughout the testing lifecycle and following test execution activities, metrics need to be evaluated and final review and assessment activities need to be conducted to allow for process improvement. The various steps necessary for test program review and assessment are outlined below.&lt;br /&gt;·         Following test execution, the test team needs to review the performance of the test program to determine where changes can be implemented to improve the test program performance on the next project. This test program review represents the final phase of the Automated Test Lifecycle Methodology (ATLM).&lt;br /&gt;·         Throughout the test program, the test team collected various test metrics. The focus of the test program review includes an assessment of whether the application satisfies acceptance criteria and is ready to go into production. The review also includes an evaluation of earned value progress measurements and other metrics collected.&lt;br /&gt;·         As part of its culture, the test team needs to adopt an ongoing iterative process of lessons learned activities. Such a program encourages test engineers to take the responsibility to raise corrective action proposals immediately, when such actions potentially have significant impact on test program performance. Throughout the entire test lifecycle, it's good practice to document and begin to evaluate lessons learned at each milestone. The metrics that are collected throughout the test lifecycle and especially during the test execution phase help pinpoint problems that need to be addressed.&lt;br /&gt;·         Lessons learned, metrics evaluations, and corresponding improvement activity or corrective action need to be documented throughout the entire test process in a central repository that's easily accessible.&lt;br /&gt;·         After collecting lessons learned and other metrics, and defining corrective actions, test engineers also need to assess the effectiveness of the test program to include an evaluation of the test program return on investment. Test engineers capture measures of the benefits of automation realized throughout the test lifecycle in order to support this assessment.&lt;br /&gt;·         Test teams can perform their own surveys to inquire about the potential value of process and tool changes. A survey form can be used to solicit feedback on the potential use of requirement-management tools, design tools, and development tools. Surveys are helpful to identify potential misconceptions and gather positive feedback.&lt;br /&gt;Summary&lt;br /&gt;ATLM is a structured methodology geared toward ensuring successful implementation of automated testing. The ATLM approach mirrors the benefits of modern rapid application development efforts, where such efforts engage the user early in the development cycle. The end user of the software product is actively involved throughout analysis, design, development, and test of each software build, which is augmented in an incremental fashion.&lt;br /&gt;Rational Corporation lists &lt;a href="http://www.informit.com/content/index.asp?product_id=%7bCBB19A2E-D0BE-40B9-9250-15E4D89A61EF%7d&amp;t=%7b94AE5B48-1D7D-462A-A4A6-83CE19EC0705%7d&amp;amp;n=%7b1CBD305F-D503-49FA-9699-8B2C06C9C520%7d"&gt;Automated Software Testing: Introduction, Management, and Performance&lt;/a&gt; and the ATLM as recommended reading as part of the Rational Unified Process. Many universities and professional software test training organizations have adopted the book for their classroom. Many companies (such as Imbus GMBH, Moehrendorf, Germany) have adopted the book and ATLM as their company standard for automated software testing. Others believe that industry automated test tool vendors will soon be incorporating the book's structured methodology within their tools. Instead of performing the entire test lifecycle haphazardly, software test managers will use an ATLM-compliant test tool that automatically supports (and possibly enforces) the book's sound building-block approach to the test effort.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4499103662049903393-8598427106664305298?l=kuldeepse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kuldeepse.blogspot.com/feeds/8598427106664305298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4499103662049903393&amp;postID=8598427106664305298' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8598427106664305298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4499103662049903393/posts/default/8598427106664305298'/><link rel='alternate' type='text/html' href='http://kuldeepse.blogspot.com/2007/02/automated-testing-lifecycle-methodology.html' title='Automated Testing Lifecycle Methodology'/><author><name>Kuldeep Sharma</name><uri>http://www.blogger.com/profile/06746984041554255912</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4499103662049903393.post-2677699405202088017</id><published>2007-02-15T20:55:00.000-08:00</published><updated>2007-02-15T20:57:04.591-08:00</updated><title type='text'>Loadrunner, QTP and Winrunner</title><content type='html'>Load / Stress Testing of Websites&lt;br /&gt;1. The Importance of Scalability &amp; Load Testing?&lt;br /&gt;Some very high profile websites have suffered from serious outages and/or performance issues due to the number of people hitting their website. E-commerce sites that spent heavily on advertising but not nearly enough on ensuring the quality or reliability of their service have ended up with poor web-site performance, system downtime and/or serious errors, with the predictable result that customers are being lost.&lt;br /&gt;&lt;br /&gt;In the case of toysrus.com, its web site couldn't handle the approximately 1000 percent increase in traffic that their advertising campaign generated. Similarly, Encyclopaedia Britannica was unable to keep up with the amount of users during the immediate weeks following their promotion of free access to its online database. The truth is, these problems could probably have been prevented, had adequate load testing taken place.&lt;br /&gt;&lt;br /&gt;When creating an eCommerce portal, companies will want to know whether their infrastructure can handle the predicted levels of traffic, to measure performance and verify stability.&lt;br /&gt;&lt;br /&gt;These types of services include Scalability / Load / Stress testing, as well as Live Performance Monitoring.&lt;br /&gt;&lt;br /&gt;Load testing tools can be used to test the system behaviour and performance under stressful conditions by emulating thousands of virtual users. These virtual users stress the application even harder than real users would, while monitoring the behaviour and response times of the different components. This enables companies to minimise test cycles and optimise performance, hence accelerating deployment, while providing a level of confidence in the system. Once launched, the site can be regularly checked using Live Performance Monitoring tools to monitor site performance in real time, in order to detect and report any performance problems - before users can experience them.&lt;br /&gt;2. Preparing for a Load Test&lt;br /&gt;The first step in designing a Web site load test is to measure as accurately as possible the current load levels.&lt;br /&gt;Measuring Current Load Levels&lt;br /&gt;The best way to capture the nature of Web site load is to identify and track, [e.g. using a log analyzer] a set of key user session variables that are applicable and relevant to your Web site traffic.&lt;br /&gt;Some of the variables that could be tracked include:&lt;br /&gt;the length of the session (measured in pages)&lt;br /&gt;the duration of the session (measured in minutes and seconds)&lt;br /&gt;the type of pages that were visited during the session (e.g., home page, product information page, credit card information page etc.)&lt;br /&gt;the typical/most popular ‘flow’ or path through the website&lt;br /&gt;the % of ‘browse’ vs. ‘purchase’ sessions&lt;br /&gt;the % type of users (new user vs. returning registered user)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Measure how many people visit the site per week/month or day. Then break down these current traffic patterns into one-hour time slices, and identify the peak-hours (i.e. if you get lots of traffic during lunch time etc.), and the numbers of users during those peak hours. This information can then be used to estimate the number of concurrent users on your site.&lt;br /&gt;3. Concurrent Users&lt;br /&gt;Although your site may be handling x number of users per day, only a small percentage of these users would be hitting your site at the same time. For example, if you have 3000 unique users hitting your site on one day, all 3000 are not going to be using the site between 11.01 and 11.05 am.&lt;br /&gt;So, once you have identified your peak hour, divide this hour into 5 or 10 minute slices [you should use your own judgement here, based on the length of the average user session] to get the number of concurrent users for that time slice.&lt;br /&gt;4. Estimating Target Load Levels&lt;br /&gt;Once you have identified the current load levels, the next step is to understand as accurately and as objectively as possible the nature of the load that must be generated during the testing.&lt;br /&gt;&lt;br /&gt;Using the current usage figures, estimate how many people will visit the site per week/month or day. Then divide that number to attain realistic peak-hour scenarios.&lt;br /&gt;&lt;br /&gt;It is important to understand the volume patterns, and to determine what load levels your web site might be subjected to (and must therefore be tested for).&lt;br /&gt;&lt;br /&gt;There are four key variables that must be understood in order to estimate target load levels:&lt;br /&gt;how the overall amount of traffic to your Web site is expected to grow&lt;br /&gt;the peak load level which might occur within the overall traffic&lt;br /&gt;how quickly the number of users might ramp up to that peak load level&lt;br /&gt;how long that peak load level is expected to last&lt;br /&gt;&lt;br /&gt;Once you have an estimate of overall traffic growth, you’ll need to estimate the peak level you might expect within that overall volume.&lt;br /&gt;&lt;br /&gt;5. Estimating Test Duration&lt;br /&gt;The duration of the peak is also very important-a Web site that may deal very well with a peak level for five or ten minutes may crumble if that same load level is sustained longer than that. You should use the length of the average user session as a base for determining the load test duration.&lt;br /&gt;&lt;br /&gt;6. Ramp-up Rate&lt;br /&gt;As mentioned earlier, Although your site may be handling x number of users per day, only a small percentage of these users would be hitting your site at the same time.&lt;br /&gt;&lt;br /&gt;Therefore, when preparing your load test scenario, you should take into account the fact that users will hit the website at different times, and that during your peak hour the number of concurrent users will likely gradually build up to reach the peak number of users, before tailing off as the peak hour comes to a close.&lt;br /&gt;&lt;br /&gt;The rate at which the number of users build up, the "Ramp-up Rate" should be factored into the load test scenarios (i.e. you should not just jump to the maximum value, but increase in a series of steps).&lt;br /&gt;&lt;br /&gt;7. Scenario Identification&lt;br /&gt;The information gathered during the analysis of the current traffic is used to create the scenarios that are to be used to load test the web site.&lt;br /&gt;The identified scenarios aim to accurately emulate the behavior of real users navigating through the Web site.&lt;br /&gt;for example, a seven-page session that results in a purchase is going to create more load on the Web site than a seven-page session that involves only browsing. A browsing session might only involve the serving of static pages, while a purchase session will involve a number of elements, including the inventory database, the customer database, a credit card transaction with verification going through a third-party system, and a notification email. A single purchase session might put as much load on some of the system’s resources as twenty browsing sessions.&lt;br /&gt;Similar reasoning may apply to purchases from new vs. returning users. A new user purchase might involve a significant amount of account setup and verification —something existing users may not require. The database load created by a single new user purchase may equal that of five purchases by existing users, so you should differentiate the two types of purchases.&lt;br /&gt;8. Script Preparation&lt;br /&gt;Next, program your load test tool to run each scenario with the number of types of users concurrently playing back to give you a the load scenario.&lt;br /&gt;&lt;br /&gt;The key elements of a load test design are:&lt;br /&gt;&lt;br /&gt;test objective&lt;br /&gt;pass/fail criteria&lt;br /&gt;script description&lt;br /&gt;scenario description&lt;br /&gt;&lt;br /&gt;Load Test Objective&lt;br /&gt;The objective of this load test is to determine if the Web site, as currently configured, will be able to handle the X number of sessions/hr peak load level anticipated. If the system fails to scale as anticipated, the results will be analyzed to identify the bottlenecks.&lt;br /&gt;&lt;br /&gt;Pass/Fail Criteria&lt;br /&gt;The load test will be considered a success if the Web site will handle the target load of X number of sessions/hr while maintaining the pre-defined average page response times (if applicable). The page response time will be measured and will represent the elapsed time between a page request and the time the last byte is received.&lt;br /&gt;&lt;br /&gt;Since in most cases the user sessions follow just a few navigation patterns, you will not need hundreds of individual scripts to achieve realism—if you choose carefully, a dozen scripts will take care of most Web sites.&lt;br /&gt;&lt;br /&gt;9. Script Execution&lt;br /&gt;Scripts should be combined to describe a load testing scenario. A basic scenario includes the scripts that will be executed, the percentages in which those scripts will be executed, and a description of how the load will be ramped up.&lt;br /&gt;By emulating multiple business processes, the load testing can generate a load equivalent to X numbers of virtual users on a Web application. During these load tests, real-time performance monitors are used to measure the response times for each transaction and check that the correct content is being delivered to users. In this way, they can determine how well the site is handling the load and identify any bottlenecks.&lt;br /&gt;The execution of the scripts opens X number of HTTP sessions (each simulating a user) with the target Web site and replays the scripts over and over again. Every few minutes it adds X more simulated users and continues to do so until the web site fails to meet a specific performance goal.&lt;br /&gt;&lt;br /&gt;10. System Performance Monitoring&lt;br /&gt;It is vital during the execution phase to monitor all aspects of the website. This includes measuring and monitoring the CPU usage and performance aspects of the various components of the website – i.e. not just the webserver, but the database and other parts aswell (such as firewalls, load balancing tools etc.)&lt;br /&gt;For example, one etailer, whose site fell over (apparently due to a high load), when analysing the performance bottlenecks on their site discovered that the webserver had in fact only been operating at 50% of capacity. Further investigation revealed that the credit card authorisation engine was the cause of failure – it was not responding quick enough for the website, which then fellover when it was waiting for too many responses from the authorisation engine. They resolved this issue by changing the authorisation engine, and amending the website coding so that if there were any issues with authorisation responses in future, the site would not crash.&lt;br /&gt;Similarly, another ecommerce site found that the performance issues that they were experiencing were due to database performance issues – while the webserver CPU usage was only at 25%, the backend db server CPU usage was 86%. Their solution was to upgrade the db server.&lt;br /&gt;Therefore, it is necessary to use (install if necessary) performance monitoring tools to check each aspect of the website architecture during the execution phase.&lt;br /&gt;11. Suggested Execution Strategy:&lt;br /&gt;Start with a test at 50% of the expected virtual user capacity for 15 minutes and a medium ramp rate. The different members of the team [testers will also need to be monitoring the CPU usage during the testing] should be able to check whether your website is handling the load efficiently or some resources are already showing high utilization.&lt;br /&gt;After making any system adjustments, run the test again or proceed to 75% of expected load. Continue with the testing and proceed to 100%; then up to 150% of the expected load, while monitoring and making the necessary adjustments to your system as you go along.&lt;br /&gt;12. Results Analysis&lt;br /&gt;Often the first indication that something is wrong is the end user response times start to climb. Knowing which pages are failing will help you narrow down where the problem is.&lt;br /&gt;Whichever load test tool you use, it will need to produce reports that will highlight the following:&lt;br /&gt;&lt;br /&gt;• Page response time by load level&lt;br /&gt;• Completed and abandoned session by load level&lt;br /&gt;• Page views and page hits by load level&lt;br /&gt;• HTTP and network errors by load level&lt;br /&gt;• Concurrent user by minute&lt;br /&gt;• Missing links report, if applicable&lt;br /&gt;• Full detailed report which includes response time by page and by transaction, lost&lt;br /&gt;• sales opportunities, analysis and recommendations&lt;br /&gt;&lt;br /&gt;13. Important Considerations&lt;br /&gt;When testing websites, it is critically important to test from outside the firewall. In addition, web-based load testing services, based outside the firewall, can identify bottlenecks that are only found by testing in this manner.&lt;br /&gt;Web-based stress testing of web sites are therefore more accurate when it comes to measuring a site's capacity constraints.&lt;br /&gt;Web traffic is rarely uniformly distributed, and most Web sites exhibit very noticeable peaks in their volume patterns. Typically, there are a few points in time (one or two days out of the week, or a couple of hours each day) when the traffic to the Web site is highest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Automated Testing Detail Test Plan&lt;br /&gt;Automated Testing DTP Overview&lt;br /&gt;This Automated Testing Detail Test Plan (ADTP) will identify the specific tests that are to be performed to ensure the quality of the delivered product. System/Integration Test ensures the product functions as designed and all parts work together. This ADTP will cover information for Automated testing during the System/Integration Phase of the project and will map to the specification or requirements documentation for the project. This mapping is done in conjunction with the Traceability Matrix document, that should be completed along with the ADTP and is referenced in this document.&lt;br /&gt;This ADTP refers to the specific portion of the product known as PRODUCT NAME. It provides clear entry and exit criteria, and roles and responsibilities of the Automated Test Team are identified such that they can execute the test.&lt;br /&gt;The objectives of this ADTP are:&lt;br /&gt;• Describe the test to be executed.&lt;br /&gt;• Identify and assign a unique number for each specific test.&lt;br /&gt;• Describe the scope of the testing.&lt;br /&gt;• List what is and is not to be tested.&lt;br /&gt;• Describe the test approach detailing methods, techniques, and tools.&lt;br /&gt;• Outline the Test Design including:&lt;br /&gt;• Functionality to be tested.&lt;br /&gt;• Test Case Definition.&lt;br /&gt;• Test Data Requirements.&lt;br /&gt;• Identify all specifications for preparation.&lt;br /&gt;• Identify issues and risks.&lt;br /&gt;• Identify actual test cases.&lt;br /&gt;• Document the design point&lt;br /&gt;Test Identification&lt;br /&gt;This ADTP is intended to provide information for System/Integration Testing for the PRODUCT NAME module of the PROJECT NAME. The test effort may be referred to by its PROJECT REQUEST (PR) number and its project title for tracking and monitoring of the testing progress.&lt;br /&gt;&lt;br /&gt;Test Purpose and Objectives&lt;br /&gt;Automated testing during the System/Integration Phase as referenced in this document is intended to ensure that the product functions as designed directly from customer requirements. The testing goal is to identify the quality of the structure, content, accuracy and consistency, some response times and latency, and performance of the application as defined in the project documentation.&lt;br /&gt;&lt;br /&gt;Assumptions, Constraints, and Exclusions&lt;br /&gt;Factors which may affect the automated testing effort, and may increase the risk associated with the success of the test include:&lt;br /&gt;• Completion of development of front-end processes&lt;br /&gt;• Completion of design and construction of new processes&lt;br /&gt;• Completion of modifications to the local database&lt;br /&gt;• Movement or implementation of the solution to the appropriate testing or production environment&lt;br /&gt;• Stability of the testing or production environment&lt;br /&gt;• Load Discipline&lt;br /&gt;• Maintaining recording standards and automated processes for the project&lt;br /&gt;• Completion of manual testing through all applicable paths to ensure that reusable automated scripts are valid&lt;br /&gt;&lt;br /&gt;Entry Criteria&lt;br /&gt;The ADTP is complete, excluding actual test results. The ADTP has been signed-off by appropriate sponsor representatives indicating consent of the plan for testing. The Problem Tracking and Reporting tool is ready for use. The Change Management and Configuration Management rules are in place.&lt;br /&gt;The environment for testing, including databases, application programs, and connectivity has been defined, constructed, and verified.&lt;br /&gt;&lt;br /&gt;Exit Criteria&lt;br /&gt;&lt;br /&gt;In establishing the exit/acceptance criteria for the Automated Testing during the System/Integration Phase of the test, the Project Completion Criteria defined in the Project Definition Document (PDD) should provide a starting point. All automated test cases have been executed as documented. The percent of successfully executed test cases met the defined criteria. Recommended criteria: No Critical or High severity problem logs remain open and all Medium problem logs have agreed upon action plans; successful execution of the application to validate accuracy of data, interfaces, and connectivity.&lt;br /&gt;Pass/Fail Criteria&lt;br /&gt;The results for each test must be compared to the pre-defined expected test results, as documented in the ADTP (and DTP where applicable). The actual results are logged in the Test Case detail within the Detail Test Plan if those results differ from the expected results. If the actual results match the expected results, the Test Case can be marked as a passed item, without logging the duplicated results.&lt;br /&gt;A test case passes if it produces the expected results as documented in the ADTP or Detail Test Plan (manual test plan). A test case fails if the actual results produced by its execution do not match the expected results. The source of failure may be the application under test, the test case, the expected results, or the data in the test environment. Test case failures must be logged regardless of the source of the failure. Any bugs or problems will be logged in the DEFECT TRACKING TOOL.&lt;br /&gt;The responsible application resource corrects the problem and tests the repair. Once this is complete, the tester who generated the problem log is notified, and the item is re-tested. If the retest is successful, the status is updated and the problem log is closed.&lt;br /&gt;If the retest is unsuccessful, or if another problem has been identified, the problem log status is updated and the problem description is updated with the new findings. It is then returned to the responsible application personnel for correction and test.&lt;br /&gt;Severity Codes are used to prioritize work in the test phase. They are assigned by the test group and are not modifiable by any other group. The following standard Severity Codes to be used for identifying defects are:&lt;br /&gt;Table 1 Severity Codes&lt;br /&gt;Severity Code Number Severity Code Name Description&lt;br /&gt;1. Critical Automated tests cannot proceed further within applicable test case (no work around)&lt;br /&gt;2. High The test case or procedure can be completed, but produces incorrect output when valid information is input.&lt;br /&gt;3. Medium The test case or procedure can be completed and produces correct output when valid information is input, but produces incorrect output when invalid information is input.(e.g. no special characters are allowed as part of specifications but when a special character is a part of the test and the system allows a user to continue, this is a medium severity)&lt;br /&gt;4. Low All test cases and procedures passed as written, but there could be minor revisions, cosmetic changes, etc. These defects do not impact functional execution of system&lt;br /&gt;The use of the standard Severity Codes produces four major benefits:&lt;br /&gt;• Standard Severity Codes are objective and can be easily and accurately assigned by those executing the test. Time spent in discussion about the appropriate priority of a problem is minimized.&lt;br /&gt;• Standard Severity Code definitions allow an independent assessment of the risk to the on-schedule delivery of a product that functions as documented in the requirements and design documents.&lt;br /&gt;• Use of the standard Severity Codes works to ensure consistency in the requirements, design, and test documentation with an appropriate level of detail throughout.&lt;br /&gt;• Use of the standard Severity Codes promote effective escalation procedures.&lt;br /&gt;&lt;br /&gt;Test Scope&lt;br /&gt;The scope of testing identifies the items which will be tested and the items which will not be tested within the System/Integration Phase of testing.&lt;br /&gt;Items to be tested by Automation (PRODUCT NAME ...)&lt;br /&gt;Items not to be tested by Automation(PRODUCT NAME ...)&lt;br /&gt;&lt;br /&gt;Test Approach&lt;br /&gt;Description of Approach&lt;br /&gt;The mission of Automated Testing is the process of identifying recordable test cases through all appropriate paths of a website, creating repeatable scripts, interpreting test results, and reporting to project management. For the Generic Project, the automation test team will focus on positive testing and will complement the manual testing undergone on the system. Automated test results will be generated, formatted into reports and provided on a consistent basis to Generic project management.&lt;br /&gt;System testing is the process of testing an integrated hardware and software system to verify that the system meets its specified requirements. It verifies proper execution of the entire set of application components including interfaces to other applications. Project teams of developers and test analysts are responsible for ensuring that this level of testing is performed.&lt;br /&gt;Integration testing is conducted to determine whether or not all components of the system are working together properly. This testing focuses on how well all parts of the web site hold together, whether inside and outside the website are working, and whether all parts of the website are connected. Project teams of developers and test analyst are responsible for ensuring that this level of testing is performed.&lt;br /&gt;For this project, the System and Integration ADTP and Detail Test Plan complement each other.&lt;br /&gt;Since the goal of the System and Integration phase testing is to identify the quality of the structure, content, accuracy and consistency, response time and latency, and performance of the application, test cases are included which focus on determining how well this quality goal is accomplished.&lt;br /&gt;Content testing focuses on whether the content of the pages match what is supposed to be there, whether key phrases exist continually in changeable pages, and whether the pages maintain quality content from version to version.&lt;br /&gt;Accuracy and consistency testing focuses on whether today’s copies of the pages download the same as yesterday’s, and whether the data presented to the user is accurate enough.&lt;br /&gt;Response time and latency testing focuses on whether the web site server responds to a browser request within certain performance parameters, whether response time after a SUBMIT is acceptable, or whether parts of a site are so slow that the user discontinues working. Although Loadrunner provides the full measure of this test, there will be various AD HOC time measurements within certain Winrunner Scripts as needed.&lt;br /&gt;Performance testing (Loadrunner) focuses on whether performance varies by time of day or by load and usage, and whether performance is adequate for the application.&lt;br /&gt;Completion of automated test cases is denoted in the test cases with indication of pass/fail and follow-up action.&lt;br /&gt;Test Definition&lt;br /&gt;This section addresses the development of the components required for the specific test. Included are identification of the functionality to be tested by automation, the associated automated test cases and scenarios. The development of the test components parallels, with a slight lag, the development of the associated product components.&lt;br /&gt;&lt;br /&gt;Test Functionality Definition (Requirements Testing)&lt;br /&gt;The functionality to be automated tested is listed in the Traceability Matrix, attached as an appendix. For each function to undergo testing by automation, the Test Case is identified. Automated Test Cases are given unique identifiers to enable cross-referencing between related test documentation, and to facilitate tracking and monitoring the test progress.&lt;br /&gt;As much information as is available is entered into the Traceability Matrix in order to complete the scope of automation during the System/Integration Phase of the test.&lt;br /&gt;&lt;br /&gt;Test Case Definition (Test Design)&lt;br /&gt;Each Automated Test Case is designed to validate the associated functionality of a stated requirement. Automated Test Cases include unambiguous input and output specifications. This information is documented within the Automated Test Cases in Appendix 8.5 of this ADTP.&lt;br /&gt;&lt;br /&gt;Test Data Requirements&lt;br /&gt;The automated test data required for the test is described below. The test data will be used to populate the data bases and/or files used by the application/system during the System/Integration Phase of the test. In most cases, the automated test data will be built by the OTS Database Analyst or OTS Automation Test Analyst.&lt;br /&gt;&lt;br /&gt;Automation Recording Standards&lt;br /&gt;Initial Automation Testing Rules for the Generic Project:&lt;br /&gt;1. Ability to move through all paths within the applicable system&lt;br /&gt;2. Ability to identify and record the GUI Maps for all associated test items in each path&lt;br /&gt;3. Specific times for loading into automation test environment&lt;br /&gt;4. Code frozen between loads into automation test environment&lt;br /&gt;5. Minimum acceptable system stability&lt;br /&gt;Winrunner Menu Settings&lt;br /&gt;1. Default recording mode is CONTEXT SENSITIVE&lt;br /&gt;2. Record owner-drawn buttons as OBJECT&lt;br /&gt;3. Maximum length of list item to record is 253 characters&lt;br /&gt;4. Delay for Window Synchronization is 1000 milliseconds (unless Loadrunner is operating in same environment and then must increase appropriately)&lt;br /&gt;5. Timeout for checkpoints and CS statements is 1000 milliseconds&lt;br /&gt;6. Timeout for Text Recognition is 500 milliseconds&lt;br /&gt;7. All scripts will stop and start on the main menu page&lt;br /&gt;8. All recorded scripts will remain short; Debugging is easier. However, the entire script, or portions of scripts, can be added together for long runs once the environment has greater stability.&lt;br /&gt;&lt;br /&gt;Winrunner Script Naming Conventions&lt;br /&gt;1. All automated scripts will begin with GE abbreviation representing the Generic Project and be filed under the Winrunner on LAB11 W Drive/Generic/Scripts Folder.&lt;br /&gt;2. GE will be followed by the Product Path name in lower case: air, htl, car&lt;br /&gt;3. After the automated scripts have been debugged, a date for the script will be attached: 0710 for July 10. When significant improvements have been made to the same script, the date will be changed.&lt;br /&gt;4. As incremental improvements have been made to an automated script, version numbers will be attached signifying the script with the latest improvements: eg. XX0710.1 XX0710.2 The .2 version is the most up-to-date&lt;br /&gt;&lt;br /&gt;Winrunner GUIMAP Naming Conventions&lt;br /&gt;1. All Generic GUI Maps will begin with XX followed by the area of test. Eg. XX. XXpond GUI Map represents all pond paths. XXEmemmainmenu GUI Map represents all membership and main menu concerns. XXlogin GUI Map represents all XX login concerns.&lt;br /&gt;2. As there can only be one GUI Map for each Object, etc on the site, they are under constant revision when the site is undergoing frequent program loads.&lt;br /&gt;&lt;br /&gt;Winrunner Result Naming Conventions&lt;br /&gt;1. When beginning a script, allow default res## name to be filed&lt;br /&gt;2. After a successful run of a script where the results will be used toward a report, move file to results and rename: XX for project name, res for Test Results, 0718 for the date the script was run, your initials and the original default number for the script. Eg. XXres0718jr.1&lt;br /&gt;&lt;br /&gt;Winrunner Report Naming Conventions&lt;br /&gt;1. When the accumulation of test result(s) files for the day are formulated, and the statistics are confirmed, a report will be filed that is accessible by upper management. The daily Report file will be as follows: XXdaily0718 XX for project name, daily for daily report, and 0718 for the date the report was issued.&lt;br /&gt;2. When the accumulation of test result(s) files for the week are formulated, and the statistics are confirmed, a report will be filed that is accessible by upper management. The weekly Report file will be as follows: XXweek0718 XX for project name, week for weekly report, and 0718 for the date the report was issued.&lt;br /&gt;Winrunner Script, Result and Report Repository&lt;br /&gt;1. LAB 11, located within the XX Test Lab, will house the original Winrunner Script, Results and Report Repository for automated testing within the Generic Project. WRITE access is granted Winrunner Technicians and READ ONLY access is granted those who are authorized to run scripts but not make any improvements. This is meant to maintain the purity of each script version.&lt;br /&gt;2. Winrunner on LAB11 W Drive houses all Winrunner related documents, etc for XX automated testing.&lt;br /&gt;3. Project file folders for the Generic Project represent the initial structure of project folders utilizing automated testing. As our automation becomes more advanced, the structure will spread to other appropriate areas.&lt;br /&gt;4. Under each Project file folder, a folder for SCRIPT, RESULT and REPORT can be found.&lt;br /&gt;5. All automated scripts generated for each project will be filed under Winrunner on LAB11 W Drive/Generic/Scripts Folder and moved to folder ARCHIVE SCRIPTS as necessary&lt;br /&gt;6. All GUI MAPS generated will be filed under Winrunner on LAB11 W Drive/Generic/Scripts/gui_files Folder.&lt;br /&gt;7. All automated test results are filed under the individual Script Folder after each script run. Results will be referred to and reports generated utilizing applicable statistics. Automated Test Results referenced by reports sent to management will be kept under the Winrunner on LAB11 W Drive/Generic/Results Folder. Before work on evaluating a new set of test results is begun, all prior results are placed into Winrunner on LAB11 W Drive/Generic/Results/Archived Results Folder. This will ensure all reported statistics are available for closer scrutiny when required.&lt;br /&gt;8. All reports generated from automated scripts and sent to upper management will be filed under Winrunner on LAB11 W Drive/Generic/Reports Folder&lt;br /&gt;&lt;br /&gt;Test Preparation Specifications&lt;br /&gt;Test Environment&lt;br /&gt;Environment for Automated Test&lt;br /&gt;Automated Test environment is indicated below. Existing dependencies are entered in comments.&lt;br /&gt;&lt;br /&gt;Environment Test System Comments&lt;br /&gt;Test System/Integration Test (SIT) Cert Access via http://xxxxx/xxxxx&lt;br /&gt;Production Production Access via http:// www.xxxxxx.xxx&lt;br /&gt;Other (specify) Development Individual Test Environments&lt;br /&gt;Hardware for Automated Test&lt;br /&gt;The following is a list of the hardware needed to create production like environment:&lt;br /&gt;Manufacturer Device Type&lt;br /&gt;Various Personal Computer (486 or Higher) with monitor &amp; required peripherals; with connectivity to internet test/production environments. Must be enabled to ADDITIONAL REQUIREMENTS.&lt;br /&gt;Software&lt;br /&gt;The following is a list of the software needed to create a production like environment:&lt;br /&gt;Software Version (if applicable) Programmer Support&lt;br /&gt;Netscape Navigator ZZZ or higher -&lt;br /&gt;Internet Explorer ZZZ or higher -&lt;br /&gt;Test Team Roles and Responsibilities&lt;br /&gt;Test Team Roles and Responsibilities&lt;br /&gt;Role Responsibilities Name&lt;br /&gt;COMPANY NAME Sponsor Approve project development, handle major issues related to project development, and approve development resources Name, Phone&lt;br /&gt;XXX Sponsor Signature approval of the project, handle major issues Name, Phone&lt;br /&gt;XXX Project Manager Ensures all aspects of the project are being addressed from CUSTOMERS’ point of view Name, Phone&lt;br /&gt;COMPANY NAME Development Manager Manage the overall development of project, including obtaining resources, handling major issues, approving technical design and overall timeline, delivering the overall product according to the Partner Requirements Name, Phone&lt;br /&gt;COMPANY NAME Project Manager Provide PDD (Project Definition Document), project plan, status reports, track project development status, manage changes and issues Name, Phone&lt;br /&gt;COMPANY NAME Technical Lead Provide Technical guidance to the Development Team and ensure that overall Development is proceeding in the best technical direction Name, Phone&lt;br /&gt;COMPANY NAME Back End Services Manager Develop and deliver the necessary Business Services to support the PROJECT NAME Name, Phone&lt;br /&gt;COMPANY NAME Infrastructure Manager Provide PROJECT NAME development certification, production infrastructure, service level agreement, and testing resources Name, Phone&lt;br /&gt;COMPANY NAME Test Coordinator Develops ADTP and Detail Test Plans, tests changes, logs incidents identified during testing, coordinates testing effort of test team for project Name, Phone&lt;br /&gt;COMPANY NAME Tracker Coordinator/ Tester Tracks XXX’s in DEFECT TRACKING TOOL. Reviews new XXX’s for duplicates, completeness and assigns to Module Tech Leads for fix. Produces status documents as needed. Tests changes, logs incidents identified during testing. Name, Phone&lt;br /&gt;COMPANY NAME Automation Enginneer Tests changes, logs incidents identified during testing Name, Phone&lt;br /&gt;Test Team Training Requirements&lt;br /&gt;Automation Training Requirements&lt;br /&gt;Training Requirement Training Approach Target Date for Completion Roles/Resources to be Trained&lt;br /&gt;. . . .&lt;br /&gt;. . . .&lt;br /&gt;&lt;br /&gt;Automation Test Preparation&lt;br /&gt;1. Write and receive approval of the ADTP from Generic Project management&lt;br /&gt;2. Manually test the cases in the plan to make sure they actually work before recording repeatable scripts&lt;br /&gt;3. Record appropriate scripts and file them according to the naming conventions described within this document&lt;br /&gt;4. Initial order of automated script runs will be to load GUI Maps through a STARTUP script. After the successful run of this script, scripts testing all paths will be kicked off. Once an appropriate number of PNR’s are generated, GenericCancel scripts will be used to automatically take the inventory out of the test profile and system environment. During the automation test period, requests for testing of certain functions can be accommodated as necessary as long as these functions have the ability to be tested by automation.&lt;br /&gt;5. The ability to use Generic Automation will be READ ONLY for anyone outside of the test group. Of course, this is required to maintain the pristine condition of master scripts on our data repository.&lt;br /&gt;6. Generic Test Group will conduct automated tests under the rules specified in our agreement for use of the Winrunner tool marketed by Mercury Interactive.&lt;br /&gt;7. Results filed for each run will be analyzed as necessary, reports generated, and provided to upper management.&lt;br /&gt;Test Issues and Risks&lt;br /&gt;Issues&lt;br /&gt;The table below lists known project testing issues to date. Upon sign-off of the ADTP and Detail Test Plan, this table will not be maintained, and these issues and all new issues will be tracked through the Issue Management System, as indicated in the projects approved Issue Management Process&lt;br /&gt;Issue Impact Target Date for Resolution Owner&lt;br /&gt;COMPANY NAME test team is not in possession of market data regarding what browsers are most in use in CUSTOMER target market. Testing may not cover some browsers used by CLIENT customers Beginning of Automated Testing during System and Integration Test Phase CUSTOMER TO PROVIDE&lt;br /&gt;OTHER . . .&lt;br /&gt;&lt;br /&gt;Risks&lt;br /&gt;Risks&lt;br /&gt;The table below identifies any high impact or highly probable risks that may impact the success of the Automated testing process.&lt;br /&gt;Risk Assessment Matrix&lt;br /&gt;Risk Area Potential Impact Likelihood of Occurrence Difficulty of Timely Detection Overall Threat(H, M, L)&lt;br /&gt;1. Unstable Environment Delayed Start HISTORY OF PROJECT Immediately .&lt;br /&gt;2. Quality of Unit Testing Greater delays taken by automated scripts Dependent upon quality standards of development group Immediately .&lt;br /&gt;3. Browser Issues Intermittent Delays Dependent upon browser version Immediately .&lt;br /&gt;Risk Management Plan&lt;br /&gt;Risk Area Preventative Action Contingency Plan Action Trigger Owner&lt;br /&gt;1. Meet with Environment Group . . . .&lt;br /&gt;2. Meet with Development Group . . . .&lt;br /&gt;3. . . . .&lt;br /&gt;Traceability Matrix&lt;br /&gt;The purpose of the Traceability Matrix is to identify all business requirements and to trace each requirement through the project's completion.&lt;br /&gt;Each business requirement must have an established priority as outlined in the Business Requirements Document.&lt;br /&gt;They are:&lt;br /&gt;Essential - Must satisfy the requirement to be accepted by the customer.&lt;br /&gt;Useful - Value -added requirement influencing the customer's decision.&lt;br /&gt;Nice-to-have - Cosmetic non-essential condition, makes product more appealing.&lt;br /&gt;The Traceability Matrix will change and evolve throughout the entire project life cycle. The requirement definitions, priority, functional requirements, and automated test cases are subject to change and new requirements can be added. However, if new requirements are added or existing requirements are modified after the Business Requirements document and this document have been approved, the changes will be subject to the change management process.&lt;br /&gt;The Traceability Matrix for this project will be developed and maintained by the test coordinator. At the completion of the matrix definition and the project, a copy will be added to the project notebook.&lt;br /&gt;&lt;br /&gt;Functional Areas of Traceability Matrix&lt;br /&gt;# Functional Area Priority&lt;br /&gt;B1 Pond E&lt;br /&gt;B2 River E&lt;br /&gt;B3 Lake U&lt;br /&gt;B4 Sea E&lt;br /&gt;B5 Ocean E&lt;br /&gt;B6 Misc U&lt;br /&gt;B7 Modify E&lt;br /&gt;L1 Language E&lt;br /&gt;EE1 End-to-End Testing EE&lt;br /&gt;Legend:&lt;br /&gt;B = Order Engine&lt;br /&gt;L = Language&lt;br /&gt;N = Nice to have&lt;br /&gt;EE = End-to-End&lt;br /&gt;E = Essential&lt;br /&gt;U = Useful&lt;br /&gt;Definitions for Use in Testing&lt;br /&gt;Test Requirement&lt;br /&gt;A scenario is a prose statement of requirements for the test. Just as there are high level and detailed requirements in application development, there is a need to provide detailed requirements in the test development area.&lt;br /&gt;&lt;br /&gt;Test Case&lt;br /&gt;A test case is a transaction or list of transactions that will satisfy the requirements statement in a test scenario. The test case must contain the actual entries to be executed as well as the expected results, i.e., what a user entering the commands would see as a system response.&lt;br /&gt;&lt;br /&gt;Test Procedure&lt;br /&gt;Test procedures define the activities necessary to execute a test case or set of cases. Test procedures may contain information regarding the loading of data and executables into the test system, directions regarding sign in procedures, instructions regarding the handling of test results, and anything else required to successfully conduct the test.&lt;br /&gt;&lt;br /&gt;Automated Test Cases&lt;br /&gt;NAME OF FUNCTION Test Case&lt;br /&gt;_______________________________________________________________________________________&lt;br /&gt;Project Name/Number Generic Project / Project Request #Date  &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt;Test Case Description Check all drop down boxes, fill in   &lt;br /&gt; boxes and pop-up windows operate Build #  &lt;br /&gt; according to requirements on the _______________________&lt;br /&gt; main Pond web page.  Run #  &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt;Function / Module  B1.1 Execution  &lt;br /&gt; Under Test   Retry #  &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt;Test Requirement #  Case # AB1.1.1(A for&lt;br /&gt;    Automated) &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt;Written by &lt;br /&gt;_____________________________________________________________________________________&lt;br /&gt;Goals  Verify that Pond module functions as required &lt;br /&gt;____________________________________________________________________________________&lt;br /&gt;Setup for Test  Access browser, Go to .. . &lt;br /&gt;____________________________________________________________________________________&lt;br /&gt;Pre-conditions  Login with name and password. When arrive at Generic Main Menu... &lt;br /&gt;____________________________________________________________________________________&lt;br /&gt;StepActionExpected Results Pass/FailActual Results if Step Fails &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt; Go to From the Generic Main Menu,  &lt;br /&gt;  click on the Pond gif and go to  &lt;br /&gt;  Pond Pond web page. Once on the Pond  &lt;br /&gt;  and web page, check all drop down  &lt;br /&gt; .. boxes for appropriate information &lt;br /&gt;  (eg Time.7a, 8a in 1 hour  &lt;br /&gt;  increments), fill in boxes  &lt;br /&gt;  (remarks allows alpha and numeric &lt;br /&gt;  but no other special characters), &lt;br /&gt;  and pop up windows (eg. Privacy. &lt;br /&gt;  Ensure it is retrieved, has  &lt;br /&gt;  correct verbage and closes).  &lt;br /&gt;__________________________________________________________________________________&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Each automation project team needs write up an automation standards document stating the following:&lt;br /&gt;• The installation configurations of the automation tool.&lt;br /&gt;• How the client machines environment will be set up&lt;br /&gt;• Where the network repositories, and manual test plans documents are located.&lt;br /&gt;• Identify what the drive letter is that all client machines must map to.&lt;br /&gt;• How the automation tool will be configured.&lt;br /&gt;• Identify what Servers and Databases the automation will run against.&lt;br /&gt;• Any naming standards that the test procedures, test cases and test plans will follow.&lt;br /&gt;• Any recording standards and scripting standards that all scripts must follow.&lt;br /&gt;• Describe what components of the product that will be tested.}&lt;br /&gt;Installation Configuration&lt;br /&gt;Install Step: Selection: Completed:&lt;br /&gt;Installations Components Full&lt;br /&gt;Destination Directory C:\sqa6&lt;br /&gt;Type Of Repository Microsoft Access&lt;br /&gt;Scripting Language SQA Basic only&lt;br /&gt;Test Station Name Your PC Name&lt;br /&gt;DLL messages Overlay all DLL's the system prompts for. Robot will not run without its own DLL's.&lt;br /&gt;&lt;br /&gt;Client Machines Configuration&lt;br /&gt;Configuration Item Setting: Notes:&lt;br /&gt;Lotus Notes Shut down lotus notes before using robot. This will prevent mail notification messages from interrupting your scripts and it will allow robot to have more memory.&lt;br /&gt;Close all applications Close down all applications down (except SQA robot recorder and the application you are testing) This will free up memory on the PC.&lt;br /&gt;Shut down printing Select printer window from start menu Select File -&gt; Server Properties Select Advance tab Un-check notify check box&lt;br /&gt;Shut down printing Network Bring up dos prompt Select Z drive Type CASTOFF&lt;br /&gt;Turn off Screensavers Select NONE or change it to 90 minutes&lt;br /&gt;Display Settings for PC Set in Control Panel display application Colors - 256 Font Size - small Desktop 800 X 600 pixels&lt;br /&gt;Map a Network drive to {LETTER} Bring up explorer and map a network drive to here.&lt;br /&gt;&lt;br /&gt;Repository Creation&lt;br /&gt;Item Information&lt;br /&gt;Repository Name&lt;br /&gt;Location&lt;br /&gt;Mapped Drive Letter&lt;br /&gt;Project Name&lt;br /&gt;Users set up for Project Admin - no password&lt;br /&gt;Sbh files used in projects scripts&lt;br /&gt;Client Setup Options for the SQA Robot tool&lt;br /&gt;Option Window Option Selection&lt;br /&gt;Recording ID list selections by Contents&lt;br /&gt;ID Menu selections by Text&lt;br /&gt;Record unsupported mouse drags as Mouse click if within object&lt;br /&gt;Window positions Record Object as text Auto record window size&lt;br /&gt;While Recording Put Robot in background&lt;br /&gt;Playback Test Procedure Control Delay Between :5000 milliseconds&lt;br /&gt;Partial Window Caption On Each window search&lt;br /&gt;Caption Matching options Check - Match reverse captions Ignore file extensions Ignore Parenthesis&lt;br /&gt;Test Log Test log Management Output Playback results to test log All details&lt;br /&gt;Update SQA repository View test log after playback&lt;br /&gt;Test Log Data Specify Test Log Info at Playback&lt;br /&gt;Unexpected Window Detect Check&lt;br /&gt;Capture Check&lt;br /&gt;Playback response Select pushbutton with focus&lt;br /&gt;On Failure to remove Abort playback&lt;br /&gt;Wait States Wait Pos/Neg Region Retry - 4 Timeout after 90&lt;br /&gt;Automatic wait Retry - 2 Timeout after 120&lt;br /&gt;Keystroke option Playback delay 100 millsec Check record delay after enter key&lt;br /&gt;Error Recovery On Script command Failure Abort Playback&lt;br /&gt;On test case failure Continue Execution&lt;br /&gt;SQA trap Check all but last 2&lt;br /&gt;Object Recognition Do not change&lt;br /&gt;Object Data Test Definitions Do not change&lt;br /&gt;Editor Leave with defaults&lt;br /&gt;Preferences Leave with defaults&lt;br /&gt;Identify what Servers and Databases the automation will run against.&lt;br /&gt;This {Project name} will use the following Servers:&lt;br /&gt;{Add servers}&lt;br /&gt;On these Servers it will be using the following Databases:&lt;br /&gt;{Add databases}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Naming standards for test procedures, cases and plans&lt;br /&gt;The naming standards for this project are:&lt;br /&gt;&lt;br /&gt;Recording standards and scripting standards&lt;br /&gt;In order to ensure that scripts are compatible on the various clients and run with the minimum maintenance the following recording standards have been set for all scripts recorded.&lt;br /&gt;&lt;br /&gt;1. Use assisting scripts to open and close applications and activity windows.&lt;br /&gt;2. Use global constants to pass data into scripts and between scripts.&lt;br /&gt;3. Make use of main menu selections over using double clicks, toolbar items and pop up menus whenever possible.&lt;br /&gt;4. Each test procedure should have a manual test plan associated with it.&lt;br /&gt;5. Do not Save in the test procedure unless it is absolutely necessary, this will prevent the need to write numerous clean up scripts.&lt;br /&gt;6. Do a window existence test for every window you open, this will prevent scripts dying from slow client/server calls.&lt;br /&gt;7. Do not use the mouse for drop down selections, whenever possible use hotkeys and the arrow keys.&lt;br /&gt;8. When navigating through a window use the tab and arrow keys instead of using a mouse, this will make maintenance of scripts due to UI changes easier in the future.&lt;br /&gt;9. Create a template header file called testproc.tpl. This file will insert template header information on the top of all scripts recorded. This template area can be used for modification tracking and commenting on the script.&lt;br /&gt;10. Comment all major selections or events in the script. This will make debugging easier.&lt;br /&gt;11. Make sure that you maximize all MDI main windows in login initial scripts.&lt;br /&gt;12. When recording make sure you begin and end your scripts in the same position. Ex. On the platform browser always start your script opening the browser tree and selecting your activity (this will ensure that the activity window will always be in the same position), likewise always end your scripts with collapsing the browser tree.&lt;br /&gt;&lt;br /&gt;Describe what components of the product that will be tested.&lt;br /&gt;This project will test the following components:&lt;br /&gt;The objective is to:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WinRunner Fundamentals&lt;br /&gt;The 5 major areas to know for WinRunner are listed below with SOME of the subtopics called out for each of the major topics:&lt;br /&gt;1) GUI Map&lt;br /&gt;- Learning objects&lt;br /&gt;- Mapping custom objects to standard objects&lt;br /&gt;2) Record/Playback&lt;br /&gt;- Record modes: Context Sensitive and Analog&lt;br /&gt;- Playback modes: (Batch), Verify, Update, Debug&lt;br /&gt;3) Synchronization&lt;br /&gt;- Using wait parameter of functions&lt;br /&gt;- Wait window/object info&lt;br /&gt;- Wait Bitmap&lt;br /&gt;- Hard wait()&lt;br /&gt;4) Verification/Checkpoints&lt;br /&gt;- Window/object GUI checkpoints&lt;br /&gt;- Bitmap checkpoints&lt;br /&gt;- Text checkpoints (requires TLS)&lt;br /&gt;5) TLS (Test Script Language)&lt;br /&gt;- To enhance scripts (flow control, parameterization, data driven test, user defined functions,...&lt;br /&gt;________________________________________&lt;br /&gt;1. Calling Scripts and Expected Results&lt;br /&gt;When running in non-batch mode, WinRunner will always look in the calling scripts \exp directory for the checks. When running in batch mode, WinRunner will look in the called script's \exp directory.&lt;br /&gt;There is a limitation, though. WinRunner will only look in the called script's \exp directory one call level deep. For example, in bacth mode:&lt;br /&gt;script1:&lt;br /&gt;gui_check(...); #will look in script1\exp&lt;br /&gt;call "script2" ();&lt;br /&gt;&lt;br /&gt;script2:&lt;br /&gt;gui_check(...); #will look in script2\exp&lt;br /&gt;call "script3" ();&lt;br /&gt;&lt;br /&gt;script3:&lt;br /&gt;gui_check(...); #will look in script2\exp (and cause an error)&lt;br /&gt;&lt;br /&gt;In non bacth mode:&lt;br /&gt;&lt;br /&gt;script1:&lt;br /&gt;gui_check(...); #will look in script1\exp&lt;br /&gt;call "script2" ();&lt;br /&gt;&lt;br /&gt;script2:&lt;br /&gt;gui_check(...); #will look in script1\exp (and cause an error)&lt;br /&gt;call "script3" ();&lt;br /&gt;&lt;br /&gt;script3:&lt;br /&gt;gui_check(...); #will look in script1\exp (and cause an error)&lt;br /&gt;________________________________________&lt;br /&gt;2. Run Modes&lt;br /&gt;3. Batch mode will write results to the individual called test.&lt;br /&gt;4. Interactive (non-batch) mode writes to the main test.&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;5. Data Types&lt;br /&gt;TSL supports two data types: numbers and strings, and you do not have to declare them. Look at the on-line help topic for some things to be aware of:&lt;br /&gt;"TSL Language", "Variables and Constants", "Type (of variable or constant)"&lt;br /&gt;Generally, you shouldn't see any problems with comparisons.&lt;br /&gt;However, if you perform arithmetic operations you might see some unexpected behavior (again check out the on-line help mentioned above).&lt;br /&gt;var="3abc4";&lt;br /&gt;rc=var + 2; # rc will be 5 :-)&lt;br /&gt;________________________________________&lt;br /&gt;6. Debugging&lt;br /&gt;When using pause(x); for debugging, wrap the variable with brackets to easily see if "invisible" characters are stored in the variable (i.e., \n, \t, space, or Null) pause("[" &amp; x &amp;amp; "]");&lt;br /&gt;Use the debugging features of WinRunner to watch variables. "invisible" characters will show themselves (i.e., \n, \t, space)&lt;br /&gt;Examples:&lt;br /&gt;Variable pause(x); pause("[" &amp; x &amp;amp; "]");&lt;br /&gt;x="a1"; a1 [a1]&lt;br /&gt;x="a1 "; a1 [a1 ]&lt;br /&gt;x="a1\t"; a1 [a1 ]&lt;br /&gt;x="a1\n"; a1 [a1&lt;br /&gt;]&lt;br /&gt;x=""; []&lt;br /&gt;________________________________________&lt;br /&gt;7. Block Comments&lt;br /&gt;To temporarily comment out a block of code use:&lt;br /&gt;if (TRUE)&lt;br /&gt;{&lt;br /&gt;... block of code to be commented out!!&lt;br /&gt;}&lt;br /&gt;________________________________________&lt;br /&gt;8. Data Driven Test ddt_* functions vs getline/split&lt;br /&gt;Personally I do not care one way or another about the ddt_* or getline/split functions. They both do almost the same thing. There are some arguably good benefits to using ddt_*, but most of them are focused on the data management. In general you can always keep the data in Excel and perform a Save As to convert the file to a delimited text file.&lt;br /&gt;One major difference is in the performance of playing back a script that has a huge data file. The ddt_* functions currently can not compare to the much faster getline/split method.&lt;br /&gt;But here is an area to consider: READABILITY I personally do not like scripts with too many nested function calls (which the parameterize value method does) because it may reduce the readability for people with out a programming background.&lt;br /&gt;Example:&lt;br /&gt;edit_set("FirstName", ddt_val(table, "FirstName"));&lt;br /&gt;edit_set("LastName", ddt_val(table, "LastName"));&lt;br /&gt;So what I typically do is, declare my own variables at the beginning of the script, assign the values to them, and use the variable names in the rest of the script. It doesn't matter if I'm using the getline/split or ddt_val functions. This also is very useful when I may need to change the value of a variable, because they are all initialized at the top of the script (whenever possible).&lt;br /&gt;Example with ddt_* functions in a script:&lt;br /&gt;FIRSTNAME=ddt_val(table, "FirstName");&lt;br /&gt;LASTNAME=ddt_val(table, "LastName");&lt;br /&gt;...&lt;br /&gt;edit_set("FirstName", FIRSTNAME);&lt;br /&gt;edit_set("LastName", LASTNAME);&lt;br /&gt;And most of the time I have a driving test which calls another test and passes an array of data to be used to update a form.&lt;br /&gt;Example with ddt_* functions before calling another&lt;br /&gt;script:&lt;br /&gt;&lt;br /&gt;# Driver script will have&lt;br /&gt;...&lt;br /&gt;MyPersonArray [ ] =&lt;br /&gt;{&lt;br /&gt;"FIRSTNAME" = ddt_val(table, "FirstName");&lt;br /&gt;"LASTNAME" = ddt_val(table, "LastName");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;call AddPerson(MyPersonArray)&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;# Called script will have&lt;br /&gt;edit_set("FirstName", Person["FIRSTNAME"]);&lt;br /&gt;edit_set("LastName", Person["LASTNAME"]);&lt;br /&gt;So as you can see, there are many ways to do the same thing. What people must keep in mind is the skill level of the people that may inherit the scripts after they are created. And a consistent method should be used throughout the project.&lt;br /&gt;&lt;br /&gt;________________________________________&lt;br /&gt;9. String Vs Number Comparison&lt;br /&gt;10. String Vs Number comparisons are not a good thing to do.&lt;br /&gt;11. Try this sample to see why:&lt;br /&gt;12.&lt;br /&gt;13. c1=47.88 * 6;&lt;br /&gt;14. c2="287.28";&lt;br /&gt;15.&lt;br /&gt;16. #Prints a decimal value while suppressing non-significant zeros&lt;br /&gt;17. #and converts the float to a string.&lt;br /&gt;18. c3 = sprintf ("%g", c1);&lt;br /&gt;&lt;br /&gt;19. pause ("c1 = [" &amp; c1 &amp;amp; "]\nc2 = [" &amp; c2 &amp;amp; "]\nc3 = [" &amp; c3 &amp;amp; "]\n" &amp; "c1 - c2 =&lt;br /&gt;20. [" &amp;amp; c1 - c2 &amp; "]\nc1 - c3 = [" &amp;amp; c1 - c3 &amp; "]\nc2 - c3 = [" &amp;amp; c2 - c3 &amp; "]");&lt;br /&gt;&lt;br /&gt;How to Create a Test Using Winrunner (1)&lt;br /&gt;&lt;br /&gt;User can create tests using recording or programming or by both. While recording, each operation performed by the user generates a statement in the Test Script Language (TSL). These statements are displayed as a test script in a test window. User can then enhance the recorded test script, either by typing in additional TSL functions and programming elements or by using WinRunner�s visual programming tool, the Function Generator, or using the Function Viewer.&lt;br /&gt;&lt;br /&gt;There are 2 modes of recording in WinRunner&lt;br /&gt;&lt;br /&gt;1. Context Sensitive mode records the operations user performed on the application by identifying Graphical User Interface (GUI) objects. Context Sensitivity test scripts can be reused in the future version of the application because WinRunner writes a unique description of each selected object to a GUI map file. The GUI map files are maintained separately from test scripts and the same GUI map file (or files) can be used for multiple tests.&lt;br /&gt;For example, if the user clicks the Open button in an Open dialog box, WinRunner records the action and generate a script. When it runs the test, WinRunner looks for the Open dialog box and the Open button represented in the test script. If, in subsequent runs of the test, the button is in a different DemoUrl in the Open dialog box, WinRunner is still able to find it.&lt;br /&gt;&lt;br /&gt;2. Analog mode records mouse clicks, keyboard input, and the exact x-and y-coordinates traveled by the mouse. When the test is run, WinRunner retraces the mouse tracks. Use Analog mode when exact mouse coordinates are important to the test, such as when testing a drawing application.&lt;br /&gt;For example, if the user clicks the Open button in an Open dialog box, WinRunner records the movements of the mouse pointer. If, in subsequent runs of the test, the button is in a different DemoUrl in the Open dialog box, WinRunner will not able to find it. When recording in Analog mode, use softkeys rather than the WinRunner menus or toolbars to insert checkpoints in order to avoid extraneous mouse movements.&lt;br /&gt;&lt;br /&gt;Different recording methods 1) Record 2) Pass up 3) As Object 4) Ignore.&lt;br /&gt;&lt;br /&gt;1) Record instructs WinRunner to record all operations performed on a GUI object. This is the default record method for all classes. (The only exception is the static class (static text), for which the default is Pass Up.)&lt;br /&gt;&lt;br /&gt;2) Pass Up instructs WinRunner to record an operation performed on this class as an operation performed on the element containing the object. Usually this element is a window, and the operation is recorded as win_mouse_click.&lt;br /&gt;&lt;br /&gt;3) As Object instructs WinRunner to record all operations performed on a GUI object as though its class were �object� class.&lt;br /&gt;4) Ignore instructs WinRunner to disregard all operations performed on the class.&lt;br /&gt;&lt;br /&gt;Some common Settings we need to set in General Options:&lt;br /&gt;1. Default Recording Mode is Object mode&lt;br /&gt;2. Synch Point time is 10 seconds as default&lt;br /&gt;3. When Test Execution is in Batch Mode ensure all the options are set off so that the Batch test runs uninterrupted.&lt;br /&gt;4. In the Text Recognition if the Application Text is not recognizable then the Default Font Group is set. The Text Group is identified with a User Defined Name and then include in the General Option.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Checkpoints allow user to compare the current behavior of the application being tested to its behavior in an earlier version. If any mismatches are found, WinRunner captures them as actual results. User can add four types of checkpoints to test scripts they are&lt;br /&gt;&lt;br /&gt;GUI Checkpoints&lt;br /&gt;Bitmap Checkpoints&lt;br /&gt;Text checkpoints&lt;br /&gt;Database checkpoints&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All mouse operations, including those performed on the WinRunner window or WinRunner dialog boxes are recorded during an analog recording session. Therefore, don�t insert checkpoints and synchronization points, or select other WinRunner menu or toolbar options during an analog recording session. Note that even if user chooses to record only on selected applications, user can still create checkpoints and perform all other non-recording operations on all applications. Any checkpoints should not be a component of X &amp; Y Co-ordinate dependant. In practical terms if there is a Check point that is defined on X, Y Parameters then the usability of the control point wouldn't make any sense for the application to test. User cannot insert objects from different windows into a single checkpoint. Don�t use Bitmap or GUI Checkpoints for dynamic verification. These checkpoints are purely for static verifications. There are of course, work-around, but mostly not worth the effort.&lt;br /&gt;&lt;br /&gt;GUI checkpoints verify information about GUI objects. For example, user can check that a button is enabled or see which item is selected in a list. There are three types of GUI Check points they are&lt;br /&gt;For Single Property&lt;br /&gt;For Object/Window&lt;br /&gt;For Multiple Objects&lt;br /&gt;&lt;br /&gt;GUI checkpoint for single property:-user can check a single property of a GUI object. For example, user can check whether a button is enabled or disabled or whether an item in a list is selected.&lt;br /&gt;GUI checkpoint for object/window:-user can create a GUI checkpoint to check a single object in the application being tested. User can either check the object with its default properties or user can specify multiple properties to check.&lt;br /&gt;GUI checkpoint for multiple objects:-user can create a GUI checkpoint to check multiple objects in the application being tested. User can either check the object with its default properties or user can specify multiple properties of multiple objects to check.&lt;br /&gt;Bitmap Checkpoint checks an object, a window, or an area of a screen in the application as a bitmap. While creating a test, user can indicate what user want to check. WinRunner captures the specified bitmap, stores it in the expected results folder (exp) of the test, and inserts a checkpoint in the test script. While running the test, WinRunner compares the bitmap currently displayed in the application being tested with the expected bitmap stored earlier. In the event of a mismatch, WinRunner captures the current actual bitmap and generates a difference bitmap. By comparing the three bitmaps (expected, actual, and difference), user can identify the nature of the discrepancy there are two types of bitmap check points they are&lt;br /&gt;Bitmap Checkpoint for Object/Window: - user can capture a bitmap of any window or object in the application by pointing to it.&lt;br /&gt;Bitmap Checkpointfor Screen Area:-user defines any rectangular area of the screen and captures it as a bitmap for comparison.&lt;br /&gt;&lt;br /&gt;Text checkpoints read and check text in GUI objects and in areas of the screen. While creating a test user has to point to an object or a window containing text. WinRunner reads the text and writes a TSL statement to the test script. Later user can add simple programming elements to test scripts to verify the contents of the text. User should use a text checkpoint on a GUI object only when a GUI checkpoint cannot be used to check the text property. There are two types of Text checkpoints they are&lt;br /&gt;From Object/Window&lt;br /&gt;From Screen Area&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Database checkpoints check the contents and the number of rows and columns of a result set, which is based on a query user, create on database. There are three types of database check points they are&lt;br /&gt;Default Check:-used to check the entire contents of a result set, Default Check are useful when the expected results can be established before the test run.&lt;br /&gt;Custom Check:-used to check the partial contents, the number of rows, and the number of columns of a result set.&lt;br /&gt;Runtime Record Check:-user can create runtime database record checkpoints in order to compare the values displayed in the application during the test run with the corresponding values in the database.&lt;br /&gt;&lt;br /&gt;How to Create a Test Using Winrunner (2)&lt;br /&gt;GUI checkpoint&lt;br /&gt;GUI checkpoint for single property&lt;br /&gt;User can check a single property of a GUI object. For example, user can check whether a button is enabled or disabled or whether an item in a list is selected To create a GUI checkpoint for a property value, use the Check Property dialog box to add one of the following functions to the test script:&lt;br /&gt;&lt;br /&gt;button_check_info ()&lt;br /&gt;scroll_check_info ()&lt;br /&gt;edit_check_info ()&lt;br /&gt;static_check_info ()&lt;br /&gt;list_check_info ()&lt;br /&gt;win_check_info ()&lt;br /&gt;obj_check_info ()&lt;br /&gt;&lt;br /&gt;Syntax:-Function_Name (name, property, property_value)&lt;br /&gt;name: The Logical name of the object to be checked&lt;br /&gt;property: The property to be checked&lt;br /&gt;property_value: The expected property value&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Functions checks the current value of the specified property matches the expected property value.&lt;br /&gt;To create a GUI checkpoint for a property value:&lt;br /&gt;1. Choose Insert &gt;GUI Checkpoint &gt;For Single Property.&lt;br /&gt;2. The mouse pointer becomes a pointing hand, and the Check Property dialog box opens and shows the default function for the selected object. WinRunner automatically assigns argument values to the function.&lt;br /&gt;3. User can modify the arguments for the property check. To modify assigned argument values, choose a value from the Property list. The expected value is updated in the Expected text box. To choose a different object, click the pointing hand and then click the object to choose.&lt;br /&gt;&lt;br /&gt;If the user clicks an object that is not compatible with the selected function, a message states that the current function cannot be applied to the selected object.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;GUI checkpoint for object/window&lt;br /&gt;This checkpoint is used to check the state or properties of a single object or window in an application. If a user single-click on a GUI object, the default checks for that object are included in the GUI checkpoint. If the user double-clicks on a GUI object, after WinRunner capturing GUI data, the Check GUI dialog box opens. User can choose which checks to include for that particular object. When using a GUI Checkpoint command, WinRunner inserts a checkpoint statement into the test script.&lt;br /&gt;&lt;br /&gt;For a GUI object class, WinRunner inserts an obj_check_gui statement, which compares current GUI object data to expected data.&lt;br /&gt;&lt;br /&gt;obj_check_gui (object, checklist, expected_results_file, time);&lt;br /&gt;&lt;br /&gt;object The logical name or description of the GUI object. The object may belong to any class.&lt;br /&gt;checklist The name of the checklist defining the GUI checks.&lt;br /&gt;expected_results_file The name of the file that stores the expected GUI data.&lt;br /&gt;time The interval in seconds. This interval is added to the timeout test option during the test run.&lt;br /&gt;For a window, WinRunner inserts a win_check_gui statement, which compares current GUI data to expected GUI data for a window.&lt;br /&gt;&lt;br /&gt;win_check_gui (window, checklist, expected_results_file, time);&lt;br /&gt;&lt;br /&gt;WinRunner names the first checklist in the test as list1.ckl and the first expected results file gui1.&lt;br /&gt;&lt;br /&gt;During test creation, the GUI data is captured and stored. When the user run the test, the current GUI data is compared to the data stored in the expected_results_file, according to the checklist. A file containing the actual results is also generated.&lt;br /&gt;&lt;br /&gt;GUI checkpoint for multiple objects&lt;br /&gt;The checkpoint statement inserted by the WinRunner in the case of GUI checkpoint for multiple objects and GUI checkpoint for object/window are the same.&lt;br /&gt;&lt;br /&gt;To create a GUI checkpoint for two or more objects select GUI Checkpoint For Multiple Objects button on the User toolbar. The Create GUI Checkpoint dialog box opens.&lt;br /&gt;&lt;br /&gt;To add an object, click the Add button once. If the user clicks a window title bar or menu bar, a window pops up asking "You are currently pointing at a window. What do you wish to check inside the window?" objects or menus. User can continue to choose objects by clicking the Add button.&lt;br /&gt;&lt;br /&gt;Click the right mouse button to stop the selection process and to restore the mouse pointer to its original shape. The Create GUI Checkpoint dialog box reopens. The Objects pane contains the name of the window and objects included in the GUI checkpoint. To specify which objects to check, click an object name in the Objects pane. The Properties pane lists all the properties of the object. The default properties are selected.&lt;br /&gt;&lt;br /&gt;The checklist file contains the expected values and it come under the exp folder. A GUI checklist includes only the objects and the properties to be checked. It does not include the expected results for the values of those properties. WinRunner has an edit checklist file option under the Insert menu. For modifying GUI checklist file select the Edit GUI Checklist. This brings up a dialog box that gives the option to select the checklist file to modify. There is also an option to select the scope of the checklist file, whether it is Test specific or a shared one.&lt;br /&gt;&lt;br /&gt;Bitmap Checkpoint&lt;br /&gt;Bitmap Checkpoint for Object/Window&lt;br /&gt;To create a Bitmap Checkpoint for Object/Window&lt;br /&gt;Choose Insert &gt;Bitmap Checkpoint &gt;For Object/Window.&lt;br /&gt;&lt;br /&gt;The WinRunner window is minimized, the mouse pointer becomes a pointing hand.&lt;br /&gt;Point to the object or window and click it.&lt;br /&gt;&lt;br /&gt;WinRunner captures the bitmap and generates a TSL statement in the script.&lt;br /&gt;&lt;br /&gt;The TSL statement generated for a window bitmap has the following syntax:&lt;br /&gt;&lt;br /&gt;win_check_bitmap (window, bitmap, time);&lt;br /&gt;&lt;br /&gt;The TSL statement generated for an object bitmap has the following syntax:&lt;br /&gt;obj_check_bitmap (object, bitmap, time);&lt;br /&gt;&lt;br /&gt;window or object The logical name or description of the window or object.&lt;br /&gt;bitmap A string expression that identifies the captured bitmap.&lt;br /&gt;&lt;br /&gt;time The interval marking the maximum delay between the previous input event and the capture of the current bitmap, in seconds. This interval is added to the timeout test option before the next statement is executed.&lt;br /&gt;&lt;br /&gt;The win_check_bitmap function captures and compares bitmaps of a window or window area. During test creation, the specified window or area is captured and stored. During a test run, the current bitmap is compared to the one stored in the database. If they are different, the actual bitmap is captured. This function is generated during the recording of a test. Since the test is waiting for a result, the test should be run in update mode.&lt;br /&gt;&lt;br /&gt;Bitmap Checkpoint for Screen Area&lt;br /&gt;&lt;br /&gt;To create a Bitmap Checkpoint for Screen Area&lt;br /&gt;Choose Insert&gt;:Bitmap Checkpoint &gt;:For Screen Area.&lt;br /&gt;&lt;br /&gt;The WinRunner window is minimized, the mouse pointer becomes a crosshairs pointer Mark the area to be captured: press the left mouse button and drag the mouse pointer until a rectangle encloses the area; then release the mouse button.&lt;br /&gt;&lt;br /&gt;Press the right mouse button to complete the operation.&lt;br /&gt;WinRunner captures the area and generates a win_check_bitmap statement in the script.&lt;br /&gt;&lt;br /&gt;The win_check_bitmap statement for an area of the screen has the following syntax:&lt;br /&gt;&lt;br /&gt;win_check_bitmap (window, bitmap, time, x, y, width, height);&lt;br /&gt;&lt;br /&gt;x, y For an area bitmap: the coordinates or the upper-left corner, relative to the window in which the selected area is located. width, height For an area bitmap: the size of the selected area, in pixels.&lt;br /&gt;&lt;br /&gt;When area of the window is captured, the additional parameters i.e. x, y, width and height define the area's location and dimensions.&lt;br /&gt;&lt;br /&gt;The analog version of win_check_bitmap is check_window. Syntax is as follows&lt;br /&gt;&lt;br /&gt;check_window (time, bitmap, window, width, height, x, y [, relx1, rely1, relx2, rely2]);&lt;br /&gt;&lt;br /&gt;time - Indicates the interval between the previous input event and the bitmap capture, in seconds. This interval is added to the timeout_msec testing option. The sum is the interval between the previous event and the bitmap capture, in seconds.&lt;br /&gt;bitmap - A string identifying the captured bitmap. The string length is limited to 6 characters.&lt;br /&gt;window - A string indicating the name in the window banner.&lt;br /&gt;width, height - The size of the window, in pixels.&lt;br /&gt;&lt;br /&gt;x, y - The position of the upper left corner of the window (relative to the screen). In the case of an MDI child window, the position is relative to the parent window.&lt;br /&gt;relx1, rely1 For an area bitmap: the coordinates of the upper left corner of the rectangle, relative to the upper left corner of the client window (the x and y parameters).&lt;br /&gt;relx2, rely2 For an area bitmap: the coordinates of the lower right corner of the rectangle, relative to the lower right corner of the client window (the x and y parameters).&lt;br /&gt;&lt;br /&gt;The check_window function captures a bitmap of a window. During recording, the specified bitmap is captured and stored. During a test run, the current bitmap is compared to the bitmap stored in the database, and if it is different, the actual bitmap is captured.&lt;br /&gt;&lt;br /&gt;Text checkpoints&lt;br /&gt;Text checkpoints read text in GUI objects and in bitmaps and enable user to verify the contents. When creating a text check point for an object or a window containing text. WinRunner reads the text and writes a TSL statement to the test script. Using simple programming the user can use the text content.&lt;br /&gt;&lt;br /&gt;User can use a text checkpoint to:&lt;br /&gt;1. Read text from a GUI object or window in the application, using obj_get_text or win_get_text. The maximum number of characters that can be captured in one obj_get_text statement is 2048.&lt;br /&gt;&lt;br /&gt;obj_get_text (object, out_text [, x1, y1, x2, y2]);&lt;br /&gt;&lt;br /&gt;object The logical name or description of the GUI object. The object may belong to any class. out_text The name of the output variable that stores the captured text. x1,y1,x2,y2 An optional parameter that defines the location from which text will be read, relative to the specified object. The pairs of coordinates can designate any two diagonally opposite corners of a rectangle.&lt;br /&gt;&lt;br /&gt;2. Search for text in an object or window, using obj_find_text or win_find_text returns the location of a string within an object.&lt;br /&gt;obj_find_text (object, string, result_array [, search_area [, string_def]]);&lt;br /&gt;object The logical name or description of the object. The object may belong to any class.&lt;br /&gt;&lt;br /&gt;string A valid string expression or the name of a string variable, which can include a regular expression. The regular expression should not include an exclamation mark (!), however, which is treated as a literal character.&lt;br /&gt;result_array The name of the four-element array that stores the location of the string. The elements are numbered 1 to 4. Elements 1 and 2 store the x- and y- coordinates of the upper left corner of the enclosing rectangle; elements 3 and 4 store the coordinates for the lower right corner.&lt;br /&gt;&lt;br /&gt;search_area Indicates the area of the screen to search as coordinates that define any two diagonal corners of a rectangle, expressed as a pair of x,y coordinates. The coordinates are stored in result_array.&lt;br /&gt;&lt;br /&gt;string_def Defines the type of search to perform. If no value is specified (0 or FALSE, the default), the search is for a single, complete word only. When 1, or TRUE, is specified, the search is not restricted to a single, complete word. Any regular expression used in the string must not contain blank spaces, and only the default value of string_def, FALSE, is in effect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Compares two strings using compare_text (str1, str2 [, chars1, chars2]);&lt;br /&gt;str1, str2 the two strings to be compared.&lt;br /&gt;chars1 One or more characters in the first string that should be considered equivalent to the character(s) specified in chars2.&lt;br /&gt;chars2 One or more characters in the second string. that should be considered equivalent to the character(s) specified in chars1.&lt;br /&gt;&lt;br /&gt;The compare_text function compares two strings, ignoring any differences specified. The two optional parameters are used to indicate characters that should be considered equivalent during the comparison. For instance, if the user specify "m" and "n", the words "any" and "amy" will be considered a match. The two optional parameters must be of the same length. Note that blank spaces are ignored.&lt;br /&gt;&lt;br /&gt;WinRunner can read the visible text from the screen in most applications. If the Text Recognition mechanism is set to driver based recognition, this process is automatic. However, if the Text Recognition Mechanism is set to image-based recognition, WinRunner must first learn the fonts used by the application. When using the WinRunner text-recognition mechanism for Windows-based applications, keep in mind that it may occasionally retrieve unwanted text information (such as hidden text and shadowed text, which appears as multiple copies of the same string). The text recognition may behave differently in different run sessions depending on the operating system version, service packs, other installed toolkits, the APIs used, and so on. Therefore, when possible, it is highly recommended to retrieve or check text from application window by inserting a standard GUI checkpoint and selecting to check the object ’s value (or similar)property.&lt;br /&gt;&lt;br /&gt;When reading text with a learned font, WinRunner reads a single line of text only. If the captured text exceeds one line, only the leftmost line is read. If two or more lines have the same left margin, then the bottom line is read.&lt;br /&gt;&lt;br /&gt;Database Checkpoint&lt;br /&gt;&lt;br /&gt;Default Check on a Database&lt;br /&gt;To create default check on a database using ODBC or Microsoft Query:&lt;br /&gt;Choose Insert &gt;Database Checkpoint &gt;Default Check&lt;br /&gt;If Microsoft Query is installed and user is creating a new query, an instruction screen opens for creating a query. If Microsoft Query is not installed, the Database Checkpoint wizard opens to a screen where the user can define the ODBC query manually.&lt;br /&gt;Define a query, copy a query, or specify an SQL statement.&lt;br /&gt;&lt;br /&gt;WinRunner takes several seconds to capture the database query and restore the WinRunner window. WinRunner captures the data specified by the query and stores it in the test’s exp folder. WinRunner creates the msqr*.sql query file and stores the query and the database checklist is stored in the test’s chklist folder.&lt;br /&gt;&lt;br /&gt;A database checkpoint is inserted in the test script as a db_check statement.&lt;br /&gt;Syntax:-&lt;br /&gt;db_check (checklist, expected_results_file [, max_rows [, parameter_array]]);&lt;br /&gt;&lt;br /&gt;checklist The name of the checklist specifying the checks to perform.&lt;br /&gt;expected_results_file The name of the file storing the expected database data.&lt;br /&gt;max_rows The maximum number of rows retrieved in a database. If no maximum is specified, then by default the number of rows is not limited.&lt;br /&gt;parameter_array The array of parameters for the SQL statement.&lt;br /&gt;&lt;br /&gt;The db_check function captures and compares information about a database. During a test run, WinRunner checks the query of the database with the checks specified in the checklist. WinRunner then checks the information obtained during the test run against the expected results contained in the expected_results_file.&lt;br /&gt;Note:-when using Create &gt; Database Checkpoint command to create a database checkpoint, only the first two (obligatory) parameters are included in the db_check statement (unless the user parameterize the SQL statement from within Microsoft Query). If the user changes this parameter in a db_check statement recorded in test script, user must run the test in Update mode before running it in Verify mode. SQL queries used with db_check are limited to 4Kb in length.&lt;br /&gt;Custom Check on a Database&lt;br /&gt;&lt;br /&gt;When the user wants to create a custom check on a database, user creates a standard database checkpoint in which user can specify which properties to check on a result set. User can create a custom check on a database using ODBC, Microsoft Query or Data Junction. User can create a custom check on a database in order to:&lt;br /&gt;&lt;br /&gt;Check the contents of part or the entire result set&lt;br /&gt;Edit the expected results of the contents of the result set&lt;br /&gt;Count the rows in the result set&lt;br /&gt;Count the columns in the result set&lt;br /&gt;&lt;br /&gt;To create a custom check on a database:&lt;br /&gt;Choose Insert &gt;Database Checkpoint &gt;Custom Check&lt;br /&gt;&lt;br /&gt;The Database Checkpoint wizard opens. Use ODBC or Microsoft Query to define a query, copy a query, or specify an SQL statement. WinRunner takes several seconds to capture the database query and restore the WinRunner window.&lt;br /&gt;If the user wants to edit the expected value of a property, first select it. Next, either click the Edit Expected Value button, or double-click the value in the Expected Value column. WinRunner captures the current property values and stores them in the test’s exp folder. WinRunner stores the database query in the test’s chklist folder. A database checkpoint is inserted in the test script as a db_check statement. If the user is using Microsoft Query and the user want to be able to parameterize the SQL statement in the db_check statement, then in the last wizard screen in Microsoft Query, click View data or edit query in Microsoft Query&lt;br /&gt;&lt;br /&gt;The default check for a multiple-column query on a database is a case sensitive check on the entire result set by column name and row index. The default check for a single-column query on a database is a case sensitive check on the entire result set by row position. If the result set contains multiple columns with the same name, WinRunner disregards the duplicate columns and does not perform checks on them. Therefore, user should create a custom check on the database and select the column index option.&lt;br /&gt;&lt;br /&gt;Modifying a Standard Database Checkpoint&lt;br /&gt;User can make the following changes to an existing standard database checkpoint:&lt;br /&gt;Make a checklist available to other users by saving it in a shared folder&lt;br /&gt;User can edit an existing database checklist.&lt;br /&gt;User can modify a query in an existing checklist&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To save a database checklist in a shared folder:&lt;br /&gt;Choose Insert &gt;Edit Database Checklist.&lt;br /&gt;&lt;br /&gt;The Open Checklist dialog box opens.&lt;br /&gt;Select a database checklist and click OK .&lt;br /&gt;Under Scope, click Shared .Type in a name for the shared checklist.&lt;br /&gt;&lt;br /&gt;*.sql files are not saved in shared database checklist folders. Checklists have the .cdl extension, while GUI checklists have the .ckl extension. The Objects pane contains “Database check”and the name of the *.sql query file or *.djs conversion file that will be included in the database checkpoint. The Properties pane lists the different types of checks that can be performed on databases. A check mark indicates that the item is selected and is included in the checkpoint. In the Properties pane, user can edit the database checklist to include or exclude the following types of checks:&lt;br /&gt;&lt;br /&gt;ColumnsCount: Counts the number of columns in the result set.&lt;br /&gt;Content : Checks the content of the result set&lt;br /&gt;RowsCount: Counts the number of rows in the result set.&lt;br /&gt;&lt;br /&gt;To modify a query in an existing checklist, highlight the name of the query file or the conversion file, and click Modify.&lt;br /&gt;The Modify ODBC Query dialog box opens and the user can make modification to connection string and/or the SQL statement.&lt;br /&gt;After making the modifications user must run all tests that use this checklist in Update mode before running them in Verify mode.&lt;br /&gt;&lt;br /&gt;Runtime record checkpoints&lt;br /&gt;Runtime record checkpoints are useful when the information in the database changes from one run to the other. Runtime record checkpoints enable user to verify that the information displayed in the application was correctly inserted to the database or conversely, that information from the database is successfully retrieved and displayed on the screen. If the comparison does not meet the success criteria user specify for the checkpoint, the checkpoint fails.&lt;br /&gt;&lt;br /&gt;To add a runtime database record checkpoints&lt;br /&gt;Select Insert &gt;Database Checkpoint &gt;Runtime Record Check .&lt;br /&gt;&lt;br /&gt;The Define Query screen pops up which enables user to select a database and define a query for the checkpoint. User can create a new query from database using Microsoft Query, or manually define an SQL statement.&lt;br /&gt;&lt;br /&gt;The Next screen is the Match Database Field screen which enables user to identify the application control or text in application that matches the displayed database field.&lt;br /&gt;&lt;br /&gt;The Next screen is the Matching Record Criteria screen which enables user to specify the number of matching database records required for a successful checkpoint.&lt;br /&gt;&lt;br /&gt;db_record_check statement is inserted into the script. db_record_check () function compares information that appears in the application under test during a test run with the current values in the corresponding record(s) in database.&lt;br /&gt;&lt;br /&gt;Syntax of db_record_check ():-&lt;br /&gt;db_record_check (ChecklistFileName, SuccessConditions, RecordNumber [, Timeout]);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ChecklistFileName A file created by WinRunner and saved in the test's checklist folder. The file contains information about the data to be captured during the test run and its corresponding field in the database. The file is created based on the information entered in the Runtime Record Checkpoint wizard.&lt;br /&gt;&lt;br /&gt;SuccessConditions Contains one of the following values:&lt;br /&gt;&lt;br /&gt;DVR_ONE_OR_MORE_MATCH -&lt;br /&gt;The checkpoint passes if one or more matching database records are found.&lt;br /&gt;DVR_ONE_MATCH -&lt;br /&gt;The checkpoint passes if exactly one matching database record is found.&lt;br /&gt;DVR_NO_MATCH - The checkpoint passes if no matching database records are found.&lt;br /&gt;RecordNumber Parameter that returns the number of records the database.&lt;br /&gt;Timeout The number of seconds before the query attempt times out.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;User cannot use an SQL statement of the type "SELECT * from ..." with the db_record_check function. Instead, user must supply the tables and field names. The reason for this is that WinRunner needs to know which database fields should be matched to which variables in the WinRunner script. The expected SQL format is:&lt;br /&gt;&lt;br /&gt;SELECT table_name1.field_name1, table_name2.field_name2, ……FROM table_name1, table_name2, ... [WHERE ...]&lt;br /&gt;&lt;br /&gt;Editing a Runtime Database Record Checklist&lt;br /&gt;User can make changes to a checklist created for a runtime database record checkpoint. A checklist includes the connection string to the database, the SQL statement or a query, the database fields in the data source, the controls in the application, and the mapping between them. It does not include the success conditions of a runtime database record Checkpoint so the user can’t edit the success conditions. User can change the success condition of the checkpoint by modifying the second parameter in the db_record_check statement in the test script.&lt;br /&gt;&lt;br /&gt;To edit an existing runtime database record checklist:&lt;br /&gt;&lt;br /&gt;Choose Insert &gt;Edit Runtime Record Checklist.&lt;br /&gt;Select the checklist name from the Runtime Record Checkpoint wizard by default, runtime database record checklists are named sequentially in each test, starting with list1.cvr.&lt;br /&gt;&lt;br /&gt;The next screen is the Specify SQL statement screen where the user can modify the Connection String and SQL statement. If the user modified the SQL statement or query in Microsoft Query so that it now references an additional database field in the data source, the checklist will now include a new database field.&lt;br /&gt;&lt;br /&gt;User must match this database field to an application control. Use the pointing hand in the next screen to identify the control or text that matches the displayed field name. New database fields are marked with a “New” icon&lt;br /&gt;&lt;br /&gt;If user wants several db_record_check statements, each with different success conditions then user can manually enter a db_record_check statement that references an existing checklist and specify the success conditions user want. User does not need to rerun the Runtime Record Checkpoint wizard for each new checkpoint.&lt;br /&gt;Parameterize Standard Database Checkpoints&lt;br /&gt;&lt;br /&gt;While creating a standard database checkpoint using ODBC (Microsoft Query), user can add parameters to an SQL statement to parameterize the checkpoint. A parameterized query is a query in which at least one of the fields of the WHERE clause is parameterized, i.e., the value of the field is specified by a question mark symbol (?).&lt;br /&gt;&lt;br /&gt;To execute a parameterized query, user must specify the values for the parameters.&lt;br /&gt;&lt;br /&gt;To parameterize the SQL statement in the checkpoint, the db_check function has a fourth, optional, argument the parameter_array argument.&lt;br /&gt;&lt;br /&gt;Syntax:-&lt;br /&gt;db_check (checklist, expected_results_file [, max_rows [, parameter_array]]);&lt;br /&gt;&lt;br /&gt;The parameter_array argument will contain the values to substitute for the parameters in the parameterized checkpoint. WinRunner cannot capture the expected result set while recording the test. Unlike regular database checkpoints, recording a parameterized checkpoint requires additional steps to capture the expected results set. Therefore, user must use array statements to add the values to substitute for the parameters. User must run the test in Update mode once to capture the expected results set before running the test in Verify mode.&lt;br /&gt;&lt;br /&gt;TSL Functions for Working with ODBC (Microsoft Query)&lt;br /&gt;When the user works with ODBC (Microsoft Query), user must perform the following steps in the following order:&lt;br /&gt;&lt;br /&gt;Connect to the database.&lt;br /&gt;Execute a query and create a result set based on an SQL statement.&lt;br /&gt;Retrieve information from the database.&lt;br /&gt;Disconnect from the database.&lt;br /&gt;&lt;br /&gt;Connect to the database.&lt;br /&gt;Syntax:-db_connect (session_name, connection_string [, timeout]);&lt;br /&gt;session_name The logical name or description of the database session.&lt;br /&gt;connection_string The connection parameters to the ODBC database.&lt;br /&gt;timeout The number of seconds before the login attempt times out.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The db_connect function creates the new session_name database session and uses the connection_string to establish a connection to an ODBC database. User can use the Function Generator to open an ODBC dialog box, in which user can create the connection string. If user tries to use a session name that has already been used, WinRunner will delete the old session object and create a new one using the new connection string.&lt;br /&gt;&lt;br /&gt;Execute a query and create a result set based on an SQL statement.&lt;br /&gt;Syntax:-db_execute_query ( session_name, SQL, record_number );&lt;br /&gt;SQL The SQL statement to be executed&lt;br /&gt;record_number An out parameter returning the number of records in the result query.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The db_execute_query function executes the query based on the SQL statement and creates a record set. User must use a db connect statement to connect to the database before using this function.&lt;br /&gt;&lt;br /&gt;Retrieve information from the database.&lt;br /&gt;Syntax:-db_get_field_value (session_name, row_index, column);&lt;br /&gt;row_index The index of the row written as a string: "# followed by the numeric index. (The first row is always numbered "#0".)&lt;br /&gt;column name of the field in the column&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The db_get_field_value function returns the value of a single field in the specified row_index and column in the session_name database session. In case of an error, an empty string will be returned. Before using this function user must use a db connect statement, connect to the database and db execute query statement, execute a query.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Syntax:-db_get_headers (session_name, header_count, header_content);&lt;br /&gt;header_count The number of column headers in the query.&lt;br /&gt;header_content The column headers concatenated and delimited by tabs. If this string exceeds 1024 characters, it is truncated.&lt;br /&gt;&lt;br /&gt;The db_get_headers function returns the header_count and the text in the column headers in the session_name database session. Before using this function user must use a db connect statement, connect to the database and db execute query statement, execute a query.&lt;br /&gt;&lt;br /&gt;Syntax:-db_get_row (session_name, row_index, row_content);&lt;br /&gt;row_index The numeric index of the row. (The first row is always numbered "0".)&lt;br /&gt;row_content The row content as a concatenation of the fields values, delimited by tabs.&lt;br /&gt;&lt;br /&gt;The db_get_row function returns the row_content of the specified row_index, concatenated and delimited by tabs in the session_name database session. Before using this function user must use a db connect statement, connect to the database and db execute query statement, execute a query.&lt;br /&gt;&lt;br /&gt;Syntax:-db_write_records (session_name, output_file [, headers [, record_limit]]);&lt;br /&gt;output_file The name of the text file in which the record set is written.&lt;br /&gt;headers An optional Boolean parameter that will include or exclude the column headers from the record set written into the text file. record_limit The maximum number of records in the record set to be written into the text file. A value of NO_LIMIT (the default value) indicates there is no maximum limit to the number of records in the record set.&lt;br /&gt;&lt;br /&gt;The db_write_records writes the record set of the session_name into an output_file delimited by tabs. Before using this function user must use a db connect statement, connect to the database and db execute query statement, execute a query.&lt;br /&gt;&lt;br /&gt;Syntax:-db_get_last_error ( session_name, error );&lt;br /&gt;error The error message.&lt;br /&gt;&lt;br /&gt;The db_get_last_error function returns the last error message of the last ODBC or Data Junction operation in the session_name database session. If there is no error message, an empty string will be returned. User must use a db connect statement to connect to the database before using this function.&lt;br /&gt;&lt;br /&gt;Disconnect from the database.&lt;br /&gt;Syntax:-db_disconnect ( session_name );&lt;br /&gt;&lt;br /&gt;The db_disconnect function disconnects from the session_name database session. User must use a db connect statement to connect to the database before using this function.&lt;br /&gt;&lt;br /&gt;Specifying the Verification Method&lt;br /&gt;User can select the verification method to control how WinRunner identifies columns or rows within a result set. The verification method applies to the entire result set. Specifying the verification method is different for multiple-column and single-column result sets.&lt;br /&gt;&lt;br /&gt;Specifying the Verification Method for a Multiple-Column Result Set&lt;br /&gt;Column&lt;br /&gt;Name (default setting)&lt;br /&gt;&lt;br /&gt;WinRunner looks for the selection according to the column names. A shift in the position of the columns within the result set does not result in a mismatch.&lt;br /&gt;&lt;br /&gt;Index WinRunner looks for the selection according to the index, or position, of the columns. A shift in the position of the columns within the result set results in a mismatch. Select this option if the result set contains multiple columns with the same name.&lt;br /&gt;Row&lt;br /&gt;Key WinRunner looks for the rows in the selection according to the key(s) specified in the Select key columns list box, which lists the names of all columns in the result set. A shift in the position of any of the rows does not result in a mismatch. If the key selection does not identify a unique row, only the first matching row will be checked.&lt;br /&gt;&lt;br /&gt;Index (default setting) WinRunner looks for the selection according to the index, or position, of the rows. A shift in the position of any of the rows results in a mismatch.&lt;br /&gt;&lt;br /&gt;Specifying the Verification Method for a Single-Column Result Set&lt;br /&gt;By position WinRunner checks the selection according to the location of the items within the column.&lt;br /&gt;By content WinRunner checks the selection according to the content of the items, ignoring their location in the column.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Specifying the Verification Type&lt;br /&gt;WinRunner can verify the contents of a result set in several different ways. User can choose different verification types for different selections of cells.&lt;br /&gt;&lt;br /&gt;Case Sensitive (the default)&lt;br /&gt;WinRunner compares the text content of the selection. Any difference in case or text content between the expected and actual data results in a mismatch.&lt;br /&gt;&lt;br /&gt;Case Sensitive Ignore Spaces&lt;br /&gt;WinRunner checks the data in the field according to case and content, ignoring differences in spaces. WinRunner reports any differences in case or content as a mismatch.&lt;br /&gt;&lt;br /&gt;Case Insensitive WinRunner compares the text content of the selection. Only differences in text content between the expected and actual data result in a mismatch.&lt;br /&gt;&lt;br /&gt;Case Insensitive Ignore Spaces&lt;br /&gt;WinRunner checks the content in the cell according to content, ignoring differences in case and spaces. WinRunner reports only differences in content as a mismatch.&lt;br /&gt;&lt;br /&gt;Numeric Content WinRunner evaluates the selected data according to numeric values. WinRunner recognizes, for example, that “2” and “2.00” are the same number.&lt;br /&gt;&lt;br /&gt;Numeric Range WinRunner compares the selected data against a numeric range. Both the minimum and maximum values are any real number that the user specifies. This comparison differs from text and numeric content verification in that the actual database data is compared against the range that user defined and not against the expected results.&lt;br /&gt;Synchronization points&lt;br /&gt;&lt;br /&gt;Synchronization points enable user to solve anticipated timing problems between the test and the application. By inserting a synchronization point in the test script, user can instruct WinRunner to suspend the test run and wait for a cue before continuing the test. It is useful for testing client-server systems, where the response time of the server varies significantly.&lt;br /&gt;&lt;br /&gt;For Analog testing, user can also use a synchronization point to ensure that WinRunner repositions a window at a specific location. While running a test, the mouse cursor travels along exact coordinates. Repositioning the window enables the mouse pointer to make contact with the correct elements in the window.&lt;br /&gt;&lt;br /&gt;There are three kinds of synchronization points:&lt;br /&gt;&lt;br /&gt;Synchronization point for Property Values of Objects or Windows&lt;br /&gt;Synchronization point for Bitmaps of Objects and Windows&lt;br /&gt;Synchronization point for Bitmaps of Screen Areas&lt;br /&gt;&lt;br /&gt;Depending on which Synchronization Point command user has choose, WinRunner either captures the property value of a GUI object or a bitmap of a GUI object or area of the screen, and stores it in the expected results folder (exp ). User can also modify the property value of a GUI object that is captured before it is saved in the expected results folder. When the user runs the test, WinRunner suspends the test run and waits for the expected bitmap or property value to appear. It then compares the current actual bitmap or property value with the expected bitmap or property value saved earlier. When the bitmap or property value appears, the test continues.&lt;br /&gt;&lt;br /&gt;Synchronization point for Property Values of Objects or Windows&lt;br /&gt;When the user wants WinRunner to wait for an object or a window to have a specified property, user creates a property value synchronization point. A property value synchronization point is a synchronization point that captures a property value of Objects or Windows. It appears as a _wait_info statement in the test script, such as button_wait_info or list_wait_info.&lt;br /&gt;&lt;br /&gt;For example, user can tell WinRunner to wait for a button to become enabled or for an item to be selected from a list.&lt;br /&gt;&lt;br /&gt;To create synchronization point for Property Values of Objects or Windows&lt;br /&gt;Go to Insert &gt;Synchronization Point &gt; For Object/Window Property.&lt;br /&gt;&lt;br /&gt;When the user passes the mouse pointer over the application, objects and windows flash.&lt;br /&gt;&lt;br /&gt;To select a window, user has to click the title bar or the menu bar of the desired window. To select an object, user has to click the object. A dialog box opens containing the name of the selected window or object. User can specify which property of the window or object to check, the expected value of that property, and the amount of time that WinRunner waits at the synchronization point.&lt;br /&gt;&lt;br /&gt;Syntax:-button_wait_info (button, property, value, time);&lt;br /&gt;button The logical name or description of the button.&lt;br /&gt;property Any of the properties listed.&lt;br /&gt;value The property value.&lt;br /&gt;time Indicates the maximum interval, in seconds, before the next statement is executed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The button_wait_info function waits for the value of a button property and then continues test execution. If the property does not return the required value, the function waits until the time expires before continuing the test run. The other function used for synchronization point for Property Values of Objects or Windows are&lt;br /&gt;&lt;br /&gt;edit_wait_info Waits for the value of an edit property.&lt;br /&gt;list_wait_info Waits for the value of a list property.&lt;br /&gt;menu_wait_info Waits for the value of a menu property.&lt;br /&gt;obj_wait_info Waits for the value of an object property.&lt;br /&gt;scroll_wait_info Waits for the value of a scroll property.&lt;br /&gt;spin_wait_info Waits for the value of a spin property.&lt;br /&gt;static_wait_info Waits for a the value of a static text property.&lt;br /&gt;statusbar_wait_info Waits for the value of a status bar property.&lt;br /&gt;tab_wait_info Waits for the value of a tab property.&lt;br /&gt;win_wait_info Waits for the value of a window property.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Synchronization point for Bitmaps of Objects and Windows&lt;br /&gt;br&gt; When the user wants WinRunner to wait for a visual cue to be displayed, user has to create a bitmap synchronization point. In a bitmap synchronization point, WinRunner waits for the bitmap of an object or a window, to appear. It appears as a win_wait_bitmap or obj_wait_bitmap statement in the test script.br&gt; br&gt; To create synchronization point for Bitmaps of Objects and Windows&lt;br /&gt;Go to Insert &gt;Synchronization Point&gt;For Object/Window Bitmap.&lt;br /&gt;&lt;br /&gt;To select the bitmap of an entire window, user has to click the window’s title bar or menu bar. To select the bitmap of an object, user has to click the object. During a test run, WinRunner suspends test execution until the specified bitmap is redrawn, and then compares the current bitmap with the expected one captured earlier. If the bitmaps match, then WinRunner continues the test.&lt;br /&gt;&lt;br /&gt;Syntax:-obj_wait_bitmap (object, bitmap, time);&lt;br /&gt;object The logical name or description of the object. The object may belong to any class.&lt;br /&gt;&lt;br /&gt;bitmap A string expression that identifies the captured bitmap.&lt;br /&gt;&lt;br /&gt;time Indicates the interval between the previous input event and the capture of the current bitmap, in seconds. This parameter is added to the timeout&lt;br /&gt;The obj_wait_bitmap function synchronizes a test run. It ensures that the bitmap of a specified GUI object appears on the screen before the test continues.&lt;br /&gt;&lt;br /&gt;Waiting for Bitmaps of Screen Areas&lt;br /&gt;&lt;br /&gt;User can create a bitmap synchronization point that waits for a bitmap of a selected area in the application. User can define any rectangular area of the screen and capture it as a bitmap for a synchronization point. It appears as a win_wait_bitmap or obj_wait_bitmap statement in the test script.&lt;br /&gt;&lt;br /&gt;Syntax: - obj_wait_bitmap (object, bitmap, time [, x, y, width, height]);&lt;br /&gt;x, y For an area bitmap: the coordinates of the upper left corner, relative to the object in which the selected region is located. width, height For an area bitmap: the size of the selected region, in pixels.&lt;br /&gt;&lt;br /&gt;To create synchronization point Bitmaps of Screen Areas&lt;br /&gt;Go to Insert &gt;Synchronization Point &gt;For Screen Area Bitmap.&lt;br /&gt;&lt;br /&gt;The mouse pointer becomes a crosshairs pointer; user can use the crosshairs pointer to outline a rectangle around the area. The area can be any size, it can be part of a single window, or it can intersect several windows. WinRunner defines the rectangle using the coordinates of its upper left and lower right corners. These coordinates are relative to the upper left corner of the object or window in which the area is located. If the area intersects several objects in a window, the coordinates are relative to the window. If the selected area intersects several windows, or is part of a window with no title (a popup menu, for example), the coordinates are relative to the entire screen (the root window).&lt;br /&gt;&lt;br /&gt;During a test run, WinRunner suspends test execution until the specified bitmap is displayed. It then compares the current bitmap with the expected bitmap. If the bitmaps match, then WinRunner continues the test.&lt;br /&gt;&lt;br /&gt;In the event of a mismatch, WinRunner displays an error message, when the mismatch_break testing option is on. User can make the mismatch_break testing option off. Execute the following setvar statement:&lt;br /&gt;&lt;br /&gt;setvar ("mismatch_break", "off");&lt;br /&gt;WinRunner disables the mismatch_break testing option. The setting remains in effect during the testing session until it is changed again, either with another setvar statement or from the corresponding Break when verification fails check box in the Run &gt;Settings category of the General Options dialog box. Using the setvar function changes a testing option globally, and this change is reflected in the General Options dialog box. However, user can also use the setvar function to set testing options for a specific test, or even for part of a specific test.&lt;br /&gt;&lt;br /&gt;The main difference between the wait () and Synchronization Point is the wait () pauses test execution for the specified interval. But the Synchronization point only wait until the specified bitmap or object is displayed.&lt;br /&gt;&lt;br /&gt;Syntax: - wait (seconds [, milliseconds]);&lt;br /&gt;seconds The length of the pause, in seconds. The valid range of this parameter is from 0 to 32,767 seconds.&lt;br /&gt;milliseconds The number of milliseconds that are added to the seconds.&lt;br /&gt;Testing Date Operations&lt;br /&gt;&lt;br /&gt;The recommended workflow while checking dates in the application is as follows:&lt;br /&gt;&lt;br /&gt;Define the date format(s) currently used in the application.&lt;br /&gt;Create baseline tests by recording tests on the application. While recording, insert checkpoints that will check the dates in the application.&lt;br /&gt;Run the tests (in Debug mode) to check that they run smoothly. If a test incorrectly identifies non-date fields as date fields or reads a date field using the wrong date format, user can override the automatic date recognition on selected fields.&lt;br /&gt;Run the test (in Update mode) to create expected results.&lt;br /&gt;Run the tests (in Verify mode). If the user wants to check how the application performs with future dates, user can age the dates before running the test.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Analyze test results to pinpoint where date-related problems exist in the application. If the user change date formats in the application, user should repeat the workflow described above after redefining the date formats used in the application.&lt;br /&gt;&lt;br /&gt;To specify date formats:&lt;br /&gt;Go to Date &gt; Set Date Formats. The Set Date Formats dialog box opens. User can select each date format used in the application. User should move the most frequently-used date format in the application to the top of the list. WinRunner considers the top date format first.&lt;br /&gt;&lt;br /&gt;Checking Dates in GUI Objects&lt;br /&gt;User can use GUI checkpoints to check dates in GUI objects (such as edit boxes or static text fields).&lt;br /&gt;The default check for edit boxes and static text fields is the date.&lt;br /&gt;The default check for tables performs a case-sensitive check on the entire contents of a table, and checks all the dates in the table.&lt;br /&gt;&lt;br /&gt;Overriding Date Settings&lt;br /&gt;When debugging the tests, user may want to override user can override in the following ways:&lt;br /&gt;&lt;br /&gt;Aging of a specific date format: - User can override the aging of a specific date format so that it will be aged differently than the default aging setting.&lt;br /&gt;&lt;br /&gt;To override the aging of a date format:&lt;br /&gt;Go to Date &gt; Set Date Formats. The Set Date Formats dialog box opens.&lt;br /&gt;Click the Advanced button. The Advanced Settings dialog box opens.&lt;br /&gt;In the Format list, select a date format.&lt;br /&gt;Click Change. The Override Aging dialog box opens.&lt;br /&gt;&lt;br /&gt;User can increment the date format by a specific number of years, months and days. If the user wants no aging then use 0. User can choose a specific date for the selected date format by selecting the "Change all date to" option or user can stick to the default aging.&lt;br /&gt;&lt;br /&gt;Overriding Aging or date format of a specific object: - User can define that a specific object that resembles a date should not be treated as a date object.&lt;br /&gt;&lt;br /&gt;To override settings for an object:&lt;br /&gt;Go to Date &gt; Override Object Settings. The Override Object Settings dialog box opens.&lt;br /&gt;Click the pointing hand button and then click the date object.&lt;br /&gt;To override date format settings or to specify that the object is not a date object, clear the Use default format conversion check box&lt;br /&gt;&lt;br /&gt;Note: When WinRunner runs tests, it first examines the general settings defined in the Date Operations Run Mode dialog box. Then, it examines the aging overrides for specific date formats. Finally, it considers overrides defined for particular objects.&lt;br /&gt;&lt;br /&gt;Checking Dates with TSL&lt;br /&gt;&lt;br /&gt;User can enhance the recorded test scripts by adding the following TSL date functions:&lt;br /&gt;&lt;br /&gt;date_calc_days_in_field (field_name1, field_name2);&lt;br /&gt;field_name1 The name of the 1st date field.&lt;br /&gt;field_name2 The name of the 2nd date field.&lt;br /&gt;&lt;br /&gt;The date_calc_days_in_field function calculates the number of days between the dates appearing in two date fields. Note that the specified date fields must be located in the same window.&lt;br /&gt;&lt;br /&gt;date_calc_days_in_string (string1, string2);&lt;br /&gt;string1 The name of the 1st string.&lt;br /&gt;string2 The name of the 2nd string.&lt;br /&gt;&lt;br /&gt;The date_calc_days_in_string function calculates the number of days between two numeric dates’ strings. Note that the specified strings must be located in the same window.&lt;br /&gt;&lt;br /&gt;date_field_to_Julian (date_field);&lt;br /&gt;date_field The name of the date field.&lt;br /&gt;&lt;br /&gt;The date_field_to_Julian function translates a date string to a Julian number. For example, if the date 121398 (December 13, 1998) appears in the specified date field, WinRunner translates the date to the Julian number 2451162.&lt;br /&gt;&lt;br /&gt;date_string_to_Julian (string)&lt;br /&gt;string The numeric date string.&lt;br /&gt;&lt;br /&gt;The date_string_to_Julian function translates a date string to a Julian number. For example, it calculates the string 12/13/98 (December 13, 1998) to 2451162.&lt;br /&gt;&lt;br /&gt;date_is_field (field_name, min_year, max_year);&lt;br /&gt;field_name The name of the field containing the date.&lt;br /&gt;min_year Determines the minimum year allowed.&lt;br /&gt;max_year Determines the maximum year allowed.&lt;br /&gt;&lt;br /&gt;The date_is_field function checks that a field contains a valid date by determining whether the date falls within a specified date range.&lt;br /&gt;&lt;br /&gt;date_is_string (string, min_year, max_year);&lt;br /&gt;string The numeric string containing the date.&lt;br /&gt;min_year Determines the minimum year allowed.&lt;br /&gt;max_year Determines the maximum year allowed.&lt;br /&gt;&lt;br /&gt;The date_is_string function checks that a numeric string contains a valid date by determining whether the date falls within a specified date range.&lt;br /&gt;&lt;br /&gt;date_is_leap_year (year);&lt;br /&gt;year A year, for example "1998".&lt;br /&gt;&lt;br /&gt;The date_is_leap_year function determines whether a year is a leap year. The function returns "0" if the year is not a leap year or "1" if the year is a leap year.&lt;br /&gt;&lt;br /&gt;date_month_language (language);&lt;br /&gt;language The language used for month names.&lt;br /&gt;&lt;br /&gt;The date_month_language function enables user to select the language used for month names in the application so that WinRunner can identify dates. User can select English, French, German, Spanish, Portuguese, or Italian. If the application uses a different language, select "Other" and define the names for all 12 months.&lt;br /&gt;&lt;br /&gt;Data-Driven Testing&lt;br /&gt;&lt;br /&gt;The Different stages of the data-driven testing process in WinRunner are:&lt;br /&gt;Creating a test&lt;br /&gt;Converting a test to a Data-Driven test&lt;br /&gt;Create a corresponding data table.&lt;br /&gt;Running the Test&lt;br /&gt;Analyzing test results&lt;br /&gt;&lt;br /&gt;Creating a test&lt;br /&gt;&lt;br /&gt;In order to create a data-driven test user must create a basic test by recording a test, as usual with one set of data.&lt;br /&gt;Converting a test to a Data-Driven test&lt;br /&gt;&lt;br /&gt;User can convert the test to a Data-Driven test by Data Driver Wizard or by modifying the script manually. The procedure for converting a test to a data-driven test is composed of the following main steps:&lt;br /&gt;&lt;br /&gt;Assigning a variable name to the data table (mandatory when using the Data Driver wizard and otherwise optional)&lt;br /&gt;Add statements to the script that open and close the data table.&lt;br /&gt;Adding statements and functions to the test so that it will read the data from the data table and run in a loop, while it reads each iteration of data.&lt;br /&gt;Replace fixed values in checkpoint statements and in recorded statements with parameters.&lt;br /&gt;Create a data table containing values for the parameters. This is known as parameterize the test.&lt;br /&gt;&lt;br /&gt;To create data-driven tests select lines in the test script:&lt;br /&gt;Go to Choose Table &gt;Data Driver Wizard.&lt;br /&gt;&lt;br /&gt;The Data Driver Wizard pop up opens with the "Use a new or existing Excel table" box which displays the name of the Excel file that WinRunner creates, which stores the data for the data-driven test.&lt;br /&gt;&lt;br /&gt;In the “Assign a name to the variable” box, enter a variable name with which to refer to the data table.&lt;br /&gt;&lt;br /&gt;Check the “Add statements to create a data-driven test" check box which automatically adds statements to run the test in a loop. If the user do not choose to select this option user will receive a warning that data-driven test must contain a loop and statements to open and close the data table. User should not select this option if the user has chosen it previously while running the Data Driver wizard on the same portion of the test script.&lt;br /&gt;&lt;br /&gt;If the user wants to Imports data from a database check the "Import data from a database" check box. In order to import data from a database, either Microsoft Query or Data Junction must be installed on the machine.&lt;br /&gt;&lt;br /&gt;Check the "Parameterize the test" check box which replaces fixed values in selected checkpoints and in recorded statements with parameters and in the data table, adds columns with variable values for the parameters.&lt;br /&gt;&lt;br /&gt;Select the "Line by line" option if the user decide to parameterize a particular line, and if so, whether to add a new column to the data table or use an existing column when parameterize data.&lt;br /&gt;&lt;br /&gt;Select the "Automatically" option if the user decides to replaces all data and adds new columns to the data table.&lt;br /&gt;&lt;br /&gt;In the Next screen "Test script line to parameterize" box displays the line of the test script to parameterize. The highlighted value can be replaced by a parameter. “Argument to be replaced” box displays the argument (value) that user can replace with a parameter. User can use the arrows to select a different argument to replace. User has to Choose whether and how to replace the selected data. After finishing the parameterization the final screen of the wizard opens where the user if needed can see the data table created.&lt;br /&gt;&lt;br /&gt;Assigning the Main Data Table for a Test&lt;br /&gt;&lt;br /&gt;The main data table is the table that is selected by default when user choose Tools &gt;Data Table or open the Data Driver wizard. To assign the main data table for a test:&lt;br /&gt;Go to File &gt;Test Properties and click the General tab.&lt;br /&gt;&lt;br /&gt;Choose the data table user want to assign from the Main data table list. All data tables that are stored in the test folder are displayed in the list.&lt;br /&gt;&lt;br /&gt;Using Data-Driven Checkpoints and Bitmap Synchronization Points&lt;br /&gt;&lt;br /&gt;When checking the properties of GUI objects in a data-driven test, it is better to create a single property check than to create a GUI checkpoint which contains references to a checklist stored in the test’s chklist folder and expected results stored in the test’s exp folder. A single property check does not contain checklist, so it can be easily parameterized. In order to parameterize GUI and bitmap checkpoints and bitmap synchronization points statements. First create separate columns for each checkpoint or bitmap synchronization point. Then enter dummy values in the columns to represent captured expected results. While running the test in Update mode, WinRunner recaptures expected values for GUI and bitmap checkpoints automatically. WinRunner prompts user before recapturing expected values for bitmap synchronization points. And save all the results in the test’s exp folder.&lt;br /&gt;&lt;br /&gt;Using TSL Functions with Data-Driven Tests&lt;br /&gt;Opening a Data Table&lt;br /&gt;ddt_open (data_table_name [, mode]);&lt;br /&gt;&lt;br /&gt;data_table_name The name of the data table. The name may be the table variable name, the Microsoft Excel file or a tabbed text file name, or the full path and file name of the table. The first row in the file contains the names of the parameters. This row is labeled row 0.&lt;br /&gt;&lt;br /&gt;mode The mode for opening the data table: DDT_MODE_READ (read-only) or DDT_MODE_READWRITE (read or write). When the mode is not specified, the default mode is DDT_MODE_READ.&lt;br /&gt;&lt;br /&gt;The ddt_open function opens the data table file with the specified data_table_name. The active row becomes row number 1. User must use a ddt_open statement to open the data table before using any other ddt_functions.&lt;br /&gt;&lt;br /&gt;Saving a Data Table&lt;br /&gt;ddt_save (data_table_name);&lt;br /&gt;&lt;br /&gt;The ddt_save function saves the information in a data table in its existing format. ddt_save does not close the data table. Use the ddt_close to close the data table.&lt;br /&gt;&lt;br /&gt;Closing a Data Table&lt;br /&gt;ddt_close (data_table_name);&lt;br /&gt;&lt;br /&gt;The ddt_close function closes the specified data table. ddt_close does NOT save changes to the data table. If user makes any changes to the data table, user must use the ddt_save function to save the changes before using ddt_close to close the table. The ddt_close function will not close the table if it is currently open in the table editor, regardless of whether it was opened from the WinRunner menu or using the ddt_show function. The ddt_close function checks if the table editor is displaying the table, and if so, leaves it open.&lt;br /&gt;&lt;br /&gt;Displaying the Data Table Editor&lt;br /&gt;dt_show (data_table_name [, show_flag]);&lt;br /&gt;show_flag The value indicating whether the editor should be shown (default=1) or hidden (0).&lt;br /&gt;&lt;br /&gt;The ddt_show function allows the table editor to be shown or hidden. The show_flag value is 1 if the table editor is to be shown and is 0 if the table editor is to be hidden.&lt;br /&gt;&lt;br /&gt;Exporting a Data Table&lt;br /&gt;ddt_export (data_table_name1, data_table_name2);&lt;br /&gt;data_table_name1 The source data table filename.&lt;br /&gt;data_table_name2 The destination data table filename.&lt;br /&gt;The ddt_export function sends the contents of data_table_name1 to data_table_name2&lt;br /&gt;&lt;br /&gt;Returning the Number of Rows in a Data Table&lt;br /&gt;dt_get_row_count (data_table_name, out_rows_count);&lt;br /&gt;out_rows_count The output variable that stores the total number of rows in the data table.&lt;br /&gt;The ddt_get_row_count function retrieves the number of rows in the specified data table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Changing the Active Row in a Data Table to the Next Row&lt;br /&gt;ddt_next_row (data_table_name);&lt;br /&gt;&lt;br /&gt;The ddt_next_row function changes the active row in the specified data table to the next row. If the active row is the last row in a data table, then the E_OUT_OF_RANGE value is returned.&lt;br /&gt;&lt;br /&gt;Setting the Active Row in a Data Table&lt;br /&gt;ddt_set_row (data_table_name, row);&lt;br /&gt;row The new active row in the data table.&lt;br /&gt;&lt;br /&gt;The ddt_set_row function sets the active row in the specified data table. When the data table is first opened, the active row is the first row.&lt;br /&gt;&lt;br /&gt;Setting a Value in the Current Row of the Table&lt;br /&gt;ddt_set_val (data_table_name, parameter, value);&lt;br /&gt;parameter The name of the column into which the value will be inserted.&lt;br /&gt;value The value to be written into the table.&lt;br /&gt;&lt;br /&gt;The ddt_set_val function sets a value in a cell of the current row of a database. User can only use this function if the data table was opened in DDT_MODE_READWRITE (read or write mode).&lt;br /&gt;&lt;br /&gt;Setting a Value in a Row of the Table&lt;br /&gt;ddt_set_val_by_row (data_table_name, row, parameter, value);&lt;br /&gt;row The row number in the table. It can be any existing row or the current row number plus 1, which will add a new row to the data table.&lt;br /&gt;parameter The name of the column into which the value will be inserted.&lt;br /&gt;value The value to be written into the table.&lt;br /&gt;&lt;br /&gt;The ddt_set_val_by_row function sets a value in a specified cell in the table. User can only use this function if the data table was opened in DDT_MODE_READWRITE (read or write mode).&lt;br /&gt;&lt;br /&gt;Retrieving the Active Row of a Data Table&lt;br /&gt;ddt_get_current_row ( data_table_name, out_row );&lt;br /&gt;out_row The output variable that stores the active row in the data table.&lt;br /&gt;&lt;br /&gt;The ddt_get_current_row function retrieves the active row in the specified data table and returns this value as out_row.&lt;br /&gt;&lt;br /&gt;Determining Whether a Parameter in a Data Table is Valid&lt;br /&gt;ddt_is_parameter (data_table_name, parameter);&lt;br /&gt;parameter The parameter name to check in the data table.&lt;br /&gt;&lt;br /&gt;The ddt_is_parameter function returns whether a parameter in the specified data table is valid.&lt;br /&gt;&lt;br /&gt;Returning a List of Parameters in a Data Table&lt;br /&gt;ddt_get_parameters (data_table_name, params_list, params_num);&lt;br /&gt;params_list This out parameter returns the list of all parameters in the data table, separated by tabs.&lt;br /&gt;params_num This out parameter returns the number of parameters in params_list.&lt;br /&gt;The ddt_get_parameters function returns a list of all parameters in a data table.&lt;br /&gt;&lt;br /&gt;Returning the Value of a Parameter in the Active Row in a Data Table&lt;br /&gt;ddt_val (data_table_name, parameter);&lt;br /&gt;&lt;br /&gt;The ddt_val function returns the value of a parameter in the active row in the specified data table.&lt;br /&gt;Returning the Value of a Parameter in a Row in a Data Table&lt;br /&gt;ddt_val_by_row (data_table_name, row_number, p&lt;br /&gt;&lt;br /&gt;WinRunner automated software functionality test tool from Mercury Interactive for functional and regression testing&lt;br /&gt;&lt;br /&gt;Q: For new users, how to use WinRunner to test software applications automately ?&lt;br /&gt;A: The following steps may be of help to you when automating tests&lt;br /&gt;1. MOST IMPORTANT - write a set of manual tests to test your application - you cannot just jump in with WR and expect to produce a set of meaningful tests. Also as you will see from the steps below this set of manual tests will form your plan to tackle automation of your application.&lt;br /&gt;2. Once you have a set of manual tests look at them and decide which ones you can automate using your current level of expertise. NOTE that there will be tests that are not suitable for automation, either because you can't automate them, or they are just not worth the effort.&lt;br /&gt;3. Automate the tests selected in step 2 - initially you will use capture/replay using the steps in the manual test, but you will soon see that to produce meaningful and informative tests you need to add additional code to your test eg. use tl_step() to give test results. As this process continues you will soon see that there are operations that you repeatedly do in multiple tests - these are then candidates for user-defined functions and compiled modules&lt;br /&gt;4. Once you have completed step 3 go back to step 2 and you will find that the knowledge you have gained in step 3 will now allow you to select some more tests that you can do.&lt;br /&gt;If you continue going through this loop you will gradually become more familiar with WR and TSL, in fact you will probably find that eventually you do very little capture/replay and more straight TSL coding.&lt;br /&gt;&lt;br /&gt;Q: How to use WinRunne to check whether the record was updated or the record was delelte or the record was inserted or not?&lt;br /&gt;Using WinRunner check point features: Create-&gt;dDB checkpoint-&gt;Runtime Record check&lt;br /&gt;Q: How to use WinRunner to test the login screen&lt;br /&gt;A: When you enter wrong id or password, you will get Dialog box.&lt;br /&gt;1. Record this Dialog box&lt;br /&gt;2. User win_exists to check whether dialog box exists or not&lt;br /&gt;3. Playback: Enter wrong id or password, if win_exists is&lt;br /&gt;true, then your application is working good.&lt;br /&gt;Enter good id or password, if win_exists is false,&lt;br /&gt;then your application is working perfectly.&lt;br /&gt;&lt;br /&gt;Q: After clicking on "login" button, they opens other windows of the web application, how to check that page is opened or not&lt;br /&gt;When your expecting "Window1" to come up after clicking on Login...&lt;br /&gt;Capture the window in the GUI Map. No two windows in an web based&lt;br /&gt;application can have the same html_name property. Hence, this would&lt;br /&gt;be the property to check.&lt;br /&gt;&lt;br /&gt;First try a simple win_exists("window1", ) in an IF condition.&lt;br /&gt;&lt;br /&gt;If that does'nt work, try the function,&lt;br /&gt;&lt;br /&gt;win_exists("{ class: window, MSW_class: html_frame, html_name: "window1"}",); :&lt;br /&gt;&lt;br /&gt;Winrunner testscript for checking all the links at a time&lt;br /&gt;location = 0;&lt;br /&gt;set_window("YourWindow",5);&lt;br /&gt;&lt;br /&gt;while(obj_exists((link = "{class: object,MSW_class: html_text_link,location: "&lt;br /&gt;&amp; location &amp;amp; "}"))== E_OK)&lt;br /&gt;{&lt;br /&gt;obj_highlight(link);&lt;br /&gt;web_obj_get_info(link,"name",name);&lt;br /&gt;web_link_valid(link,valid);&lt;br /&gt;if(valid)&lt;br /&gt;tl_step("Check web link",PASS,"Web link \"" &amp; name &amp;amp; "\" is valid.");&lt;br /&gt;else&lt;br /&gt;tl_step("Check web link",FAIL,"Web link \"" &amp; name &amp;amp; "\" is not valid.");&lt;br /&gt;location++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Q: How to get the resolution settings&lt;br /&gt;Use get_screen_res(x,y) to get the screen resolution in WR7.5.&lt;br /&gt;or&lt;br /&gt;Use get_resolution (Vert_Pix_int, Horz_Pix_int, Frequency_int) in WR7.01&lt;br /&gt;&lt;br /&gt;Q: WITHOUT the GUI map, use the phy desc directly....&lt;br /&gt;It's easy, just take the description straight out of the GUI map squigglies and&lt;br /&gt;all, put it into a variable (or pass it as a string)&lt;br /&gt;and use that in place of the object name.&lt;br /&gt;&lt;br /&gt;button_press ( "btn_OK" );&lt;br /&gt;becomes&lt;br /&gt;button_press ( "{class: push_button, label: OK}" );&lt;br /&gt;&lt;br /&gt;Q: What are the three modes of running the scripts?&lt;br /&gt;WinRunner provides three modes in which to run tests: Verify, Debug, and Update. You use each mode during a different phase of the testing process.&lt;br /&gt;Verify&lt;br /&gt;Use the Verify mode to check your application.&lt;br /&gt;Debug&lt;br /&gt;Use the Debug mode to help you identify bugs in a test script.&lt;br /&gt;Update&lt;br /&gt;Use the Update mode to update the expected results of a test or to create a new expected results folder.&lt;br /&gt;&lt;br /&gt;Q: How do you handle unexpected events and errors?&lt;br /&gt;WinRunner uses exception handling to detect an unexpected event when it occurs and act to recover the test run.&lt;br /&gt;WinRunner enables you to handle the following types of exceptions:&lt;br /&gt;Pop-up exceptions: Instruct WinRunner to detect and handle the appearance of a specific window.&lt;br /&gt;TSL exceptions: Instruct WinRunner to detect and handle TSL functions that return a specific error code.&lt;br /&gt;Object exceptions: Instruct WinRunner to detect and handle a change in a property for a specific GUI object.&lt;br /&gt;Web exceptions: When the WebTest add-in is loaded, you can instruct WinRunner to handle unexpected events and errors that occur in your Web site during a test run.&lt;br /&gt;&lt;br /&gt;Q: How do you handle pop-up exceptions?&lt;br /&gt;A pop-up exception Handler handles the pop-up messages that come up during the execution of the script in the AUT. TO handle this type of exception we make WinRunner learn the window and also specify a handler to the exception. It could be&lt;br /&gt;Default actions: WinRunner clicks the OK or Cancel button in the pop-up window, or presses Enter on the keyboard. To select a default handler, click the appropriate button in the dialog box.&lt;br /&gt;User-defined handler: If you prefer, specify the name of your own handler. Click User Defined Function Name and type in a name in the User Defined Function Name box.&lt;br /&gt;&lt;br /&gt;Q: How do you handle TSL exceptions?&lt;br /&gt;Suppose you are running a batch test on an unstable version of your application. If your application crashes, you want WinRunner to recover test execution. A TSL exception can instruct WinRunner to recover test execution by exiting the current test, restarting the application, and continuing with the next test in the batch.&lt;br /&gt;The handler function is responsible for recovering test execution. When WinRunner detects a specific error code, it calls the handler function. You implement this function to respond to the unexpected error in the way that meets your specific testing needs.&lt;br /&gt;Once you have defined the exception, WinRunner activates handling and adds the exception to the list of default TSL exceptions in the Exceptions dialog box. Default TSL exceptions are defined by the XR_EXCP_TSL configuration parameter in the wrun.ini configuration file.&lt;br /&gt;&lt;br /&gt;Q: How to write an email address validation script in TSL?&lt;br /&gt;public function IsValidEMAIL(in strText)&lt;br /&gt;{&lt;br /&gt;auto aryEmail[], aryEmail2[], n;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;n = split(strText, aryEmail, "@");&lt;br /&gt;if (n != 2)&lt;br /&gt;return FALSE;&lt;br /&gt;&lt;br /&gt;# Ensure the string "@MyISP.Com" does not pass...&lt;br /&gt;if (!length(aryEmail[1]))&lt;br /&gt;return FALSE;&lt;br /&gt;&lt;br /&gt;n = split(aryEmail[2], aryEmail2, ".");&lt;br /&gt;if (n &lt; guiname1 = "MMAQ_guimap.gui" guiname2 = "SSPicker_guimap.gui" guiname3 = "TradeEntry.gui" rc =" loadGui(guiLoad);" rc =" (GUI_load(GUIPATH" i ="1;i&lt;="isize;i++)" s =" s"&gt; );&lt;br /&gt;extern long RegCloseKey(long);&lt;br /&gt;extern long RegQueryValueExA(long,string,long,long,inout string&lt;1024&gt;,inout long );&lt;br /&gt;extern long RegOpenKeyExA(long,string,long ,long,inout long);&lt;br /&gt;extern long RegSetValueExA(long,string,long,long,string,long);&lt;br /&gt;&lt;br /&gt;MainKey = 2147483649; # HKEY_CURRENT_USER&lt;br /&gt;SubKey = "Software\\TestConverter\\TCEditor\\Settings";&lt;br /&gt;# This is where you set your subkey path&lt;br /&gt;const ERROR_SUCCESS = 0;&lt;br /&gt;&lt;br /&gt;const KEY_ALL_ACCESS = 983103;&lt;br /&gt;ret = RegOpenKeyExA(MainKey, SubKey, 0, KEY_ALL_ACCESS, hKey); # open the&lt;br /&gt;key&lt;br /&gt;if (ret==ERROR_SUCCESS)&lt;br /&gt;{&lt;br /&gt;cbData = 256;&lt;br /&gt;tmp = space(256);&lt;br /&gt;KeyType = 0;&lt;br /&gt;ret = RegQueryValueExA(hKey,"Last language",0,KeyType,tmp,cbData); # replace&lt;br /&gt;"Last language" with the key you want to read&lt;br /&gt;}&lt;br /&gt;pause (tmp);&lt;br /&gt;NewSetting = "SQABASIC";&lt;br /&gt;cbData = length(NewSetting) + 1;&lt;br /&gt;ret = RegSetValueExA(hKey,"Last language",0,KeyType,NewSetting,cbData);&lt;br /&gt;# replace "Last language" with the key you want to write&lt;br /&gt;&lt;br /&gt;cbData = 256;&lt;br /&gt;tmp = space(256);&lt;br /&gt;KeyType = 0;&lt;br /&gt;ret = RegQueryValueExA(hKey,"Last language",0,KeyType,tmp,cbData);&lt;br /&gt;# verifies you changed the key&lt;br /&gt;&lt;br /&gt;pause (tmp);&lt;br /&gt;&lt;br /&gt;RegCloseKey(hKey); # close the key&lt;br /&gt;&lt;br /&gt;Q: How to break infinite loop&lt;br /&gt;set_window("Browser Main Window",1);&lt;br /&gt;text="";&lt;br /&gt;start = get_time();&lt;br /&gt;while(text!="Done")&lt;br /&gt;{&lt;br /&gt;statusbar_get_text("Status Bar",0,text);&lt;br /&gt;now = get_time();&lt;br /&gt;if ( (now-start) == 60 ) # Specify no of seconds after which u want&lt;br /&gt;break&lt;br /&gt;{&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Q: User-defined function that would write to the Print-log as well as write to a file&lt;br /&gt;function writeLog(in strMessage){&lt;br /&gt;file_open("C:\FilePath\...");&lt;br /&gt;file_printf(strMessage);&lt;br /&gt;printf(strMessage);&lt;br /&gt;}&lt;br /&gt;Q: How to do text matching?&lt;br /&gt;You could try embedding it in an if statement. If/when it fails use a tl_step statement to indicate passage and then do a texit to leave the test. Another idea would be to use win_get_text or web_frame_get_text to capture the text of the object and the do a comparison (using the match function) to determine it's existance.&lt;br /&gt;&lt;br /&gt;Q: the MSW_id value sometimes changes, rendering the GUI map useless&lt;br /&gt;MSW_Id's will continue to change as long as your developers are modifying your application. Having dealt with this, I determined that each MSW_Id shifted by the same amount and I was able to modify the entries in the gui map rather easily and continue testing.&lt;br /&gt;Instead of using the MSW_id use the "location". If you use your GUI spy it will give you every detail it can. Then add or remove what you don't want.&lt;br /&gt;&lt;br /&gt;Q: Having the DB Check point, its able to show the current values in form but its not showing the values that saved in the table&lt;br /&gt;This looks like its happening because the data has&lt;br /&gt;been written to the db after your checkpoint, so you&lt;br /&gt;have to do a runtime record check Create&gt;Database&lt;br /&gt;Checkpoint&gt;Runtime Record Check. You may also have to&lt;br /&gt;perform some customization if the data displayed in&lt;br /&gt;the application is in a different format than the data&lt;br /&gt;in the database by using TSL. For example, converting&lt;br /&gt;radio buttons to database readable form involves the&lt;br /&gt;following:&lt;br /&gt;&lt;br /&gt;# Flight Reservation&lt;br /&gt;set_window ("Flight Reservation", 2);&lt;br /&gt;# edit_set ("Date of Flight:", "06/08/02");&lt;br /&gt;&lt;br /&gt;# retrieve the three button states&lt;br /&gt;button_get_state ( "First", first);&lt;br /&gt;button_get_state ( "Business", bus);&lt;br /&gt;button_get_state ( "Economy", econ);&lt;br /&gt;&lt;br /&gt;# establish a variable with the correct numeric value&lt;br /&gt;based on which radio button is set&lt;br /&gt;if (first)&lt;br /&gt;service="1";&lt;br /&gt;&lt;br /&gt;if (bus)&lt;br /&gt;service="2";&lt;br /&gt;&lt;br /&gt;if (econ)&lt;br /&gt;service="3";&lt;br /&gt;&lt;br /&gt;set_window("Untitled - Notepad",3);&lt;br /&gt;&lt;br /&gt;edit_set("Report Area",service);&lt;br /&gt;&lt;br /&gt;db_record_check("list1.cvr", DVR_ONE_MATCH,record_num);&lt;br /&gt;Increas Capacity Testing&lt;br /&gt;When you begin your stress testing, you will want to increase your capacity testing to make sure you are able to handle the increased load of data such as ASP pages and graphics. When you test the ASP pages, you may want to create a page similar to the original page that will simulate the same items on the ASP page and have it send the information to a test bed with a process that completes just a small data output. By doing this, you will have your processor still stressing the system but not taking up the bandwidth by sending the HTML code along the full path. This will not stress the entire code but will give you a basis from which to work. Dividing the requests per second by the total number of user or threads will determine the number of transactions per second. It will tell you at what point the server will start becoming less efficient at handling the load. Let's look at an example. Let's say your test with 50 users shows your server can handle 5 requests per seconf, with 100 users it is 10 requests per second, with 200 users it is 15 requests per second, and eventually with 300 users it is 20 requests per second. Your requests per second are continually climbing, so it seems that you are obtaining steadily improving performance. Let's look at the ratios:&lt;br /&gt;05/50 = 0.1&lt;br /&gt;10/100 = 0.1&lt;br /&gt;15/200 = 0.075&lt;br /&gt;20/300 = 0.073&lt;br /&gt;From this example you can see that the performance of the server is becoming less and less efficient as the load grows. This in itself is not necessarily bad (as long as your pages are still returning within your target time frame). However, it can be a useful indicator during your optimization process and does give you some indication of how much leeway you have to handle expected peaks.&lt;br /&gt;&lt;br /&gt;Stateful testing&lt;br /&gt;When you use a Web-enabled application to set a value, does the server respond correctly later on?&lt;br /&gt;&lt;br /&gt;Privilage testing&lt;br /&gt;What happens when the everyday user tries to access a control that is authorized only for adminstrators?&lt;br /&gt;&lt;br /&gt;Speed testing&lt;br /&gt;Is the Web-enabled application taking too long to respond?&lt;br /&gt;&lt;br /&gt;Boundary Test&lt;br /&gt;Boundary tests are designed to check a program's response to extreme input values. Extreme output values are generated by the input values. It is important to check that a program handles input values and output results correctly at the lower and upper boundaries. Keep in mind that you can create extreme boundary results from non-extreme input values. It is essential to analyze how to generate extremes of both types. In addition. sometime you know that there is an intermediate variable involved in processing. If so, it is useful to determine how to drive that one through the extremes and special conditions such as zero or overflow condition.&lt;br /&gt;&lt;br /&gt;Boundary timeing testing&lt;br /&gt;What happens when your Web-enabled application request times out or takes a really long time to respond?&lt;br /&gt;&lt;br /&gt;Regression testing&lt;br /&gt;Did a new build break an existing function? Repeat testing after changes for managing risk relate to product enhancement.&lt;br /&gt;A regression test is performded when the tester wishes to see the progress of the testing processs by performing identical tests before and after a bug has been fixed. A regression test allows the tester to compare expeted test results with the actual results.&lt;br /&gt;Regression testing's primary objective is to ensure that all bugfree features stay that way. In addition, bugs which have been fixed once should not turn up again in subsequent program versions.&lt;br /&gt;Regression testing: After every software modification or before next release, we repeat all test cases to check if fixed bugs are not show up again and new and existing functions are all working correctly.&lt;br /&gt;Regression testing is used to confirm that fixed bugs have, in fact, been fixed and that new bugs have not been introduced in the process, and that festures that were proven correctly functional are intact. Depending on the size of a project, cycles of regression testing may be perform once per milestone or once per build. Some bug regression testing may also be performed during each accceptance test cycle, forcusing on only the most important bugs. Regression tests can be automated.&lt;br /&gt;CONDITIONS DURING WHICH REGRESSION TESTS MAY BE RUN&lt;br /&gt;Issu fixing cycle. Once the development team has fixed issues, a regression test can be run t ovalidate the fixes. Tests are based on the step-by-step test casess that were originally reported:&lt;br /&gt;• If an issue is confirmeded as fixed, then the issue report status should be changed to Closed.&lt;br /&gt;• If an issue is confirmed as fixed, but with side effects, then the issue report status should be changed to Closed. However, a new issue should be filed to report the side effect.&lt;br /&gt;• If an issue is only partially fixed, then the issue report resolution should be changed back to Unfixed, along with comments outlining the oustanding problems&lt;br /&gt;&lt;br /&gt;Open-status regression cycle. Periodic regression tests may be run on all open issue in the issue-tracking database. During this cycle, issue status is confirmed either the report is reproducible as is with no modification, the report is reproducible with additional comments or modifications, or the report is no longer reproducible&lt;br /&gt;Closed-fixed regression cycle. In the final phase of testing, a full-regression test cycle should be run to confirm the status of all fixed-closed issues.&lt;br /&gt;Feature regression cycle. Each time a new build is cut or is in the final phase of testing depending on the organizational procedure, a full-regression test cycle should be run to confirm that the proven correctly functional features are still working as expected.&lt;br /&gt;&lt;br /&gt;Database Testing&lt;br /&gt;Items to check when testing a database&lt;br /&gt;What to test Environment toola/technique&lt;br /&gt;Seach results System test environment Black Box and White Box technique&lt;br /&gt;Response time System test environment Sytax Testing/Functional Testing&lt;br /&gt;Data integrity Development environment White Box testing&lt;br /&gt;Data validity Development environment White Box testing&lt;br /&gt;Q:How do you find an object in an GUI map?&lt;br /&gt;The GUI Map Editor is been provided with a Find and Show Buttons.&lt;br /&gt;To find a particular object in the GUI Map file in the application, select the object and click the Show window. This blinks the selected object.&lt;br /&gt;To find a particular object in a GUI Map file click the Find button, which gives the option to select the object. When the object is selected, if the object has been learned to the GUI Map file it will be focused in the GUI Map file.&lt;br /&gt;&lt;br /&gt;Q:What different actions are performed by find and show button?&lt;br /&gt;To find a particular object in the GUI Map file in the application, select the object and click the Show window. This blinks the selected object.&lt;br /&gt;To find a particular object in a GUI Map file click the Find button, which gives the option to select the object. When the object is selected, if the object has been learned to the GUI Map file it will be focused in the GUI Map file.&lt;br /&gt;&lt;br /&gt;Q:How do you identify which files are loaded in the GUI map?&lt;br /&gt;The GUI Map Editor has a drop down GUI File displaying all the GUI Map files loaded into the memory.&lt;br /&gt;&lt;br /&gt;Q:How do you modify the logical name or the physical description of the objects in GUI map?&lt;br /&gt;You can modify the logical name or the physical description of an object in a GUI map file using the GUI Map Editor.&lt;br /&gt;&lt;br /&gt;Q:When do you feel you need to modify the logical name?&lt;br /&gt;Changing the logical name of an object is useful when the assigned logical name is not sufficiently descriptive or is too long.&lt;br /&gt;&lt;br /&gt;Q:When it is appropriate to change physical description?&lt;br /&gt;Changing the physical description is necessary when the property value of an object changes.&lt;br /&gt;&lt;br /&gt;Q:How WinRunner handles varying window labels?&lt;br /&gt;We can handle varying window labels using regular expressions. WinRunner uses two hidden properties in order to use regular expression in an object’s physical description. These properties are regexp_label and regexp_MSW_class.&lt;br /&gt;i. The regexp_label property is used for windows only. It operates behind the scenes to insert a regular expression into a window’s label description.&lt;br /&gt;ii. The regexp_MSW_class property inserts a regular expression into an object’s MSW_class. It is obligatory for all types of windows and for the object class object.&lt;br /&gt;&lt;br /&gt;Q:What is the purpose of regexp_label property and regexp_MSW_class property?&lt;br /&gt;The regexp_label property is used for windows only. It operates behind the scenes to insert a regular expression into a window’s label description.&lt;br /&gt;The regexp_MSW_class property inserts a regular expression into an object’s MSW_class. It is obligatory for all types of windows and for the object class object.&lt;br /&gt;&lt;br /&gt;Q:How do you suppress a regular expression?&lt;br /&gt;We can suppress the regular expression of a window by replacing the regexp_label property with label property.&lt;br /&gt;Q:How do you copy and move objects between different GUI map files?&lt;br /&gt;We can copy and move objects between different GUI Map files using the GUI Map Editor. The steps to be followed are:&lt;br /&gt;1. Choose Tools - GUI Map Editor to open the GUI Map Editor.&lt;br /&gt;2. Choose View - GUI Files.&lt;br /&gt;3. Click Expand in the GUI Map Editor. The dialog box expands to display two GUI map files simultaneously.&lt;br /&gt;4. View a different GUI map file on each side of the dialog box by clicking the file names in the GUI File lists.&lt;br /&gt;5. In one file, select the objects you want to copy or move. Use the Shift key and or Control key to select multiple objects. To select all objects in a GUI map file, choose Edit - Select All.&lt;br /&gt;6. Click Copy or Move.&lt;br /&gt;7. To restore the GUI Map Editor to its original size, click Collapse.&lt;br /&gt;&lt;br /&gt;Q:How do you select multiple objects during merging the files?&lt;br /&gt;Use the Shift key and or Control key to select multiple objects. To select all objects in a GUI map file, choose Edit - Select All.&lt;br /&gt;&lt;br /&gt;Q:How do you clear a GUI map files?&lt;br /&gt;We can clear a GUI Map file using the Clear All option in the GUI Map Editor.&lt;br /&gt;&lt;br /&gt;Q:How do you filter the objects in the GUI map?&lt;br /&gt;GUI Map Editor has a Filter option. This provides for filtering with 3 different types of options.&lt;br /&gt;1. Logical name displays only objects with the specified logical name.&lt;br /&gt;2. Physical description displays only objects matching the specified physical description. Use any substring belonging to the physical description.&lt;br /&gt;3. Class displays only objects of the specified class, such as all the push buttons.&lt;br /&gt;&lt;br /&gt;Q:How do you configure GUI map?&lt;br /&gt;1. When WinRunner learns the description of a GUI object, it does not learn all its properties. Instead, it learns the minimum number of properties to provide a unique identification of the object.&lt;br /&gt;2. Many applications also contain custom GUI objects. A custom object is any object not belonging to one of the standard classes used by WinRunner. These objects are therefore assigned to the generic object class. When WinRunner records an operation on a custom object, it generates obj_mouse_ statements in the test script.&lt;br /&gt;3. If a custom object is similar to a standard object, you can map it to one of the standard classes. You can also configure the properties WinRunner uses to identify a custom object during Context Sensitive testing. The mapping and the configuration you set are valid only for the current WinRunner session. To make the mapping and the configuration permanent, you must add configuration statements to your startup test script.&lt;br /&gt;&lt;br /&gt;Q:What is the purpose of GUI map configuration?&lt;br /&gt;GUI Map configuration is used to map a custom object to a standard object.&lt;br /&gt;&lt;br /&gt;Q:How do you make the configuration and mappings permanent?&lt;br /&gt;The mapping and the configuration you set are valid only for the current WinRunner session. To make the mapping and the configuration permanent, you must add configuration statements to your startup test script.&lt;br /&gt;&lt;br /&gt;Q:What is the purpose of GUI spy?&lt;br /&gt;Using the GUI Spy, you can view the properties of any GUI object on your desktop. You use the Spy pointer to point to an object, and the GUI Spy displays the properties and their values in the GUI Spy dialog box. You can choose to view all the properties of an object, or only the selected set of properties that WinRunner learns.&lt;br /&gt;Q:What is the purpose of different record methods 1) Record 2) Pass up 3) As Object 4) Ignore.?&lt;br /&gt;1) Record instructs WinRunner to record all operations performed on a GUI object. This is the default record method for all classes. (The only exception is the static class (static text), for which the default is Pass Up.)&lt;br /&gt;2) Pass Up instructs WinRunner to record an operation performed on this class as an operation performed on the element containing the object. Usually this element is a window, and the operation is recorded as win_mouse_click.&lt;br /&gt;3) As Object instructs WinRunner to record all operations performed on a GUI object as though its class were object class.&lt;br /&gt;4) Ignore instructs WinRunner to disregard all operations performed on the class.&lt;br /&gt;&lt;br /&gt;Q:How do you find out which is the start up file in WinRunner?&lt;br /&gt;The test script name in the Startup Test box in the Environment tab in the General Options dialog box is the start up file in WinRunner.&lt;br /&gt;&lt;br /&gt;Q:What are the virtual objects and how do you learn them?&lt;br /&gt;• Applications may contain bitmaps that look and behave like GUI objects. WinRunner records operations on these bitmaps using win_mouse_click statements. By defining a bitmap as a virtual object, you can instruct WinRunner to treat it like a GUI object such as a push button, when you record and run tests.&lt;br /&gt;• Using the Virtual Object wizard, you can assign a bitmap to a standard object class, define the coordinates of that object, and assign it a logical name.&lt;br /&gt;To define a virtual object using the Virtual Object wizard:&lt;br /&gt;1. Choose Tools &gt; Virtual Object Wizard. The Virtual Object wizard opens. Click Next.&lt;br /&gt;2. In the Class list, select a class for the new virtual object. If rows that are displayed in the window. For a table class, select the number of visible rows and columns. Click Next.&lt;br /&gt;3. Click Mark Object. Use the crosshairs pointer to select the area of the virtual object. You can use the arrow keys to make precise adjustments to the area you define with the crosshairs. Press Enter or click the right mouse button to display the virtual object’s coordinates in the wizard. If the object marked is visible on the screen, you can click the Highlight button to view it. Click Next.&lt;br /&gt;4. Assign a logical name to the virtual object. This is the name that appears in the test script when you record on the virtual object. If the object contains text that WinRunner can read, the wizard suggests using this text for the logical name. Otherwise, WinRunner suggests virtual_object, virtual_push_button, virtual_list, etc.&lt;br /&gt;5. You can accept the wizard’s suggestion or type in a different name. WinRunner checks that there are no other objects in the GUI map with the same name before confirming your choice. Click Next.&lt;br /&gt;&lt;br /&gt;Q:What are the two modes of recording?&lt;br /&gt;There are 2 modes of recording in WinRunner&lt;br /&gt;1. Context Sensitive recording records the operations you perform on your application by identifying Graphical User Interface (GUI) objects.&lt;br /&gt;2. Analog recording records keyboard input, mouse clicks, and the precise x- and y-coordinates traveled by the mouse pointer across the screen.&lt;br /&gt;&lt;br /&gt;Q:What is a checkpoint and what are different types of checkpoints?&lt;br /&gt;Checkpoints allow you to compare the current behavior of the application being tested to its behavior in an earlier version.&lt;br /&gt;You can add four types of checkpoints to your test scripts:&lt;br /&gt;1. GUI checkpoints verify information about GUI objects. For example, you can check that a button is enabled or see which item is selected in a list.&lt;br /&gt;2. Bitmap checkpoints take a snapshot of a window or area of your application and compare th
