<?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-3132703535514457596</id><updated>2012-01-08T18:25:47.111+05:30</updated><category term='Interview Questions - QTP'/><category term='Descriptive Programming'/><category term='QTP Questions'/><category term='QTP Certification Practice'/><category term='Features of QTP 9.2'/><category term='Challenges in Regression Testing'/><category term='Automation Object Model'/><category term='Data Driven Testing'/><title type='text'>QTP: Expert in HP QuickTest Professional (QTP)</title><subtitle type='html'>This QTP blog is for all who have Passion for QTP. Come on Guyz. Let's make testing better. Lets learn QTP</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shruti</name><uri>http://www.blogger.com/profile/17331632118209600610</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>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3045525460003381275</id><published>2011-10-27T09:23:00.004+05:30</published><updated>2011-10-27T09:56:51.032+05:30</updated><title type='text'>QTP Add Comment Excel Object</title><content type='html'>&lt;div&gt;The following code will add a comment in a particular cell in excel worksheet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set&lt;/span&gt; oExcel=&lt;span style="color: rgb(0, 0, 153);"&gt;CreateObject&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 51);"&gt;"Excel.Application"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     oExcel.&lt;span style="color: rgb(0, 0, 0);"&gt;Visible&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 153);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     Set&lt;/span&gt; oWorkBook=oExcel.&lt;span style="color: rgb(0, 0, 0);"&gt;Workbooks&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 0);"&gt;Add&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     Set&lt;/span&gt; oWorkSheet=oWorkBook.&lt;span style="color: rgb(0, 0, 0);"&gt;Worksheets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 51);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     With&lt;/span&gt; oWorkSheet.&lt;span style="color: rgb(0, 0, 0);"&gt;Cells&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 51);"&gt;1&lt;/span&gt;,&lt;span style="color: rgb(153, 51, 51);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 0);"&gt;AddComment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     .&lt;span style="color: rgb(0, 0, 0);"&gt;Visible&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 153);"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     .&lt;span style="color: rgb(0, 0, 0);"&gt;Text&lt;/span&gt; &lt;span style="color: rgb(153, 51, 51);"&gt;"Comment for Cell 1,1"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;With&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In case, you want to update the comment, use the following code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;With&lt;/span&gt; oWorkSheet.&lt;span style="color: rgb(0, 0, 0);"&gt;Cells&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 51);"&gt;1&lt;/span&gt;,&lt;span style="color: rgb(153, 51, 51);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 0);"&gt;Comment&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;     .&lt;span style="color: rgb(0, 0, 0);"&gt;Visible&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 153);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     .&lt;span style="color: rgb(0, 0, 0);"&gt;Text&lt;/span&gt; &lt;span style="color: rgb(153, 51, 51);"&gt;"Comment Text Changed"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;End&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;With&lt;/span&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3045525460003381275?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3045525460003381275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3045525460003381275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3045525460003381275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3045525460003381275'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2011/10/qtp-add-comment-excel-object.html' title='QTP Add Comment Excel Object'/><author><name>Shruti</name><uri>http://www.blogger.com/profile/17331632118209600610</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-3132703535514457596.post-6112996985066223290</id><published>2009-10-22T22:52:00.003+05:30</published><updated>2009-10-22T23:01:20.410+05:30</updated><title type='text'>QTP Tip: Deselect all radio buttons</title><content type='html'>Yesterday I got an email from one of my esteemed readers who asked "Is there any way to deselect all radio buttons using HP QTP?" I thought why one would do that but since it has been asked, it has to be answered.&lt;br /&gt;&lt;br /&gt;Before answering the above question let me explain that, radio buttons work in groups unlike checkboxes. It means, in a group only a single radio button can be selected. Afterwards, its not possible to deselect all radio buttons in that group. Even manually it can not be done.&lt;br /&gt;&lt;br /&gt;Inititally the task seems impossible but its not :)&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;It is definitely possible to deselect all radio buttons using QTP but it can only be achieved with the help of Document Object Model or DOM.&lt;br /&gt;&lt;br /&gt;The QTP Script for the same goes here:&lt;br /&gt;&lt;br /&gt;Set Obj = &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Browser&lt;/span&gt;("Google").&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Page&lt;/span&gt;("Google").&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;object&lt;/span&gt;.getElementsByTagName("&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;INPUT&lt;/span&gt;")&lt;br /&gt;&lt;br /&gt;For each &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;RadioBtn &lt;/span&gt;in Obj&lt;br /&gt;If lcase(&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;RadioBtn&lt;/span&gt;.type) = "radio" Then &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;RadioBtn&lt;/span&gt;.checked = False&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;To know more about the Document Object Model in QTP, see here : &lt;a href="http://msdn.microsoft.com/en-us/library/ms533043%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms533043(VS.85).aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also read about the Object property in WebRadioGroup Object in QTP help for more information.&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;&lt;br /&gt;Document Object model is supported by Internet Explorer browser only &amp;amp; not for Firefox as the underlying COM technology is not supported by Firefox. Hence, for Firefox browser, QTP will not be able to access the radio buttons using Document Object Model.&lt;br /&gt;&lt;br /&gt;Also working with Document Object Model inside HP Quicktest Professional is faster in terms of performance as no object identification is involved.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6112996985066223290?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6112996985066223290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6112996985066223290' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6112996985066223290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6112996985066223290'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/10/qtp-object-browser-document-object_22.html' title='QTP Tip: Deselect all radio buttons'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3073410498922361026</id><published>2009-10-04T23:50:00.007+05:30</published><updated>2009-10-05T23:12:02.142+05:30</updated><title type='text'>QTP: Adding Hyperlinks in Excel Spreadsheet</title><content type='html'>I was playing with the excel application along with QTP when suddenly I thought of adding a hyperlink inside an Excel spreadsheet from Quicktest. Task seemed a bit tricky initially but I took up the challenge and finally created a script.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;The QTP script to accomplish the same goes here:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Create an object reference to Excel. Also you can see "Excel.exe" &lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;'process gets created in the Task Manager&lt;/span&gt;&lt;br /&gt;Set &lt;span style="font-weight: bold;"&gt;objExcel &lt;/span&gt;= &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;CreateObject&lt;/span&gt;("&lt;span style="font-weight: bold;"&gt;Excel.Application&lt;/span&gt;")&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Make the invisible Excel application visible&lt;/span&gt;&lt;br /&gt;objExcel.&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;Visible &lt;/span&gt;= True&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Add a workbook to the blank excel sheet&lt;/span&gt;&lt;br /&gt;Set &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objWorkbook &lt;/span&gt;= &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objExcel&lt;/span&gt;.Workbooks.&lt;span style="font-weight: bold;"&gt;Add&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Get the handle of first sheet&lt;/span&gt;&lt;br /&gt;Set &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objWorksheet &lt;/span&gt;= &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objWorkbook&lt;/span&gt;.Worksheets(1)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Enter the value in A1 cell inside your first worksheet&lt;/span&gt;&lt;br /&gt;objWorksheet.&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Cells&lt;/span&gt;(1, 1) = "QTP Expert"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Create a range encompassing only the single cell A1&lt;/span&gt;&lt;br /&gt;Set &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;objRange &lt;/span&gt;= &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objExcel&lt;/span&gt;.Range("A1")&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Add a hyperlink to that range. Here range is only a single&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;'cell so hyperlink would be created&lt;/span&gt;&lt;br /&gt;Set &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objLink &lt;/span&gt;= &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;objWorksheet&lt;/span&gt;.Hyperlinks.&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Add &lt;/span&gt;_&lt;br /&gt;(objRange, "http://www.quicktesthp.blogspot.com")&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;________________________________________________________________&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102); font-style: italic;"&gt;If you like this Article, I would suggest you to subscribe my RSS feed. This way you will get all new future articles directly into your mailbox.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;________________________________________________________________&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3073410498922361026?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3073410498922361026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3073410498922361026' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3073410498922361026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3073410498922361026'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/10/qtp-adding-hyperlinks-excel-spreadsheet.html' title='QTP: Adding Hyperlinks in Excel Spreadsheet'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6490970648239152993</id><published>2009-10-03T12:45:00.011+05:30</published><updated>2009-10-05T23:04:38.501+05:30</updated><title type='text'>HP QTP Crypt Object</title><content type='html'>As the name implies, the "Crypt" object in HP Quicktest Professional is for encrypting the strings which can only be understood by QTP's "SetSecure" method. "Encrypt" is the only method supported by the QTP "Crypt" object.&lt;br /&gt;&lt;br /&gt;The syntax is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Crypt.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;Encrypt&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;(Your String)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An example for the same would be:&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'The string "ExpertQTP" would be encrypted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;var=Crypt.&lt;span style="color: rgb(0, 0, 102);"&gt;Encrypt&lt;/span&gt;("ExpertQTP")&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;msgbox va&lt;/span&gt;r&lt;br /&gt;&lt;br /&gt;The output of the above code would be "&lt;span style="font-weight: bold;"&gt;4ac6e9ba26cad2886bf331a767bfa1ce055f68e66bed5d61&lt;/span&gt;". As you can see, this string is encrypted which cant be understood by anyone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Please Note&lt;/span&gt;: Recording on password protected fields automatically encrypts your string for example&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;Browser("&lt;span style="color: rgb(0, 0, 102);"&gt;micclass:=Browser&lt;/span&gt;").Page("&lt;span style="color: rgb(0, 0, 102);"&gt;micclass:=Page&lt;/span&gt;").&lt;br /&gt;WebEdit("&lt;span style="color: rgb(0, 0, 102);"&gt;name:=Password&lt;/span&gt;").SetSecure "&lt;span style="color: rgb(0, 0, 102);"&gt;4ac6e9ba26cad2886bf331a767bfa1ce055f68e66bed5d61&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Now lets see how to decrypt our string. Sounds Interesting.. Alright!! Lets read more.&lt;br /&gt;&lt;br /&gt;Open your Internet Explorer browser and navigate to Google homepage. Copy and paste the below mentioned script in your QTP editor and run it.&lt;br /&gt;&lt;br /&gt;Browser("&lt;span style="color: rgb(0, 0, 102);"&gt;micclass:=Browser&lt;/span&gt;").Page("&lt;span style="color: rgb(0, 0, 102);"&gt;micclass:=Page&lt;/span&gt;").&lt;br /&gt;WebEdit("&lt;span style="color: rgb(0, 0, 102);"&gt;name:=q&lt;/span&gt;").&lt;br /&gt;SetSecure "&lt;span style="color: rgb(0, 0, 102);"&gt;4ac6e9ba26cad2886bf331a767bfa1ce055f68e66bed5d61&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;The output of the above code would be:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/Ssb7Mne_3OI/AAAAAAAAAd4/pC14rHbNxbI/s1600-h/Crypt.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 138px;" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/Ssb7Mne_3OI/AAAAAAAAAd4/pC14rHbNxbI/s400/Crypt.bmp" alt="" id="BLOGGER_PHOTO_ID_5388270198371376354" border="0" /&gt;&lt;/a&gt;&lt;span class="fullpost"&gt;As you can see, you can even use SetSecure method on non password fields as well.&lt;br /&gt;&lt;br /&gt;Another example of Crypt usage would be to create a function inside a Library and call inside your QTP Script.&lt;br /&gt;&lt;br /&gt;pwd="QTPExpert"&lt;br /&gt;Print Crypt_Func(pwd)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;'The below function is there in the Library&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Function Crypt_Func(password)&lt;br /&gt;Crypt_Func=Crypt.Encrypt(password)&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;I am going to present you another example how we can encrypt a string: Using "&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;Mercury.Encrypter&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Set var=&lt;span style="color: rgb(0, 0, 102);"&gt;CreateObject&lt;/span&gt;("&lt;span style="color: rgb(0, 0, 0);"&gt;Mercury.Encrypter&lt;/span&gt;")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Msgbox var.&lt;span style="color: rgb(0, 0, 102);"&gt;Encrypt&lt;/span&gt;("QTP")&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Set &lt;span style="color: rgb(0, 0, 102);"&gt;var&lt;/span&gt;=Nothing &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Release the Object reference&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Do you think of any other method or Utility to encrypt Strings? If your answer is No, then let me tell you there is a small utility program provided by QTP for encrypting strings. Its "&lt;span style="font-style: italic;"&gt;Password Encoder&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;How do I access this "Password Encoder" now? Thats simple!!&lt;br /&gt;Navigate to Start-&gt; All Programs-&gt; QuickTest Professional-&gt; Tools-&gt; Password Encoder&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Provide your string inside the "Password" field and click on the Generate button. Your encrypted string would be displayed inside the "Encoded String" field.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;________________________________________________________________&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102); font-style: italic;"&gt;If you like this Article, I would suggest you to subscribe my RSS feed. This way you will get all new future articles directly into your mailbox.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;________________________________________________________________&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6490970648239152993?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6490970648239152993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6490970648239152993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6490970648239152993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6490970648239152993'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/10/hp-qtp-crypt-object.html' title='HP QTP Crypt Object'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LFOEX-ZBxzg/Ssb7Mne_3OI/AAAAAAAAAd4/pC14rHbNxbI/s72-c/Crypt.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6365663422852156531</id><published>2009-02-15T23:27:00.005+05:30</published><updated>2009-02-17T00:14:15.502+05:30</updated><title type='text'>Creating Action Template in HP QuickTest Professional QTP</title><content type='html'>Did you ever thought of including some predefined statements in every new test inside your QTP software?&lt;br /&gt;&lt;br /&gt;If your answer is yes, then please read on.&lt;br /&gt;&lt;br /&gt;You can accomplish this through &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Action Templates&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Let me present a very simple example to clear this. You want to get your name as the Author of the Action in every new test which means on opening a new test, your name would be displayed by default.&lt;br /&gt;&lt;br /&gt;A sample template would be like:&lt;br /&gt;&lt;br /&gt;'***********************************************************************&lt;br /&gt;'@Author: &lt;author name=""&gt;&lt;br /&gt;'@Name: &lt;action name=""&gt;&lt;br /&gt;'@Description: &lt;description&gt;&lt;br /&gt;'***********************************************************************&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;You will notice that above shown template is fully commented out. Also, the Action Template applies to all the actions created on your own computer. &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Now lets see how do we create an Action Template inside HP Quicktest Professional(QTP).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Creating Action Template inside HP QTP:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Open the notepad application and copy the above mentioned code inside the notepad. Save the file with this name “ActionTemplate.mst”. Please take care of adding the double quotes while saving the file in the Save as dialog box. Navigate to the path where your Quicktest Professional software is installed. Search for a “dat” folder inside it and save the above mentioned file inside the “dat” folder. &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;The hierarchy would be&lt;br /&gt;&lt;quicktest style="color: rgb(0, 0, 102); font-weight: bold;" folder="" installation=""&gt;&lt;quicktest&gt;QuickTest Installation Folder\dat folder&lt;/quicktest&gt;&lt;/quicktest&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;After saving this file all new actions would contain the script lines from the Action Template saved just now.&lt;br /&gt;&lt;br /&gt;Note that only the name “ActionTemplate.mst” would be recognized as an action template. It means if you change the file name to “ActionTemplate1.mst”, it would not work.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;/description&gt;&lt;/action&gt;&lt;/author&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6365663422852156531?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6365663422852156531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6365663422852156531' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6365663422852156531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6365663422852156531'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/02/creating-action-template-in-hp.html' title='Creating Action Template in HP QuickTest Professional QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-189120960598797800</id><published>2009-01-07T17:39:00.008+05:30</published><updated>2009-01-07T18:47:32.712+05:30</updated><title type='text'>Discovery of a Peculiar Bug in QTP Analog Recording</title><content type='html'>I take an opportunity of sharing my discovery of a new Bug in QTP with my esteemed readers. I discovered it while doing an Analog recording.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Prior to the explanation of the bug let us see the overview of the Analog Recording process according to the QTP 9.2 help file.&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;According to the "Guidelines for Analog and Low Level Recording" section in the QTP 9.2 help file, you will find that there are two types of Analog Recording modes:&lt;br /&gt;&lt;br /&gt;1. Record relative to the screen&lt;br /&gt;2. Record relative to a specified window&lt;br /&gt;&lt;br /&gt;Record relative to the screen option is used when you intend to perform operations on objects in either a moving window or if you have objects across multiple windows. Also, the HP Quicktest Professional (QTP) Software captures only the Active Screen image of the final state of the window, which you just recorded.&lt;br /&gt;&lt;br /&gt;Record relative to a specified window is used when you intend to perform operations on objects which are present in a single window only. Also HP QuickTest Professional does not capture any Active Screen images in this case.&lt;br /&gt;&lt;br /&gt;Now coming back to the bug which happens to be the most funny part as well. The event happens to occur the other way round in case of capturing the Active screen images. What actually happens is that QTP is capturing the Active Screen image in case of "Record relative to a specified window" option as against for "Record relative to the screen" option.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;The illustration of the bug goes like this:&lt;/span&gt; Let us go by a very simple example being presented herewith.&lt;br /&gt;&lt;br /&gt;Open the Command prompt by navigating to Start-&gt;Run. Type "cmd" and press the return key.&lt;br /&gt;&lt;br /&gt;After opening the command prompt, please follow the below mentioned steps to reproduce this error.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 1:&lt;/span&gt; Click on the record button inside QTP and then Click on the "OK" button on "Record and Run Settings" dialog box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 2:&lt;/span&gt; After executing Step1, Analog recording button must be activated in the Automation toolbar. Click on the Analog Recording button. You will see the following screen:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE2.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE2.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;span style="font-weight: bold;"&gt;Step – 3:&lt;/span&gt; Keep the default option "Record relative to the screen" option selected and click on the "Start Analog Record" button.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 4:&lt;/span&gt; Move your mouse inside the command prompt window and click anywhere inside it to make this window active and type any text for example "xyz".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 5:&lt;/span&gt; Stop the recording by clicking on the "Stop" button inside QTP.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 6:&lt;/span&gt; Click on View-&gt;Active Screen.&lt;br /&gt;&lt;br /&gt;Now as per the HP Quicktest Professional Help file, the active screen should be displayed. Whereas the Output what I got is shown in the following screen shot with nothing in the Active Screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE3.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE3.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;Pretty interesting, I must say.&lt;br /&gt;&lt;br /&gt;Now lets try the above mentioned steps for "Record relative to the following window" option.&lt;br /&gt;&lt;br /&gt;Execute all the above Six steps as it is, however, &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;execute the Step - 3 in the following manner&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;#####################################&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Alternative way of  Step – 3:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Check the "Record relative to the following window" radio button and click on the hand icon on the right. Your cursor will change to a hand.&lt;br /&gt;&lt;br /&gt;Now move this hand to the title bar of the command prompt and click on it.&lt;br /&gt;&lt;br /&gt;With this step, QTP captures the command prompt title as shown in the following screenshot.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE1.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE1.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;Click on the "Start Analog Record" button.&lt;br /&gt;#####################################&lt;br /&gt;&lt;br /&gt;After executing the above-mentioned steps, I got the following result as shown in the following screenshot.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE4Modified.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE4Modified.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;This is the expanded view of the above screenshot:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE5.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE5.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://s360.photobucket.com/albums/oo49/qtpexpert/?action=view&amp;amp;current=SLIDE6.jpg" target="_blank"&gt;&lt;img src="http://i360.photobucket.com/albums/oo49/qtpexpert/SLIDE6.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Bug confirmed, Hence proved :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102); font-style: italic;"&gt;How about reporting this bug to the HP customer support? Whose gonna take the initiative?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Being Technology Savvy, I am sure you must be curious to read many more interesting articles on QTP; How about subscribing to my Feed? This will help you in automatically knowing the moment I post an article on my Site.&lt;br /&gt;&lt;br /&gt;So let us join and let us Learn &amp;amp; Master the great Tool QTP.&lt;br /&gt;&lt;br /&gt;Tags: HP QTP, Quicktest Professional, QTP Blog, QTP Bug, Bug inside QTP&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-189120960598797800?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/189120960598797800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=189120960598797800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/189120960598797800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/189120960598797800'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/01/discovery-of-peculiar-bug-in-qtp-analog.html' title='Discovery of a Peculiar Bug in QTP Analog Recording'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6951126564459241826</id><published>2009-01-04T22:23:00.001+05:30</published><updated>2009-01-04T22:29:02.697+05:30</updated><title type='text'>Lock your PC automatically after the execution of QTP Scripts</title><content type='html'>The beauty of Automation Testing is that Scripts are run in an unattended mode.Thus, what people usually do is, prepare the batch of scripts and leave for their homes. After the batch gets over, no matter even if it passes or even get failed, the PC is unlocked inviting others to view your secret project related data.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;This remains a small issue in a simple project based company. However it can become extremely devastating issue in case of a company having Finance or Banking related projects, having top most concern for the security of its data.&lt;br /&gt;&lt;br /&gt;So one wonders as to what can be the way by which this situation can be tackled?&lt;br /&gt;&lt;br /&gt;I had been scratching my head to device a way to lock my PC automatically after my scripts get executed?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;Ultimately I cracked the hard nut by a simple way. Now lets see how..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use the following QTP Script to lock your PC :&lt;br /&gt;&lt;br /&gt;Set obj = &lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;CreateObject&lt;/span&gt;("WScript.Shell")&lt;br /&gt;sCmnd = "%windir%\SYSTEM32\rundll32.exe user32.dll,&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;LockWorkStation&lt;/span&gt;"&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;obj.Run&lt;/span&gt; sCmnd, 0, False&lt;br /&gt;&lt;br /&gt;The above QTP script will lock your PC automatically. Moreover, I will suggest you to create this script as a separate script and call this script lastly in your batch. This will solve the purpose.&lt;br /&gt;&lt;br /&gt;Being Technology Savvy, I am sure you must be curious to read many more interesting articles on QTP; How about subscribing to my Feed? This will help you in automatically knowing the moment I post an article on my Site.&lt;br /&gt;&lt;br /&gt;So let us join and let us Learn &amp;amp; Master the great Tool QTP.&lt;br /&gt;&lt;br /&gt;Tags: HP QTP, Quicktest Professional, lock PC using QTP&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6951126564459241826?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6951126564459241826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6951126564459241826' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6951126564459241826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6951126564459241826'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2009/01/lock-your-pc-automatically-after.html' title='Lock your PC automatically after the execution of QTP Scripts'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6772907766824624241</id><published>2008-12-03T19:09:00.006+05:30</published><updated>2008-12-31T17:17:51.379+05:30</updated><title type='text'>Run time Debugging through Print utility statement in QTP</title><content type='html'>&lt;div&gt;&lt;div&gt;I believe you have used "msgbox" function almost every time for debugging purposes i.e. displaying some text at run time. But the problem with "msgbox" function is that it keeps open till you close it and moreover you can’t debug further, since it’s a modal dialog box. You have to press OK button to move ahead. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;How about a similar utility function, which works very similar, like "msgbox" and also provides the user the flexibility to perform further debugging? &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Yes, it is possible. HP Quicktest Professional (QTP) provides a Print utility statement which is used to display information in the "QuickTest Print Log" window while still continuing your Run Session. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Looks pretty interesting!!!!!!! Alright, then go ahead and read more.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Firstly let us see what happens in case of "msgbox" function. As soon as the script encounters the "msgbox" function, it displays a dialog box and the script gets paused till the user presses the OK button. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Following screenshot demonstrate the concept.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5275559508681780242" style="margin: 0px auto 10px; display: block; width: 400px; height: 314px; text-align: center;" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/STaNbAppbBI/AAAAAAAAAPQ/ZC49Damt87U/s400/Picture_1.JPG" border="0" /&gt; &lt;div&gt;&lt;/div&gt;&lt;div&gt;Here you need to press the OK button in order to continue.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;In order to counter this problem, HP QTP also provides a fantastic Print utility which is very similar to its "msgbox" counterpart but much more flexible. It can be used for debugging purposes. It is very simple to use inside QTP tool. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Following screenshot demonstrate the concept.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5275559903715903090" style="margin: 0px auto 10px; display: block; width: 386px; height: 292px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_LFOEX-ZBxzg/STaNyARHxnI/AAAAAAAAAPY/7rq71mI2QC8/s400/Picture_2.JPG" border="0" /&gt;&lt;br /&gt;&lt;/strong&gt;As you can see from this screenshot, QuickTest Print Log window remains open even after your script has finished running, thus providing more flexibility.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;So from now on which one you would like to use? QTP’s "msgbox" function or QTP’s Print Utility Statement?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Did you like my explanation of the concept in the above article?&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being Technology Savvy, I am sure you must be curious to read many more interesting articles on QTP; How about subscribing to my Feed? This will help you in automatically knowing the moment I post an article on my Site. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So let us join and let us Learn &amp;amp; Master the great Tool QTP.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Keywords: HP QTP, Quicktest Professional, QTP Blog, QTP msgbox function, QTP Print utility statement&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6772907766824624241?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6772907766824624241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6772907766824624241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6772907766824624241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6772907766824624241'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/12/run-time-debugging-through-print.html' title='Run time Debugging through Print utility statement in QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LFOEX-ZBxzg/STaNbAppbBI/AAAAAAAAAPQ/ZC49Damt87U/s72-c/Picture_1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6091573046089601758</id><published>2008-11-28T17:07:00.011+05:30</published><updated>2008-12-31T18:48:54.942+05:30</updated><title type='text'>Ways to manipulate conventional logic of naming objects in QTP</title><content type='html'>Here I am presenting a workaround to manipulate or overriding the Naming Conventions generally assigned by QTP to the test objects.&lt;br /&gt;&lt;br /&gt;Did you ever notice that QTP gives a random name to the objects after recording which even seems vague at times.&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;br /&gt;Let me show you an example to demonstrate my point. I tried recording on the Google home page and got this code from QTP after recording after writing some text in the Google search box:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Browser("Google").Page("Google").WebEdit("q").Set "This is the sample text"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see from the above code, the name which has been assigned to the WebEdit box is "q". How many of you agree that this "q" seems a valid name? Though this "q" is the name of the search box which has been hard coded by the Google developers. I have extracted the following code from the Google’s webpage to illustrate my point:&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;input maxlength=2048 &lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name=q&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; size=55 title="Google Search" value=""&lt;br /&gt;&lt;br /&gt;I believe that QTP doesn’t name the test objects properly. There is certainly a way by which we can instruct QTP to name the text objects as per our chosen properties.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The following are the steps for the same:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Close your HP QTP software.&lt;br /&gt;&lt;br /&gt;2. Navigate to Start-&gt;Run.&lt;br /&gt;&lt;br /&gt;3. Type "regedit" and press enter to open the Registry Editor.&lt;br /&gt;&lt;br /&gt;4. Inside your "Registry Editor" navigate to HKEY_CURRENT_USER -&gt; Software -&gt; Mercury Interactive -&gt; QuickTest Professional -&gt; MicTest -&gt; Test Objects.&lt;br /&gt;&lt;br /&gt;Here, you can see so many keys like WebEdit, WebElement etc etc. Yes, you guessed right. These are in fact all the built-in keys classes of QTP. Expand any key of your choice for editing.&lt;br /&gt;&lt;br /&gt;In this tutorial, I will select WebEdit class which is very frequently used in QTP. You will see a key named "tag query name" as highlighted in the following screenshot which has the value "logical name". You will see the same value for "tag query name" key for all the inbuilt classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5273672246318634514" style="margin: 0px auto 10px; display: block; width: 400px; height: 267px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SS_Y94eolhI/AAAAAAAAAPA/nNA7paO2Xao/s400/slide+2.JPG" border="0" /&gt;&lt;br /&gt;Now double click the "tag query name" key. You will see the following screenshot. Provide any name of your choice. I provided "QTP Expert" and press enter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5273672395011776322" style="margin: 0px auto 10px; display: block; width: 397px; height: 169px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SS_ZGiZ130I/AAAAAAAAAPI/3pmqXAddTys/s400/slide+1.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Close the Registry Editor and open your HP Quicktest Professional (QTP) software. Open google.com webpage again and record again. [ Make sure you open the google webpage only after opening QTP]. You will see a code something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Browser("Google").Page("Google").WebEdit("WebEdit").Set "This is the sample text "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I hope, you must have noticed the difference after tweaking the registry editor.&lt;br /&gt;&lt;br /&gt;This technique doesn’t seem to be used too often, however it is possible to override the standard naming convention of objects through QTP by doing some minor changes in Registry Editor.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;KeyWords: QTP, Quicktest, Object Naming&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6091573046089601758?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6091573046089601758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6091573046089601758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6091573046089601758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6091573046089601758'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/11/ways-to-manipulate-conventional-logic.html' title='Ways to manipulate conventional logic of naming objects in QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SS_Y94eolhI/AAAAAAAAAPA/nNA7paO2Xao/s72-c/slide+2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8594502399696039766</id><published>2008-11-18T16:28:00.012+05:30</published><updated>2008-12-31T19:53:02.388+05:30</updated><title type='text'>Application of Fault Tolerance Approach using QTP</title><content type='html'>Let us try to understand this concept of fault tolerance a bit Step-by-step.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;What is a Fault Tolerant System?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;When any system is able to recover from some unexpected errors and is able to restore the normal operation, it is known as a Fault Tolerant system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;When do we need a fully Fault Tolerant System?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Since it is a very complex &amp;amp; costly process to ensure perfect error recovery in a fault tolerant systems, this approach is deployed in applications where safety, availability and time requirements are of prime importance.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Why there is a need to tackle the Errors?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Only the single major characteristic i.e. Reliability identifies any high-quality software. A good piece of software must be able to behave as expected in almost all situations. Although software development companies, during the process of development, try their best to avoid, detect and remove maximum umber of errors as possible, still they can’t take it for granted that the delivered software is free of errors. Due to this there comes the need to have adequate mechanism in place, which could protect the productive system from unacceptable behavior in case of error like situations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;How to handle the situation in case of an error?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;When an error occurs primarily due to some faulty design and we are not able to rectify the fault on-line, and we can not afford to move ahead with inconsistent or corrupted data. In such situation it is best to terminate the application in a controlled way (of course whenever possible) rather than trying to do recovery from the error to continue the normal operation.&lt;br /&gt;&lt;br /&gt;Usually a script designed for testing an application remains in a Technically Feasible / Good State, during the normal operation. However Good States always have their evil counterparts as well i.e. the Bad States. And the creator of the scripts would never like his script to land into such Bad States. But a patient tester keeps him mentally prepared for his script landing into a Bad State &amp;amp; he tries to minimize such problematic by anticipating such problem situations and ably converts them into expected situations for his benefit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;What should be the realistic approach?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The best approach in business information systems is generally aimed at pumping maximum resources of time, money &amp;amp; efforts in prevention of errors during the development and creation of robust system. This would ensure correctness and integrity of the data and will go even one-step further in prevent any corruption and loss of the data.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Understanding Error-handling Mechanism of a Test Tool: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Almost each &amp;amp; every test tool addresses following elements of its error handling mechanism:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;1) Fault:&lt;/span&gt;&lt;/strong&gt; It is the origin of any misbehavior. It is the byproduct or the cause of an error.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;2) Error:&lt;/span&gt;&lt;/strong&gt; It is a part of a system state, which leads to a failure. User errors don’t become a part of this definition, since user errors are mistakes committed by the user while operating a software system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;3) Detector:&lt;/span&gt;&lt;/strong&gt; An error needs to be detected first before the tool can act on it. The error handling mechanisms in a tool interacts with errors and failures of the application. Thus a detector is an interface between the error and failures taking place in the system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;4) Failure:&lt;/span&gt;&lt;/strong&gt; It is a deviation of the delivered application in its compliance with the basic specifications. It differs from error in way that the error refers to a particular state of a system, whereas a failure is a specific event, which is basically a transition from the correct delivery to the incorrect delivery.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;5) Exception:&lt;/span&gt;&lt;/strong&gt; It is an abnormal condition, which interrupts the normal control flow. To raise an exception, a program needs to detect an error or failure first.&lt;br /&gt;&lt;br /&gt;A typical relationship among above-mentioned elements of error handling mechanism are explained pictorially as under.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5269958428264821426" style="margin: 0px auto 10px; display: block; width: 400px; height: 348px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SSKnROHM8rI/AAAAAAAAAO4/BZ1s_hlnYJQ/s400/ErrorHandling.JPG" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;QTP &amp;amp; its error handling potentials:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP along with its prime companion VBScript (if designed with care &amp;amp; consideration) are quite powerful in handling errors and Exceptions. Design &amp;amp; developments of QTP scripts is an art, but not too difficult to learn &amp;amp; master.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As said earlier, design of good script for QTP is extremely important, so that the script behaves well in almost every situation and it should be able to handle not only with the normal situations but also many unexpected situations.&lt;br /&gt;&lt;br /&gt;While designing scripts for QTP, the script designer must keep the underlying motto at the back of his mind and that is &lt;strong&gt;"Expect the Unexpected".&lt;/strong&gt; Development of QTP scripts is thus treated almost similar to the development of any other software package &amp;amp; I feel that both of these need to be treated the same way.&lt;br /&gt;&lt;br /&gt;Attributes of a strong error handling system:Robust scripts capable of tackling problematic states are designed to operate under architecture, equipped with error handling facilities like:&lt;br /&gt;&lt;br /&gt;1) Ability to detect errors.&lt;br /&gt;2) Ability to handle errors.&lt;br /&gt;3) Transmission of error related information among all concerned&lt;br /&gt;4) Management of important information for analyzing &amp;amp; resolving the errors.&lt;br /&gt;5) Management of error messages for reporting to the user or the testers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Error handling mechanisms of QTP:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;During the run session, if an error occurs in QTP the script is halted &amp;amp; the error handling mechanism of QTP releases a popup message box describing the error to the user informing of the problem. The user is prompted to select an option of clicking a button on this message box to either continue to execute the program or end the run session. The error message can accompany a screenshot / bitmap capture of the error event for better clarity.&lt;br /&gt;&lt;br /&gt;The tester has option to accept the &lt;strong&gt;Popup Message Box&lt;/strong&gt; option or he can specify a different response by choosing one of the alternative options in the list in the &lt;strong&gt;"When error occurs during run session"&lt;/strong&gt; box:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;a) Proceed to next action iteration&lt;/span&gt;&lt;/strong&gt; – QTP proceeds to the next action iteration when an error occurs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;b) Stop run&lt;/span&gt;&lt;/strong&gt; – QTP stops the run session when an error occurs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;c) Proceed to next step&lt;/span&gt;&lt;/strong&gt; - QTP proceeds to the next step in the test when an error occurs.&lt;br /&gt;&lt;br /&gt;QTP first performs the particular recovery scenarios associated with the test, and performs the option selected above only if the associated recovery scenarios are not able to resolve the error.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Programmatically Controlling the Recovery Mechanism in QTP:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Recovery object can be used to control the recovery mechanism programmatically during the run session. For example, the entire recovery mechanism or particular recovery scenarios can be enabled or disabled. The status information related to the particular recovery scenarios can be retrieved and the recovery mechanism at a certain point in the run session can be activated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By default, QTP checks for recovery triggers when an error is returned during the run session. We can use the Recovery object's Activate method to force QTP to check for triggers after a specific step in the run session. For example, when we are aware of the fact that an object property checkpoint will fail if certain processes are open when the checkpoint is performed. We want to be sure that these open processes, which may indicate a different problem with the application, do not affect the pass or fail of the checkpoint.&lt;br /&gt;&lt;br /&gt;However, a failed checkpoint does not result in a run error. Hence by default, the recovery mechanism would not be activated by the Object State. We can define a recovery scenario, which looks for, and closes specified open processes when an object's properties have a certain state. This state shows the object's property values, as they would be if the problematic processes were open. We can instruct QTP to activate the recovery mechanism if the checkpoint fails so that QTP will check for and close any problematic open processes and then try to perform the checkpoint again. This ensures that when the checkpoint is performed the second time the open processes do not affect it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Use of Check Points in QTP:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;As said earlier that prevention is better than cure, QTP provides a very powerful tool of using Checkpoints to check various objects in the application to ensure that they function properly.&lt;br /&gt;&lt;br /&gt;Checkpoint is nothing but a point of verification, which compares a current value for a specified property with the expected value for that property. This enables the tester to identify whether the application is functioning correctly or not. When the test is run, QTP compares the expected results of the checkpoint with the current results. If the results do not match, the checkpoint fails &amp;amp; the end result gets displayed in the result window.&lt;br /&gt;&lt;br /&gt;QTP provides eleven types of checkpoints to the testers. The details of each &amp;amp; every Checkpoint are not included in this article.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Use of Synchronization Points in QTP: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;As an alternative to create a checkpoint or perform a step until the application object aquires a particular status, a synchronization point can be inserted to instruct QTP to halt the testing process till the object property reaches a value specified by us (or till a timeout specified by us has exceeded).&lt;br /&gt;&lt;br /&gt;If we don’t have a synchronization point, QTP is likely to click the Update Order button too quickly during the test execution process, which will result in failure of the test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Finally - Understanding of the Best Practices:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1) A best method to use error-handling mechanism is to try to prevent the errors. Whenever an error happens, try to capture the maximum related information &amp;amp; report it in detail.&lt;br /&gt;&lt;br /&gt;2) Perform a syntax check every time the script is changed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Key Words : QTP, Error Handling, Recovery Scenario, Synchronization, Check Point, Recovery Mechanism&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8594502399696039766?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8594502399696039766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8594502399696039766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8594502399696039766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8594502399696039766'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/11/application-of-fault-tolerance-approach.html' title='Application of Fault Tolerance Approach using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SSKnROHM8rI/AAAAAAAAAO4/BZ1s_hlnYJQ/s72-c/ErrorHandling.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-4357881459444562926</id><published>2008-11-08T22:25:00.012+05:30</published><updated>2008-12-31T21:46:51.602+05:30</updated><title type='text'>VBScript a Stepping-stone to learn QTP Automation Tool</title><content type='html'>&lt;div&gt;It is quite obvious that to be a successful practitioner of QTP, one needs to thoroughly understand Vbscript.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am presenting below my first article cum tutorial in this series on VBscript, which is a step-by-step guide for all enthusiasts eager to learn QTP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;***********************&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;VBScript:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vbscript is a scripting language developed by Microsoft. It is the simplified version of Visual Basic. It is very closely related to BASIC programming language.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;What is a Variable?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A variable is a container in the computer’s memory which is used to store information that you want to store. It is possible to change the value of the variables inside your script. In VBScript, all variables are of one fundamental datatype: Variant which means it can store different types of data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Naming conventions for Variables&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While creating variables, you need to follow some rules. These are:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;They should always begin with a letter and they should not contain a period(.) sign.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Variable names should not exceed 255 characters.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They should be unique in the scope in which they are declared.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They should not have names same as keywords like “Dim”, “For” etc.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;How can I create variables with the above knowledge?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Variables can be created using Public, Private or Dim statements. The most common statement is Dim. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For an example, you can use the following syntax to declare variables. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;###########&lt;/div&gt;&lt;div&gt;Dim var&lt;/div&gt;&lt;div&gt;###########&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Initially this variable has no value which means its empty. After initializing a variable and assigning a value like in above case, the following expressions will evaluate to True:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If var = 0 Then&lt;/div&gt;&lt;div&gt;If var = “” Then&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can also create variables even without using Dim statement however it is not recommended to do so. Following example will clarify the concept:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dim A&lt;/div&gt;&lt;div&gt;A=B+C&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Is there any way to use keywords as variable names?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yes, there is a way. Through this way we can even use keywords or some special symbols as variable names. Lets see, how it done. For this, you have to place variable names inside brackets. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dim [For]&lt;/div&gt;&lt;div&gt;[For] = 20&lt;/div&gt;&lt;div&gt;Msgbox [For]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here, we created a variable named [For] inside brackets which is not possible otherwise. Now the “Msgbox” is a predefined function inside VBScript which is used to display a dialog box to see the value of the variable. The output of the code is:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SRXFzacudPI/AAAAAAAAAOQ/JPnr5JKnznU/s1600-h/Output.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 88px; height: 89px;" src="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SRXFzacudPI/AAAAAAAAAOQ/JPnr5JKnznU/s400/Output.JPG" alt="" id="BLOGGER_PHOTO_ID_5266332826343470322" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;What is Option Explicit statement?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Option Explicit is used to force explicit declaration of all variables inside your script. This statement is always used at the top of all VBScript statements. This means, you are forced to declare all your variables using either of the statements “Dim”,“Public” or “Private”.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now lets see what happens if we try to use a variable without using Dim statement in the case when Option Explicit statement is also used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Option Explicit&lt;/div&gt;&lt;div&gt;A=10&lt;/div&gt;&lt;div&gt;MsgBox A&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the output you will get:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SRXGE8l-fgI/AAAAAAAAAOY/LmtlF1FZeJY/s1600-h/Output.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 326px; height: 124px;" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SRXGE8l-fgI/AAAAAAAAAOY/LmtlF1FZeJY/s400/Output.JPG" alt="" id="BLOGGER_PHOTO_ID_5266333127566851586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hence to avoid this error, use the following code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Option Explicit&lt;/div&gt;&lt;div&gt;Dim A&lt;/div&gt;&lt;div&gt;A=10&lt;/div&gt;&lt;div&gt;MsgBox A&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please wait for my next VBScript Tutorial in this series going to be posted very shortly.&lt;br /&gt;&lt;br /&gt;Keywords:&lt;br /&gt;QTP, QTP &amp;amp; VBScript, VBScript Tutorial, VBScript &amp;amp; QTP&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-4357881459444562926?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/4357881459444562926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=4357881459444562926' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4357881459444562926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4357881459444562926'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/11/vbscript-stepping-stone-to-learn-qtp.html' title='VBScript a Stepping-stone to learn QTP Automation Tool'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_LFOEX-ZBxzg/SRXFzacudPI/AAAAAAAAAOQ/JPnr5JKnznU/s72-c/Output.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-1438369573891962162</id><published>2008-10-28T11:43:00.010+05:30</published><updated>2008-10-29T19:14:50.156+05:30</updated><title type='text'>How to get yourself Registered for HP Quicktest Professional(QTP) for Certification</title><content type='html'>These days I am getting several emails from the esteemed readers of my blog, who are curious to know the answer to a most sought after question; which goes like:&lt;br /&gt;&lt;br /&gt;"Hi Expert !!!! Can you please suggest me how can I register for HP Quicktest Professional (QTP) Certification, what's the exam fee, What's the structure of Certification Exam etc etc."&lt;br /&gt;&lt;br /&gt;Hence for the benefit of my curious readers, I am publishing this post which will answer all such queries:&lt;br /&gt;&lt;br /&gt;1. The code for the HP QTP certification exam is HPO: M16&lt;br /&gt;&lt;br /&gt;2. You need to open this website for more details: &lt;a href="http://www.register.prometric.com/Index.asp"&gt;http://www.register.prometric.com/Index.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Here in this website, Select your Country for example United States. Then select a state for example Alaska. Click on the Next button.&lt;br /&gt;&lt;br /&gt;4. Select Hewlett Packard from Client as shown in the following screenshot. Click on the Next button.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SQavfApoZaI/AAAAAAAAAMM/O9gZRoePfrg/s1600-h/HP+QTP.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5262086161914422690" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 215px; text-align: center;" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SQavfApoZaI/AAAAAAAAAMM/O9gZRoePfrg/s400/HP+QTP.bmp" border="0" /&gt;&lt;/a&gt;5. Again click on the Next button on HP Certified Professional Page. You will see the following page.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LFOEX-ZBxzg/SQaw2yNArGI/AAAAAAAAAMU/FQDd7Oem548/s1600-h/HP+QTP1.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5262087669864770658" style="margin: 0px auto 10px; display: block; width: 400px; cursor: pointer; height: 314px; text-align: center;" alt="" src="http://4.bp.blogspot.com/_LFOEX-ZBxzg/SQaw2yNArGI/AAAAAAAAAMU/FQDd7Oem548/s400/HP+QTP1.bmp" border="0" /&gt;&lt;/a&gt;6. Select HPO-M16 from Exam as shown in the following screenshot. The exam fees may vary according to the location of your country.&lt;br /&gt;&lt;br /&gt;7. In the next page, you will see a list of Center locations along with their Contact Numbers which conducts this exam. You guys can contact any of these Centers based on your choice.&lt;br /&gt;&lt;br /&gt;8. Once ready for the exam after paying the fee, be prepared to answer a set of 60 Nos. Multiple choice questions, having a Minimum Passing Score of 70%.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;9. Time commitment for the QTP Certification exam is 2 Hours.&lt;br /&gt;&lt;br /&gt;10. You will get a Scorecard after clearing the QTP certification exam and for getting a Certificate you need to clear the QC exam / HP Quality Center Exam as well.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;If you need specialized help in learning QTP leading to HP Certification, Please let me know.&lt;br /&gt;&lt;br /&gt;All the Best Friends !!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;Posted By : QTP Expert&lt;br /&gt;&lt;a href="mailto:expert.qtp@gmail.com"&gt;expert.qtp@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Keywords: HP QuickTest Professional Certification, QTP Certification, HP Certified Professional Exam, Registration for QTP Certification, QTP Training&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-1438369573891962162?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/1438369573891962162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=1438369573891962162' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1438369573891962162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1438369573891962162'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/how-to-get-yourself-registered-for-hp.html' title='How to get yourself Registered for HP Quicktest Professional(QTP) for Certification'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SQavfApoZaI/AAAAAAAAAMM/O9gZRoePfrg/s72-c/HP+QTP.bmp' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-4230698515612529999</id><published>2008-10-15T13:53:00.005+05:30</published><updated>2008-10-15T14:10:25.453+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 11</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 101: What is the process of capturing visible portion of an object in QTP?&lt;br /&gt;=====================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;QTP captures the visible part of the specified object as a bitmap and inserts a checkpoint in the test. QTP does not capture any part of the screen which happens to be scrolled off the screen. You can check an area of an application as a bitmap. While creating a test, you specify the area you want to check by selecting an object. You can check an entire object or any area within an object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 102: What is the process of comparing selected area of object with Bitmap stored in the checkpoint?&lt;br /&gt;==================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When you run the test, QTP compares the object or selected area of the object in the application with the bitmap stored in the checkpoint.&lt;br /&gt;&lt;br /&gt;If there are differences, QTP captures a bitmap of the actual object and displays it with the expected bitmap in the details portion of the Test Results window. By comparing the two bitmaps (expected and actual), you can identify the nature of the discrepancy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 103: How can we define a time interval for QTP to perform a checkpoint successfully?&lt;br /&gt;=================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For defining some time interval (say in seconds) during which QTP shopuld attempt to perform the checkpoint successfully, we need to specify the Checkpoint Timeout. QTP continues to perform the checkpoint until it passes or until the timeout occurs. If the checkpoint does not pass before the timeout occurs, the checkpoint fails.&lt;br /&gt;&lt;br /&gt;For example, suppose it takes some time for an object to achieve an expected state. Increasing the checkpoint timeout value in this case can help ensure that the object has sufficient time to achieve that state, enabling the checkpoint to pass (if the data matches) before the maximum timeout is reached.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==============================================&lt;br /&gt;Q. 104: How can we check the object property values in our application?&lt;br /&gt;==============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You can check that a specified object in your application has the property values you expect, by adding a standard checkpoint step to your test while recording or editing the test. Standard checkpoints compare the expected values of object properties to the object’s current values during a run session.&lt;br /&gt;&lt;br /&gt;We can use standard checkpoints to perform checks on images, tables, Web page properties, and other objects within our application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=======================================&lt;br /&gt;Q. 105: How can we identify a checkpoint in QTP?=======================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;We identify a checkpoint by its name. By default, the checkpoint name is the same as the name of the test object on which the checkpoint was created. You can specify a different name for the checkpoint or accept the default name.&lt;br /&gt;&lt;br /&gt;If you want to rename a checkpoint, make sure that the name is unique, and it does not begin or end with a space, and does not contain the special charactesr like " := @@&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;br /&gt;Q. 106: How can we Insert statement option when adding a checkpoint during the recording?&lt;br /&gt;===============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Insert statement option is not available when adding a checkpoint during recording or when modifying an existing object checkpoint. It is available only when adding a new checkpoint to an existing test while editing it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=============================================&lt;br /&gt;Q. 107: How can we compare the image files in the Image Checkpoint?&lt;br /&gt;=============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We can compare the image files in the Image Checkpoint by using the Compare image content option in the Image Checkpoint Properties dialog box. It compares the expected image source file with the graphic of the actual image source file. If the expected and actual images are different, QTP displays them both in the Test Results. If the images are identical, only one graphic is displayed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================================&lt;br /&gt;Q. 108: How can we check the contents of tables in our application in QTP?&lt;br /&gt;====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;We can check the contents of tables in our application by adding table checkpoints to the test. For example, you can check that a specified value is displayed in a particular cell. We can also check the properties of the table object. For example, you can check that a table has the expected number of rows and columns.&lt;br /&gt;&lt;br /&gt;When you run the test, the table checkpoint compares the actual data to the expected data, as defined in the checkpoint. If the results match, the checkpoint passes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================================&lt;br /&gt;Q. 109: How do we compare actual cell values with the expected cell values in Tables in QTP?.&lt;br /&gt;====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;By using the Settings tab we can compare actual cell values with the expected cell values in tables. Bu using Verification type option we can compare following types of cell contents.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) String Content:&lt;/span&gt;&lt;/strong&gt; It is the default setting. It treats the cell values as strings and checks for the exact text, while ignoring spaces. For example, 2 and 2.00 are not recognized as the same string.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Numeric Content:&lt;/span&gt;&lt;/strong&gt; Evaluates the content of the cell according to numeric values. For example, 2 and 2.00 are recognized as the same number.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3) Numeric Range:&lt;/span&gt;&lt;/strong&gt; Compares the content of the cell against a numeric range, where the minimum and maximum values are any real number that you specify.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 110: How can we check the location of a cell to be checked in a Column of a table?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;By the use of Identify columns option available in Cell Identification tab. This specifies the location of the column containing the cells with which you want to compare the expected data. This is done in two ways:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) By position:&lt;/span&gt;&lt;/strong&gt; This is the Default option. It locates cells according to the column position. A shift in the position of the columns within the table results in a mismatch.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) By column name:&lt;/span&gt;&lt;/strong&gt; It locates cells according to the column name. A shift in the position of the columns within the table does not result in a mismatch. This option gets enabled only when the table contains more than one column.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-4230698515612529999?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/4230698515612529999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=4230698515612529999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4230698515612529999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4230698515612529999'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/qtp-interview-question-bank-part-11.html' title='QTP - Interview Question Bank : Part 11'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3902012795771007447</id><published>2008-10-15T13:41:00.003+05:30</published><updated>2008-10-15T13:53:16.531+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 10</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 91: What is a Standard Check Point in QTP?=====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a checkpoint which checks the property value of an object in your application. The standard checkpoint checks a variety of objects such as buttons, radio buttons, combo boxes, lists, and so forth. For example, you can check that a radio button is activated after it is selected or you can check the value of an edit box.&lt;br /&gt;&lt;br /&gt;Standard checkpoints are supported for all add-in environments.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 92: What is a Image Check Point in QTP?===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a checkpoint ahich checks the value of an image in your application. For example, you can check that a selected image’s source file is correct. Image checkpoint is created by inserting a standard checkpoint on an image object.&lt;br /&gt;&lt;br /&gt;Image checkpoints are supported for the Web add-in environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 93: What is a Bitmap Check Point in QTP?====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a checkpoint which checks an area of your application as a bitmap. For example, suppose you have a Web site that can display a map of a city the user specifies. The map has control keys for zooming. You can record the new map that is displayed after one click on the control key that zooms in the map. Using the bitmap checkpoint, you can check that the map zooms in correctly.&lt;br /&gt;You can create a bitmap checkpoint for any area in your application, including buttons, text boxes, and tables.&lt;br /&gt;&lt;br /&gt;Bitmap checkpoints are supported for all add-in environments&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 94: What is a Table Check Point in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a checkpoint which checks information within a table. For example, suppose your application contains a table listing all available flights from New Delhi to Chennai. You can add a table checkpoint to check that the time of the first flight in the table is correct.&lt;br /&gt;You create a table checkpoint by inserting a standard checkpoint on a table object.&lt;br /&gt;Table checkpoints are supported for Web, ActiveX, Java, Oracle, and .NET Windows Forms environments, as well as other add-in environments&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 95: What is a Text Check Point in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a checkpoint which checks that a text string is displayed in the appropriate place on a Web page or application. For example, suppose a Web page displays the sentence Flight departing from New Delhi to Chennai. You can create a text checkpoint that checks that the words “New Delhi” are displayed between “Flight departing from” and “to Chennai”.&lt;br /&gt;&lt;br /&gt;Text checkpoints are supported for most add-in environments&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 96: What is a Text Area Check Point in QTP?=====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a checkpoint which checks that a text string is displayed within a defined area in a Windows-based application, according to specified criteria. For example, suppose your Visual Basic application has a button that says View Doc &lt;num&gt;, where &lt;num&gt;is replaced by the four digit code entered in a form elsewhere in the application. You can create a text area checkpoint to confirm that the number displayed on the button is the same as the number entered in the form.&lt;br /&gt;&lt;br /&gt;Text area checkpoints are supported for all Windows-based environments, such as Standard Windows, Visual Basic, and ActiveX add-in environments&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 97: What is an Accessibility Check Point in QTP?========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a checkpoint which identifies areas of your Web site that may not conform to the World Wide Web Consortium (W3C) Web Content Accessibility Guidelines. For example, guideline 1.1 of the W3C WebContent Accessibility Guidelines requires you to provide a text equivalent for every non-text element. You can add an Alt property check to check whether objects that require the Alt property under this guideline, do in fact have this tag.&lt;br /&gt;&lt;br /&gt;Accessibility checkpoints are supported for the Web add-in environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 98: What is a Page Check Point in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a checkpoint checks the characteristics of a Web page. For example, you can check how long a Web page takes to load or whether a Web page contains broken links.&lt;br /&gt;&lt;br /&gt;You create a page checkpoint by inserting a standard checkpoint on a page object. Page checkpoints are supported for the Web add-in environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 99: What is a Database Check Point in QTP?=====================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is a checkpoint which checks the contents of a database accessed by your application. For example, you can use a database checkpoint to check the contents of a database containing flight information for your Web site.&lt;br /&gt;&lt;br /&gt;Database checkpoints are supported for all add-in environments&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 100: What is a XML Check Point in QTP?===================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is a checkpoint which checks the data content of XML documents in XML files or XML documents in Web pages and frames. The XML Checkpoint option is supported for the Web add-in environment &amp;amp; for all add-inenvironments.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3902012795771007447?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3902012795771007447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3902012795771007447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3902012795771007447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3902012795771007447'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/qtp-interview-question-bank-part-10.html' title='QTP - Interview Question Bank : Part 10'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8420939038239698017</id><published>2008-10-08T10:22:00.004+05:30</published><updated>2008-10-08T13:02:55.040+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 9</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 81: What is the use of Keyword View in QTP?=====================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The Keyword View enables you to create and view the steps of your test in a modular, table format. Each step is a row in the Keyword View that is comprised of individual, modifiable parts. You create and modify steps by selecting items and operations in the Keyword View and entering information as required. Each step is automatically documented as youcomplete it, enabling you to view a description of your test in understandable sentences.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 82: What are the Conditional and Loop Statements used in the Keyword View in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Using conditional statements, you can incorporate decision making into the tests. Using loop statements, you can run a group of steps repeatedly, either while or until a condition is true. You can also use loop statements to repeat a group of steps a specific number of times. A few conditional &amp;amp; Loop statements are given below:&lt;br /&gt;1) If...Then statement&lt;br /&gt;2) ElseIf...Then statement&lt;br /&gt;3) Else statement&lt;br /&gt;4) While...Wend statement&lt;br /&gt;5) For...Next statement&lt;br /&gt;6) Do...While statement&lt;br /&gt;7) Do...Until statement&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 83: What is the use of a Comment in the Comment cell of a step in QTP?&lt;br /&gt;=================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A Comment is free text entry which can help improve readability and make a test easier to update. For example,you may want to add a comment step at the beginning of each action to specify what that section includes.&lt;br /&gt;&lt;br /&gt;QTP does not process comments when it runs a test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================================&lt;br /&gt;Q. 84: What are Nesting Actions &amp;amp; what is the use of them?============================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Sometimes you may want to call an action from within an action. This is called nesting. By nesting actions, you can:&lt;br /&gt;&lt;br /&gt;1) Maintain the modularity of your test.&lt;br /&gt;2) Run one or more actions based on the results of a conditional statement.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=============================================&lt;br /&gt;Q. 85: Splitting Actions option is not available under what circumstances in QTP?=============================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You cannot split an action, and the option is disabled when:&lt;br /&gt;1) An external action is selected&lt;br /&gt;2) The first step of an action is selected&lt;br /&gt;3) You are working with a read-only test&lt;br /&gt;4) Recording a test&lt;br /&gt;5) Running a test&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=========================================&lt;br /&gt;Q. 86: What is the use of Action Parameters in QTP?=========================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Action parameters enable you to transfer input values from your test to a top-level action, from a parent action to a nested action, or from an action to a sibling action that occurs later in the test.&lt;br /&gt;&lt;br /&gt;You can use action parameters in any step in your action including function calls.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;===================================================&lt;br /&gt;Q. 87: What are the various types of Exit Action Statements in QTP?===================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are four types of exit action statements you can use:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) ExitAction:&lt;/span&gt;&lt;/strong&gt; Exits the current action, regardless of its iteration attributes.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) ExitActionIteration:&lt;/span&gt;&lt;/strong&gt; Exits the current iteration of the action.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3) ExitRun:&lt;/span&gt;&lt;/strong&gt; Exits the test, regardless of its iteration attributes.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;4) ExitGlobalIteration:&lt;/span&gt;&lt;/strong&gt; Exits the current global iteration.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================&lt;br /&gt;Q. 88: What is the use of check points in QTP?=====================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A checkpoint is a verification point that compares a current value for a specified property with the expected value for that property. This enables you to identify whether your application is functioning correctly.&lt;br /&gt;&lt;br /&gt;When you run the test, QTP compares the expected results of the checkpoint to the current results. If the results do not match, the checkpoint fails. You can view the results of the checkpoint in the Test Results window.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 89: What are the situations best suited for using an existing Check Point?==================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1) If each page of your application contains your organization’s logo, you can reuse a bitmap checkpoint to verify each occurrence in the application.&lt;br /&gt;&lt;br /&gt;2) If your application contains multiple edit boxes, you can reuse a checkpoint to confirm the enabled status of these edit boxes throughout your test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 90: What is the reason that "Add Existing Checkpoint" dialog box is not visible?===================================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;"Add Existing Checkpoint" dialog box option is available only if at least one of the object repositories associated with the current action (including the local object repository) contains at least one checkpoint.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8420939038239698017?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8420939038239698017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8420939038239698017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8420939038239698017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8420939038239698017'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/qtp-interview-question-bank-part-9.html' title='QTP - Interview Question Bank : Part 9'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-651484401915760212</id><published>2008-10-08T10:05:00.005+05:30</published><updated>2008-11-19T10:02:09.290+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 8</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 71: What are the various types of objects identified by the comparison tool in QTP?&lt;br /&gt;================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) Identical:&lt;/span&gt;&lt;/strong&gt; Objects that appear in both object repository files. There is no difference in their name or in their properties.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Matching description, different name:&lt;/span&gt;&lt;/strong&gt; Objects that appear in both object repository files that have different names, but the same description properties and values.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3) Similar description:&lt;/span&gt;&lt;/strong&gt; Objects that appear in both object repository files that have similar, but not identical, description properties and values. One of the objects always has a subset of the properties set of the other object. This implies that it is likely to be a less detailed description of the same object. For example, an object named Button_1 in the second object repository has the same description properties and values as an object named Button_1 in the first object repository, but also has additional properties and values.&lt;br /&gt;&lt;br /&gt;Objects that do not have a description, such as Page or Browser objects, are compared by name only. If the same object is contained in both the object repositories but with different names, they will be shown in the object repositories as two separate objects.&lt;br /&gt;&lt;br /&gt;4) Unique to first file, or Unique to second file. Objects that appear in only one of the object repository files.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 72: What are the situations best suited to Recording in QTP?&lt;br /&gt;=================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Recording can be useful in the following situations:&lt;br /&gt;&lt;br /&gt;# Recording helps novice QuickTest users learn how QTP interprets the operations you perform on your application, and how it converts them to QTP objects and built-in operations.&lt;br /&gt;&lt;br /&gt;# Recording can be useful for more advanced QTP users when working with a new application or major new features of an existing application (for the same reasons described above). Recording is also helpful while developing functions that incorporate built-in QTP keywords.&lt;br /&gt;&lt;br /&gt;# Recording can be useful when you need to quickly create a test that tests the basic functionality of an application or feature, but does not require long-term maintenance.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 73: What are the advantages of Keyword Driven testing in QTP?&lt;br /&gt;===================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;1) Keyword-driven testing enables you to design your tests at a business level rather than at the object level.&lt;br /&gt;&lt;br /&gt;2) By incorporating technical operations, such as a synchronization statement that waits for client-server communications to finish, into higher level keywords, tests are easier to read and easier for less technical application testers to maintain when the application changes.&lt;br /&gt;&lt;br /&gt;3) Keyword-driven testing naturally leads to a more efficient separation between resource maintenance and test maintenance. This enables the automation experts to focus on maintaining objects and functions while application testers focus on maintaining the test structure and design.&lt;br /&gt;&lt;br /&gt;4) When you record tests, you may not notice that new objects are being added to the local object repository. This may result in many testers maintaining local object repositories with copies of the same objects. When using a keyword-driven methodology, you select the objects for your steps from the existing object repository. When you need a new object, you can add it to your local object repository temporarily, but you are also aware that you need to add it to the shared object repository for future use.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=========================================&lt;br /&gt;Q. 74: What are Absolute and Relative Paths in QTP?&lt;br /&gt;=========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You can save QuickTest resources, such as shared object repositories, function libraries, recovery scenarios or environments, using absolute or relative paths.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) An absolute path:&lt;/span&gt;&lt;/strong&gt; Describes the full path to a specific file starting from a fixed location such as the root directory, or the drive on which the file is located, and contains all the other sub-directories in the path. An absolute path always points to the specified file, regardless of the current directory.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) A relative path:&lt;/span&gt;&lt;/strong&gt; Describes the path to a specific file starting from a given directory, and is generally only a portion of the absolute path. A relative path therefore specifies the location of the file relative to the given location in the file system.&lt;br /&gt;&lt;br /&gt;Using relative paths means that the paths remain valid when files or folders containing files are moved or copied to other locations or computers, provided that they are moved within the same folder structure. For this reason, we recommend that you use relative paths when saving resources in QTP.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;br /&gt;Q. 75: What are the situations best suited to keyword-driven methodology in QTP?&lt;br /&gt;===============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The keyword-driven methodology is especially useful for organizations that have both technical and less technical users because it offers a clear division of automation tasks. This enables a few experts to maintain the resource framework while less technical users design and maintain automated test steps. Additionally, once the basic infrastructure is in place, both types of users can often do their tasks simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 76: What are the various categories of output values in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#333333;"&gt;we can create following categories of output values:&lt;br /&gt;&lt;br /&gt;1) Standard output values&lt;br /&gt;2) Text and text area output values&lt;br /&gt;3) Table output values&lt;br /&gt;4) Database output values&lt;br /&gt;5) XML output values&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;=================================================&lt;br /&gt;Q. 77: How do you analyze your application to determine your testing needs using QTP?.&lt;br /&gt;=================================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;1) Determine the development environments that QuickTest needs to support:Your application comprises of windows containing a hierarchy of objects that were created in one or more development environments. QTP provides support for these environments using add-ins. You load QTP add-ins when QTP opens by using the Add-in Manager dialog box. You can check which add-ins are loaded by choosing Help &gt; About QuickTest Professional.&lt;br /&gt;&lt;br /&gt;2) Prepare the information that QTP needs to identify objects in your application and to open your application at the beginning of a run session. You need to know the URL, the executable file name and path, or other command-line information. Later, you will enter this in Record and Run Settings dialog box.&lt;br /&gt;&lt;br /&gt;3) Navigate through your application from a customer’s perspective and perform the tasks that customers might perform. You create an action for each sub-process, or task, a customer might perform. Each process you perform in your application will be represented as a test in QTP. You can create your tests now.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 78: In what situations recording mechanism shall be useful in creating the tests in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1) You are new to QTP and want to learn how QTP interprets the operations you perform on your application and how it converts them to QTP objects and built-in operations.&lt;br /&gt;&lt;br /&gt;2) You need to quickly create a test that tests the basic functionality of an application or feature, and the test does not require long-term maintenance.&lt;br /&gt;&lt;br /&gt;3) You are working with a new application or with major new features of an existing application, and you want to learn how QTP interacts with the application.&lt;br /&gt;&lt;br /&gt;4) You are developing functions that incorporate built-in QTP keywords.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==========================================&lt;br /&gt;Q. 79: What are the various recording modes in QTP?==========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) Normal or the default recording mode:&lt;/span&gt;&lt;/strong&gt; This records the objects in your application and the operations performed on them. This mode takes full advantage of the QTP object model, recognizing the objects in your application regardless of their location on the screen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Analog Recording:&lt;/span&gt;&lt;/strong&gt; This enables you to record the exact mouse and keyboard operations you perform in relation to either the screen or the application window. In this recording mode, QTP records and tracks every movement of the mouse as you drag the mouse around a screen or window.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3) Low Level Recording:&lt;/span&gt;&lt;/strong&gt;This enables you to record on any object in your application, whether or not QTP recognizes the specific object or the specific operation. This mode records at the object level and records all run-time objects as Window or WinObject test objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 80: How can we switch to Low Level Recording mode while editing a test?===================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You can switch to Low Level Recording mode only while recording a test. The option is not available while editing a test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-651484401915760212?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/651484401915760212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=651484401915760212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/651484401915760212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/651484401915760212'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/qtp-interview-question-bank-part-8.html' title='QTP - Interview Question Bank : Part 8'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8095912095396506769</id><published>2008-10-07T23:51:00.004+05:30</published><updated>2008-10-08T00:30:50.781+05:30</updated><title type='text'>Usage of &amp;_ in QTP Script</title><content type='html'>We use &amp;amp;_ to separate multiple lines inside our script whom we want to execute as a single command by clubbing together. Lets see the below mentioned example to make the point more clearer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SOurYG8HuvI/AAAAAAAAALs/6nSD4G0BhX8/s1600-h/QTP.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SOurYG8HuvI/AAAAAAAAALs/6nSD4G0BhX8/s400/QTP.JPG" alt="" id="BLOGGER_PHOTO_ID_5254481820925803250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you must have observed above, the character “&amp;amp;” is used to concatenate the strings while the character “_” is used to concatenate multiple lines. So on combining these two characters ie “&amp;amp;_” we are instructing QTP to concatenate strings spanning across multiple lines.&lt;br /&gt;&lt;br /&gt;We could have wrote the “f.Write…………&lt;/html&gt;” in single line but it would have been very hard to read.&lt;br /&gt;&lt;br /&gt;A more simple example to illustrate the usage can be:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser(“QTP”).Page(“QTP”). WebEdit("TextField").Set “Expert”&amp;amp;_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"loves QTP" &amp;amp;_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"Any Doubts?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Keywords: QTP&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8095912095396506769?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8095912095396506769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8095912095396506769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8095912095396506769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8095912095396506769'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/10/usage-of-in-qtp-script.html' title='Usage of &amp;_ in QTP Script'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SOurYG8HuvI/AAAAAAAAALs/6nSD4G0BhX8/s72-c/QTP.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2453732930636849099</id><published>2008-09-30T10:04:00.010+05:30</published><updated>2008-10-01T09:41:49.142+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 7</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 61: How can we perform Merge Operations among various object repositories?======================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The Object Repository Merge Tool enables you to merge test objects from the local object repository of one or more actions to a shared object repository using the Update from Local Repository option in the Object Repository Manager.&lt;br /&gt;&lt;br /&gt;For example, you may have learned test objects locally in a specific action in your test and want to add them to the shared object repository so they are available to all actions in different tests that use that object repository. You can also use the Object Repository Merge Tool to merge two shared object repositories into a single shared object repository.&lt;br /&gt;&lt;br /&gt;You open the Object Repository Merge Tool by choosing Tools &gt; Object Repository Merge Tool in the Object Repository Manager.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 62: How can we perform Import &amp;amp; Export Operations among various object repositories?&lt;br /&gt;==================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You can import and export object repositories from and to XML files. XML provides a structured, accessible format that enables you to make changes to object repositories using the XML editor of your choice and then import them back into QTP.&lt;br /&gt;&lt;br /&gt;You can import and export files either from and to the file system or a Quality Center project.&lt;br /&gt;&lt;br /&gt;You can import an XML file as an object repository. The XML file can either be an object repository that you exported to XML format using the Object Repository Manager, or an XML file created using a tool such as QTP Siebel Test Express or a custom built utility. You must adhere to the XML structure and format.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;br /&gt;Q. 63: How can we Integrate QuickTest with Quality Center?===============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You integrate QTP with Quality Center using the Quality Center Connectivity Add-in. This add-in is installed on your QTP computer automatically when you connect QTP to Quality Center using the Quality Center Connection dialog box. You can also install it manually from the Quality Center Add-ins page (available from the Quality Center main screen) by choosing Quality Center Connectivity.&lt;br /&gt;&lt;br /&gt;integrating QTP with Quality Center enables you to store and access QTP tests and function libraries in a Quality Center project, when QTP is connected to Quality Center.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=======================================&lt;br /&gt;Q. 64: What is the use of Template Tests in QTP?=======================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Template tests serve as the basis for all QTP tests created in Quality Center. A template test is a QTP test that contains default test settings. For example, a template test might specify the QTP add-ins, associated function libraries, and recovery scenarios that are associated with a test. You can modify these test settings in the Test Settings dialog box (File &gt; Settings) in QuickTest.&lt;br /&gt;&lt;br /&gt;In addition to default test settings, a template test can also contain any comments or steps you want to include with all new QTP tests created in Quality Center. For example, you may want to add a comment notifying users which add-ins are associated with the template test, or you may want to add a step that opens a specific Web page or application at the beginning of every test. Any steps or comments you add to a template test are included in all new tests created in Quality Center that are based on that template test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================================&lt;br /&gt;Q. 65: How can we create a QTP Test in Quality Center?============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;In Quality Center, you create QuickTest tests in the Test Plan module. When you create a QuickTest test, you apply a template test to it. You can choose either the default template test stored on your QuickTest client, or a template test that is saved in your Quality Center project.&lt;br /&gt;If you do not have any template tests saved in your Quality Center project, or if you choose &lt;none&gt;in the Template box, Quality Center uses the settings defined in the template test that was installed with the QTP Add-in for Quality Center on your Quality Center client.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;======================================&lt;br /&gt;Q. 66: What is Business Process Testing model?======================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The Business Process Testing model is role-based, allowing non-technical Experts working in Quality Center to collaborate effectively with Automation Engineers working in QTP.&lt;br /&gt;&lt;br /&gt;Non-technical Subject Matter Experts define and document business processes, business components, and business process tests, while Automation Engineers define the required resources and settings, such as shared object repositories, function libraries, and recovery scenarios. Together, they can build, data-drive, document, and run business process tests, without requiring programming knowledge on the part of the Non-technical Subject Matter Expert.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 67: What is the role of Subject Matter Expert in the Business Process Testing model?&lt;br /&gt;==================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The Subject Matter Expert has specific knowledge of the application logic, a high-level understanding of the entire system, and a detailed understanding of the individual elements and tasks that are fundamental to the application being tested.&lt;br /&gt;&lt;br /&gt;This enables the Subject Matter Expert to determine the operating scenarios or business processes that must be tested and identify the key business activities that are common to multiple business processes.&lt;br /&gt;&lt;br /&gt;During the design phase, the Subject Matter Expert works with the Automation Engineer to identify the resources and settings needed to automate the components, enabling the Automation Engineer to prepare them.&lt;br /&gt;&lt;br /&gt;The Subject Matter Expert configures the values used for business process tests, runs them in test sets, and reviews the results. The Subject Matter Expert is also responsible for maintaining the testing steps for each of the individual business components.&lt;br /&gt;&lt;br /&gt;While defining components, Subject Matter Experts continue collaborating with the Automation Engineer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 68: What is the role of Automation Engineer in the Business Process Testing model?&lt;br /&gt;==================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The Automation Engineer is an expert in using an automated testing tool, such as QTP. The Automation Engineer works with the Subject Matter Expert to identify the resources that are needed for the various business process tests.&lt;br /&gt;&lt;br /&gt;The Automation Engineer then prepares the resources and settings required for testing the features associated with each specific component, and stores them in an application area within the same Quality Center project used by the Subject Matter Experts who create and run the business process tests for the specific application.&lt;br /&gt;&lt;br /&gt;The Automation Engineer uses QTP features and functionality to create these resources from within QTP.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 69: What are the Differences Between Components and Tests?===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;# A component is a single entity. It cannot contain multiple actions or have calls to other actions or to other components.&lt;br /&gt;&lt;br /&gt;# When working with components, all external files are stored in the Quality Center project to which you are currently connected.&lt;br /&gt;&lt;br /&gt;# The name of the component node in the Keyword View is the same as the saved component. You cannot rename the node.&lt;br /&gt;&lt;br /&gt;# Business components are created in the Keyword View, not the Expert View.&lt;br /&gt;&lt;br /&gt;# You add resources via the component’s application area, and not directly to the component.&lt;br /&gt;&lt;br /&gt;# Components use custom keywords created in function libraries to perform operations, such as verifying property values and opening the application you are testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;======================================================&lt;br /&gt;Q. 70: How can we compare objects among two object repositories?======================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;In QTP, we can compare existing assets from two object repositories using the Object Repository Comparison Tool.&lt;br /&gt;&lt;br /&gt;The tool is accessible from the Object Repository Manager, and enables you to compare different object repository resources, or different versions of the same object repository resource, and identify similarities, variations, or changes.&lt;br /&gt;&lt;br /&gt;Differences between objects in the two object repository files, named the First and Second files, are identified according to default rules. During the comparison process, the object repository files remain unchanged.&lt;br /&gt;&lt;br /&gt;After the compare process, the Comparison Tool provides a graphic presentation of the objects in the object repositories, which are shown as nodes in a hierarchy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2453732930636849099?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2453732930636849099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2453732930636849099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2453732930636849099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2453732930636849099'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/qtp-interview-question-bank-part-7.html' title='QTP - Interview Question Bank : Part 7'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7760280426150707045</id><published>2008-09-30T09:44:00.009+05:30</published><updated>2008-10-01T09:39:01.931+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 6</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 51: What is the use of mapping Repository Parameter Values in QTP&lt;br /&gt;====================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You can map repository parameters that are used in shared object repositories that are associated with your action. Mapping a repository parameter to a value or parameter specifies the property values used toidentify the test object during a run session. You can specify that the property value is taken from a constant value, or parameterize it using a Data Table, random number, environment, or test parameter.&lt;br /&gt;&lt;br /&gt;You can map each repository parameter as required in each test that has an associated object repository containing repository parameters.&lt;br /&gt;&lt;br /&gt;If you do not map a repository parameter, the default value that was defined with the parameter, if any, is used during the action run. If the parameter is unmapped, meaning no default value was specified for it, the test run may fail if a test object cannot be identified because it has an unmapped parameter value.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===========================================&lt;br /&gt;Q. 52: What are the various Object Properties in QTP?===========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP has a predefined set of properties that it learns for each test object. If these mandatory property values are not sufficient to uniquely identify a learned object, QTP can add some assistive properties and/or an ordinal identifier to create a unique description.&lt;br /&gt;&lt;br /&gt;Mandatory properties are properties that QTP always learns for a particular test object class.&lt;br /&gt;&lt;br /&gt;Assistive properties are properties that QTP learns only if the mandatory properties that QTP learns for a particular object in your application are not sufficient to create a unique description. If several assistive properties are defined for an object class, then QTP learns one assistive property at a time, and stops as soon as it creates a unique description for the object. If QTP does learn assistive properties, those properties are added to the test object description.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 53: What are the various types of ordinal identifiers used by QTP to identify an object?&lt;br /&gt;=====================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;1) Index Property:&lt;/span&gt;&lt;/strong&gt; Indicates the order in which the object appears in the application code relative to other objects with an otherwise identical description.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;2) Location Property:&lt;/span&gt;&lt;/strong&gt; Indicates the order in which the object appears within the parent window, frame, or dialog box relative to other objects with an otherwise identical description.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;3) CreationTime Property:&lt;/span&gt;&lt;/strong&gt; (For Browser object only.) Indicates the order in which the browser was opened relative to other open browsers with an otherwise identical description.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 54: What is Index Property for identifying the objects in QTP?===================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;While learning an object, QTP can assign a value to the test object’s Index property to uniquely identify the object. The value is based on the order in which the object appears within the source code. The first occurrence is 0.&lt;br /&gt;&lt;br /&gt;Index property values are object-specific. Therefore, if you use Index:=3 to describe a WebEdit test object, QTP searches for the fourth WebEdit object in the page.&lt;br /&gt;&lt;br /&gt;However, if you use Index:=3 to describe a WebElement object, QTPt searches for the fourth Web object on the page—regardless of the type—because the WebElement object applies to all Web objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;=====================================================&lt;br /&gt;Q. 55: What is Location Property for identifying the objects in QTP?=====================================================&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;While learning an object, QTP can assign a value to the test object’s Location property to uniquely identify the object. 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. The first occurrence of the object is 0. Values are assigned in columns from top to bottom, and left to right.&lt;br /&gt;&lt;br /&gt;Location property values are object-specific. Therefore, if you use Location:=3 to describe a WinButton test object, QTP searches from top to bottom, and left to right for the fourth WinButton object in the page. However, if you use Location:=3 to describe a WinObject object, QuickTest searches from top to bottom, and left to right for the fourth standard object on the page— regardless of the type—because the WinObject object applies to all standard objects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 56: What is Creation Time Property for identifying the objects in QTP?&lt;br /&gt;=====================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;While learning a browser object, if QTP is unable to uniquely identify the object according to its test object description, it assigns a value to the CreationTime test object property. This value indicates the order in which the browser was opened relative to other open browsers with an otherwise identical description. The first browser that opens receives the value CreationTime = 0.&lt;br /&gt;&lt;br /&gt;During the run session, if QTP is unable to identify a browser object based solely on its test object description, it examines the order in which the browsers were opened, and then uses the CreationTime property to identify the correct one.&lt;br /&gt;&lt;br /&gt;For example, if you record a test on three otherwise identical browsers that are opened at 9:01 pm, 9:03 pm, and 9:05 pm, QuickTest assigns the CreationTime values, as follows: CreationTime = 0 to the 9:01 am browser, CreationTime = 1 to the 9:03 am browser, and CreationTime = 2 to the 9:06 am browser.&lt;br /&gt;&lt;br /&gt;At 10:30 pm, when you run your test, suppose the browsers are opened at 10:31 pm, 10:33 pm, and 10:34 pm. QTP identifies the browsers, as follows: the 10:31 pm browser is identified with the browser test object with CreationTime = 0, 10:33 pm browser is identified with the test object with CreationTime = 1, 10:34 pm browser is identified with the test object with CreationTime = 2.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===========================================&lt;br /&gt;Q. 57: What is the Smart Identification Process of QTP&lt;br /&gt;===========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;If QTP activates the Smart Identification mechanism during a run session, it follows the following process to identify the object:&lt;br /&gt;&lt;br /&gt;1) QTP “forgets” the learned test object description and creates a new object candidate list containing the objects (within the object’s parent object) that match all of the properties defined in the Base Filter Properties list.&lt;br /&gt;&lt;br /&gt;2) QTP filters out any object in the object candidate list that does not match the first property listed in the Optional Filter Properties list. The remaining objects become the new object candidate list.&lt;br /&gt;&lt;br /&gt;3) QTP evaluates the new object candidate list:&lt;br /&gt;# If the new object candidate list still has more than one object, QTP uses the new (smaller) object candidate list to repeat step 2 for the next optional filter property in the list.&lt;br /&gt;&lt;br /&gt;# If the new object candidate list is empty, QTP ignores this optional filter property, returns to the previous object candidate list, and repeats step 2 for the next optional filter property in the list.&lt;br /&gt;&lt;br /&gt;# If the object candidate list contains exactly one object, then QTP concludes that it has identified the object and performs the statement containing the object.&lt;br /&gt;&lt;br /&gt;4) QTP continues the process described in steps 2 and 3 until it either identifies one object, or runs out of optional filter properties to use. If, after completing the Smart Identification elimination process, QTP still cannot identify the object, then QTP uses the learned description plus the ordinal identifier to identify the object. If the combined learned description and ordinal identifier are not sufficientto identify the object, then QuickTest stops the run session and displays aRun Error message.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;======================================================&lt;br /&gt;Q. 58: What happens in case Smart Identification fails to identify the object in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;======================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;If the Smart Identification mechanism cannot successfully identify the object, QTP uses the learned description plus the ordinal identifier to identify the object.&lt;br /&gt;If the object is still not identified, the test fails and a normal failed step is displayed in the results.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=============================================&lt;br /&gt;Q. 59: What is the use of Repository Parameters in QTP?=============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Repository parameters enable you to specify that certain property values should be parameterized, but leave the actual parameterization to be defined in each test that is associated with the object repository that contains the parameterized test object property values.&lt;br /&gt;&lt;br /&gt;Repository parameters are useful when you want to create and run tests on an object that changes dynamically. An object may change dynamically if it is frequently updated in the application, or if its property values are set using dynamic content, for example, from a database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 60: How can we locate test objects in an object repository?=================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;You can search for a specific test object in your object repository in many ways.&lt;br /&gt;You can search for a test object according to its type. For example, you can search for a specific edit box, or you can point to an object in your application to automatically highlight that same object in your repository.&lt;br /&gt;&lt;br /&gt;You can replace specific property values with other property values. For example, you can replace a property value userName with the value user name.&lt;br /&gt;&lt;br /&gt;You can also select an object in your object repository and highlight it in your application to check which object it is.&lt;br /&gt;&lt;br /&gt;After making sure that your shared object repository is the active window, you locate an object in a shared object repository in the same way as you locate it in a local object repository. If you want to replace property values, you must also make sure that the object repository is editable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7760280426150707045?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7760280426150707045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7760280426150707045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7760280426150707045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7760280426150707045'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/interview-question-bank.html' title='QTP - Interview Question Bank : Part 6'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2971872661363310701</id><published>2008-09-27T09:39:00.006+05:30</published><updated>2008-10-01T09:30:51.383+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 5</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 41: What are the various utilities and tools available in QTP?&lt;br /&gt;==================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Tools Menu contains the following utilities and tools which are helpful in the testing process:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Action Conversion Tool:&lt;/span&gt;&lt;/strong&gt; Enables you to convert test actions that were created using QTP to scripted components for use in business process testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Additional Installation Requirements:&lt;/span&gt;&lt;/strong&gt; Opens the Additional Installation Requirements dialog box, which displays any prerequisite software that you must install or configure to work with QTP.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Business Component Upgrade Tool:&lt;/span&gt;&lt;/strong&gt; Opens the Business Component Upgrade Tool. If you are connected to a Quality Center project, this tool enables you to upgrade all of the business components in a Quality Center project, from an earlier component version to the format required by the current version.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# HP Micro Player:&lt;/span&gt;&lt;/strong&gt; Opens the HP Micro Player, which enables you to view captured movies of a run session without opening QuickTest.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# License Validation Utility:&lt;/span&gt;&lt;/strong&gt; Opens the License Validation utility, which enables you to retrieve and validate license information.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Password Encoder:&lt;/span&gt;&lt;/strong&gt; Opens the Password Encoder dialog box, which enables you to encode passwords. You can use the resulting strings as method arguments or Data Table parameter values (tests only).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# QTP Script Editor:&lt;/span&gt;&lt;/strong&gt; Opens the QTP Script Editor, which enables you to open and modify the scripts of multiple tests and function libraries, simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Register New Browser Control:&lt;/span&gt;&lt;/strong&gt; Opens the Register Browser Control Utility, which enables you to register your browser control application so that QTP recognizes your Web object when recording or running tests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Remote Agent:&lt;/span&gt;&lt;/strong&gt; Activates the QuickTest Remote Agent, which enables you to configure how QuickTest behaves when a test is run by a remote application such as Quality Center.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Save and Restore Settings:&lt;/span&gt;&lt;/strong&gt; Opens the Save and Restore Settings dialog box, which enables you to save your existing configurations before uninstalling an old version, and then restore them after installing a new version.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Silent Test Runner:&lt;/span&gt;&lt;/strong&gt; Opens the Silent Test Runner dialog box, which enables you to run a QTP test the way it is run from LoadRunner and Business Availability Center.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Test Batch Runner:&lt;/span&gt;&lt;/strong&gt; Opens the Test Batch Runner dialog box, which enables you to set up QTP to run several tests in succession.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Test Results Deletion Tool.&lt;/span&gt;&lt;/strong&gt; Opens the Test Results Deletion Tool dialog box, which enables you to delete unwanted or obsolete results from your system according to specific criteria that you define.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================================&lt;br /&gt;Q. 42: What is the concept of Test Object Model in QTP?============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP tests your dynamically changing application by learning and identifying test objects and their expected properties and values. To do this, QTP analyzes each object in your application in much the same way that a person would look at a photograph and remember its details.&lt;br /&gt;&lt;br /&gt;The test object model is a large set of object types or classes that QTP uses to represent the objects in your application. Each test object class has a list of properties that can uniquely identify objects of that class and a set of relevant methods that QuickTest can learn about it.&lt;br /&gt;A test object is an object that QTP creates in the test to represent the actual object in your application. QTP stores information on the object that will help it identify and check the object during the run session.&lt;br /&gt;&lt;br /&gt;A run-time object is the actual object in your application on which methods are performed during the run session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================================&lt;br /&gt;Q.43: Please explain some real world scenario explaining Object Learning process of QTP?&lt;br /&gt;====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP learns objects just as you would. For example, suppose as part of an experiment, Alex is told that he will be shown a photograph of a picnic scene for a few seconds during which someone will point out one item in the picture. Alex is told that he will be expected to identify that item again in identical or similar pictures one week from today.&lt;br /&gt;&lt;br /&gt;Before he is shown the photograph, Alex begins preparing himself for the test by thinking about which characteristics he wants to learn about the item that the tester indicates. Obviously, he will automatically note whether it is a person, inanimate object, animal, or plant. Then, if it is a person, he will try to commit to memory the gender, skin color, and age. If it is an animal, he will try to remember the type of animal, its color, and so forth.&lt;br /&gt;&lt;br /&gt;The tester shows the scene to Alex and points out one of three children sitting on a picnic blanket. Alex notes that it is a Caucasian girl about 8 years old. In looking at the rest of the picture, however, he realizes that one of the other children in the picture could also fit that description. In addition to learning his planned list of characteristics, he also notes that the girl he is supposed to identify has long, brown hair.&lt;br /&gt;&lt;br /&gt;Now that only one person in the picture fits the characteristics he learned, he is fairly sure that he will be able to identify the girl again, even if the scene the tester shows him next week is slightly different.&lt;br /&gt;&lt;br /&gt;Since he still has a few moments left to look at the picture, he attempts to notice other, more subtle differences between the child he is supposed to remember and the others in the picture—just in case.&lt;br /&gt;&lt;br /&gt;If the two similar children in the picture appeared to be identical twins, Alex might also take note of some less permanent feature of the child, such as the child’s position on the picnic blanket. That would enable him to identify the child if he were shown another picture in which the children were sitting on the blanket in the same order.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=============================================&lt;br /&gt;Q. 44: What is the method used by QTP to learn objects?=============================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;QTP “looks” at the object being learned and stores it as a test object, determining in which test object class it fits. In the same way, Alex immediately checked whether the item was a person, animal, plant, or inanimate object. QTP might classify the test object as a standard Windows dialog box (Dialog), a Web button (WebButton), or a Visual Basic scroll bar object (VbScrollBar), for example.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Then, for each test object class, QTP has a list of mandatory properties that it always learns; similar to the list of characteristics that Alex planned to learn before seeing the picture. When QTP learns an object, it always learns these default property values, and then “looks” at the rest of the objects on the page, dialog box, or other parent object to check whether this description is enough to uniquely identify the object. If it is not, QTP adds assistive properties, one by one, to the description, until it has compiled a unique description; similar to when Alex added the hair length and color characteristics to his list. If no assistive properties are available, or if those available are not sufficient to create a unique description, QTP adds a special ordinal identifier, such as the object’s location on the page or in the source code, to create a unique description.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================&lt;br /&gt;Q. 45: What is Test Object Methodin QTP?&lt;br /&gt;=================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;It is a method that QTP recognizes as applicable to a particular test object. For example, the Click method is applicable to a WebButton test object. As you add steps to your test, you specify which method to perform on each test object. If you record steps, QTP records the relevant method as it is performed on an object.&lt;br /&gt;&lt;br /&gt;During a run session, QTP performs the specified test object method on the run-time object. Run-time object methods are the methods of the object in your application as defined by the object creator. You can access and perform run-time object methods using the Object property.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=======================================&lt;br /&gt;Q. 46: What are the Test object propertiesin QTP?=======================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Test object properties are the properties whose values are captured from the objects in your application when QTP learns the object. QTP uses the values of these properties to identify run-time objects in your application during a run session.&lt;br /&gt;&lt;br /&gt;Property values of objects in your application may change dynamically each time your application opens, or based on certain conditions. You may need to modify the test object property values to match the run-time object property values. You can modify test object properties manually while designing your test, or use SetTOProperty statements during a run session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 47: How to decide on whether to save the objects in Local or Shared Object Repositories?&lt;br /&gt;==================================================&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;Local object repository is easiest to use when you are creating simple tests, especially under the following conditions:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;# You have only one, or very few, tests that correspond to a given application, interface, or set of objects.&lt;br /&gt;# You do not expect to frequently modify object properties.&lt;br /&gt;# You generally create single-action tests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;Shared object repository is the preferred option when:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;# You are creating tests using keyword-driven methodologies (not by recording).&lt;br /&gt;# You have several tests that test elements of the same application, interface, or set of objects.&lt;br /&gt;# You expect the object properties in your application to change from time to time and/or you regularly need to update or modify object properties.&lt;br /&gt;# You often work with multi-action tests and regularly use the Insert Copy of Action and Insert Call to Action options.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;================================================&lt;br /&gt;Q. 48: What are the possibilities of Exporting the data among various Object Repositories?&lt;br /&gt;================================================&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;When&lt;/span&gt; QTP learns a test object, it adds it to the local object repository &amp;amp; not to the shared object repository — unless the same test object already exists in an associated shared object repository. (In this case, QTP uses the existing information in the shared object repository.)&lt;br /&gt;&lt;br /&gt;You can export objects from the local object repository to a shared object repository. You can also export the local object repository and replace it with a shared object repository. This enables you to make the local objects accessible to other actions.&lt;br /&gt;&lt;br /&gt;You can also merge objects from the local object repository directly to a shared object repository that is associated with the same action. This can help reduce maintenance since you can maintain the objects in a single shared location, instead of multiple locations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 49: What is the effect of restoring Default Properties for a Test Object in QTP?===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;When you restore the default properties, it restores the mandatory property set defined for the selected object class in the Object Identification dialog box.&lt;br /&gt;&lt;br /&gt;Any changes that you have made to the description property set for the test object will be overwritten. However, if property values were defined for any of the mandatory properties they are not modified.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;========================================&lt;br /&gt;Q. 50: What is the use of Ordinal Identifiers in QTP&lt;br /&gt;========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;An ordinal identifier assigns a numerical value to a test object that indicates its order or location relative to other objects with an otherwise identical description (objects that have the same values for all properties).&lt;br /&gt;&lt;br /&gt;This ordered value provides a backup mechanism that enables QTP to create a unique description to recognize an object when the defined properties are not sufficient to do so. You can specify the ordinal identifier for test objects in the local object repository using the Object Repository window or Object Properties dialog box, and for test objects in the shared object repository using the Object Repository Manager.&lt;br /&gt;&lt;br /&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2971872661363310701?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2971872661363310701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2971872661363310701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2971872661363310701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2971872661363310701'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/qtp-interview-question-bank-part-5.html' title='QTP - Interview Question Bank : Part 5'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2164536977624608611</id><published>2008-09-27T09:25:00.008+05:30</published><updated>2008-10-01T09:25:52.015+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 4</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 31: What are the Environment Variables?&lt;br /&gt;===================================&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Environment variables are global variables available to all Actions&lt;br /&gt;# They can be used to run a test case on different environment&lt;br /&gt;# To add a new Environment variable go to Test -&gt; Settings…-&gt;Environment (Tab)&lt;br /&gt;# Environment variables are of two type:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1. Built in environment variables:&lt;/span&gt;&lt;/strong&gt; Provide information about the system and the current test&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2. User-Defined environment variables:&lt;/span&gt;&lt;/strong&gt; are added in the Environment tab of Test Settings. These are Read-only during the test run&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================================&lt;br /&gt;Q. 32: How many types of Parameters are there in QTP?============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;There are two types of parameters:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1. Test parameters:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;# These can be set in Test-&gt;Settings…-&gt;Parameters (Tab)&lt;br /&gt;# Test parameters value can be provided when replaying the test&lt;br /&gt;# Test arguments can be accessed in the test using TestArgs("")&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2. Action parameters :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;# Used to pass parameters to Action&lt;br /&gt;# Output parameters can only be used when Action is being called for a single iteration&lt;br /&gt;# Ex - RunAction "Login", oneIteration, "TestUser", "TestPass", out&lt;br /&gt;# A parameter can be accessed using Parameter("ParamName")&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;================================&lt;br /&gt;Q. 33: What is Descriptive Programming?&lt;br /&gt;================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Descriptive Programming is an alternate way of writing test cases without having objects in object repository&lt;br /&gt;&lt;br /&gt;Descriptive programming can be done in two ways&lt;br /&gt;1. Using Object description&lt;br /&gt;2. Using String description&lt;br /&gt;&lt;br /&gt;In Descriptive programming objects are identified by describing all the identification properties&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 34: After creating the test, what is the purpose of runing them?===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1) To check your application: The test starts running from the first line in your test and stops at the end of the test. While running, QTP connects to your application and performs each operation in your test, including any checkpoints, such as checking any text strings, objects, tables, and so forth. If you parameterized your test with Data Table parameters, QTP repeats the test (or specific actions in your test) for each set of data values you defined.&lt;br /&gt;&lt;br /&gt;2) To debug your application: You can control your run session to help you identify and eliminate defects in your test. You can use the Step Into, Step Over, and Step Out commands to run your test step by step. You can begin your run session from a specific step in your test, or run the test until a specific step is reached. You can also set breakpoints to pause your test at predetermined points. You can view the value of variables in your test each time it stops at a breakpoint in the Debug Viewer.&lt;br /&gt;&lt;br /&gt;3) To update your application: You can run your test using Update Run Mode to update the property sets used for test object descriptions, the expected checkpoint values, the data available to retrieve in output values, and/or the Active Screen images and values.&lt;br /&gt;&lt;br /&gt;You can run your test using Maintenance Run Mode when you know that your application has changed, and you therefore expect that QTP will not be able to identify the objects in your test. When you run tests in Maintenance Run Mode, a wizard opens for steps that fail because an object could not be found in the application. The wizard then guides you through the steps of resolving the issue, and, after you resolve the issue, the run continues.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==========================================&lt;br /&gt;Q. 35: What are the main stages of Testing with QTP?==========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Testing with QuickTest involves the following main stages:&lt;br /&gt;1) Planning&lt;br /&gt;2) Creating Tests&lt;br /&gt;3) Running Tests&lt;br /&gt;4) Analysing Results&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===========================================&lt;br /&gt;Q. 36 : How can we do the Analysis of Results in QTP?===========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;After you run your test, you can view the results.&lt;br /&gt;&lt;br /&gt;# View the results in the Test Results window: After you run your test, you can view the results of the run in the Test Results window. You can view a summary of your results as well as a detailed report. If you captured still images or movies of your application during therun, you can view these from the Test Results window.&lt;br /&gt;&lt;br /&gt;# Report defects detected during a run session: If you have access to Quality Center, the HP centralized quality solution, you can report the defects you discover to the project database. You can instruct QTP to automatically report each failed step in your test, oryou can report them manually from the Test Results window.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;================================&lt;br /&gt;Q. 37: What is Business Process Testing?&lt;br /&gt;================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;# Business Process Testing is a role-based testing model that enables Subject Matter Experts—who understand the various parts of the application being tested—to create business process tests in Quality Center. Automation Engineers—who are experts in QTP and automated testing—use QTP to define all of the resources and settings required to create business process tests.&lt;br /&gt;&lt;br /&gt;# Business Process Testing uses a keyword-driven methodology for testing, based on the creation and implementation of business components and business process tests. A business component is an easily-maintained, reusable unit comprising one or more steps that perform a specific task within an application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================================&lt;br /&gt;Q. 38: What are Permissions Required to Run QuickTest Professional?============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;You must have the following file system permissions:&lt;br /&gt;&lt;br /&gt;1) Full read and write permissions for all the files and folders under the folder in which QTP is installed&lt;br /&gt;&lt;br /&gt;2) Full read and write permissions to the Temp folder&lt;br /&gt;&lt;br /&gt;3) Read permissions to the Windows folder and to the System folder&lt;br /&gt;&lt;br /&gt;You must have the following registry key permissions:&lt;br /&gt;1) Full read and write permissions to all the keys under HKEY_CURRENT_USER\Software\Mercury Interactive&lt;br /&gt;&lt;br /&gt;2) Read and Query Value permissions to all the HKEY_LOCAL_MACHINE and HKEY_CLASSES_ROOT keys&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;======================================&lt;br /&gt;Q. 39: What is the role of Keyword view in QTP?======================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The Keyword View enables you to create and view the steps of your test in a keyword-driven, modular, table format. The Keyword View is comprised of a table-like view, in which each step is a separate row in the table, and each column represents different parts of the steps. You can modify the columns displayed to suit your requirements.&lt;br /&gt;&lt;br /&gt;You create and modify tests by selecting items and operations in the Keyword View and entering information as required. Each step is automatically documented as you complete it, enabling you to view a description of your test steps in understandable English.&lt;br /&gt;&lt;br /&gt;Each operation performed on your application during a recording session is recorded as a row in the Keyword View.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================&lt;br /&gt;Q. 40: What is the role of Expert view in QTP?====================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;In the Expert View, QTP displays each operation performed on your application in the form of a script, comprised of VBScript statements. The Expert View is a script editor with many script editing capabilities. For each object and method in an Expert View statement, a corresponding row exists in the Keyword View.&lt;br /&gt;&lt;br /&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2164536977624608611?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2164536977624608611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2164536977624608611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2164536977624608611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2164536977624608611'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/q.html' title='QTP - Interview Question Bank : Part 4'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-5380898707781536957</id><published>2008-09-27T09:13:00.004+05:30</published><updated>2008-10-01T09:14:57.124+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 3</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 21: Where can we use a Function or an Action? ========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It all depends on the scenario.&lt;br /&gt;&lt;br /&gt;If you want to use the OR feature then you have to go for Action only. If the functionality is not about any automation script i.e. a function like getting a string between to specific characters, now this is something not specific to QTP and can be done on pure VB Script, so this should be done in a function and not an action. Code specific to QTP can also be put into an function using DP. Decision of using function/action depends on what any one would be comfortable using in a given situation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 22: What is the difference between an Action and a Function? ===================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Action is a activity specific to QTP while functions are a generic thing which is a feature of VB Scripting. Action can have a object repository associated with it while a function can't. A function is just lines of code with some / none parameters and a single return value while an action can have more than one output parameters.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;================================================&lt;br /&gt;Q. 23: What are the various events available in the Recovery Scenario Manager? ================================================&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;1) Application Crash:&lt;/span&gt;&lt;/strong&gt; This event is useful in handling crashed applications at runtime.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;2) Pop Up Window:&lt;/span&gt;&lt;/strong&gt; This event is useful in managing various unwanted application windows, which get built-up at runtime.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;3) Test Run Error:&lt;/span&gt;&lt;/strong&gt; This event is useful in handling VBScript statement errors at runtime.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;4) Object State:&lt;/span&gt;&lt;/strong&gt; This event is useful in handling object related errors at runtime.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=========================================&lt;br /&gt;Q. 24: What are the Elements of Recovery Scenario?=========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Steps to handle the exceptions are&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) Trigger Event:&lt;/span&gt;&lt;/strong&gt; Is an unexpected event like appearance of a Pop-up window, object state, test run error causing application crash or interruption in our running session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Recovery Steps:&lt;/span&gt;&lt;/strong&gt; Constitutes a series of steps required to be performed to enable QTP to proceed further with the process of test after some trigger event has interrupted the run session. Examples of a recovery operation can be 1) A keyboard or mouse Operation like a Click over the "OK" button in the Pop-up window 2) Close Application Process 3) Function Call 4) Restarting the OS etc.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;3) Post-Recovery Test Run:&lt;/span&gt;&lt;/strong&gt; Are a set of instructions designed to be provided to QTP on proceeding further with the test after some recovery operation has been carried out. Examples of Post Recovery actions can be repeating the complete test from the beginning or some steps may be skipped altogether &amp;amp; continuing with the remaining steps in the test.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 25: When to use a Recovery Scenario and When to use "on error resume next"?=====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Recovery scenarios are useful when it is difficult to predict at which step the errors can come or when we are confident that the error will not come in the QTP script, whereas it can be anywhere outside the QTP Script. For illustration; Pop-up message of "out of paper", as caused by the printer device driver. "On error resume next" is preferred when we sure that the error is expected one and wish to perform some other actions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=========================================&lt;br /&gt;Q. 26: What are the key features of QTP at a glance:&lt;br /&gt;=========================================&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;# Ease of use:&lt;/span&gt;&lt;/strong&gt; QTP allows even novice testers to become productive in minutes. You can create a test script by simply pressing a Record button and using an application to perform a typical business process. Each step in the business process is automated documented with a plain-English sentence and screen shot. Users can easily modify, remove, or rearrange test steps in the Keyword View.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Simple interface:&lt;/span&gt;&lt;/strong&gt; QTP is much simpler to understand. It presents a test case as a simple business workflow to the tester.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Simple Language:&lt;/span&gt;&lt;/strong&gt; QTP uses Microsoft's VBScript for its test procedures, and to manipulate the objects and controls of the application under test. VBScript is a real programming language where several existing functions &amp;amp; resources are easily available for implementation these days.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Use of zero-configuration Technology:&lt;/span&gt;&lt;/strong&gt; QTP uses next-generation "zero-configuration" Keyword Driven testing technology. This helps in faster test creation, easier maintenance, and provides more powerful data-driving capability.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Automatic insertion of checkpoints:&lt;/span&gt;&lt;/strong&gt; QTP enables thorough validation of applications through a full complement of checkpoints. QTP can automatically introduce checkpoints to verify application properties and functionality, for example to validate output or check link validity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Marvelous interface with Data-tables:&lt;/span&gt;&lt;/strong&gt; QTP allows entry of test data into the Data Table, an integrated spreadsheet with the full functionality of Excel, to manipulate data sets and create multiple test iterations, without programming, to expand test case coverage. Data can be typed in or imported from databases, spreadsheets, or text files. QTP has better and easier to use Data table integration compared to WinRunner.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Better object identification mechanism:&lt;/span&gt;&lt;/strong&gt; QTP Identifies objects with Unique Smart Object Recognition, even if objects change from build to build, thereby enabling reliable unattended script execution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Support of variety of environment:&lt;/span&gt;&lt;/strong&gt; QTP supports functional testing of all popular environments, like Windows, Web, .Net, Visual Basic, ActiveX, Java, SAP, Siebel, Oracle, PeopleSoft, terminal emulators, and Web services.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Easy adaptability of Microsoft Object Models:&lt;/span&gt;&lt;/strong&gt; QTP can easily create and implement Microsoft Object Model like: Outlook objects, ADO objects, FileSystem objects, supports DOM, WSH, etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;# Auto-documentation technology:&lt;/span&gt;&lt;/strong&gt; QTP renders test documentation and test creation to a single step with the help of its auto-documentation technology&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 27: What are various types of properties when using object identification in QTP?&lt;br /&gt;=================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP uses three types of properties when identifying a object&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1. Mandatory Properties&lt;/span&gt;&lt;/strong&gt; - Always learn these properties for the object&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;2. Assistive Properties&lt;/span&gt;&lt;/strong&gt; - Learn in case Mandatory properties are not enough to identify the object uniquely&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;&lt;br /&gt;3. Ordinal identifiers&lt;/span&gt;&lt;/strong&gt; - Learn in case both mandatory and assistive properties are not able to recognize the objects correctly&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 28: What are the various ways to insert a Action in a test in QTP?=====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;There are three ways to insert a Action in a test&lt;br /&gt;1. Insert Call to New…&lt;br /&gt;2. Insert Call to Copy…&lt;br /&gt;3. Insert Call to Existing…&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;========================================&lt;br /&gt;Q. 29: What is the use of Parameterization in QTP?========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Parameterization is helpful in following aspects.# Parameterization allows us to pick different values at run time.&lt;br /&gt;# Reduces Time and Effort.&lt;br /&gt;&lt;br /&gt;# Usage of data drivers allows us to use the same data for various input boxes.&lt;br /&gt;&lt;br /&gt;# Parameterization can also be done for checkpoints.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=============================&lt;br /&gt;Q. 30: What are Data Tables in QTP?&lt;br /&gt;=============================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Data Table is MS Excel like spreadsheet which can be used for parameterizing a test case&lt;br /&gt;DataTable are of two types:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1. Global Data Table&lt;/span&gt;&lt;/strong&gt; - Data table for Test flow&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2. Local data table&lt;/span&gt;&lt;/strong&gt; - Data table for every action&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-5380898707781536957?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/5380898707781536957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=5380898707781536957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5380898707781536957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5380898707781536957'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/qtp-interview-question-bank-part-3.html' title='QTP - Interview Question Bank : Part 3'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7084919081449173207</id><published>2008-09-27T09:02:00.005+05:30</published><updated>2008-10-01T09:06:51.395+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 2</title><content type='html'>&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q. 11: What is a Virtual Object in QTP?&lt;br /&gt;===============================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Since sometimes complex objects are not recognized &amp;amp; recorded properly by QTP. Hence an experienced user can define that object as a personal virtual object and build a virtual object repository. This way by the concept of Virtual Object, the user can add some sort of support for such complex objects.&lt;br /&gt;&lt;br /&gt;If it is possible to extract the desired information from the object, we can do successful record and playback against that object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================&lt;br /&gt;Q. 12: How results are generated in QTP?&lt;br /&gt;=================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;At the end of the test, QTP generates a result file for the test cases, which is in the form of a XML tree.&lt;br /&gt;&lt;br /&gt;This results file provides detail regarding 'Pass' or 'Fail' counts, error messages, and all supporting information which allows the user to diagnose the main cause of a failure.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===================================================&lt;br /&gt;Q. 13: How many types of main views of a script are available in QTP?===================================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;QTP provides two main views of a script. These are&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;1) Keyword View:&lt;/span&gt;&lt;/strong&gt; is the default test procedure interface of QTP &amp;amp; is most useful for the beginners. It displays the automation steps of a test procedure as a descriptive tree of Actions and functions. The tree contains columns listing the Action or function name, any parameters, and comments.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Expert View:&lt;/span&gt;&lt;/strong&gt; is most suitable for the advanced users, enabling them to customize the test, like writing user-defined functions. It is meant for displaying and editing of the source code of the test. Except for the root Global action, all other test actions can be edited here. Expert View acts as an IDE for the test. It includes most standard IDE features, such as breakpoints.&lt;br /&gt;&lt;br /&gt;Both Keyword View &amp;amp; the Expert View can be selected from tabs available at the bottom of the QTP window.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=======================&lt;br /&gt;Q. 14: What is a Checkpoint?&lt;br /&gt;=======================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;In QTP, Checkpoint is used to verify the application under test. It can introduce a checkpoint to verify as to whether a particular object, text or a bitmap is present in the automation run.&lt;br /&gt;During a test execution, a checkpoint verifies that the behavior or state of the actual application is consistent with the expected application or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===============================================&lt;br /&gt;Q. 15: How many types of Checkpoints are available in QTP&lt;br /&gt;===============================================&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;1) Standard Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking the properties of an object.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Table Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking the properties of a table.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;3) Image Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking the properties of an image.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;4) Bitmap Checkpoint&lt;/span&gt;&lt;/strong&gt; - for comparing an area of the application under test pixel-by-pixel with the screen as seen at record-time.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;5) Database Checkpoint&lt;/span&gt;&lt;/strong&gt; - for automating the back-end testing.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;6) Text Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking that a section of text is found between two other sections of text.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;7) Text Area Checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;8) Page Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking the properties of a web page.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;9) Accessibility Checkpoint&lt;/span&gt;&lt;/strong&gt; - for checking the accessibility of an application.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;10) XML Checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;========================================&lt;br /&gt;Q. 16: What is the use of Text output value in QTP? ========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Text Output values enable us to view the values which are taken by the application during the run time. If parameterized, the values change for every iteration. Hence by creating output values, we can capture the values which are taken by the application during the run time and output them to the data table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================================&lt;br /&gt;Q. 17: What's the difference between a Checkpoint and Output Value?=================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Checkpoint only checks for the specific attribute of an object in AUT while Output value can output those attributes value to a column in data table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================================&lt;br /&gt;Q. 18: How can we Disable Smart Identification During the Run Session?==================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Selection of the option "Disable Smart Identification during the run session", Instructs QTP not to use the Smart Identification mechanism during the run session.&lt;br /&gt;&lt;br /&gt;When we select this option, the Enable Smart Identification check boxes in the Object Properties and Object Repository dialog boxes get disabled, although the settings are saved. However when you clear this option, the Enable Smart Identification check boxes return to their previous on or off setting.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=====================================================&lt;br /&gt;Q. 19: What are the Properties used by Smart Identification Feature of QTP?=====================================================&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;1) Base filter properties:&lt;/span&gt;&lt;/strong&gt; Are the most fundamental properties of a particular test object class. Her we can not change their values without changing the essence of the original object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;2) Optional filter properties:&lt;/span&gt;&lt;/strong&gt; Are other properties, which help us in identifying the objects of a particular class since these are not likely to get changed frequently. These properties can be ignored in case these are not applicable any more.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================================&lt;br /&gt;Q. 20: How can we check if an environment variable exists or not? ====================================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;When we use Environment("Param1").value then QTP expects the environment variable to be already defined. But when we use Environment.value("Param1") then QTP will create a new internal environment variable if it does not exists already. So to be sure that variable exist in the environment try using Environment("Param1").value.&lt;br /&gt;&lt;br /&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7084919081449173207?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7084919081449173207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7084919081449173207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7084919081449173207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7084919081449173207'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/qtp-interview-question-bank-part-2.html' title='QTP - Interview Question Bank : Part 2'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-9033198718458002957</id><published>2008-09-27T08:46:00.006+05:30</published><updated>2008-10-01T09:03:40.270+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview Questions - QTP'/><title type='text'>QTP - Interview Question Bank : Part 1</title><content type='html'>&lt;p&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Q. 1: What is Automation Object Model in QTP?======================================&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Like we use QTP for automating the testing of our applications, we can use the automation object model of QTP to automate its own operations as well. With the help of objects, methods, and properties exposed by the automation object model of QTP along with standard programming elements like loops and conditional statements, we can write programs which can configure QTP options and run tests or components instead of performing these operations manually using the QTP interface. &lt;/p&gt;&lt;p&gt;Automation programs are especially useful for performing the same tasks several times or on multiple tests or components, or quickly configuring QTP according to the needs for a particular environment or application. &lt;/p&gt;&lt;p&gt;Most of the dialog boxes in QTP have a corresponding automation object. Most of the options in dialog boxes can be set retrieved using the corresponding object property, and most of the menu commands and other operations have corresponding automation methods.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;============================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Q. 2: What is a Recovery Scenario?&lt;br /&gt;============================&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Recovery scenario gives you an option to take some action for recovering from a fatal error in the test. Such problems are quite frequent especially when the tests are made to run unattended. In such a case the test process halts until the user perform some desired recovery operation. &lt;/p&gt;&lt;p&gt;Recovery scenarios are useful when it is difficult to predict at which step the errors can come or when we are confident that the error will not come in the QTP script, whereas it can be anywhere outside the QTP Script. For illustration; Pop-up message of "out of paper", as caused by the printer device driver. "On error resume next" is preferred when we sure that the error is expected one and wish to perform some other actions.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================&lt;br /&gt;Q. 3: What is Smart Identification in QTP?&lt;br /&gt;=================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP has a unique feature by the name Smart Object Identification or recognition which is used for identifying the objects smartly, whenever the normal identification fails due to the dynamic changes in the properties of the objects.&lt;br /&gt;&lt;br /&gt;Smart Identification is nothing but an algorithm used by the QTP when it is not able to recognize an object.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;=================================&lt;br /&gt;Q. 4: How QTP identifies various Objects?&lt;br /&gt;=================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;During recording QTP identifies various objects and stores them as test objects. For each test object QTP learns a set of default properties called mandatory properties. Simultaneously QTP looks at rest of the objects to check whether these properties are sufficient to uniquely identify the object or not. During the test run, QTP searches for the run time objects, which match with the test objects which, have been captured by it during recording.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==================================&lt;br /&gt;Q. 5: What are Object Repositories in QTP? ==================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;When planning and creation of tests is done, we firstly consider how we would like to store the objects in our tests. In QTP, the test objects can be stored in two types of object repositories&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;a) Shared object repository:&lt;/span&gt;&lt;/strong&gt; It stores test objects in a file that can be accessed by multiple tests (in read-only mode). If someone is new to QTP, he can prefer to use local object repositories. This way he can record and run the tests without creating, choosing, or modifying shared object repositories because all objects are automatically getting saved in a local object repository which can be accessed by its corresponding action.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;b) Local object repository:&lt;/span&gt;&lt;/strong&gt; It stores objects in a file that is associated with one specific action, so that only that action can access the stored objects. If someone is familiar with QTP testing, he can find that it is quite efficient to save the objects in a shared object repository. This way, he can use the same shared object repository for multiple actions - if the actions include the same objects. Test object information that applies to many actions is kept in one centralized location. When the objects in the application change, we can update them in one location for all the actions that use this shared object repository.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;==============================================&lt;br /&gt;Q. 6: How QTP recognizes objects in Object Repositories? ==============================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Object Repository displays a tree of all the objects in the current component or in the current action or in the entire test , depending on the object repository mode selected by the user. We can view or modify the test object description of any test object in the repository or to add new objects to the repository.&lt;br /&gt;&lt;br /&gt;QTP remembers the default property values and determines in which test object class it fits. If it is not found enough it automatically adds assistive properties, one by one to the description until it successfully compiles the unique description. If no assistive properties are available, then it adds a special Ordinal identifier such as object location on the page or in the source code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;========================================&lt;br /&gt;Q. 7: How many types of Actions are there in QTP? ========================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP uses following three kinds of actions:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;a) Non-reusable action&lt;/span&gt;&lt;/strong&gt; - can be called only in the test with which it is stored, and can be called only once.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;b) Reusable action&lt;/span&gt;&lt;/strong&gt; - can be called multiple times by the test with which it is stored (the local test) as well as by other tests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#990000;"&gt;c) External action&lt;/span&gt;&lt;/strong&gt; - is a reusable action which is stored with another test. External actions are read-only in the calling test, but we can choose to use a local, editable copy of the Data Table information for the external action.&lt;br /&gt;&lt;br /&gt;By default, all new actions are non-reusable. We can mark every action created by us in the test as reusable or non-reusable.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;===========================================&lt;br /&gt;Q. 8: Is there any built-in function for scripting in QTP? ===========================================&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;QTP uses an in-built functionality called "Step Generator" to create scripts while appropriate steps are entered into it. Step Generator utility enables us to add steps by selecting from a range of context-sensitive options and entering the required values.&lt;br /&gt;&lt;br /&gt;You can open the Step Generator from the Keyword View or Expert View while recording or editing your test. You can also open the Step Generator from the Active Screen while editing.&lt;br /&gt;Method to open the Step Generator from a function library is as under&lt;br /&gt;&lt;br /&gt;a) In the function library, click the location in which you want to insert the new step.&lt;br /&gt;&lt;br /&gt;b) Choose Insert &gt; Step Generator, or right-click and choose Step Generator. Alternatively, press F7.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;====================================&lt;br /&gt;Q. 9: What is a Run-Time Data Table in QTP? ====================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;During the run session, QTP creates a Runtime Data Table, which is live version of the Data Table associated with our test. During the run session, QTP displays the run-time data in the Data Table pane so that we can see the changes taking place in the Data Table.&lt;br /&gt;&lt;br /&gt;When the run session ends, the Runtime Data Table closes, and the Data Table pane again displays the stored design-time Data Table. Data entered in the run-time Data Table during the run session does not get saved along with the test. The final data from the run-time Data Table gets displayed in the Run-Time Data Table in the Test Results window.&lt;br /&gt;&lt;br /&gt;Runtime Data Table is an excel file, which gets stored in the folder of the test created, its name is Default.xls by default.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;====================================&lt;br /&gt;Q. 10: What is the Object Spy feature in QTP? ====================================&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Using the Object Spy pointing hand mechanism, you can view the supported properties and methods of any object in an open application. As you move the pointing hand over the objects in the application, their details are displayed in the Object Spy. These details may include the test object’s hierarchy tree, its properties and values, and the methods associated with the object. For methods, the syntax is also displayed.&lt;br /&gt;&lt;br /&gt;Keyword: QTP Interview Questions, FAQ QTP&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-9033198718458002957?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/9033198718458002957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=9033198718458002957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/9033198718458002957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/9033198718458002957'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/qtp-interview-question-bank-part-1.html' title='QTP - Interview Question Bank : Part 1'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-753247334877219272</id><published>2008-09-03T15:00:00.003+05:30</published><updated>2008-09-05T13:51:36.549+05:30</updated><title type='text'>Guidelines to select an Appropriate Automation Tool</title><content type='html'>If your organization is currently using manual means to test your software applications &amp;amp; is believing that it can derive tangible benefits by automating its software testing process, then simply jumping to a conclusion of buying some tool simply because it is popular among many, may not be wise. What should be done now is to take a judicious decision through a scientific process to find out as to which tool will best be suited to your needs. Since this is an capital intensive move aimed at taking your company to the world of Automated Testing, needs careful examination.&lt;br /&gt;&lt;br /&gt;When you are shopping for a proper automation tool, you will come across several people ambitiously marketing their products, which may provide solution to variety of automated testing needs. Now the question arises as to whether a particular tool is really suitable to your needs or not. Are you not inclining your choice for a particular tool by making lot many compromises in features. Think that in times to come, your testing needs may become more complicated by the variety of applications coming across for testing &amp;amp; that too under variety of operating systems.&lt;br /&gt;&lt;br /&gt;Thus following guidelines shall be helpful in evaluating &amp;amp; zeroing down your choice of an appropriate tool for the job at hand, out of a bunch of many testing tools sold by different vendors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Guideline – 1: Understand your True Requirement&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all don’t look at &amp;amp; form any type of opinion about any XYZ tool available in the market. This is high time for doing deep introspection of your real needs. It is wise to prepare a comprehensive list of your requirements of software testing at the present moment. Identify the time consuming problems, which you want to solve with the new tool. Identify the technical capabilities your prospective tool should have to be compatible with the environment of your application.&lt;br /&gt;&lt;br /&gt;Following checklist can be helpful in a judicious compilation of your requirements:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) List down the Compatibility issues:&lt;/span&gt;&lt;/strong&gt; Remember that the tool selected by you has to be compatible with:&lt;br /&gt;# The operating systems supported by your application to be tested&lt;br /&gt;&lt;br /&gt;# The development environments under which the application shall be created&lt;br /&gt;&lt;br /&gt;# Third party software if any with whom your application needs to be integrated at some stage&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) List down the Users of the Tool&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;# List down the people who will be actually using the prospective tool. Keep the skill levels of the available persons at the back of your mind.&lt;br /&gt;&lt;br /&gt;# Remember that more powerful tools are bound to be more complex as well. If the skill level of the available manpower (who will be expected to use the prospective tool everyday), does not match the complexity level of the tool, believe me, you are likely to land into many problems in smooth implementation of the tool in your organization.&lt;br /&gt;&lt;br /&gt;# Think as to whether there is enough time for training your staff within the prevailing time &amp;amp; budgetary constraints, if any.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;c) List down the Testing requirements&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;Technical requirements like the following needs to be listed down before zeroing down your choice on a particular automation tool.&lt;br /&gt;# Identify the types of your own testing problems you wish that your new tool should solve for you.&lt;br /&gt;&lt;br /&gt;# Identify the problems faced by you during manual testing.&lt;br /&gt;&lt;br /&gt;# Identify the time constraints coming across while making minor changes to your system.&lt;br /&gt;&lt;br /&gt;# Identify the shorter regression testing time frames.&lt;br /&gt;&lt;br /&gt;# Identify the Test data setup requirements.&lt;br /&gt;&lt;br /&gt;# Identify the Defect tracking requirements you are aiming at.&lt;br /&gt;&lt;br /&gt;# Identify the Increased test coverage you are looking for.&lt;br /&gt;&lt;br /&gt;# Identify the Increase in efficiency of the testing process you are looking for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Guideline – 2: Understand the constraints you have&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;You need to understand various factors, which may compel you to drop down some of the tools from your initial selection list. Such crucial factors need to be identified during the early stages of your tool selection process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Environmental constraints&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;# Environmental constraints can be either related to hardware or the software itself.&lt;br /&gt;&lt;br /&gt;# The prospective tool must be able to work on the desired operating systems&lt;br /&gt;&lt;br /&gt;# The prospective tool must not dictate the terms of having some specialized hardware for its working.&lt;br /&gt;&lt;br /&gt;# Up-gradation of existing hardware like providing more hard disk / More Ram etc. to cope with the requirements of additional scripts and test data likely to be added.&lt;br /&gt;&lt;br /&gt;# Consider your likely objections to your new tool running under some specific environment, while the software application might be required to run under different environment or operating system. This issue may gain importance from the consideration of the future use of the new tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) Credentials of the Vendors &amp;amp; their Clientele&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;It is certain that you won’t desire to hang on with problems with your new testing tool. Certainly anyone would like to have a quick, competent &amp;amp; professional solution to the tool related problems arising may be occasionally.&lt;br /&gt;&lt;br /&gt;Following checklist may come handy in such a situation.&lt;br /&gt;# The tool supplier must represent a genuine company.&lt;br /&gt;&lt;br /&gt;# The tool as a product &amp;amp; its supplying company must be matured enough.&lt;br /&gt;&lt;br /&gt;# The tool may not be worthwhile at all unless there is enough technical support available.&lt;br /&gt;&lt;br /&gt;# Find out the clientele of the prospective tool &amp;amp; try to obtain the feedback from such organizations if possible.&lt;br /&gt;&lt;br /&gt;# Find out the past history of the prospective tool?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;c) Understand the Quality related characteristics&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Following quality related constraints of the prospective tool should be helpful&lt;br /&gt;# Identify the skill level required for using the prospective tool&lt;br /&gt;&lt;br /&gt;# Verify as to whether it is possible to have multiple user access&lt;br /&gt;&lt;br /&gt;# Identify the support and help documentation required.&lt;br /&gt;&lt;br /&gt;# Verify as to whether it is possible to integrate the prospective tool with other tools.&lt;br /&gt;&lt;br /&gt;# Ensure that there should not be any possibility of getting your data corrupted by the tool.&lt;br /&gt;&lt;br /&gt;# Frequency of failure during realistic use&lt;br /&gt;&lt;br /&gt;# Identify the budgetary constraints if any. Such financial constraints can restrict your choice of buying a particular tool.&lt;br /&gt;&lt;br /&gt;Remember that it is not the question of just purchasing a particular tool by spending some money. In fact it has been seen that in many cases, the cost of fully implementing the tool can be much higher than the cost of the tool itself. Budgetary constraints shall be applicable not only to the tool purchase cost, but shall cover costs of licensing / AMC’s, costs of training and cost of tool implementation etc.&lt;br /&gt;&lt;br /&gt;We can be in a position to evaluate various tools available in the market after compiling a comprehensive list of our requirements and various constraints.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Guideline – 3: Shortlist the most likely suitable tools&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the stage when an extensive research is needed to identify various types of tools available in the market. WWW can be a good place to explore the tool. Preliminary study of the technical brochure of every tool shall reveal the capabilities of the tool fitting your requirements &amp;amp; constraints.&lt;br /&gt;&lt;br /&gt;We can identify various features of every tool by classifying them like a) Essential features b) Desirable features c) Less relevant features etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Essential features:&lt;/span&gt;&lt;/strong&gt; are the ones, which are extremely necessary to meet your requirements within the defined constraints.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) Desirable features:&lt;/span&gt;&lt;/strong&gt; are the ones, which will make a particular tool standout among many of its competitors. Based upon the presence of variety desirable features, your decision can be favor of a particular tool among many more.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;c) Irrelevant features:&lt;/span&gt;&lt;/strong&gt; are the ones, which are not of any great significance &amp;amp; may not be able to provide some tangible benefit to you in your present requirements.&lt;br /&gt;&lt;br /&gt;Evaluation of the above types of features is the next exhaustive &amp;amp; iterative exercise. At this stage you should evaluate as much number of tools as possible and try to zero down your focus on around 5-6 tools any one of which could qualify to be the final tool fitting your ultimate choice.&lt;br /&gt;&lt;br /&gt;The next step in the process should be establishing a contact with the tool suppliers &amp;amp; organizing a practical demonstration. If possible you can ask for an evaluation or trial version of the tool for refining your decision. At this stage you should clearly explain all your requirements of testing along with set of constraints to the tool supplier, who shall be in a better position to clarify many points left out by you during your short-listing process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Guideline – 4: Making a Final Choice&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Having gone through the above-defined rigorous process of evaluation, the time has come for you to take a decision in favor of one particular tool, which suits best into your slot of requirements &amp;amp; constraints.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Final Comparison of Features:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;# With the help of all available data now you should be able to draw a clear comparison of the performance related features of the tools as desired by you vis-a-vis features claimed to be present in the technical literature provided by the persons marketing the tool.&lt;br /&gt;&lt;br /&gt;# This is stage to go on for verification of the credential of the particular tool from the present users by visiting their web sites or making contact through other channels. This shall help you in refining your choice of a particular tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) Practical demonstration at your site:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;If a particular tool has already caught your attention, you can ask the supplier to organize a live demonstration of the tool under your actual working environment. This way you will be able to judge the technical capability of the supplier as well in providing support later-on.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;c) Maintenance of Test Script&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Proper maintenance of automation scripts &amp;amp; ease of handling them is very important aspect of the tool under evaluation. Although we may not be able to make an on the spot judgement about this capability, but this aspect gets confirmed during the second or third release of testing after implementing the new tool.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;d) Final Comparative Trial&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Now this is the time for conducting same test on one particular application time &amp;amp; again on each &amp;amp; every short-listed tool independently. This way you shall be in a position to make a final decision in favor of a particular tool out of a box of many.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Key Word : Automation Tool, Tool Selection&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-753247334877219272?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/753247334877219272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=753247334877219272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/753247334877219272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/753247334877219272'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/choosing-automation-tool-for-your.html' title='Guidelines to select an Appropriate Automation Tool'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-5960739291401933341</id><published>2008-09-02T15:21:00.004+05:30</published><updated>2008-09-02T15:36:36.561+05:30</updated><title type='text'>Introduction to Test Automation Framework</title><content type='html'>&lt;p&gt;Judiciously testing all possible permutations of such components creates a highly complex testing situation with hundreds or thousands of testing scenarios. Under such situations there comes a need for automating the testing process with the help of automation framework approach, which can help in achieving detailed testing with great reduction in testing time.&lt;br /&gt;&lt;br /&gt;It can never be a workable idea to automate all the test cases. Hence it is important to scientifically understand the areas which can be automated. Remember that an ad-hoc approach to test automation can in fact, lead to longer testing time and poor quality irrespective of the name &amp;amp; fame of the testing tool selected by you.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Now let us understand what is ‘Test Automation Framework’?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Test Automation Framework is a set of assumptions, concepts and practices which provide necessary support for the automated software testing.&lt;br /&gt;&lt;br /&gt;The main advantage of such a framework is the low cost for maintenance. If there is change to any test case then only the test case file needs to be updated and the Driver Script and Startup script will remain the same. There's no need to update the scripts in case of changes to the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Types of Automation Framework:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;1) Modularity driven framework:&lt;/span&gt;&lt;/strong&gt; It requires the creation of small, independent scripts that represent modules, sections, and functions of the application-under-test. These small scripts are then used in a hierarchical fashion to construct larger tests, realizing a particular test case. It applies the principle of abstraction or encapsulation in order to improve the maintainability and scalability of automated test suites.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;2) Data driven framework:&lt;/span&gt;&lt;/strong&gt; It involves bunch of several interacting test scripts clubbed with their related data results. In this framework, variables are used for both input values and output verification values: navigation through the program, reading of the data sources, and logging of test status and information are all coded in the test script. It is quite suitable framework for use in RFT using Data-pools. This approach reduces coding effort to a great extent in case of large test cases, which otherwise could be quite time-consuming &amp;amp; cumbersome.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;3) Keyword driven framework:&lt;/span&gt;&lt;/strong&gt; It involves automated tests, which have inherent reusability and therefore ease of maintenance of tests that have been created at a high level of abstraction. It divides test creation into two stages like&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;a) Planning Stage:&lt;/span&gt;&lt;/strong&gt; Involving analysis of the requirements for the application to determine which operations and objects have to be tested. E.g. an application having web based questionnaire will require a large amount of text entries.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;b) Implementation Stage:&lt;/span&gt;&lt;/strong&gt; It differs according to the tool or framework used. Generally automation engineers implement a framework that provides keywords like "check" and "enter". Testing engineers (who don’t have to know the coding) write the test cases based on the keywords defined in the planning stage that have been implemented by the engineers. The test is executed using a driver who reads the keywords and executes the corresponding code.&lt;br /&gt;&lt;br /&gt;Keyword Driven Framework methodology requires more planning and a longer initial time-investment than going directly to the test creation stage and recording a test, it does make the test creation and test maintenance stages more efficient and keeps the structure of individual tests more readable and easier to modify.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;4) Hybrid framework:&lt;/span&gt;&lt;/strong&gt; Is a combination of three frameworks. This type of frameworks evolve over a passage of time and across multiple projects. It is the most successful automation frameworks, which generally accommodates both Keyword-driven testing as well as Data-driven testing. This allows data driven scripts to take advantage of the powerful libraries and utilities that usually accompany a keyword driven architecture.&lt;br /&gt;&lt;br /&gt;In this case, the framework utilities can make the data driven scripts more compact and less prone to failure. The utilities can also facilitate the gradual and manageable conversion of existing scripts to keyword driven scripts as &amp;amp; when required. On the other hand, the framework can use scripts to perform some tasks that might be too difficult to re-implement in a pure keyword driven approach, or where the keyword driven capabilities are not yet in place.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Ten Steps for Test Automation Framework Methodology:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;1) Identification of the Scope of Testing:&lt;/span&gt;&lt;/strong&gt; Company oriented, Product oriented, Project Oriented.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;2) Identification of the Needs of Testing:&lt;/span&gt;&lt;/strong&gt; Identify Types of testing e.g. FT, Web Services etc. and application / modules to be tested.}&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;3) Identification of the Requirements of Testing:&lt;/span&gt;&lt;/strong&gt; Find out the nature of requirements, identify type of actions for each requirement &amp;amp; identify high priority requirements.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;4) Evaluation of the Test Automation Tool:&lt;/span&gt;&lt;/strong&gt; Evaluation checklist, Identify the candidate tools available in the market, Sample run, rate &amp;amp; select the tools, Implementation &amp;amp; Training&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;5) Identification of the Actions to be automated:&lt;/span&gt;&lt;/strong&gt; Actions, Validations &amp;amp; requirements supported by the Tool&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;6) Design of the Test Automation Framework:&lt;/span&gt;&lt;/strong&gt; Framework guidelines, validations, Actions Involved, Systems involved, Tool Extensibility Support, Customs messages &amp;amp; UML Documentation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;7) Design of the Input Data Bank:&lt;/span&gt;&lt;/strong&gt; Types of Input file. Input files – Categorization &amp;amp; Design of file prototypes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;8) Development of the Automation Framework:&lt;/span&gt;&lt;/strong&gt; Development of script based upon framework design, Driver scripts, Worker Scripts, Record / Playback, Screen / Window / Transaction, Action / Keyword &amp;amp; Data Driven.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;9) Population of Input Data Bank:&lt;/span&gt;&lt;/strong&gt; Different Types of data Input, Populate data from different data sources, Manual input of data and Parent – Child data hierarchy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;10) Configuration of the Schedulers:&lt;/span&gt;&lt;/strong&gt; Identify scheduler requirements &amp;amp; configure the schedulers.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Benefits of Test Automation Framework Approach:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Test Automation Framework built with systematic approach yields following benefits:&lt;br /&gt;&lt;br /&gt;# Ensures consistency&lt;br /&gt;# Significant reduction in the amount of code to develop &amp;amp; maintain thereby reducing the testing cycle time.&lt;br /&gt;# Comprehensive coverage against requirements.&lt;br /&gt;# Use of a "Common Standard" across the organization / Product team / Project team&lt;br /&gt;# Maximizes reusability of test scripts ( Utility Functions)&lt;br /&gt;# Provides a structured for test library having systematic maintenance of automation scripts&lt;br /&gt;# Data Pooling&lt;br /&gt;# Protects non-technical testers from the code&lt;br /&gt;&lt;br /&gt;Key Word: QTP, Automation, Automation Framework, &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-5960739291401933341?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/5960739291401933341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=5960739291401933341' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5960739291401933341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5960739291401933341'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/09/introduction-to-test-automation.html' title='Introduction to Test Automation Framework'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7911247240661432118</id><published>2008-08-26T15:59:00.005+05:30</published><updated>2008-08-27T08:57:01.440+05:30</updated><title type='text'>Create a Schedule to Run QTP at a Desired Time</title><content type='html'>Every Microsoft Windows has a wonderful feature of "Task Scheduler", which can be used for automatically running any application at any desired time, at desired frequency right from a specified date for initial launch. Once scheduling is done, it does not require any user intervention; however the only important thing to remember is that the PC must be kept on at the scheduled time.&lt;br /&gt;&lt;br /&gt;This "Task Scheduler" utility is available in Windows "Control Panel" by the name "Scheduled Tasks". Detailed steps are described as under.&lt;br /&gt;&lt;br /&gt;1) Say our aim is to automatically run the file by the name QTP_Test.vbs available at the location C:\ExpertQTP\QTP_Test.vbs&lt;br /&gt;&lt;br /&gt;2) Go to Windows "Control Panel" -&gt; "Scheduled Tasks".&lt;br /&gt;&lt;br /&gt;3) Click on "Add Scheduled Task" in the "Scheduled Tasks"&lt;br /&gt;&lt;br /&gt;4) This will start the "Scheduled Tasks Wizard".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTHes7BqqI/AAAAAAAAAIY/hWD98oQnUWs/s1600-h/Picture-1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239031596807465634" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTHes7BqqI/AAAAAAAAAIY/hWD98oQnUWs/s400/Picture-1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;5) Click on "Next" - &gt; Browse - &gt; In "Select Program to Schedule" screen Go to the location of the QTP_Test.vbs file available in C:\ExpertQTP folder - &gt; Click "Open" as described in the following picture.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SLTHWqFQKUI/AAAAAAAAAIQ/NMWzfrIXmdI/s1600-h/Picture-2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239031458606098754" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SLTHWqFQKUI/AAAAAAAAAIQ/NMWzfrIXmdI/s400/Picture-2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;6) In the "Scheduled Tasks Wizard" select the schedule for running the QTP Script. For example Daily, or Weekly or Monthly as per various options offered in the Wizard. In or example select say "Daily". Then Click "Next" as described in the following picture.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTHKl-VtMI/AAAAAAAAAII/S4mPoIt_8ss/s1600-h/Picture-3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239031251344929986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTHKl-VtMI/AAAAAAAAAII/S4mPoIt_8ss/s400/Picture-3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;7) Select the Time &amp;amp; day you want to start this Script. Then Click "Next" as described in the following picture.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SLTG-r4OEPI/AAAAAAAAAIA/TblkLTdnZm4/s1600-h/Picture-4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239031046771446002" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SLTG-r4OEPI/AAAAAAAAAIA/TblkLTdnZm4/s400/Picture-4.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;8) Enter the "User Name" &amp;amp; Password for the workstation, just only once as described in the following picture.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SLTG3DzOQMI/AAAAAAAAAH4/EpNc9tbop0M/s1600-h/Picture-5.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239030915753984194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SLTG3DzOQMI/AAAAAAAAAH4/EpNc9tbop0M/s400/Picture-5.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This way wizard will not ask the user for his manual intervention of feeding the password every time.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTGvmVVs9I/AAAAAAAAAHw/RmGjHiZTsBo/s1600-h/Picture-6.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5239030787584930770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTGvmVVs9I/AAAAAAAAAHw/RmGjHiZTsBo/s400/Picture-6.JPG" border="0" /&gt;&lt;/a&gt;9) Click "Finish"&lt;br /&gt;&lt;br /&gt;10) Above mentioned simple steps shall now execute the desired script automatically, every day at 12.59PM starting from 07/13/2008.&lt;br /&gt;&lt;br /&gt;Key Word: QTP, Quicktest, Automate, Schedule&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7911247240661432118?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7911247240661432118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7911247240661432118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7911247240661432118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7911247240661432118'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/create-schedule-to-run-qtp-at-desired.html' title='Create a Schedule to Run QTP at a Desired Time'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLTHes7BqqI/AAAAAAAAAIY/hWD98oQnUWs/s72-c/Picture-1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6977779488733256359</id><published>2008-08-23T16:00:00.012+05:30</published><updated>2008-08-23T18:13:43.727+05:30</updated><title type='text'>How to Manage your Files using QTP</title><content type='html'>Sometimes as a QTP programmer, we may need to keep track about the files inside our Operating system. Apart from tracking our files, we need to manage them dynamically like files can be created, files can be read, files can be edited and deleted. In order to accomplish this task, we require FileSystemObject. It contains methods to carry all administrative tasks related to files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Getting access of an already created file&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;For this, use the below written code.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:100%;" &gt;Set obj=CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:100%;" &gt;obj.getFile("D:\testfile.txt")&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In order to run this code perfectly fine, the File "testfile.txt" should be present in the D:\ location else QTP will raise an error.&lt;br /&gt;&lt;br /&gt;As you can see in the above mentioned code, we have provided the complete path for the file which we also call as Absolute path. Now this code is not of much use unless we do something more along with it. Like after getting the reference for a file, we can see the size of the file, its parent folder, its name etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Check for the existence of an already created file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Sometimes we may be interested in knowing whether our file exists or not.  For this, we use "FileExists" method. This checks whether the files exists or not. The "FileExists" method requires a single argument containing the full path of the file. This method returns a boolean value. I hope you guys must be aware of what a boolean value is. Now this method will return a value "True" if the file exists and "False" if the file doesn't exists.&lt;br /&gt;&lt;br /&gt;The below mentioned code will explain in detail:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Set testobj = CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;If test.FileExists("D:\Expert\MyTestFile.txt") Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Set objFile = testobj.GetFile("D:\Expert\MyTestFile.txt")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MsgBox "The file doesn't exist."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Deleting the File&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;We can delete a file by firstly creating an instance of FileSystemObject and then we need to call the DeleteFile method. Lets see the below mentioned code to explain this concept.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;Set myobj = CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;myobj.DeleteFile("D:\MyTestFile.txt")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can even delete your MS Word file with the above code. Cool na.... I know.&lt;br /&gt;&lt;br /&gt;Let me show you something even more interesting. If the file is read-only, then the "DeleteFile" method will not be able to delete the file. So how to delete such a file? Any guesses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;This thing is left for you guys to find it out how we can delete a read only file.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Copy Files&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Copying files from one location to another is also a very frequently done task. For this, we use CopyFile method. The syntax for copying files is:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;obj.CopyFile "Source-File-Path", "Destination-File-Path"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to copy a file from "C:\test.txt" to "D:\test.txt", we will use the code:&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);font-size:100%;" &gt;Set obj=CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;obj.CopyFile "C:\test.txt", "D:\test.txt"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can even rename a file just by changing the name of the file in the "Destination-File-Path".&lt;br /&gt;&lt;br /&gt;What happens if we try to copy a copy inside a folder and the folder doesnt exist? This thing is left for you guys to try.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Moving Files&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;We can also move files from one one location to another[Also known as Cut and Paste]. For this, we require MoveFile method. It is infact quite similar to CopyFile method.&lt;br /&gt;&lt;br /&gt;We use the below code to move files from one location to another.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);font-size:85%;" &gt;Set obj=CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);font-size:85%;" &gt;obj.MoveFile "C:\test.txt", "D:\test.txt"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:78%;"&gt;Reading all contents of a file in a single shot&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;We can read all the contents of a file using the ReadAll method. It captures all the file contents and stores inside a variable.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;The following code will help you in reading all contents of a file "D:\test.txt".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;Set obj1= CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;Set obj2= obj1.OpenTextFile("D:\test.txt")&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;FileContents = obj2.ReadAll     'Read all contents of the file&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;MsgBox FileContents                     'Display contents of file&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;obj2.Close                                    'Close the File&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:78%;"&gt;Reading all contents of a file line by line&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;We can read all the contents of a file line by line. For this we require the ReadLine method.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;The following code will help you in reading all contents of a file "D:\test.txt" line by line.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;Set obj1= CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;Set obj2= obj1.OpenTextFile("D:\test.txt")&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;font-size:78%;" &gt;Do Until obj2.AtEndOfStream&lt;br /&gt;Line=obj2.ReadLine&lt;br /&gt;msgbox Line&lt;br /&gt;Loop&lt;br /&gt;obj2.Close&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6977779488733256359?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6977779488733256359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6977779488733256359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6977779488733256359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6977779488733256359'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/how-to-manage-your-files-using-qtp.html' title='How to Manage your Files using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-1433893151196781327</id><published>2008-08-23T15:06:00.004+05:30</published><updated>2008-08-23T15:14:18.501+05:30</updated><title type='text'>All about Recovery Scenarios using QTP</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction to Recovery Scenarios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;While executing scripts, we usually encounter unexpected &amp;amp; unpredictable events &amp;amp; errors, which results into application crashing during a run session causing total disruption of the run session and distortion of results. Such problems are quite frequent especially when the tests are made to run unattended. In such a case the test process halts until the user perform some desired recovery operation.&lt;br /&gt;&lt;br /&gt;Recovery scenarios are useful when it is difficult to predict at which step the errors can come or when we are confident that the error will not come in the QTP script, whereas it can be anywhere outside the QTP Script. For illustration; Pop-up message of “out of paper”, as caused by the printer device driver. “On error resume next” is preferred when we sure that the error is expected one and wish to perform some other actions.&lt;br /&gt;&lt;br /&gt;In order to handle such situations QTP comes to our rescue by creating recovery scenarios and associates them with the particular tests. What does a Recovery Scenarios do is to activate a specific recovery operation when a trigger events takes place. Most simple example of a typical unexpected &amp;amp; unpredictable events &amp;amp; errors is like Incompatible Media in portable Drive.&lt;br /&gt;&lt;br /&gt;The Recovery Scenario Manager presents a structured wizard which helps us in defining the recovery scenario, like detailed definition of the unexpected event and the operations required to recover from the exception during the run session.&lt;br /&gt;&lt;br /&gt;Advantages of Recovery Scenario Manager: Recovery Scenario Manager can be used to handle several known errors occurring at runtime. Following four events available in the recovery scenario manager are extremely helpful&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Application Crash&lt;/span&gt;: This event is useful in handling crashed applications at runtime.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Pop Up Window&lt;/span&gt;: This event is useful in managing various unwanted application windows, which get built-up at runtime.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Test Run Error&lt;/span&gt;: This event is useful in handling VBScript statement errors at runtime.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) Object State:&lt;/span&gt; This event is useful in handling object related errors at runtime.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Elements of Recovery Scenario&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;Steps to handle the exceptions are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) Trigger Event:&lt;/span&gt; Is an unexpected event like appearance of a Pop-up window, object state, test run error causing application crash or interruption in our running session.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) Recovery Steps:&lt;/span&gt; Constitutes a series of steps required to be performed to enable QTP to proceed further with the process of test after some trigger event has interrupted the run session. Examples of a recovery operation can be 1) A keyboard or mouse Operation like a Click over the “OK” button in the Pop-up window 2) Close Application Process 3) Function Call 4) Restarting the OS etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Post-Recovery Test Run:&lt;/span&gt; Are a set of instructions designed to be provided to QTP on proceeding further with the test after some recovery operation has been carried out. Examples of Post Recovery actions can be repeating the complete test from the beginning or some steps may be skipped altogether &amp;amp; continuing with the remaining steps in the test.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;QTP &amp;amp; Recovery Scenarios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;All Recovery scenarios get saved &amp;amp; logically grouped in recovery scenario files. Grouping of various recovery scenarios in recovery scenario file can be managed according the user requirements. Recovery scenario files carry a typical extension of .rs.&lt;br /&gt;&lt;br /&gt;In order to instruct QTP to carry out a recovery scenario during a particular test run, we firstly associate it with the particular test. There is no limitation to any fixed number of recovery scenarios associated with a test. Order of execution of various recovery scenarios associated with a test can easily be prioritized, thereby the trigger events get recognized and handled in the desired sequence.&lt;br /&gt;&lt;br /&gt;Whenever any error comes during the execution of a test having many recovery scenarios associated with it; QTP intelligently hunts for the defined trigger event which had caused the particular error. After detecting the trigger event, QTP automatically performs the desired recovery steps and post-recovery test runs etc.&lt;br /&gt;&lt;br /&gt;Recovery statements can be inserted in the tests to comfortably control and activate the recovery scenarios during the test run.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Cons of Recovery Scenarios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although Recovery Scenarios are users friendly on one hand; they tend to slow down the speed of the Test Run. Presence of a few such recovery scenarios would reduce the speed of Test Run significantly. This can become irritant to the testers, who can prefer the approach of using VBScript On Error/Goto 0 far more useful for catching &amp;amp; handling small errors.&lt;br /&gt;&lt;br /&gt;Keywords: QTP, Recovery Scenarios, errors, exception handling&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-1433893151196781327?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/1433893151196781327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=1433893151196781327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1433893151196781327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1433893151196781327'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/all-about-recovery-scenarios-using-qtp.html' title='All about Recovery Scenarios using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3668777441010689532</id><published>2008-08-14T15:38:00.000+05:30</published><updated>2008-09-02T15:44:02.809+05:30</updated><title type='text'>How to Record Right Mouse Clicks using QTP</title><content type='html'>For recording the right mouse clicks in QTP, we need to manually modify the configuration file and then load it.&lt;br /&gt;&lt;br /&gt;This is a great article extracted from QTP Help Guide, which leads us through important steps to configure QTP to record our Right Mouse Clicks.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –1:&lt;/span&gt;&lt;/strong&gt; Choose Tools &gt; Web Event Recording Configuration. The Web Event Recording Configuration dialog box opens.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SL0Q4LkhFVI/AAAAAAAAAKE/4CLUNwBM8xw/s1600-h/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5241364098693797202" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SL0Q4LkhFVI/AAAAAAAAAKE/4CLUNwBM8xw/s400/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –2:&lt;/span&gt;&lt;/strong&gt; Click the Custom Settings button. The Custom Web Event Recording Configuration dialog box opens.&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SL0Qywj3aDI/AAAAAAAAAJ8/a2BcLJCZRrY/s1600-h/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5241364005543962674" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SL0Qywj3aDI/AAAAAAAAAJ8/a2BcLJCZRrY/s400/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –3:&lt;/span&gt;&lt;/strong&gt; In the Custom Web Event Recording Configuration dialog box, choose File &gt; Save Configuration As. The Save As dialog box opens.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –4:&lt;/span&gt;&lt;/strong&gt; Navigate to the folder in which you want to save the web event recording configuration file, and enter a configuration file name. The extension for configuration files is .xml.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –5:&lt;/span&gt;&lt;/strong&gt; Click Save to save the file and close the dialog box.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –6:&lt;/span&gt;&lt;/strong&gt; Open the saved configuration file for editing in any text editor. The configuration file uses a defined structure.&lt;br /&gt;&lt;br /&gt;The beginning of the file, which is relevant for Web objects, is shown below.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SL0Qsc9c_QI/AAAAAAAAAJ0/sFDwZFQ2JFI/s1600-h/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5241363897203358978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SL0Qsc9c_QI/AAAAAAAAAJ0/sFDwZFQ2JFI/s400/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Property Name argument controls the recording of the mouse buttons. The value of the mouse buttons are defined as follows:&lt;br /&gt;1—Left&lt;br /&gt;2—Right&lt;br /&gt;4—Middle&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –7:&lt;/span&gt;&lt;/strong&gt; Edit the file as follows:&lt;br /&gt;To record a left mouse click for the onmouseup event, add the following line:&lt;br /&gt;&lt;property name="button" value="1" listen="2" record="2"&gt;&lt;br /&gt;To record right and left mouse clicks for the onmousedown event, add the following lines:&lt;br /&gt;&lt;event name="onmousedown" listen="2" record="1"&gt;&lt;br /&gt;&lt;property name="button" value="2" listen="2" record="2"&gt;&lt;br /&gt;&lt;property name="button" value="1" listen="2" record="2"&gt;&lt;br /&gt;&lt;/event&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; Only one event, either onmouseup or onmousedown, should be used to handle mouse clicks. If both events are used, QTP will record two clicks instead of one. By default, QTP listens for the onmouseup event.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –8:&lt;/span&gt;&lt;/strong&gt; Save the file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –9:&lt;/span&gt;&lt;/strong&gt; In the Custom Web Event Recording Configuration dialog box, choose File &gt; Load Configuration. The Open dialog box opens.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –10:&lt;/span&gt;&lt;/strong&gt; Navigate to the folder in which you saved the edited configuration file, select the file, and click Open. The Custom Web Recording Configuration dialog box reopens.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Step –11:&lt;/span&gt;&lt;/strong&gt; Click OK. The new configuration is loaded, with all preferences corresponding to those you defined in the XML configuration file. Any Web objects you now record will be recorded according to these new settings.&lt;br /&gt;&lt;br /&gt;Key Words: QTP, quickest, Right Mouse Click, Event Recording&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3668777441010689532?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3668777441010689532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3668777441010689532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3668777441010689532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3668777441010689532'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/how-to-record-right-mouse-clicks-using.html' title='How to Record Right Mouse Clicks using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SL0Q4LkhFVI/AAAAAAAAAKE/4CLUNwBM8xw/s72-c/How+to+Record+Right+Mouse+Clicks+using+QTP+-+Photo+-1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8926458120056781865</id><published>2008-08-13T23:03:00.010+05:30</published><updated>2008-09-01T00:41:06.639+05:30</updated><title type='text'>Exploit the Power of MS Excel through QTP</title><content type='html'>The objective of this article is to briefly understand the process of interaction of MS Excel and VBScripts.&lt;br /&gt;&lt;br /&gt;For automating an application a framework is created in the beginning. This requires an independent structure for reporting and data. Microsoft Excel plays a very important role in this framework approach.&lt;br /&gt;&lt;br /&gt;We can easily use the built-in mechanism of QTP through which we can display the test results in a predefined format. A result sheet gets generated after the execution of the test in QTP; which provides an in-depth view of the script – through which we can know the various point of failures, warnings and the passes.&lt;br /&gt;&lt;br /&gt;In the test script we create customize various checkpoints at our will. Likewise the result file can also be customized based upon the checkpoints already created according to the defined criterion of Pass / Fail.&lt;br /&gt;&lt;br /&gt;Generally while working in MS Excel, the user desires to generate a detailed report of the entire test. The idea of generating such detailed / customized report is to have the output in a format as per our own choice and to preserve the file in a centralized location.&lt;br /&gt;&lt;br /&gt;The entire process can be performed in following basic steps:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-1:&lt;/span&gt; Understanding the hierarchy of MS Excel Application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-2:&lt;/span&gt; Creation of the desired Object in MS Excel&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-3:&lt;/span&gt; Creation of a new MS Excel workbook or opening an existing one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-4:&lt;/span&gt; Setting the objects for various sheets in the workbook.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-5:&lt;/span&gt; Writing and fetching the data values in the cells.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-6:&lt;/span&gt; Saving and closing of the workbook&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step-7:&lt;/span&gt; Closing the application and clearing the memory&lt;br /&gt;&lt;br /&gt;The above steps can be explained through suitable illustrations to understand the approach properly.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Understanding the hierarchy of Excel Application&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is believed that the user is fairly acquainted with the basics of MS Excel like:&lt;br /&gt;&lt;br /&gt;1) What is MS Excel Application&lt;br /&gt;&lt;br /&gt;2) What are Workbooks in Excel&lt;br /&gt;&lt;br /&gt;3) What are Sheets in Excel&lt;br /&gt;&lt;br /&gt;4) What are Cells in Excel&lt;br /&gt;&lt;br /&gt;Hence I am skipping the basic explanation of the above basics of MS Excel &amp;amp; directly moving on to the main content of our topic.&lt;br /&gt;&lt;br /&gt;Some of the simple VBScripts are being described below for performing various actions in MS Excel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Creation of an Object in Excel:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;In the process of reporting it is the first step. In MS Excel the reporting can be done in two ways like 1) in the background wherein the application shall not be visible 2) the application can be made visible to the user once the process of writing or fetching the data is going on.&lt;br /&gt;&lt;br /&gt;However in both the above mentioned methodologies we need to create objects in Excel Application for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Dim xl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Set xl = CreateObject(“Excel.Application”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When we run the above script, we can see a process named "Excel.exe" in the Windows task Manager.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Creating a new workbook or Opening an existing one:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;After creation of the object in Excel, it implies that Excel application has been invoked, however it is not visible. From now on we can either continue to perform the operations in the invisible back ground alternatively we can make the application visible and then we can perform the operations.&lt;br /&gt;&lt;br /&gt;To make the application visible:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.visible = true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To open a new Workbook:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-style: italic;"&gt;xl.workbooks.Add&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To open an existing Workbook:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.workbooks.Open(“File Name with complete path”)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Setting and accessing the objects of sheets in workbook:&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After opening a workbook in Excel (A New one or opening an existing one), next activity is to feed some data in various cells in various sheets of our workbook.&lt;br /&gt;&lt;br /&gt;MS Excel provides three sheets in a workbook by default, which are available to us for performing various operations. To access these sheets with great ease, we need to create objects referencing these sheets. This will help us in avoiding describing complete hierarchy time &amp;amp; again.&lt;br /&gt;&lt;br /&gt;For example we wish to create a reference for a sheet with an index i, beginning from 1:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Set sht1 = xl.activeworkbook.sheets(i)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can easily add or delete the desired sheets from the active workbook&lt;br /&gt;&lt;br /&gt;To add a sheet in the workbook:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.sheets.add&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To delete a particular sheet: ( where i represents the index which begins from 1)&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.sheets(i).delete&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To change the name of the sheet:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.sheets(i).name = “Name of your choice”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To count total number of sheets in a workbook:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Countnt = xl.activeworkbook.sheets.count&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Writing and fetching the data values in the cells:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To write the data in Excel sheet, we need to identify the Cell ID of the cell where the data is needed to be written. Similarly for accessing the data value from particular cells, we must know their Cell ID.&lt;br /&gt;&lt;br /&gt;For an example we want to write some data in sheet2 cell ID as D8, the command can be written as under. Here “D” represents the Column Number &amp;amp; “8” represents the Row Number.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LFOEX-ZBxzg/SKf8xUt55sI/AAAAAAAAAGk/HdBtuTCiOGQ/s1600-h/Slide1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_LFOEX-ZBxzg/SKf8xUt55sI/AAAAAAAAAGk/HdBtuTCiOGQ/s400/Slide1.JPG" alt="" id="BLOGGER_PHOTO_ID_5235431016146527938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.sheets(2).cells(8,4) = “hello”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To fetch the data from sheet3 cell ID A7:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Val = xl.activeworkbook.sheets(3).cells(7,1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If an object has already been created in a particular sheet, we don’t have to repeat the complete hierarchy again, instead we can simply write:&lt;br /&gt;Object.cells(row,col) = value&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Saving and closing a workbook:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;After finishing the work we can save the workbook to a desired location with a different name or save the changes made to an already existing open workbook.&lt;br /&gt;&lt;br /&gt;To save the new workbook under a new name:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.saveas “path_with_file_name.xls”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To save the changes made in an existing workbook:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.save&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To close a workbook:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.activeworkbook.close&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Closing an application and clearing the memory:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To close the application:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;xl.quit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To clear the memory from all objects:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;Set xl = nothing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is not the end; however it is just a beginning for us to explore the power of QTP in exploiting the potential of MS Excel through simple VBScripts.&lt;br /&gt;&lt;br /&gt;Keywords: MS Excel, QTP, VBScript&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8926458120056781865?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8926458120056781865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8926458120056781865' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8926458120056781865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8926458120056781865'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/working-with-excel-objects-in-qtp.html' title='Exploit the Power of MS Excel through QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LFOEX-ZBxzg/SKf8xUt55sI/AAAAAAAAAGk/HdBtuTCiOGQ/s72-c/Slide1.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-4500722786684503538</id><published>2008-08-12T12:05:00.000+05:30</published><updated>2008-09-02T16:45:20.206+05:30</updated><title type='text'>Important Challenges faced by Software Testers</title><content type='html'>Famous book 'Surviving the Top Ten Challenges of Software Testing - A People-Oriented Approach', written by William Perry and Randall Rice, wonderfully describes following Ten challenges faced by the software testers. I am briefly mentioning these challenges here just to generate a healthy curiosity among my software tester fellows. For in-depth details, please go through this wondeful book &amp;amp; enjoy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;CHALLENGE – 1: TRAINING IN TESTING&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;IS TESTING A NATURAL-BORN INSTINCT?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Core Issues are :&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;($) Lack of education in testing&lt;br /&gt;($) The large majority of testers have never had formal training in software testing.&lt;br /&gt;($) Many testers and their management are unaware of training sources for testing.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#993300;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Solutions for Training:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;($) Obtain formal training in testing techniques&lt;br /&gt;($) Certification : CSTE (Certified Software Test Engineer)&lt;br /&gt;($) Attending conferences&lt;br /&gt;($) Reading books and articles&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;CHALLENGE – 2: RELATIONSHIP BUILDING WITH DEVELOPERS&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;WHOSE SIDE ARE TESTERS ON?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Lack of teamwork&lt;br /&gt;($) "Us versus them" mentality, seen most often in organizations with independent test teams. Here Them refers to the Developers.&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;Solutions to the Teamwork Challenge:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) The goal is to get to "Us and them"&lt;br /&gt;($) Each person on the team can have a role in testing like&lt;br /&gt;- Developers: unit and structural testing&lt;br /&gt;- Testers: independent testing&lt;br /&gt;- Users: business-oriented testing&lt;br /&gt;- Management: to support testing activities&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;CHALLENGE – 3: USING TOOLS&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;TESTING WITHOUT TOOLS:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Lack of understanding of the usefulness of test tools&lt;br /&gt;($) Without upper management support, it is difficult to acquire test tools.&lt;br /&gt;($) A process is needed for the tools.&lt;br /&gt;($) People should be trained in the use of test tools.&lt;br /&gt;($) People must accept and apply the tools.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Solutions for Acquiring and Using Test Tools:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Identify a "champion" for obtaining test tools.&lt;br /&gt;($) Base the case for test tools in costs vs. benefits.&lt;br /&gt;($) Have a basic testing process in place.&lt;br /&gt;($) Train people in tool usage.&lt;br /&gt;($) Measure the benefits.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;CHALLENGE – 4: GETTING MANAGERS TO UNDERSTAND TESTING&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Management is not fully aware of what is required for effective testing.&lt;br /&gt;($) Management is often focused on the product, not the process. This leads to lack of management support and involvement for testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Solutions to Educating Management in Testing Issues:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Cultural change is needed.&lt;br /&gt;($) Focus your message to management on:&lt;br /&gt;- reducing the cost of rework&lt;br /&gt;- meeting the project schedule&lt;br /&gt;($) The benefits of testing must relate to these two things to be persuasive.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;CHALLENGE – 5: COMMUNICATING WITH USERS ABOUT TESTING&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;WOULD THE REAL CUSTOMER STAND UP?&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;Core Issues are :&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issue No. 1&lt;/span&gt;&lt;/strong&gt; - A lack of understanding of who the customer really is. We must understand the difference between: Customers &amp;amp; Users&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issue No. 2&lt;/span&gt;&lt;/strong&gt; - Lack of customer involvement in testing.&lt;br /&gt;Solutions to Identifying and Involving the Customer in Testing:&lt;br /&gt;($) Involve the customer and users throughout the project by performing reviews and inspections.&lt;br /&gt;($) Include users on the system test team.&lt;br /&gt;($) Perform user acceptance testing.&lt;br /&gt;($) Understand the difference between the customer and users.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-size:130%;"&gt;CHALLENGE – 6: MAKING THE NECESSARY TIME FOR TESTING&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;TOO MUCH WORK – TOO LITTLE TIME :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#993300;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;($) Arbitrary schedules and estimates do not allow enough time for testing.&lt;br /&gt;($) Realism: There is never enough time to test every possible combinations of test conditions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;So&lt;/span&gt;&lt;span style="color:#000099;"&gt;lutions to the Time Crunch:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Base schedules and estimates on measurable testing activities.&lt;br /&gt;- Scripts to be executed&lt;br /&gt;- Cases to be tested&lt;br /&gt;- Requirements to be tested&lt;br /&gt;($) Have contingency plans for schedule slippage.&lt;br /&gt;($) Integrate automated testing tools to the project.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#000099;"&gt;CHALLENGE – 7: TESTING "OVER THE WALL" SOFTWARE&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;OVERCOMING THROWING STUFF OVER THE WALL:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Developers depending on testers to find bugs.&lt;br /&gt;($) Seen most often when independent test teams are used in an organization&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="color:#000099;"&gt;Solutions to Overcoming Throwing Stuff Over the Wall:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Developers must take ownership and responsibility for the quality of their work.&lt;br /&gt;($) Quality control is most effective when performed at the point of creation.&lt;br /&gt;($) Train developers to become excellent testers.&lt;br /&gt;($) Get management support for developer responsibility for quality.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;CHALLENGE – 8: TRYING TO HIT A MOVING TARGET&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#993300;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;($) Software and systems that undergo rapid and/or constant change.&lt;br /&gt;($) Software development techniques such as Rapid Application Development can produce a new version of the software very quickly.&lt;br /&gt;($) You can’t perform a four-week test every day manually.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="color:#000099;"&gt;Solutions for Hitting a Moving Target:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) The testing process must accommodate change.&lt;br /&gt;($) Focus on testable requirements.&lt;br /&gt;($) Use automated testing tools.&lt;br /&gt;($) Manage the rate and degree of change.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;CHALLENGE – 9: FIGHTING A LOSE-LOSE SITUATION&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Testers are often the "bad guys" when they find defects, yet if the software goes live with problems, testers are blamed for the defects.&lt;br /&gt;($) Since independent testers have no control over the software development process, they cannot guarantee software quality.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#993300;"&gt;&lt;span style="color:#000099;"&gt;Solutions for Fighting a Lose-Lose Situation:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) The perception of testing must change.&lt;br /&gt;- Testers are paid to find defects&lt;br /&gt;- Each defect found is one more the customer or user will not find&lt;br /&gt;($) Testers are not to blame for bottlenecks. It is management’s responsibility to have an efficient process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;CHALLENGE – 10: HAVING TO SAY "NO"&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Core Issues are :&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;($) Testers are often the bearer of bad news.&lt;br /&gt;($) Problem: Management doesn’t like to hear bad news.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Solutions for Having to Say "No":&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Most responsibility is on management to:&lt;br /&gt;- have a quality software development process in place.&lt;br /&gt;- have contingency plan in place in case of problems.&lt;br /&gt;- understand that testing is only an evaluation activity.&lt;br /&gt;- accept the honest facts.&lt;br /&gt;($) Keep the test results objective&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;SUMMARY - APPLYING THE LESSONS LEARNT:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;($) Most testing problems seem to be human in nature.&lt;br /&gt;($) "Quality is everyone’s job, but it’s management’s responsibility." Dr. Deming.&lt;br /&gt;($) There are three key parts of the testing picture: Process, People and Tools.&lt;br /&gt;&lt;br /&gt;Keyword: Testing, Challenges, QTP, Quicktest, Automation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-4500722786684503538?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/4500722786684503538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=4500722786684503538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4500722786684503538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/4500722786684503538'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/challenges-in-manual-and-automation.html' title='Important Challenges faced by Software Testers'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3468389096165553227</id><published>2008-08-08T17:24:00.000+05:30</published><updated>2008-08-27T09:12:00.541+05:30</updated><title type='text'>Smart Identification: A Fantastic Feature of QTP</title><content type='html'>QTP has a unique feature by the name Smart Object Identification or recognition which is used for identifying the objects smartly, whenever the normal identification fails due to the dynamic changes in the properties of the objects.&lt;br /&gt;&lt;br /&gt;Smart Identification is nothing but an algorithm used by the QTP when it is not able to recognize an object. A simple generic example as per the QTP manual would be, A photograph of a 8 year old girl and boy and QTP records identification properties of that girl when she was 8, now when both are 10 years old then QTP would not be able to recognize the girl. But there is something that is still the same, that is there is only one girl in the photograph. So a kind of PI - Programmed intelligence is needed instead of AI.&lt;br /&gt;&lt;br /&gt;Object identification is necessary to recognize the GUI objects on the screen. During automatic recording of a script, the object identifier records various objects present on the screen. The smart identification feature of QTP smartly identifies all the objects irrespective of their being developed using same technology or not, e.g. smart identification shall be able to identify the objects in an application although developed in Java but using some of the Microsoft controls as well.&lt;br /&gt;&lt;br /&gt;QTP identifies a particular object by comparing the properties of its test object and the run time object. QTP may not be able to recognize any dynamic objects whose properties or even the description may undergo some changes during the run time. Thus its great option of enabling Smart Identification helps us in identifying the objects even if their properties have undergone changes during the run time.&lt;br /&gt;&lt;br /&gt;If QTP is not able to detect any object having description matching with that of the recorded object, or in case it detects more than one object having matching description, then QTP ignores the recorded description, and uses the Smart Identification feature to identify the object. Smart Identification mechanism is a bit complex, but flexible. However, if configured logically, Smart Identification definition can help QTP in detecting an object, of course - if present, in-spite of failure of the recorded description.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;Understanding the Smart Identification Process: (Ref. Quick Test Professional 9.0 – Help Guide)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If QTP activates the Smart Identification mechanism during a run session (because it was unable to identify an object based on its learned description), it follows the following process to identify the object:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1)&lt;/span&gt; QTP "forgets" the learned test object description and creates a new object candidate list containing the objects (within the object's parent object) that match all of the properties defined in the Base Filter Properties list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2) &lt;/span&gt;QTP filters out any object in the object candidate list that does not match the first property listed in the Optional Filter Properties list. The remaining objects become the new object candidate list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;3)&lt;/span&gt; QTP evaluates the new object candidate list:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;# &lt;/span&gt;If the new object candidate list still has more than one object, QTP uses the new (smaller) object candidate list to repeat step 2 for the next optional filter property in the list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;#&lt;/span&gt; If the new object candidate list is empty, QTP ignores this optional filter property, returns to the previous object candidate list, and repeats step 2 for the next optional filter property in the list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;#&lt;/span&gt; If the object candidate list contains exactly one object, then QTP concludes that it has identified the object and performs the statement containing the object.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;4)&lt;/span&gt; QTP continues the process described in steps 2 and 3 until it either identifies one object, or runs out of optional filter properties to use.&lt;br /&gt;&lt;br /&gt;If, after completing the Smart Identification elimination process, QTP still cannot identify the object, then QTP uses the learned description plus the ordinal identifier to identify the object.&lt;br /&gt;&lt;br /&gt;If the combined learned description and ordinal identifier are not sufficient to identify the object, then QTP stops the run session and displays a Run Error message.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;How to Analyze Smart Identification Information displayed in the Test Results?&lt;/span&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;(Ref. Quick Test Professional 9.0 – Help Guide)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If the recorded description does not enable QTP to identify the specified object in a particular step, and a Smart Identification definition is defined (and enabled) for the object, then QTP tries to identify the object using the Smart Identification mechanism. There are two possible scenarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Scenario –1: No Object Matches the Recorded Description&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If QTP happens to successfully use the Smart Identification feature to recognize an object after no object found to match with the recorded description, the Test Results receive a warning status by providing the information like the following in the results details:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1)&lt;/span&gt; An indication that the object (for example, the userName WebEdit object) was not found.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2)&lt;/span&gt; An indication that the Smart Identification mechanism successfully found the object, and information about the properties used to find the object. You can use this information to modify the recorded test object description, so that QTP can find the object using the description in future run sessions.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;3)&lt;/span&gt; Normal result details for the performed step.&lt;br /&gt;&lt;br /&gt;The following screenshot displays the results for a test in which Smart Identification was used to identify the userName WebEdit object after one of the recorded description property values have changed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLa1Dkh5MI/AAAAAAAAAG4/eK6phuFWSkw/s1600-h/Smart+Identification+1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5238489921611752642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLa1Dkh5MI/AAAAAAAAAG4/eK6phuFWSkw/s400/Smart+Identification+1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Scenario –2: Multiple Object Match the Recorded Description&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If QTP happens to successfully use the Smart Identification feature to recognize an object after multiple objects have been found to match the recorded description, QTP shows the Smart Identification information in the Test Results window. The step still receives a ‘Passed’ status, because in most of the cases, if Smart Identification was not used, the test object description plus the ordinal identifier could have potentially identified the object. In such a situation, the Test Results shows information like the following in the results details:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1)&lt;/span&gt; An indication that the Smart Identification mechanism has successfully found the object, and information about the properties used to find the object.&lt;br /&gt;&lt;br /&gt;This information can be used to create a unique object description for the object, so that QTP can find the object using this description in the future run sessions.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2)&lt;/span&gt; Normal result details for the performed step.&lt;br /&gt;&lt;br /&gt;The following screenshot displays the results for a test in which Smart Identification was used uniquely identifies the Home object after the recorded description resulted in multiple matches.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLbt1au_EI/AAAAAAAAAHA/8axMeyD_NJw/s1600-h/Smart+Identification+2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5238490897065114690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLbt1au_EI/AAAAAAAAAHA/8axMeyD_NJw/s400/Smart+Identification+2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If the Smart Identification mechanism cannot successfully identify the object, the test fails and a normal failed step is displayed in the Test Results.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Smart Identification Feature of QTP uses two types of properties:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;a) Base filter properties:&lt;/span&gt; Are the most fundamental properties of a particular test object class. Her we can not change their values without changing the essence of the original object.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;b) Optional filter properties:&lt;/span&gt; Are other properties, which help us in identifying the objects of a particular class since these are not likely to get changed frequently. These properties can be ignored in case these are not applicable any more.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;Smart Identification Example: (Ref. Quick Test Professional 9.0 – Help Guide)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The object identification process for an object is described through the following example in great detail.&lt;br /&gt;&lt;br /&gt;Suppose you have the following statement in your test or component:&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0); FONT-STYLE: italic"&gt;Browser("Mercury Tours").Page("Mercury Tours").Image("Login").Click 22,17&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you created your test or component, QTP learned the following object description for the Login image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SLLc7EXeXKI/AAAAAAAAAHI/WbfOFeQim0c/s1600-h/Smart+Identification+3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5238492223927901346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_LFOEX-ZBxzg/SLLc7EXeXKI/AAAAAAAAAHI/WbfOFeQim0c/s400/Smart+Identification+3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;However, at some point after you created your test or component, a second login button (for logging into the VIP section of the Web site) was added to the page, so the Web designer changed the original Login button's alt tag to: basic login.&lt;br /&gt;&lt;br /&gt;The default description for Web Image objects (alt, html tag, image type) works for most images in your site, but it no longer works for the Login image, because that image's alt property no longer matches the learned description. Therefore, when you run your test or component, QTP is unable to identify the Login button based on the learned description. However, QTP succeeds in identifying the Login button using its Smart Identification definition.&lt;br /&gt;&lt;br /&gt;The explanation below describes the process that QTP uses to find the Login object using Smart Identification:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1)&lt;/span&gt; According to the Smart Identification definition for Web image objects, QTP learned the values of the following properties when you recorded the click on the Login image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLde2ZmepI/AAAAAAAAAHQ/aptZTDYFTrQ/s1600-h/Smart+Identification+4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5238492838654016146" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLde2ZmepI/AAAAAAAAAHQ/aptZTDYFTrQ/s400/Smart+Identification+4.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The learned values are as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;Base Filter Properties:&lt;/span&gt;&lt;br /&gt;_____________&lt;br /&gt;Property Value&lt;br /&gt;______________&lt;br /&gt;html tag INPUT&lt;br /&gt;______________&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;Optional Filter Properties:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLlHtuHkjI/AAAAAAAAAHY/1jIiLi4bztI/s1600-h/Optional+Filter.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5238501237280182834" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLlHtuHkjI/AAAAAAAAAHY/1jIiLi4bztI/s400/Optional+Filter.JPG" border="0" /&gt;&lt;/a&gt;&lt;null&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2)&lt;/span&gt; QTP begins the Smart Identification process by identifying the five objects on the Mercury Tours page that match the base filter properties definition (html tag = INPUT and image type = Image Button). QTP considers these to be the object candidates and begins checking the object candidates against the Optional Filter Properties list.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;3)&lt;/span&gt; QTP checks the alt property of each of the object candidates, but none have the alt value: Login, so QTP ignores this property and moves on to the next one.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;4)&lt;/span&gt; QTP checks the name property of each of the object candidates, and finds that two of the objects (both the basic and VIP Login buttons) have the name: login. QTP filters out the other three objects from the list, and these two login buttons become the new object candidates.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;5)&lt;/span&gt; QTP checks the file name property of the two remaining object candidates. Only one of them has the file name login.gif, so QTP correctly concludes that it has found the Login button and clicks it.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;How to Disable Smart Identification During the run Session:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Selection of the option “Disable Smart Identification during the run session”, Instructs QTP not to use the Smart Identification mechanism during the run session.&lt;br /&gt;&lt;br /&gt;When we select this option, the Enable Smart Identification check boxes in the Object Properties and Object Repository dialog boxes get disabled, although the settings are saved. However when you clear this option, the Enable Smart Identification check boxes return to their previous on or off setting.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="FONT-WEIGHT: bold; FONT-STYLE: italic"&gt;When should we use Smart Identification feature of QTP?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As per the suggested best practice we should disable Smart Identification while creating the test cases, so that we are able to recognize the objects which are dynamic or inconsistent in their properties. Moreover once the script gets created, the Smart Identification should be enabled, so that the script does not fail in case of any small change.&lt;br /&gt;&lt;br /&gt;However the scriptwriter should always check for the test results to verify if the Smart Identification feature had been used to identify a object or not. Sometimes Smart Identification needs to be disabled for particular objects in the OR, this is advisable when you use SetTOProperty to change any of the TO properties of an object and especially ordinal identifiers like index, location and creation time.&lt;br /&gt;&lt;br /&gt;Keywords: QTP, quicktest, hp, qtp smart identification&lt;br /&gt;&lt;/null&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3468389096165553227?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3468389096165553227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3468389096165553227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3468389096165553227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3468389096165553227'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/smart-identification-fantastic-feature.html' title='Smart Identification: A Fantastic Feature of QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LFOEX-ZBxzg/SLLa1Dkh5MI/AAAAAAAAAG4/eK6phuFWSkw/s72-c/Smart+Identification+1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7353621417848016987</id><published>2008-08-08T15:12:00.000+05:30</published><updated>2008-09-02T15:13:23.187+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='QTP Questions'/><title type='text'>Frequently Asked Interview Questions on QTP</title><content type='html'>&lt;strong&gt;Following Frequently Asked Questions shall be quite helpful in making a reasonably good foundation for attending an interview on QTP.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 1. What are the salient features of QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;# It is an automated functional Graphical User Interface testing tool.&lt;br /&gt;&lt;br /&gt;# It can easily handle "Non-UI" based Test Cases as well. Like API (Certification testing &amp;amp; Database Testing etc.&lt;br /&gt;&lt;br /&gt;# It is meant for automation of user actions on a web or client based computer application.&lt;br /&gt;&lt;br /&gt;# It is primarily used for functional regression test automation. # It uses a scripting language based on VBScript&lt;br /&gt;&lt;br /&gt;# It has an excellent error handling mechanism.# It has excellent data driven testing features.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 2. What is Recovery in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Exception handling is called Recovery in QTP. Its primary aim is to enable the tests to continue to run in case of an occurrence of an unexpected failure. For example if an application crash occurs and a message dialog appears, QTP can be instructed to attempt to restart the application and continue with the rest of the test cases from there onwards.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 3. What is a Checkpoint in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;In QTP, Checkpoint is used to verify the application under test. It can introduce a checkpoint to verify as to whether a particular object, text or a bitmap is present in the automation run.&lt;br /&gt;&lt;br /&gt;During a test execution, a checkpoint verifies that the behavior or state of the actual application is consistent with the expected application or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 4. How many types of checkpoints are available in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;1) Standard Checkpoint&lt;/strong&gt; - for checking the properties of an object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Table Checkpoint&lt;/strong&gt; – for checking the properties of a table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3) Image Checkpoint&lt;/strong&gt; – for checking the properties of an image.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4) Bitmap Checkpoint&lt;/strong&gt; – for comparing an area of the application under test pixel-by-pixel with the screen as seen at record-time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5) Database Checkpoint&lt;/strong&gt; for automating the back-end testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6) Text Checkpoint&lt;/strong&gt; – for checking that a section of text is found between two other sections of text.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7) Text Area Checkpoint&lt;br /&gt;&lt;br /&gt;8) Page Checkpoint&lt;/strong&gt; – for checking the properties of a web page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9) Accessibility Checkpoint&lt;/strong&gt; – for checking the accessibility of an application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10) XML Checkpoint&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 5. How many types of main views of a script are available in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP provides two main views of a script. These are&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1) Keyword View:&lt;/strong&gt; is the default test procedure interface of QTP &amp;amp; is most useful for the beginners. It displays the automation steps of a test procedure as a descriptive tree of Actions and functions. The tree contains columns listing the Action or function name, any parameters, and comments.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2) Expert View:&lt;/strong&gt; is most suitable for the advanced users, enabling them to customize the test, like writing user-defined functions. It is meant for displaying and editing of the source code of the test. Except for the root Global action, all other test actions can be edited here. Expert View acts as an IDE for the test. It includes most standard IDE features, such as breakpoints.&lt;br /&gt;&lt;br /&gt;Both Keyword View &amp;amp; the Expert View can be selected from tabs available at the bottom of the QTP window.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 6. How results are generated in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;At the end of the test, QTP generates a result file for the test cases, which is in the form of a XML tree.&lt;br /&gt;&lt;br /&gt;This results file provides detail regarding ‘Pass’ or ‘Fail’ counts, error messages, and all supporting information which allows the user to diagnose the main cause of a failure.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 7. What is a Virtual Object in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Since sometimes complex objects are not recognized &amp;amp; recorded properly by QTP. Hence an experienced user can define that object as a personal virtual object and build a virtual object repository. This way by the concept of Virtual Object, the user can add some sort of support for such complex objects.&lt;br /&gt;&lt;br /&gt;If it is possible to extract the desired information from the object, we can do successful record and playback against that object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 8. How can we handle the exceptions with the help of recovery scenario manager in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;With the help of recovery scenario manager we can recover from unexpected events or errors occurring in the testing environment during the test run. The Recovery Scenario Manager presents a structured wizard which helps us in defining the recovery scenario, like detailed definition of the unexpected event and the operations required to recover from the exception during the run session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Recovery scenario has three steps in handling an exception&lt;br /&gt;a) Triggered Events:&lt;/strong&gt; Is an unexpected event like appearance of a Pop-up window, object state, test run error causing application crash or interruption in our running session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b) Recovery steps:&lt;/strong&gt; are a series of steps required to be performed to enable QTP to proceed further with the process of test after some trigger event has interrupted the run session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;c) Post Recovery Test-Run:&lt;/strong&gt; Are a set of instructions designed to be provided to QTP on proceeding further with the test after some recovery operation has been carried out.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 9. What is the use of Text output value in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Text Output values enable us to view the values which are taken by the application during the run time. If parameterized, the values change for every iteration. Hence by creating output values, we can capture the values which are taken by the application during the run time and output them to the data table.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 10. What is the Object Spy feature in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Object Spy enables us to view both the run-time object methods and the test, object methods associated with an object and to view the syntax for a selected method. It is used as a pointer to point towards an object. It displays the object hierarchy tree and the run-time object methods or test object methods associated with the selected object in the Methods tab of the Object Spy dialog box.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 11. What is Automation Object Model in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Like we use QTP for automating the testing of our applications, we can use the automation object model of QTP to automate its own operations as well. With the help of objects, methods, and properties exposed by the automation object model of QTP along with standard programming elements like loops and conditional statements, we can write programs which can configure QTP options and run tests or components instead of performing these operations manually using the QTP interface.&lt;br /&gt;&lt;br /&gt;Automation programs are especially useful for performing the same tasks several times or on multiple tests or components, or quickly configuring QTP according to the needs for a particular environment or application.&lt;br /&gt;&lt;br /&gt;Most of the dialog boxes in QTP have a corresponding automation object. Most of the options in dialog boxes can be set retrieved using the corresponding object property, and most of the menu commands and other operations have corresponding automation methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 12. What is a Run-Time Data Table in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;During the run session, QTP creates a Runtime Data Table, which is live version of the Data Table associated with our test. During the run session, QTP displays the run-time data in the Data Table pane so that we can see the changes taking place in the Data Table.&lt;br /&gt;&lt;br /&gt;When the run session ends, the Runtime Data Table closes, and the Data Table pane again displays the stored design-time Data Table. Data entered in the run-time Data Table during the run session does not get saved along with the test. The final data from the run-time Data Table gets displayed in the Run-Time Data Table in the Test Results window.&lt;br /&gt;&lt;br /&gt;Runtime Data Table is an excel file, which gets stored in the folder of the test created, its name is Default.xls by default.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 13. What are the properties used by the Smart Identification mechanism?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The Smart Identification mechanism uses two types of properties:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a) Base filter properties:&lt;/strong&gt; Are the most fundamental properties of a particular test object class. Her we can not change their values without changing the essence of the original object.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b) Optional filter properties:&lt;/strong&gt; Are other properties, which help us in identifying the objects of a particular class since these are not likely to get changed frequently. These properties can be ignored in case these are not applicable any more.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 14. How many scripting languages can be used in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Scripts can be written using languages like Visual Basic, XML, JavaScript, Java, HTML&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 15. What are the Commonly used Excel VBA functions.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Common functions are:&lt;br /&gt;a) Coloring of a cell&lt;br /&gt;b) Auto fit cell&lt;br /&gt;c) Setting navigation from link in one cell to other&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 16. How QTP identifies various object?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;During recording QTP identifies various objects and stores them as test objects. For each test object QTP learns a set of default properties called mandatory properties. Simultaneously QTP looks at rest of the objects to check whether these properties are sufficient to uniquely identify the object or not. During the test run, QTP searches for the run time objects, which match with the test objects which, have been captured by it during recording.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 17. What are object repositories in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;When planning and creation of tests is done, we firstly consider how we would like to store the objects in our tests. In QTP, the test objects can be stored in two types of object repositories&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;a) Shared object repository:&lt;/strong&gt; It stores test objects in a file that can be accessed by multiple tests (in read-only mode). If someone is new to QTP, he can prefer to use local object repositories. This way he can record and run the tests without creating, choosing, or modifying shared object repositories because all objects are automatically getting saved in a local object repository which can be accessed by its corresponding action.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b) Local object repository:&lt;/strong&gt; It stores objects in a file that is associated with one specific action, so that only that action can access the stored objects. If someone is familiar with QTP testing, he can find that it is quite efficient to save the objects in a shared object repository. This way, he can use the same shared object repository for multiple actions - if the actions include the same objects. Test object information that applies to many actions is kept in one centralized location. When the objects in the application change, we can update them in one location for all the actions that use this shared object repository.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 18. How QTP recognizes objects in object repositories?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Object Repository displays a tree of all the objects in the current component or in the current action or in the entire test , depending on the object repository mode selected by the user. We can view or modify the test object description of any test object in the repository or to add new objects to the repository.&lt;br /&gt;&lt;br /&gt;QTP remembers the default property values and determines in which test object class it fits. If it is not found enough it automatically adds assistive properties, one by one to the description until it successfully compiles the unique description. If no assistive properties are available, then it adds a special Ordinal identifier such as object location on the page or in the source code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 19. Is there any built-in function for scripting in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;QTP uses an in-built functionality called "Step Generator" to create scripts while appropriate steps are entered into it. Step Generator utility enables us to add steps by selecting from a range of context-sensitive options and entering the required values.&lt;br /&gt;&lt;br /&gt;We can open the Step Generator from the Keyword View or Expert View while recording or editing our test. We can also open the Step Generator from the Active Screen while editing.&lt;br /&gt;&lt;br /&gt;Method to open the Step Generator from a function library is as under&lt;br /&gt;a) In the function library, click the location in which you want to insert the new step.&lt;br /&gt;&lt;br /&gt;b) Choose Insert &gt; Step Generator, or right-click and choose Step Generator. Alternatively, press F7.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 20. How many types of Actions are there in QTP?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;QTP uses following three kinds of actions:&lt;br /&gt;&lt;strong&gt;a) Non-reusable action&lt;/strong&gt; - can be called only in the test with which it is stored, and can be called only once.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;b) Reusable action&lt;/strong&gt; - can be called multiple times by the test with which it is stored (the local test) as well as by other tests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;c) External action&lt;/strong&gt; – is a reusable action which is stored with another test. External actions are read-only in the calling test, but we can choose to use a local, editable copy of the Data Table information for the external action.&lt;br /&gt;&lt;br /&gt;By default, all new actions are non-reusable. We can mark every action created by us in the test as reusable or non-reusable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 21. How can we parameterize property values in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Data Driver feature enables us to quickly parameterize several property values for the test objects, checkpoints, and method arguments containing the same constant value within a given action.&lt;br /&gt;&lt;br /&gt;We can choose to replace all occurrences of a selected constant value with a parameter, in the same way that we can use a Find and Replace All operation instead of a step-by-step Find and Replace process. QTP can also show us each occurrence of the constant so that we can decide as to whether to parameterize the value or not.&lt;br /&gt;&lt;br /&gt;Method to parameterize a value using the Data Driver is as under:&lt;br /&gt;a) Display the action you want to parameterize.&lt;br /&gt;&lt;br /&gt;b) Choose Tools &gt; Data Driver.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 22. How can we modify the properties of test object in QTP?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;We can modify an object by modifying any one of its property values or by changing the set of properties used to identify the particular object. This can be done for objects in the local object repository with the help of Object Repository window, and for objects in the shared object repository using the Object Repository Manager.&lt;br /&gt;&lt;br /&gt;Method to modify an object property is as under:&lt;br /&gt;a) Right-click the step containing the object that changed, and choose Object Properties or choose Edit &gt; Step Properties &gt; Object Properties from the menu bar.&lt;br /&gt;&lt;br /&gt;b) The Object Properties dialog box opens and displays the properties QuickTest uses to identify the object.&lt;br /&gt;&lt;br /&gt;c) Modify the properties and values as required.&lt;br /&gt;&lt;br /&gt;d) Click OK to close the dialog box.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 23. How to retrieve the property of an object?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;We can retrieve the property of an object by the use of "GetRoProperty".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 24. How to open or close any application during Scripting?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;During a run session, we can use SystemUtil, object to open and close the applications and processes.The SystemUtil.Run statement gets automatically added to the test when we run an application from the Start menu or the Run dialog box while recording a test.E.g : SystemUtil.Run "Notepad.exe" SystemUtil.CloseDescendentProcesses ( Closes all the processes opened by QTP )&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Q 25. Why use Regular Expressions?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Regular expressions are used to increase the flexibility and adaptability of the tests. Regular expressions enable QTP to identify objects and text strings with varying values.&lt;br /&gt;&lt;br /&gt;Regular expressions can be used while defining the properties of an object, the methods of an argument, while parameterizing a step, and while creating checkpoints with varying values&lt;br /&gt;&lt;br /&gt;Key Word: FAQ, Frequently Asked Question, QTP, Quicktest professional, Interview question&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7353621417848016987?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7353621417848016987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7353621417848016987' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7353621417848016987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7353621417848016987'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/qtp-interview-questions.html' title='Frequently Asked Interview Questions on QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6124529335720572427</id><published>2008-08-02T20:40:00.005+05:30</published><updated>2008-08-20T08:22:00.043+05:30</updated><title type='text'>Creating MS Word document inside QTP</title><content type='html'>&lt;div class="storycontent"&gt;   &lt;div class="snap_preview"&gt;&lt;div class="snap_preview"&gt; &lt;p&gt;How many of you guys ever thought of creating a MS doc file with the help of QTP. It is in fact quite simple to create one. Let me show you a sample script of creating a very simple document in MS Word.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;   &lt;p&gt;&lt;/p&gt;Dim obj_MSWord&lt;br /&gt;Set obj_MSWord = CreateObject("Word.Application")&lt;br /&gt;obj_MSWord.Documents.Add&lt;br /&gt;obj_MSWord.Selection.TypeText "This is a simple text"&lt;br /&gt;obj_MSWord.ActiveDocument.SaveAs "D:\Expert.doc"&lt;br /&gt;obj_MSWord.Quit&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;  &lt;div class="snap_preview"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Now you will try to copy paste this code in your QTP but due to some formatting problems you may not get the proper format. Please take care of the quotes before Word.Application. These should be double quotes else your script wont run.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Think of this scenario&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; &lt;/span&gt;. Lets say I have already opened MS Word document. Now I want to save it into my PC. The script is slightly different from the one shown above.Any idea what should be the code??&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6124529335720572427?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6124529335720572427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6124529335720572427' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6124529335720572427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6124529335720572427'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/08/creating-ms-word-document-inside-qtp.html' title='Creating MS Word document inside QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-1355496767872353504</id><published>2008-07-21T15:25:00.004+05:30</published><updated>2008-10-27T18:40:19.954+05:30</updated><title type='text'>QTP Download</title><content type='html'>Hi All,&lt;br /&gt;&lt;br /&gt;You can download QTP from the following rapidshare link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/71379877/Quicktest_Professional_v9.2.part1.rar" target="_blank"&gt;http://rapidshare.com/files/71379877/Quicktest_Professional_v9.2.part1.rar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/71389900/Quicktest_Professional_v9.2.part2.rar" target="_blank"&gt;http://rapidshare.com/files/71389900/Quicktest_Professional_v9.2.part2.rar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/71423634/Quicktest_Professional_v9.2.part3.rar" target="_blank"&gt;http://rapidshare.com/files/71423634/Quicktest_Professional_v9.2.part3.rar&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/71300660/Quicktest_Professional_v9.2.part4.rar" target="_blank"&gt;http://rapidshare.com/files/71300660/Quicktest_Professional_v9.2.part4.rar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ExpertQTP&lt;br /&gt;&lt;a href="http://quicktesthp.blogspot.com/"&gt;http://quicktesthp.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Keywords: QTP, download QTP, QuickTest Professional, QTP help, QTP features, QTP Certification, QTP Rapidshare download, QTP Download rapidshare&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-1355496767872353504?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/1355496767872353504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=1355496767872353504' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1355496767872353504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1355496767872353504'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/07/qtp-download.html' title='QTP Download'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3191441052106858163</id><published>2008-07-08T10:55:00.006+05:30</published><updated>2008-07-19T09:53:39.914+05:30</updated><title type='text'>QTP Certification Practice Questions Part2</title><content type='html'>&lt;span style="color: rgb(51, 0, 51); font-weight: bold;"&gt;Do you have some better article to contribute related to QTP? If yes, then mail me on expert.qtp@gmail.com &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51); font-weight: bold;"&gt;Names of contributors will also be published along with the post.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:180%;" &gt;&lt;span style="font-style: italic;"&gt;I will post the answers once you guys actually try it on your own&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. The toolbar enables you to view the details of an individual action or the entire test flow is:&lt;/span&gt;&lt;br /&gt;A. Testing toolbar&lt;br /&gt;B. None of the above&lt;br /&gt;C. Action toolbar&lt;br /&gt;D. Test Pane&lt;a id="KonaLink0" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.chetanasforum.com/index.php?showtopic=7898#"&gt;&lt;span style="font-family:Verdana,Tahoma,Arial;"&gt;&lt;span class="kLink" style="border-bottom: 1px solid blue; color: rgb(176, 0, 0);font-family:Verdana,Tahoma,Arial;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. The key that is used to Start/End analog recording mode ?&lt;/span&gt;&lt;br /&gt;A. F3&lt;br /&gt;B. SHIFT+ALT+F3&lt;br /&gt;C. CTRL+SHIFT+F3&lt;br /&gt;D. F10&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. QuickTest supports virtual object for analog or low-level recording.&lt;/span&gt;&lt;br /&gt;A. False&lt;br /&gt;B. True&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. To use a specific property to identify your object, but that property is not listed in the properties list. Then how do you identify that object?&lt;/span&gt;&lt;br /&gt;A. Add the specific property to the list&lt;br /&gt;B. Use the Default property&lt;br /&gt;C. Use some other property to identify your object&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. The checkpoint used to check the alt attribute exists for all relevant objects (such as images) is&lt;/span&gt;&lt;br /&gt;A. &lt;a id="KonaLink1" target="_top" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://www.chetanasforum.com/index.php?showtopic=7898#"&gt;&lt;span style="font-family:Verdana,Tahoma,Arial;"&gt;&lt;span class="kLink"  style="font-family:Verdana,Tahoma,Arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;Database CheckPoint&lt;br /&gt;B. Accessibility checkpoint&lt;br /&gt;C. Bitmap checkpoint&lt;br /&gt;D. Standard checkpoint&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; 6. Bitmap checkpoint is supported in VB environment.&lt;/span&gt;&lt;br /&gt;A. True&lt;br /&gt;B. False&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Can we parameterize the checkpoints properties?&lt;/span&gt;&lt;br /&gt;A. No&lt;br /&gt;B. Yes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. What is the shortcut key that is used for a Standard Checkpoint?&lt;/span&gt;&lt;br /&gt;A. F12&lt;br /&gt;B. F2&lt;br /&gt;C. F10&lt;br /&gt;D. F7&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;9. Can we change name of checkpoint?&lt;/span&gt;&lt;br /&gt;A. No&lt;br /&gt;B. Yes&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;10. To compare the values of the specified property during a run session with the values stored for the same test object property within the test.&lt;/span&gt;&lt;br /&gt;A. Checkpoint&lt;br /&gt;B. All the above&lt;br /&gt;C. Output Value&lt;br /&gt;D. Compare the object property&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11. You will use which recording mode for an object not recognized by QuickTest?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A. Low-Level Recording Mode&lt;br /&gt;B. Normal recording Mode&lt;br /&gt;C. Analog Mode&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;12. The statement that calls the recorded analog file is:&lt;/span&gt;&lt;br /&gt;A. RunAnalog&lt;br /&gt;B. CallAnalog&lt;br /&gt;C. ExecuteAnalog&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;13. An action can be called by other tests or actions is:&lt;/span&gt;&lt;br /&gt;A. Call Action&lt;br /&gt;B. Split Action&lt;br /&gt;C. Reusable Action&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;14. You can replace the page in your Active Screen tab:&lt;/span&gt;&lt;br /&gt;A. False&lt;br /&gt;B. True&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;15. QuickTest adds a checkpoint statement in the Expert View as:&lt;/span&gt;&lt;br /&gt;A. Check Checkpoint&lt;br /&gt;B. Checkpoint&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;16. A Checkpoint checks that a text string is displayed within a defined area in a Windows application is:&lt;/span&gt;&lt;br /&gt;A. Accessibility&lt;br /&gt;B. Text Area&lt;br /&gt;C. Standard&lt;br /&gt;D. Text&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;17. In ACTIVE X environment, an ACCESSIBILITY checkpoint is supported?&lt;/span&gt;&lt;br /&gt;A. No&lt;br /&gt;B. Yes&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;18. Can we get the execution time for an action in a Test?&lt;/span&gt;&lt;br /&gt;A. Yes&lt;br /&gt;B. No&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;19. Can we add external library files in QTP?&lt;/span&gt;&lt;br /&gt;1. No&lt;br /&gt;2. Yes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;20. The method used to get data from HTML Table is&lt;/span&gt;&lt;br /&gt;A. GetData(Row,Col)&lt;br /&gt;B. GetRowValue(Rowid,Colname)&lt;br /&gt;C. GetCellData (Row,Col)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;21. The Command used to insert the transactions in test is:&lt;/span&gt;&lt;br /&gt;A. StartTransaction(Name), EndTransaction(Name)&lt;br /&gt;B. Services.StartTransaction "Name", Services.EndTransaction "Name"&lt;br /&gt;C. StartTransaction.services "Name, EndTransaction.services "Name"&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;22. A step in which one or more values are captured at a specific point in your test and stored for the duration of the run session is:&lt;/span&gt;&lt;br /&gt;A. Output Value&lt;br /&gt;B. Checkpoints&lt;br /&gt;C. Active Screen&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;23. QuickTest can detects an application crash and activate a defined recovery scenario to continue the run session.&lt;/span&gt;&lt;br /&gt;A. True&lt;br /&gt;B. false&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;24. In Batch Test process, the test list are saved in file format as:&lt;/span&gt;&lt;br /&gt;A. *.mtb&lt;br /&gt;B. *.mts&lt;br /&gt;C. *.mbt&lt;br /&gt;D. *.mtr&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;25. The command used to invoke other application from QTP:&lt;/span&gt;&lt;br /&gt;A. InvokeApplication&lt;br /&gt;B. SystemUtil.Run&lt;br /&gt;C. Run&lt;br /&gt;D. Both b &amp;amp; c&lt;br /&gt;E. Both a &amp;amp; b&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;26. The command used to retrieve data from excel sheet is&lt;/span&gt;&lt;br /&gt;A. Set ab = Connection("srcfilepath ") , Set ws = ab.getdata(sheetid)&lt;br /&gt;B. Set ab = CreateObject("srcfilepath ") , Set ws = ab.getsheet(sheetid)&lt;br /&gt;C. Set ab = GetObject("srcfilepath") , Set ws = ab.worksheets(sheetid)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;27. The method that explicitly activates the recovery scenario mechanism is:&lt;/span&gt;&lt;br /&gt;A. recovery.activate&lt;br /&gt;B. enable&lt;br /&gt;C. recovery.enable&lt;br /&gt;D. activate&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;28. The method used for sending information to the test results is:&lt;/span&gt;&lt;br /&gt;A. Reporter.log()&lt;br /&gt;B. Reporter.reportevent()&lt;br /&gt;C. Reporter.msgbox()&lt;br /&gt;D. Reporter.report()&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;29. To terminate an application that is not responding we use:&lt;/span&gt;&lt;br /&gt;A. SystemUtil.terminate&lt;br /&gt;B. SystemUtil.Stop&lt;br /&gt;C. SystemUtil.CloseProcessByName&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;30. The recovery mechanism does not handle triggers that occur in the last step of a test:&lt;/span&gt;&lt;br /&gt;A. false&lt;br /&gt;B. True&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;31. We can add Test object methods&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;, function calls into the Test using:&lt;/span&gt;&lt;br /&gt;A. Function generator&lt;br /&gt;B. Step generator&lt;br /&gt;C. Object repository&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;32. The method that adds to the test while implementing synchronization is:&lt;/span&gt;&lt;br /&gt;A. Synchronize&lt;br /&gt;B. Wait&lt;br /&gt;C. WaitProperty&lt;br /&gt;D. Pause&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;33. The mechanism used to identify objects during run session is:&lt;/span&gt;&lt;br /&gt;A. Recovery scenario&lt;br /&gt;B. Smart identification&lt;br /&gt;C. Handling object&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;34. Post-recovery test run options specifies:&lt;/span&gt;&lt;br /&gt;A. how to continue the run session after QTP identify the event&lt;br /&gt;B. errors while running&lt;br /&gt;C. recovery scenario during a run session&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;35. The action that can be called multiple times by the test as well as by other tests is called:&lt;/span&gt;&lt;br /&gt;A. non-reusable action&lt;br /&gt;B. Reusable action&lt;br /&gt;C. External action&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;36. The command used to connect with Database is:&lt;/span&gt;&lt;br /&gt;A. Createobject(connectivity name)&lt;br /&gt;B. dbconnect(connectivity name)&lt;br /&gt;C. open(connectivity name)&lt;br /&gt;D. None of the above&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;37. The method used to retrieve the folders is:&lt;/span&gt;&lt;br /&gt;A. FileSystemObject.Getfolder()&lt;br /&gt;B. FileSystemObject.selectfolder()&lt;br /&gt;C. FileSystemObject.retrievefolder()&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;38. The method used to compare 2 XML files &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;is:&lt;/span&gt;&lt;br /&gt;A1. XMLfile1.compare(XMLfile2)&lt;br /&gt;B. XMLcompare(file1,file2)&lt;br /&gt;C. compare(XMLfile1,XMLfile2)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;39. The QTP script files are stored in the extension of:&lt;/span&gt;&lt;br /&gt;A. *.mts&lt;br /&gt;B. *.usr&lt;br /&gt;C. *.mtr&lt;br /&gt;D. *.vbs&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;40. The method used to register the user-defined function with test object is:&lt;/span&gt;&lt;br /&gt;A. setFunc()&lt;br /&gt;B. RegisterUserFunc()&lt;br /&gt;C. RegisterFunc()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;41. The method used to open the specified URL in a browser is:&lt;/span&gt;&lt;br /&gt;A. openURL()&lt;br /&gt;B. navigateURL()&lt;br /&gt;C. navigate()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;42. The 3 Parameter types available in data driver is:&lt;/span&gt;&lt;br /&gt;A. DataTable,Environment,Random number&lt;br /&gt;B. DataTable,random number,unique&lt;br /&gt;C. environment,string,numeric&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;43. The method added to the test while parameterizing is:&lt;/span&gt;&lt;br /&gt;A. get Data (variable, dtGlobalSheet)&lt;br /&gt;B. get DataTable(variable, dtGlobalSheet)&lt;br /&gt;C. Set Data(variable, dtGlobalSheet)&lt;br /&gt;D. Set DataTable(variable, dtGlobalSheet)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;44. The length of the array can be get by the method:&lt;/span&gt;&lt;br /&gt;A. length(array)&lt;br /&gt;B. ubound(array)&lt;br /&gt;C. count(array)&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;45. The method used to get the count value of list box or combo box is:&lt;/span&gt;&lt;br /&gt;A. GetItemsCount&lt;br /&gt;B. GetCount&lt;br /&gt;C. GetItemCount&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;46. To retrieve the current &lt;/span&gt;&lt;span style="font-weight: bold;"&gt; the objects in your application during the run session:&lt;/span&gt;&lt;br /&gt;A. GetVisibleText&lt;br /&gt;B. GetROProperty&lt;br /&gt;C. SetROProperty&lt;br /&gt;D. GetTOProperty&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;47. The list of test objects and their properties and values are stored in the:&lt;/span&gt;&lt;br /&gt;A. Object Repository&lt;br /&gt;B. Object Identification&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-weight: bold;"&gt;48. The method used to continue the test execution after getting run-time error is:&lt;/span&gt;&lt;br /&gt;1. On Error Resume Next&lt;br /&gt;2. On Error Raise Next&lt;br /&gt;3. On Error Next&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Please post your answers in the chat box. Then I will post you my answers.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Keywords: QTP Certification, QTP sample questions, QTP Features, quicktest, quick test professional, hp&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3191441052106858163?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3191441052106858163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3191441052106858163' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3191441052106858163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3191441052106858163'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/07/qtp-certification-practice-questions.html' title='QTP Certification Practice Questions Part2'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-5708169779866894584</id><published>2008-07-06T13:56:00.002+05:30</published><updated>2008-07-07T11:47:36.143+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Challenges in Regression Testing'/><title type='text'>Challenges in Regression Testing- Why we go for Automation</title><content type='html'>&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);font-size:130%;" &gt;Challenges in Regression Testing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Eventually, in any software system, users may defects or we can say bugs in the&lt;br /&gt;developed program. Normally, these bugs are fixed, the fixes are then tested, and the updated&lt;br /&gt;software is released back to the users . However, since the software is so tightly coupled or we can due to the interconnected nature of software, even the smallest change can wreak&lt;br /&gt;unpredictable havoc when the implications of that change are not properly understood.&lt;br /&gt;&lt;br /&gt;Any software change, even one that corrects a known defect, can affect&lt;br /&gt;a system in an unforeseen manner and potentially cause problems that are worse&lt;br /&gt;than those that the change was originally trying to address.&lt;br /&gt;&lt;br /&gt;Regression testing is the practice of retesting of a software system that has been&lt;br /&gt;modified to ensure that no previously-working functions have failed as a result of&lt;br /&gt;defect reparations or newly added functionality.&lt;br /&gt;&lt;br /&gt;Comprehensive regression testing fully ensures that a software system is functioning as designed. Comprehensive regression testing, however, is rarely feasible, given the time and resource constraints placed on the typical software development team.&lt;br /&gt;&lt;br /&gt;As a software system expands and evolves, it becomes more and more difficult to test every piece of functionality. This problem is compounded by the frequency of software builds. In an&lt;br /&gt;environment where software builds are done on a nightly basis, comprehensive&lt;br /&gt;regression testing of every build is essentially impossible. Typically, in these&lt;br /&gt;environments, the testing of previous functionality is foregone to allow for testing of&lt;br /&gt;new fixes and new functionality. This leaves open the possibility that the software&lt;br /&gt;team will release software with undiscovered defects.&lt;br /&gt;&lt;br /&gt;Hence we go for an Automation tool that helps us in addressing these challenges. Through an Automation tool, we create scripts and which are quite helpful in retesting the original system's functionality. Every time we get a new build, we execute the created automation scripts to check the previous working functionality. And the most important benefit of automation is that we can execute scripts in an unattended mode means it frees QA persons to do other important tasks while the scripts are running automatically.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Please post your comments in the Chat box....&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;ExpertQTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-5708169779866894584?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/5708169779866894584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=5708169779866894584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5708169779866894584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5708169779866894584'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/07/challenges-in-regression-testing-why-we_06.html' title='Challenges in Regression Testing- Why we go for Automation'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-725534544523392755</id><published>2008-06-30T11:23:00.012+05:30</published><updated>2008-07-21T16:22:19.993+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='QTP Certification Practice'/><title type='text'>QTP Certification Practice Questions To Test Your Skills-1</title><content type='html'>&lt;span style="font-weight: bold; color: rgb(51, 51, 255); font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;I have posted the answers below.&lt;br /&gt;&lt;/span&gt;&lt;p style="font-weight: bold;"&gt;1. How many tabs are there in Test Settings (File-&gt;Settings) window&lt;/p&gt;  &lt;p&gt;A) 5&lt;br /&gt;B) 6&lt;br /&gt;C) 7&lt;br /&gt;D) 8&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;2. 'Browser navigation timeout' is in which tab of Test Settings  (File-&gt;Settings) window?&lt;/p&gt; &lt;p&gt;A) Properties&lt;br /&gt;B) Resources&lt;br /&gt;C) Web&lt;br /&gt;D) Web Settings&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;3. Identify the tabs in the Test Settings (File-&gt;Settings) window&lt;/p&gt; &lt;p&gt;A) Properties, Run, Resources, Parameters, Environment, Web, Recovery&lt;br /&gt;B)  Properties, Run, Resources, Parameters, Environment, Web Settings,Recovery&lt;br /&gt;C)  Properties, Run Options, Resources, Parameters, Environment, Web, Recovery&lt;br /&gt;D)  Properties, Run, Resources, Input Parameters, Environment, Web, Recovery&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;4. 'Generate Script' is in which tab of Test Settings (File-&gt;Settings)  window&lt;/p&gt; &lt;p&gt;A) Properties&lt;br /&gt;B) Resources&lt;br /&gt;C) Web&lt;br /&gt;D) Recovery&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;5. For each object and method in an Expert View statement, a corresponding  row exists in the Keyword View.&lt;/p&gt; &lt;p&gt;A) True&lt;br /&gt;B) False&lt;br /&gt;C) There is some problem with the statement.&lt;br /&gt;D) None  of above&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;6. The following are the four main columns in the Keyword view&lt;/p&gt; &lt;p&gt;A) Item, Operation, Value, Comments&lt;br /&gt;B) Item, Operation, Value,  Documentation&lt;br /&gt;C) Item, Operation, Property, Documentation&lt;br /&gt;D) Number,  Operation, Value, Documentation&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;7. You can work on one or several function libraries at the same time.&lt;/p&gt; &lt;p&gt;A) True&lt;br /&gt;B) False&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;8. You can insert additional steps on the test objects captured in the Active  screen after the recording session.&lt;/p&gt; &lt;p&gt;A) True&lt;br /&gt;B) False&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;9. The Active Screen enables you to parameterize object values and insert  checkpoints&lt;/p&gt; &lt;p&gt;A) True&lt;br /&gt;B) False&lt;/p&gt; &lt;p style="font-weight: bold;"&gt;10. A QTP user can increase or decrease the active screen information saved  with the test.&lt;/p&gt; &lt;p&gt;A) True&lt;br /&gt;B) False&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="color: rgb(51, 0, 51);"&gt;Answers:&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;1. C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;2. C&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;3. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;4. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;5. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;6. B&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;7. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;8. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;9. A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;10.A&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-725534544523392755?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/725534544523392755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=725534544523392755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/725534544523392755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/725534544523392755'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/qtp-questions-to-test-your-skills-1.html' title='QTP Certification Practice Questions To Test Your Skills-1'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6492077128618356474</id><published>2008-06-29T16:46:00.000+05:30</published><updated>2008-09-06T16:52:18.314+05:30</updated><title type='text'>Am I doing Too Little or Too Much Automation.</title><content type='html'>We shall be able to count a large number of possible test cases for any system although fact may be that we might be having too little a time to execute only a few of them. Even if this number may be small, still we would expect to detect majority of our bugs out of these whatever small number of test cases.&lt;br /&gt;&lt;br /&gt;Hence identification of test cases to be created &amp;amp; to be executed is an important activity. Random selection of our test cases is not a good approach for testing. Hence for the development of good test cases, a carefully designed approach is necessary&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Am I trying to do too much of Automation:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;Testers usually commit this common mistake of doing too much of automation &amp;amp; that also too soon. Intuitively, testers would be tempted to feel that having more number of automated tests better it would be. But this would be wrong. This belief would leave us with plenty of poorly automated tests, which shall become quite difficult &amp;amp; uneconomical to maintain.&lt;br /&gt;&lt;br /&gt;If we go on adding more &amp;amp; more automated tests we shall land up with unwanted duplication, redundancy &amp;amp; increased cost of their maintenance. Hence it is better to start with small numbers of good but diversified tests and automate them. Here it is ideal to begin with say 10-15 tests involving 2-3 hours of interactive testing.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Am I automating the Wrong Tests:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;It is not wise to attempt to automate every test case just because the benefit of automating some of the tests is outweighing the cost of automating them. In fact some of the test cases cannot be automated however if some dedicated tester pulls up his strings, can get success in automating them at a very high cost but with no tangible benefit.&lt;br /&gt;&lt;br /&gt;However after gaining some reasonable experience of automation testing one can predict with reasonable accuracy the time it will take to automate a particular test. The decision as to which of the test cases to be automated and which of these to be automated first, is quite crucial &amp;amp; is based upon the likely pay back.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#000099;"&gt;Attributes of test case, which can be likely candidate for automation, are as under:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1) Any test which can be expected to run several times. It is quite natural that more the times a test case is made to usefully run the more beneficial an automated version of it will be. Regression tests, which are made to run every time a new version of software is created, are best suitable for automation.&lt;br /&gt;&lt;br /&gt;2) Input verification tests, for example checking that an edit box accepts values in a valid range only. Such tests are quite boring by nature &amp;amp; prone to error for manual operation.&lt;br /&gt;&lt;br /&gt;3) Tests, which are expensive to execute manually, for example multi-user tests, which take a long, time to run.&lt;br /&gt;&lt;br /&gt;4) Tests, which are difficult to execute manually, for example test cases which are timing critical or are complex to execute.&lt;br /&gt;&lt;br /&gt;5) Tests, which require persons having special knowledge, like business knowledge or system’s knowledge can be good candidates for automation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Attributes of test case, which are unlikely to be candidate for automation, are as under:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;1) Any test which will not be expected to run many times. If a test case is not run many times just because there had been no need to run it often (rather than because it could be costly to run it often manually) then it should not be automated.&lt;br /&gt;&lt;br /&gt;2) Test cases, which are not important, will definitely not find important bugs. Naturally, If a bug is not important it is not wise to invest time &amp;amp; money in finding it, especially when such bugs are not going to be fixed.&lt;br /&gt;&lt;br /&gt;3) Usability test, which cannot be automated because usability, is an issue related to human interactions.&lt;br /&gt;&lt;br /&gt;4) Any test which is difficult to automate. Test cases, which would take a lot of effort to automate, are generally not worth automating.&lt;br /&gt;&lt;br /&gt;5) Any test which is expensive to maintain. Even if a test case is quite simple to automate but if it is vulnerable to changes in the software it would not be worth automating, because it would be very costly to maintain it.&lt;br /&gt;&lt;br /&gt;6) A test case which might have a lot of value in itself, but if it duplicates some or all of the value of an existing test case then the value of the new one gets reduced to almost zero. Such test cases are also not worth automating.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;Best Lessons learnt:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1) Where full automation is not warranted, consider partial automation.&lt;br /&gt;&lt;br /&gt;For example, it may be difficult to automate the execution of a particular complex test case but it may be possible and beneficial to automate the comparison of some of the results of the test case with the expected results. Alternatively, where the execution of test case cannot be automated may be due to some technical reasons, but it may be possible and beneficial to automate some parts of it like data preparation and clear-up.&lt;br /&gt;&lt;br /&gt;2) There is a great learning curve in the beginning, hence it is best not to automate many test cases to start with because they may not be as good &amp;amp; fit for automation, compared to the ones we could automate later on after having learnt more about good practices.&lt;br /&gt;&lt;br /&gt;3) It is better to focus on relatively few tests, trying out different implementations and assessing their relative strengths and weaknesses before automating large numbers of tests.&lt;br /&gt;&lt;br /&gt;Remember that many case histories have made startling revelation, that over 70% of bugs are found by manual testing &amp;amp; not by automated testing in-spite of the fact that the automated tests had been designed &amp;amp; developed with great efforts of many years. Hence think well before automating your tests.&lt;br /&gt;&lt;br /&gt;Keyword: Test Automation, Best Practice,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6492077128618356474?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6492077128618356474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6492077128618356474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6492077128618356474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6492077128618356474'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/am-i-doing-too-little-or-too-much.html' title='Am I doing Too Little or Too Much Automation.'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6514396558616085662</id><published>2008-06-18T22:14:00.007+05:30</published><updated>2008-09-06T16:59:49.410+05:30</updated><title type='text'>Points to Think while buying an Automation Tool</title><content type='html'>While deciding to buy a particular automation tool, following key indicators are given due consideration .&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold;color:#000099;" &gt;Automation Tool Evaluation:&lt;/span&gt;&lt;br /&gt;* Platform/OS independence&lt;br /&gt;* Data driven capability&lt;br /&gt;* Customizable Reporting&lt;br /&gt;* Email Notifications&lt;br /&gt;* Easy debugging and logging&lt;br /&gt;* Headless execution for unattended runs&lt;br /&gt;* Support distributed execution environment&lt;br /&gt;* Distributed application support&lt;br /&gt;* Licensing (Cost) and Support&lt;br /&gt;* Ease of use, available training and documentation&lt;br /&gt;&lt;br /&gt;Key Word : Automation, Tool Selection&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6514396558616085662?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6514396558616085662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6514396558616085662' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6514396558616085662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6514396558616085662'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/automation-tool-evaluation.html' title='Points to Think while buying an Automation Tool'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2660656045350453113</id><published>2008-06-15T12:54:00.009+05:30</published><updated>2008-08-23T19:40:17.819+05:30</updated><title type='text'>An Overview of the Testing Process in QTP</title><content type='html'>&lt;div class="post-body"&gt;   &lt;div align="justify"&gt; &lt;p&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255); font-style: italic;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:180%;" &gt;&lt;span style="text-decoration: underline;"&gt;To have an understanding of the basics of QTP, you can visit http://qtpgoodtutorials.blogspot.com&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction to QTP:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;QTP (Quick Test Professional) is an excellent Record/Playback tool which enables us to create tests and business components by doing a live recording of all the operations being performed by us on our application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Introduction to Tests in QTP:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A Test is a set of several steps organized into one or more actions, which can be used to verify the compliance of our application in line with our expectations. In QTP, Test comprises of three types of actions like&lt;br /&gt;&lt;br /&gt;1) Non-reusable action.&lt;br /&gt;2) Reusable action.&lt;br /&gt;3) External action.&lt;br /&gt;&lt;br /&gt;Testing in QTP follows following six simple steps:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 1: Planning&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Prior to building a test in QTP, it is essential to do necessary planning for preparation of a sound infrastructure required. Planning may include:&lt;br /&gt;&lt;br /&gt;a) Making a decision on the functionality we wish to be tested.&lt;br /&gt;&lt;br /&gt;b) Making a decision as to whether to conduct brief tests aimed to check some specific functions of the application or checking the complete application / site.&lt;br /&gt;&lt;br /&gt;c) Making a decision as to how to organize the object repositories.&lt;br /&gt;&lt;br /&gt;&lt;span dragover="true" style="font-weight: bold;"&gt;Step – 2: Creation of Tests or Components&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;In QTP, a test or a component can be created by either of the following:&lt;br /&gt;&lt;br /&gt;Method –1: Recording a session on the Application or the Web site&lt;br /&gt;While doing navigation across our application, each &amp;amp; every step followed by us is graphically displayed by QTP as a row in the “Keyword View”.&lt;br /&gt;&lt;br /&gt;The “Documentation” column of the “Keyword View” displays an easy to understand &amp;amp; self-explanatory description of each &amp;amp; every step taken by us. Here the term “Step” is an activity, which creates some change in our application, like clicking a link or an image or submitting a data form etc. etc.&lt;br /&gt;&lt;br /&gt;Method –2: Building an object repository&lt;br /&gt;An object repository is built &amp;amp; these objects are used to manually add steps in the “Keyword View” or the “Expert View”. The Test or components can subsequently be modified by using special testing options or with programming statements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 3: Insertion of Checkpoints in the Tests or Components&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A checkpoint is a verification point, which draws a comparison among a recent value for some specified property with respect to the expected value for that property. The idea of inserting checkpoints in tests or components is to enables us to identify as to whether the application is functioning properly or not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 4: Replacement of Fixed Values with Parameters&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Fixed values are replaced with parameters thereby broadening the scope of our test.&lt;br /&gt;&lt;br /&gt;The test or component can be parameterized in order to ascertain the performance of the application under different set of input data. When parameterization of test or component is done, QTP automatically replaces the fixed values with parameters. Every execution, which uses a particular set of parameterized data, is known as an “Iteration”.&lt;br /&gt;&lt;br /&gt;“Output Values” can be used to extract the data from our test or component. An “Output Value” is a value retrieved during the run session and subsequently fed into the Data Table or saved as a variable or a parameter. Such Output Value can be used as an Input Data in the Test or Component.&lt;br /&gt;&lt;br /&gt;QTP is a highly versatile functional testing tool having several great features to improve the testing process. We can include several programming statements to QTP process for achieving highly complex testing goals.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 5: Execution of the Test&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Once the Tests or components are created, they are executed to check the application.&lt;br /&gt;&lt;br /&gt;During execution of the test or component, QTP integrates with the application and performs each &amp;amp; every operation in the test or component, checks all text strings, objects, or tables already specified.&lt;br /&gt;&lt;br /&gt;In case parameterization of the test has been done with parameters defined in Data Table, QTP repeats all the specified actions for every set of data values already defined by us.&lt;br /&gt;&lt;br /&gt;Run the tests or components with a view to debug it. We can control the run session to identify and eliminate the defects in them.&lt;br /&gt;&lt;br /&gt;We can use the following commands to execute a test or component step by step.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step Into,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step Over,  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step Out&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Breakpoints can also be defined to pause the test or component at some pre-defined point. We can view the value of all variables in the test or component every time it pauses at some predefined breakpoint in the Debug Viewer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step – 6: Analysis of Results&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;It is the concluding portion of the test after running the test or component.&lt;br /&gt;&lt;br /&gt;Results are viewed in the Results window: We can view a summary of all the results as well as have a detailed report.&lt;br /&gt;&lt;br /&gt;Reporting of Defects: HP Quality Center is a very good Bug Logging tool having excellent compatibility with QTP. All the detected defects can be logged in its database. QTP can be pre instructed to automatically report every failed step during the run alternatively reporting can be done manually as well.&lt;br /&gt;&lt;br /&gt;Keywords: QTP, quicktest, HP, quality center, record/playback, expert view, keyword view, reusable actions&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2660656045350453113?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2660656045350453113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2660656045350453113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2660656045350453113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2660656045350453113'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/overview-of-testing-process-in-qtp.html' title='An Overview of the Testing Process in QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-1007336067301753729</id><published>2008-06-08T10:23:00.002+05:30</published><updated>2008-08-20T23:00:24.851+05:30</updated><title type='text'>Learn the Basics of Closing the Processes using QTP</title><content type='html'>&lt;p&gt;The article will discuss on how to close processes in QTP. First we will discuss the SystemUtil object and then later in the article few other approaches.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span class="rvts1"&gt;SystemUtil Object&lt;/span&gt;&lt;/p&gt; &lt;p&gt;SystemUtil is utility object provided by QTP. It can be used to launch or closes a process. Let's look at various methods supported by this object:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="rvts1"&gt;SystemUtil.Run &lt;/span&gt;&lt;span class="rvts3"&gt;file&lt;/span&gt;&lt;span class="rvts1"&gt;, [&lt;/span&gt;&lt;span class="rvts3"&gt;params&lt;/span&gt;&lt;span class="rvts1"&gt;], [&lt;/span&gt;&lt;span class="rvts3"&gt;dir&lt;/span&gt;&lt;span class="rvts1"&gt;], [&lt;/span&gt;&lt;span class="rvts3"&gt;op&lt;/span&gt;&lt;span class="rvts1"&gt;], [&lt;/span&gt;&lt;span class="rvts3"&gt;mode&lt;/span&gt;&lt;span class="rvts1"&gt;]&lt;/span&gt;&lt;/p&gt; &lt;p&gt;The Run method allows running a new process. The code below illustrates few example on how to launch a process using SystemUtil object&lt;/p&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Run internet explorer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "iexplore.exe"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Run internet explorer and open google.com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "iexplore.exe", "http://www.google.com"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Run a IE Process in Maximized window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Const SHOW_MAXIMIZED = 3 'Activates the window and displays it as a maximized window.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "iexplore.exe", "http://&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;www.google.com&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;", , , SHOW_MAXIMIZED&lt;/span&gt;&lt;br /&gt;&lt;span class="rvts1"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;SystemUtil.CloseProcessByName (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;" class="rvts3"&gt;bsProcessName&lt;/span&gt;&lt;span style="font-weight: bold;" class="rvts1"&gt;)&lt;/span&gt; &lt;p&gt;CloseProcessByName method allows closing a process by its name. The code below illustrates few examples&lt;/p&gt;&lt;p style="color: rgb(0, 0, 153);"&gt;'Close all internet explorer windows&lt;br /&gt;closedCount = SystemUtil.CloseProcessByName("iexplore.exe")&lt;br /&gt;&lt;br /&gt;'Display # of closed windows&lt;br /&gt;MsgBox closedCount&lt;/p&gt;&lt;p&gt;The problem with using the above method is that it will also close Quality Center (QC) window even if script was launched from QC. This method should be used in case you are not concerned about running scripts from QC.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span class="rvts1"&gt;SystemUtil.CloseProcessByWndTitle (&lt;/span&gt;&lt;span class="rvts3"&gt;bsTitle&lt;/span&gt;&lt;span class="rvts1"&gt;, [&lt;/span&gt;&lt;span class="rvts3"&gt;bRegExp&lt;/span&gt;&lt;span class="rvts1"&gt;])&lt;/span&gt;&lt;/p&gt; &lt;p&gt;CloseProcessByWndTitle method allows closing a process by its title. The title can also be supplied as a regular expression by setting the bRegExp to True&lt;/p&gt;&lt;p&gt; &lt;/p&gt;'&lt;span style="color: rgb(0, 0, 153);"&gt;Launch a notepad window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "notepad.exe"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Close the window just launched using the exact title&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.CloseProcessByWndTitle "Untitled - Notepad"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Launch a notepad window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "notepad.exe"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Close the window just launched using a pattern string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.CloseProcessByWndTitle ".*Notepad", True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SystemUtil.CloseDescendentProcesses&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CloseDescendentProcesses can be used to close any process launched by QTP. The code below illustrates the usage&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Launch explorer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.Run "iexplore.exe"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Launch excel using COM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oXL = CreateObject("Excel.Application")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;oXL.Visible = True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Close processes launched by QTP. This will close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'the internet explorer and Excel as well&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.CloseDescendentProcesses&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This method is best suited to be used during the end of a script to cleanup any process left open.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Closing all open Browsers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many times it's required to close all open browsers at the start of the script. There are various ways of achieving this; one is to use the SystemUtil.CloseProcessByName method which we discussed earlier. But that approach is not generic as it won't close other browsers that QTP does support (like firefox and netscape). We can come with a generic 3 lines code which can close all supported QTP browsers&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Check the existence of a browser and close it&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'until no more browsers exist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;While Browser("creationtime:=0").Exist(0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    'Close the browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Browser("creationtime:=0").Close&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Wend&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;QTP assigns creation time to each browser based on the launch time of that browser. A browser started earlier will have a lower creationtime and a browser started at a later point of time will have a higher creationtime. So when we start closing the browser with creationtime:=0, other browser's creationtime is decreased. Which means that the creationtime:=0 browser will always exist until there is no browser open. This approach of closing browsers suffers from 2 issues&lt;br /&gt;&lt;br /&gt;* QTP has a bug which makes it wait 10 second on Browser identified using creationtime when there is only one browser open. So above code will always take 10 secs to close the last browser&lt;br /&gt;* The code does not allow to ignore any specific browser (like Quality Center)&lt;br /&gt;&lt;br /&gt;Though there another way by which can enumerate all open browser and close them in QTP and below demonstrates the same&lt;br /&gt;&lt;br /&gt;'&lt;span style="color: rgb(0, 0, 153);"&gt;Create a description for browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oBrowser = Description.Create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;oBrowser("micclass").Value = "Browser"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oPage = Description.Create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;oPage("micclass").Value = "Page"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get all browsers&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set allBrowser = Desktop.ChildObjects(oBrowser)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Dim i, iCount&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;iCount = allBrowser.Count - 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For i = 0 To iCount&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    'Get the page object from the browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set oPg = allBrowser(i).ChildObjects(oPage)(0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    'Get the URL of the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    If InStr(oPg.GetROProperty("title"), "Quality Center", vbTextCompare) = 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        'Close the browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        allBrowser(i).Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By now you must be wondering about the line&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get the page object from the browser&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oPg = allBrowser(i).ChildObjects(oPage)(0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So why didn't we use allBrowser(i).Page("micclass:=Page"), well this a Bug or Limitation in QTP which does not allow using any further Test objects on objects returned from ChildObjects. This might be because of the fact that a QTP TestObject does not have any property or method as other Test Object. Ex - a Browser supports no method or property named Page. But QTP interprets that as way of hierarchy to decide where to look for that object. Anway this is all my opinion and might not be accurate. So the only workaround of using further TestObjects is to use ChildObjects again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Closing processes using WMI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Another way to close a process is to use Window management instrumentation (WMI)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Name/IP of the computer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sComp = "."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get the WMI object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set WMI = GetObject("winmgmts:\\" &amp;amp; sComp &amp;amp; "\root\cimv2")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get collection of processes for with name iexplore.exe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set allIE = WMI.ExecQuery("Select * from Win32_Process Where Name = 'iexplore.exe'")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Loop through each process and terminate it&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For Each IE in allIE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    IE.Terminate()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above code can also be used to close any process on a remote machine by changing sComp to the IP of the remote machine&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Closing Internet explorer using Shell&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's take a look at another way which is generic to VBScript and not dependent on QTP. For this we will use the COM object of "Shell.Application". This COM library provides a collection of all open windows (Explorer + Internet Explorer). We can access each windows property and close if it is iexplore.exe process. The code below demonstrates the same&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Create the shell application object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set shlApp = CreateObject("Shell.Application")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get all open windows collection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set allWins = shlApp.Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Loop through each window and close if IE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For Each window In allWins&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    If InStr(window.fullName, "iexplore.exe") Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        'Close the IE window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        window.Quit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code above will only close alternate windows. This happens because we are loop through a collection of windows and closing a window in that collection reduces the collection and hence the for loop skips one window after closing a window. This issue can easily be resolved by adding the windows to be closed into an array and the closing them later&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Dim windows2Close&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Initialize with negative upper bound&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ReDim windows2Close( -1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Create the shell application object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set shlApp = CreateObject("Shell.Application")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Get all open windows collection&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set allWins = shlApp.Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Loop through each window and close if IE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For Each window In allWins&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    'Close all IE windows but ignore Quality Center&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    If InStr(window.fullName, "iexplore.exe") And InStr(Window.LocationURL, "/qcbin/") = 0 Then&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        'Increase the array size by 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        ReDim Preserve windows2Close(UBound(windows2Close) + 1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Set windows2Close(UBound(windows2Close)) = Window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'Loop through all array elements and close each window&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For Each Window In windows2Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Window.Quit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above code shows how to ignore few internet explorers and close rest.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this article we explored various ways of Closing processes and browsers using QTP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-1007336067301753729?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/1007336067301753729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=1007336067301753729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1007336067301753729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1007336067301753729'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/closing-processes-in-qtp.html' title='Learn the Basics of Closing the Processes using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8874184913224002361</id><published>2008-06-07T11:20:00.002+05:30</published><updated>2008-08-20T22:53:19.690+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Features of QTP 9.2'/><title type='text'>Quick Introduction to QTP 9.2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;New to Quick Test Pro 9.2?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Are you new to HP Quick Test Pro 9.2 (QTP)? Say yes and you are at the right place, at the right time. This article is for newbie’s who want to start their carrier with QTP or have just started with QTP. The article will give you a brief overview of various features of QTP, and since it is for newbie’s we won’t be going into too much details of every feature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is QTP 9.2?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* HP Quick Test Pro 9.2 is a functional automation and regression testing tool&lt;br /&gt;* QTP provides record and playback of events&lt;br /&gt;* Uses VBScript as the scripting Language&lt;br /&gt;* Provides keyword view and expert view to view test cases.&lt;br /&gt;* Latest versions of QTP is 9.5 (launched in mid Jan 2008)&lt;br /&gt;* Previous version of QTP: 6.5, 8.0, 8.1, 8.2, 9.0, 9.1&lt;br /&gt;* QTP was previously owned by Mercury Interactive®&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing QTP 9.2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can download a 14 day Trial version from HP site.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;QTP 9.5 14 day Evaluation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With introduction of QTP 9.5, Trial version of QTP 9.2 is not available. QTP 9.5 does not have any huge enhancement and hence most of the features discussed in this article will still hold&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Launching QTP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you launch QTP for the first time, Add-in manager window is displayed&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is Add-in?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP requires Add-in for recognizing object of a specific environment&lt;br /&gt;* By default QTP 9.2 comes with 3 Add-ins: Web, ActiveX and VB&lt;br /&gt;* Some of the Add-ins available for QTP 9.2 are&lt;br /&gt;&lt;br /&gt;1. Terminal Emulator (TE)&lt;br /&gt;2. .NET&lt;br /&gt;3. Java&lt;br /&gt;4. SAP&lt;br /&gt;5. Siebel&lt;br /&gt;6. Stingray&lt;br /&gt;7. VisualAge&lt;br /&gt;8. Web Services&lt;br /&gt;&lt;br /&gt;* QTP does not require any Add-in to work on Standard windows application&lt;br /&gt;* Add-ins can only be loaded when starting QTP&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Once the selected Add-ins are loaded, QTP window will show up&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hit the record button to start recording. If you are recording for the first time, the Record and Run Settings dialog box opens.&lt;br /&gt;&lt;br /&gt;What all tabs are shown in above dialog would depend on Add-ins that is loaded. Using above dialog we can set on what all application should QTP record on.&lt;br /&gt;&lt;br /&gt;Note: If QTP does not record anything on your application then make sure you have the correct settings specified in Record and Run Settings…&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Keyword view&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Keyword View enables you to create and view the steps of your test in a keyword-driven, modular, table format. This is the only view where complete Test flow can be viewed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Expert View&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Expert View, QTP displays each operation performed on the application in the form of a script, comprised of VBScript statements. Complete test flow is not available/visible in this view.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test and Run-time Object&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP works on objects in Application Under Test (AUT) by storing object description&lt;br /&gt;* This object description is known as a Test Object&lt;br /&gt;* Each Test Object supports predefined sets of Methods and properties&lt;br /&gt;* The actual object in the AUT which is identified for a Test Object is called the Run-time object.&lt;br /&gt;* A Test Object can always be present without the AUT&lt;br /&gt;* Run-time object can only be present when AUT is up and running&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Spy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Object Spy is a tool that can be used to spy Test and run time object for looking at properties and methods supported by object being spied&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Identification&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP uses three types of properties when identifying a object&lt;br /&gt;&lt;br /&gt;1. Mandatory – Always learn these properties for the object&lt;br /&gt;2. Assistive – Learn in case Mandatory properties are not enough to identify the object         uniquely&lt;br /&gt;3. Ordinal identifiers – Learn in case both mandatory and assistive properties are not able to recognize the objects correctly&lt;br /&gt;&lt;br /&gt;* Ordinal identifiers are of three types:&lt;br /&gt;1. Index – index of object (0, 1, 2 …)&lt;br /&gt;2. Location – Location of the object on the screen (0, 1, 2 …)&lt;br /&gt;3. CreationTime – Used only for Browser. Launchtime of browser (0, 1, 2 …)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Identification Settings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Launch from menu Tools-&gt;Object Identification…&lt;br /&gt;&lt;br /&gt;Here we can Add/Remove properties from/to Mandatory and Assistive properties. Objects in application represent certain special characteristics which allow QTP to map them QTP Test object. For window objects this characteristic is mostly define by ”regexpwndclass“. In case application developers don’t use standard class names while creating object QTP won’t be able to identify the object correctly. Below is a checkbox in Search window recognized by QTP as WinObject&lt;br /&gt;&lt;br /&gt;By clicking on the ”User Defined…“ button on Object identification settings window, we can add such objects and map. Once added QTP will now be able to recognize the object correctly&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Hierarchy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP uses object hierarchy to identify object inside a AUT&lt;br /&gt;* QTP only adds those objects from hierarchy which are necessary for it to identify the object later.&lt;br /&gt;* In this case QTP will add&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Browser(”Google“).Page(”Google“).WebEdit(”q“).Set ”test“ (WebTable object ignored)&lt;/span&gt;&lt;br /&gt;* QTP cannot be configured to record such objects automatically.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Object Repository (OR)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP works on object in application by storing information about the object in Object repository&lt;br /&gt;* All objects on which user takes an action while recording are automatically added to object repository&lt;br /&gt;* ”Browser“, ”Google“, ”q“ are three different objects that would be present in OR for the below generated statement&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       Browser("Browser").Page("Google").WebEdit("q").set ”Test“&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Copying and pasting code from one script to another script does not work in QTP as the OR does not get copied to the new script&lt;br /&gt;* There are two types of Object Repositories in QTP:&lt;br /&gt;1. Shared OR: Can be used by multiple scripts. A central location to store all objects&lt;br /&gt;2. Per-Action OR: Every action has its individual object repository&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Per-Action Object Repository&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Default repository&lt;br /&gt;* Specific to actions (Will be used only for a particular action)&lt;br /&gt;* Preferable when application is not dynamic with respect to time&lt;br /&gt;* Cannot be reused&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Shared Action repository&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Can be updated by all actions accessing it&lt;br /&gt;* Preferable when application is dynamic with respect to time&lt;br /&gt;* Used in most automation projects&lt;br /&gt;* Needs maintenance and administration&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Action&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Provides way of grouping code into business logic&lt;br /&gt;* Are pretty similar to Functions in VBScript&lt;br /&gt;* Have their own Data Table and Object Repository (in case of per-action object repository)&lt;br /&gt;* Supports input and output parameters&lt;br /&gt;* Actions are of two types: normal  and re-usable&lt;br /&gt;* Re-usable actions can be called in other Test.&lt;br /&gt;* QTP does not allow calling another test within a test&lt;br /&gt;* TestFlow represent the top level action. Complete test flow can only be viewed in Keyword views&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inserting Actions&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   * There are three ways to insert a Action in a test&lt;br /&gt;1. Insert Call to New…&lt;br /&gt;2. Insert Call to Copy…&lt;br /&gt;3. Insert Call to Existing…&lt;br /&gt;&lt;br /&gt;* &lt;span style="font-weight: bold;"&gt;Insert Call to New…&lt;/span&gt; - Creates a new action and adds a call to the same. Pfrovide the name "Cancel Ticket" in the "Name" field and click on OK button.&lt;br /&gt;* Adds below line to the code&lt;br /&gt;&lt;br /&gt; RunAction "Cancel Ticket", oneIteration&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actions - Insert Call to Existing…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Insert Call to Existing – User to insert call to a re-usable action located within the same test or some other test&lt;br /&gt;* This inserts the call to the existing action. In case the action in present in some other test case then a read only copy of action is inserted&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actions – Insert Call to Copy…&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Insert Call to Copy - Inserts call to an existing re-usable action and creates an editable copy of that action&lt;br /&gt;* Actions cannot be deleted from a Test from Expert view. To delete a action one must go to the keyword view and delete the action&lt;br /&gt;* An action call cannot be inserted directly by writing code in Expert View, it has to be added through the GUI first.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Action Iterations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An action can be run for 1 or more rows from its Local Data Table.&lt;br /&gt;&lt;br /&gt;* QTP supports there types of iteration modes:&lt;br /&gt;1. Run one iteration only&lt;br /&gt;2. Run on all rows&lt;br /&gt;3. Run from Row &lt;x&gt; to Row &lt;y&gt;&lt;br /&gt;&lt;br /&gt;* Similar to Action, a test can also be run for multiple iterations from Global Data Table&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why Parameterization?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Parameterization allows us to pick different values at run time.&lt;br /&gt;* Reduces Time and Effort.&lt;br /&gt;* Usage of data drivers allows us to use the same data for various input boxes.&lt;br /&gt;* Parameterization can also be done for checkpoints.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Data Table is excel like spreadsheet which can be user for parameterizing a test case&lt;br /&gt;* DataTable are of two types:&lt;br /&gt;1. Global Data Table – Data table for Test flow&lt;br /&gt;2. Local data table – Data table for every action&lt;br /&gt;&lt;br /&gt;* Data table value can be accessed using the below method&lt;br /&gt;a) DataTable("&lt;columnname&gt;",dtGlobalSheet)&lt;br /&gt;b) &lt;/columnname&gt;&lt;/y&gt;DataTable("&lt;columnname&gt;",dtLocalSheet)&lt;br /&gt;c)DataTable("&lt;columnname&gt;","&lt;name&gt;")&lt;br /&gt;&lt;x&gt;&lt;y&gt;&lt;br /&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;name&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;name&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;name of="" the="" data="" table=""&gt;&lt;span style="font-weight: bold;"&gt;Run-time Data table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Any changes made to Data table during run-time is stored in run-time data table.&lt;br /&gt;* Run-time data table is available in the test results summary of a test&lt;br /&gt;* DataTable values can be changed at run-time by using below mentioned code:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   DataTable(”OrderConf“, dtGlobalSheet) = ”ABCD1234“&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Environment Variables&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Environment variables are global variables available to all Actions&lt;br /&gt;* They can be used to run a test case on different environment&lt;br /&gt;* To add a new Environment variable go to Test -&gt; Settings…-&gt;Environment (Tab)&lt;br /&gt;* Environment variables are of two types&lt;br /&gt;&lt;br /&gt;1. Built-in&lt;br /&gt;2. User-Defined&lt;br /&gt;&lt;br /&gt;* Built in environment variables give information about the system and the current test&lt;br /&gt;* User-defined Environment variables added in the Environment tab of Test Settings are Read-only during the test run&lt;br /&gt;* Environment variables can be added during runtime also using code&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  Environment.Value(”OrderNumber“) = ”ABCDEF“&lt;/span&gt;&lt;br /&gt;* Environment variables can be loaded at run-time from a XML file using the below code&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  Environment.LoadFromFile "C:\TestEnvironment.xml"&lt;/span&gt;&lt;br /&gt;* The Environment XML file has to be in below format:&lt;environment&gt;&lt;br /&gt;&lt;br /&gt;&lt;environment&gt;&lt;br /&gt;        &lt;variable&gt;&lt;br /&gt;                 &lt;name&gt;APP_URL&lt;/name&gt;&lt;br /&gt;                 &lt;value&gt;http://test1.appserver.com&lt;/value&gt;&lt;br /&gt;        &lt;/variable&gt;&lt;br /&gt;&lt;/environment&gt;&lt;br /&gt;&lt;variable&gt;&lt;name&gt;&lt;/name&gt;&lt;/variable&gt;&lt;/environment&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parameters&lt;/span&gt;&lt;br /&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/y&gt;&lt;/x&gt;&lt;x&gt;&lt;y&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;name of="" the="" data="" table=""&gt;&lt;br /&gt;* Parameters provide another way of parameterizing the test cases&lt;br /&gt;* There are two types of parameters:&lt;br /&gt;1. Test parameters&lt;br /&gt;2. Action parameters&lt;br /&gt;&lt;br /&gt;* Test parameters can be set in Test-&gt;Settings…-&gt;Parameters (Tab)&lt;br /&gt;* Test parameters value can be provided when replaying the test&lt;br /&gt;* Test arguments can be accessed in the test using TestArgs(”&lt;argname&gt;“)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Action Parameters&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Used to pass parameters to Action&lt;br /&gt;* Output parameters can only be used when Action is being called for a single iteration&lt;br /&gt;* Ex – RunAction "Login", oneIteration, "TestUser", "TestPass", out&lt;br /&gt;* A parameter can be accessed using&lt;br /&gt;&lt;/argname&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/y&gt;&lt;/x&gt;&lt;span class="rvts-12"&gt;Parameter("ParamName&lt;paramname&gt;"&lt;paramname&gt;)&lt;/paramname&gt;&lt;/paramname&gt;&lt;/span&gt;&lt;x&gt;&lt;y&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;columnname&gt;&lt;name of="" the="" data="" table=""&gt;&lt;argname&gt;&lt;paramname&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Scripts written in VBScript language can be add as a Resource to the test&lt;br /&gt;* All code written in the script is available across all Actions&lt;br /&gt;* A VBScript can also be loaded in an Action by using ExecuteFile function. Ex –&lt;br /&gt;ExecuteFile ”C:\Init.vbs“&lt;br /&gt;* In case of multiple files QTP combines all the files into a single one and executes the code. The files are combine in bottom to top order&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Checkpoints&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Checkpoints are verification points in a test&lt;br /&gt;* Test without checkpoint would never have a pass status&lt;br /&gt;* Checkpoints can be of types&lt;br /&gt;–         Built-in checkpoints&lt;br /&gt;–         Custom checkpoints&lt;br /&gt;* Types of Built-in checkpoints available are&lt;br /&gt;&lt;br /&gt;1. Standard checkpoints: Verify properties of an object&lt;br /&gt;2. Text checkpoints: Verify text presence between two strings&lt;br /&gt;3. Text Area checkpoint&lt;br /&gt;4. Bitmap checkpoint&lt;br /&gt;5. Accessibility checkpoint&lt;br /&gt;6. Database checkpoint&lt;br /&gt;7. XML Checkpoint&lt;br /&gt;&lt;br /&gt;* Only Database and XML checkpoints can be inserted in idle mode.&lt;br /&gt;* Rest all checkpoints can only be added during Recording or through Active screens.&lt;br /&gt;* Checkpoint code&lt;br /&gt;&lt;br /&gt; Browser("Google").Page("Google").WebEdit("q").Check CheckPoint("Verify TextBox_Standard")&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Custom Checkpoints&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Custom checkpoints can be created using Code&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       loginExist = Browser().Page().Link(”text:=Login“).Exist(0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       If loginExist then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                Reporter.ReportEvent micPass, ”Check Login“, ”Login link exists“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       Else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                Reporter.ReportEvent micFail, ”Check Login“, ”Login link does not exists“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       End if&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Custom checkpoint can be made flexible based on implementation and are preferred over Built-in checkpoints&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Test Results&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Test results provide a execution summary of the complete test case&lt;br /&gt;* There are different types of status in test results summary:&lt;br /&gt;1. Passed&lt;br /&gt;2. Failed&lt;br /&gt;3. Done&lt;br /&gt;4. Warning&lt;br /&gt;5. Information&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Descriptive Programming&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Alternate way of writing test cases without having objects in object repository&lt;br /&gt;* Descriptive programming can be done in two ways&lt;br /&gt;&lt;br /&gt;1. Using object description&lt;br /&gt;2. Using string description&lt;br /&gt;&lt;br /&gt;* In DP objects are identified by describing all the identification properties&lt;br /&gt;* String description DP&lt;br /&gt;Browser(”title:=Google“).Page(”title:=Google“).WebButton(”name:=Search“).Click&lt;br /&gt;* Object Based DP&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set btnSearch = Description.Create : btnSearch(”name“).Value = ”Search“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set brwGoogle = Description.Create : brwGoogle(”title“).value = ”Google“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set pgGoogle = Description.Create : pgGoogle(”title“).value = ”Google“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Browser(brwGoogle).Page(pgGoogle).WebButton(btnSearch).Click&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Description objects can also be used to get all child objects  matching a criterion. Ex –&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set oDesc = Description.Create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    oDesc(”name”).Value  = ”txt_.*“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    oDesc(”name”).RegularExpression = True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Set allMatchingObjects = Browser().Page().ChildObjects(oDesc)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Msgbox allMatchingObjects.Count&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Msgbox allMatchingObjects(0).GetROProperty(”name“)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* By default all property values are considered as regular expression patterns&lt;br /&gt;* When using string description all regular expression must be used with escape character for literal meaning. Ex - …Link(”text:=Logout \(Piyush\)“).Click&lt;br /&gt;&lt;br /&gt;* DP based Object repository can be created in any file&lt;br /&gt;* Code can be copied from one script to another without copying the object repository&lt;br /&gt;* Custom implementation of object is easier. Ex –&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    objStrDesc = ”Browser(”“title:=Test““).Page(”“title:=Test““).Link(”“text:=Login““)“&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    Execute ”Set obj = ” &amp;amp; objStrDesc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    obj.Click&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;QTP Misc information&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* QTP and the AUT has to be on the same machine&lt;br /&gt;* QTP can be controlled remotely from another machine&lt;br /&gt;* QTP scripts cannot be run without QTP&lt;br /&gt;&lt;br /&gt;&lt;/paramname&gt;&lt;/argname&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/y&gt;&lt;/x&gt;&lt;/name&gt;&lt;/columnname&gt;&lt;/columnname&gt;&lt;/x&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8874184913224002361?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8874184913224002361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8874184913224002361' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8874184913224002361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8874184913224002361'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/features-of-qtp-92.html' title='Quick Introduction to QTP 9.2'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2819181592308154067</id><published>2008-06-07T10:40:00.006+05:30</published><updated>2008-12-11T08:58:38.379+05:30</updated><title type='text'>Basics of Debugging Run Errors in QTP</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SFS11tWEFcI/AAAAAAAAAEQ/q9WkVK1bxso/s1600-h/Run_Error.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_LFOEX-ZBxzg/SFS11tWEFcI/AAAAAAAAAEQ/q9WkVK1bxso/s320/Run_Error.jpeg" alt="" id="BLOGGER_PHOTO_ID_5211990603084338626" border="0" /&gt;&lt;/a&gt;&lt;span&gt;First of all let us understand the meaning of “General run error” as you are seeing above.&lt;br /&gt;&lt;br /&gt;“General run error” occurs in a situation when some source while being accessed by QTP propels an error.&lt;br /&gt;&lt;br /&gt;This is the inherent nature of QTP that in such a situation it displays a "General run error" message instead of showing a simple “Error” .&lt;br /&gt;&lt;br /&gt;Following line of a simple code will illustrate as to how the "General run error" shall be generated.&lt;br /&gt;&lt;br /&gt;Set oGeneralRunError = GetObject("A.B.C")&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;On running the above code, you will get an error message "Invalid Syntax"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span&gt;Here we can see that the actual error is in-fact an “Invalid Syntax Error” and not a "General run error". However to view the actual error in this case, click on the “Debug” button and open the Watch Window.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;It is simple to fix the “General run error”&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Incase we get this type of error while working on a QTP test object; we can place a Msgbox to check the existence of the object being handled.&lt;br /&gt;&lt;br /&gt;- However if we get this type of error while working under the Web environment, the issue can be resolved by using DOM object method.&lt;br /&gt;&lt;br /&gt;Keywords: QTP, quicktest professional, HP QTP, debug general run error&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;!--/page--&gt;&lt;/span&gt;  &lt;!--footer--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2819181592308154067?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2819181592308154067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2819181592308154067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2819181592308154067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2819181592308154067'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/basics-of-debugging-run-errors-in-qtp.html' title='Basics of Debugging Run Errors in QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LFOEX-ZBxzg/SFS11tWEFcI/AAAAAAAAAEQ/q9WkVK1bxso/s72-c/Run_Error.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6868708877539171930</id><published>2008-06-06T18:02:00.002+05:30</published><updated>2008-06-18T22:35:48.431+05:30</updated><title type='text'>QTP Script to display System Date and Time</title><content type='html'>&lt;span style="font-weight: bold;"&gt;QTP Script to display System Date and Time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox now&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above code will display System Date and Time = 5/20/2008 9:01:05 AM&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox date&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above code will display only System Date  = 5/20/2008&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Above code will display only System Time = 9:01:05 AM&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6868708877539171930?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6868708877539171930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6868708877539171930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6868708877539171930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6868708877539171930'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/qtp-script-to-display-system-date-and.html' title='QTP Script to display System Date and Time'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-5396320677196432377</id><published>2008-06-06T17:56:00.001+05:30</published><updated>2008-06-18T22:35:48.431+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Descriptive Programming'/><title type='text'>Descriptive Programming to count and close all open browsers</title><content type='html'>Script to get count,names of all open browsers and to close them.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set b=Description.Create&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;b("micclass").value="Browser"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set obj=Desktop.ChildObjects(b)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox obj.count&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;For i=0 to obj.count-1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;c=obj(i).getroproperty("name")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox(c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;obj(i).Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Next&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-5396320677196432377?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/5396320677196432377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=5396320677196432377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5396320677196432377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5396320677196432377'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/descriptive-programming-to-count-and.html' title='Descriptive Programming to count and close all open browsers'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7805045285458310086</id><published>2008-06-06T17:48:00.002+05:30</published><updated>2008-06-18T22:35:48.432+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Descriptive Programming'/><title type='text'>Descriptive programming for Google search page</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Descriptive programming for Google search page&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SystemUtil.run "iexplore.exe","&lt;/span&gt;&lt;a style="color: rgb(0, 0, 153);" href="http://www.google.com/"&gt;http://www.google.com&lt;/a&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Browser("name:=Google.*").Page("title:=Google.*").WebEdit("name:=q")&lt;br /&gt;.set"Testing"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Browser("name:=Google.*").Page("title:=Google.*").&lt;br /&gt;WebButton("name:=Google Search").Click&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7805045285458310086?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7805045285458310086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7805045285458310086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7805045285458310086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7805045285458310086'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/descriptive-programming-for-google.html' title='Descriptive programming for Google search page'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6632463987164706431</id><published>2008-06-06T17:44:00.001+05:30</published><updated>2008-06-18T22:35:48.433+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Descriptive Programming'/><title type='text'>Descriptive Programming to check all checkboxes in a webpage</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Usage of Description Object is shown below&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Creates a new, empty description object in which you can add collection of  properties and values in order to specify the description object in place of a  test object name in a step.&lt;br /&gt;&lt;br /&gt;Set Button=Description.Create()&lt;br /&gt;&lt;br /&gt;Button("type").Value="submit"&lt;br /&gt;Button("name").Value="Google Search"&lt;br /&gt;Button("html tag").Value="INPUT"&lt;br /&gt;&lt;br /&gt;Browser("Google").Page("Google").WebButton(Button).Click&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TO CHECK ALL THE CHECKBOXES ON A PAGE USING CHILDOBJECTS PROPERTY&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dim obj_check&lt;br /&gt;&lt;br /&gt;Set obj_check=Description.Create&lt;br /&gt;&lt;br /&gt;obj_Check("html tag").value="INPUT"&lt;br /&gt;obj_Check("type").value="checkbox"&lt;br /&gt;&lt;br /&gt;Dim allcheckboxes&lt;br /&gt;Set allcheckboxes=Browser("Browser").Page("orkut - home").ChildObjects(obj_check)&lt;br /&gt;a= allcheckboxes.count()&lt;br /&gt;msgbox a&lt;br /&gt;&lt;br /&gt;For i=0 to (a-1)&lt;br /&gt;allcheckboxes(i).Set "ON"&lt;br /&gt;Next&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6632463987164706431?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6632463987164706431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6632463987164706431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6632463987164706431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6632463987164706431'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/descriptive-programming-to-check-all.html' title='Descriptive Programming to check all checkboxes in a webpage'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-1713469662275198037</id><published>2008-06-06T17:28:00.003+05:30</published><updated>2008-08-20T23:54:54.059+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Driven Testing'/><title type='text'>Scripts for Data Driven Testing using  Notepad &amp; Datatables</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Data Driven Testing using notepad&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Set f=CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Set f1=f.CreateTextFile("c:\text.txt")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;f1.writeline "aaa bbb"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;f1.writeline "ccc ddd"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above script creates a notepad in C: drive with following contents:&lt;br /&gt;&lt;br /&gt;aaa bbb&lt;br /&gt;ccc ddd&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Set f2=f.OpenTextFile("c:\text.txt")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;While f2.AtEndOfStream &lt;&gt;true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;f3=f2.readline&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;x=Split(f3, "")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;msgbox x(0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;msgbox x(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;WEnd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The above script is used for data driven using notepad directly. Here we are not importing data to excel sheet. Directly values are retreived from notepad. We are using while loop and reading each line till the end. Split function splits the line where space(" ")occurs. Line is divided to 2 parts.one before space and other after space. For example we have 1st line in notepad as aaa bbb&lt;br /&gt;&lt;br /&gt;here aaa is 1st part and bbb is 2nd part&lt;br /&gt;&lt;br /&gt;x(0)=aaa&lt;br /&gt;x(1)=bbb&lt;br /&gt;&lt;br /&gt;all values are read this way using while loop. One point to note here is if any line is empty in notepad datadriven testing is stopped before that line. It will not proceed further.so we have to give values without any empty lines in notepad. To make things more clear,&lt;br /&gt;&lt;br /&gt;Suppose u have&lt;br /&gt;&lt;br /&gt;aaa bbb&lt;br /&gt;&lt;br /&gt;ccc ddd&lt;br /&gt;&lt;br /&gt;Datadriven is stopped at aaa and bbb only because next line is empty. Datadriven is stopped after 1st line.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Datadriven using dataTable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This Script gives result by retrieving values from datatable.&lt;br /&gt;&lt;br /&gt;A B&lt;br /&gt;5 5&lt;br /&gt;6 6&lt;br /&gt;7 7&lt;br /&gt;8 8&lt;br /&gt;9 9&lt;br /&gt;&lt;br /&gt;In datatable enter test data as shown above.&lt;br /&gt;Fill values below "A" and "B"&lt;br /&gt;&lt;br /&gt;script required for DDT(data driven testing)is&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;val1=datatable("A",1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;val2=datatable("B",1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;res=cint(val1) +cint(val2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;msgbox res&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Result will be 10,12,14,16,18.&lt;br /&gt;&lt;br /&gt;datatable("column name",sheetname/id)&lt;br /&gt;&lt;br /&gt;cint is a function which converts string to integer.&lt;br /&gt;&lt;br /&gt;check what will happen if u are not using cint in third step.&lt;br /&gt;just replace this res=val1+val2 in place of res=cint(val1) +cint(val2)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-1713469662275198037?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/1713469662275198037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=1713469662275198037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1713469662275198037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/1713469662275198037'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/data-driven-testing-using-excelsheet.html' title='Scripts for Data Driven Testing using  Notepad &amp; Datatables'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6068659330882929214</id><published>2008-06-06T17:25:00.003+05:30</published><updated>2008-06-18T22:35:48.434+05:30</updated><title type='text'>Connecting to MS Access through QTP</title><content type='html'>This code connects your QTP to MS Access. Pretty cool though..&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Dim con, rs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Set con=CreateObject("adodb.connection")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Set rs=CreateObject("adodb.recordset")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;con.provider="microsoft.jet.oledb.4.0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;con.open "c:\db1.mdb"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;rs.open "select * from emp", con&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Do while rs.eof="False"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; msgbox rs.fields("v1")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; msgbox rs.fields("v2")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; rs.movenext&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Loop&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6068659330882929214?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6068659330882929214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6068659330882929214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6068659330882929214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6068659330882929214'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/connecting-to-different-databases.html' title='Connecting to MS Access through QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8319595870871683236</id><published>2008-06-06T17:19:00.002+05:30</published><updated>2008-08-23T09:21:25.448+05:30</updated><title type='text'>QTP Quiz</title><content type='html'>Article under maintenance&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8319595870871683236?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8319595870871683236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8319595870871683236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8319595870871683236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8319595870871683236'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/some-multiple-choice-questions-to-test.html' title='QTP Quiz'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3763138760805760052</id><published>2008-06-06T17:17:00.002+05:30</published><updated>2008-08-28T21:43:28.100+05:30</updated><title type='text'>Passing keyboard inputs to AUT through QTP</title><content type='html'>This site has been brought to you by an HP certified expert of QTP.&lt;br /&gt;&lt;br /&gt;It is my continuous endevour to give the best to my readers.&lt;br /&gt;&lt;br /&gt;This article is under updation will be available to you shortly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ExpertQTP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://quicktesthp.blogspot.com&lt;br /&gt;&lt;br /&gt;Ways to send keyboard input to an application using QTP when it does not record using normal recording&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3763138760805760052?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3763138760805760052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3763138760805760052' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3763138760805760052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3763138760805760052'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/ways-to-send-keyboard-input-to.html' title='Passing keyboard inputs to AUT through QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-5227294333968455469</id><published>2008-06-06T16:47:00.003+05:30</published><updated>2008-08-23T10:18:48.922+05:30</updated><title type='text'>Amazing power of QTP for Import &amp; Export of Data from datatable using QTP</title><content type='html'>Import External Data File&lt;br /&gt;&lt;br /&gt;The datatable created by QTP can be exported to an external location. Pretty Cool though….&lt;br /&gt;&lt;br /&gt;Now lets see how it is done. Create a new script. Now open your DataTable and right click inside any cell using the mouse. Click File-&gt; Import from File. You will see a screen as shown below.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SK-WMokiF-I/AAAAAAAAAGs/19dshrwuxwY/s1600-h/DataTable.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_LFOEX-ZBxzg/SK-WMokiF-I/AAAAAAAAAGs/19dshrwuxwY/s400/DataTable.JPG" alt="" id="BLOGGER_PHOTO_ID_5237570035448420322" border="0" /&gt;&lt;/a&gt;Click on the OK button. Now navigate to an already existing excel file, select and click Open. With this, your excel file will be opened in the datatable completely. Now every column you create in the excel sheet will become a parameter.&lt;br /&gt;&lt;br /&gt;This task can also be accomplished programmatically. For this, use the following syntax.&lt;br /&gt;&lt;br /&gt;Datatable.Import(FileName)&lt;br /&gt;&lt;br /&gt;Here FileName is the full path of the Excel table to import.&lt;br /&gt;&lt;br /&gt;Exporting Datatable to an external File&lt;br /&gt;&lt;br /&gt;You guys probably be thinking just like we imported an external excel file into our datatable, is the reverse also true. Yes, it is. We can export our created datatable into an external excel file. This we can do if we want to utilize our existing datatable inside a different script rather than creating it from the scratch again.&lt;br /&gt;&lt;br /&gt;Lets see how it is being done. Again, open your datatable and right click on any cell. Select File-&gt;Export. Provide the file name and click on the Save button. Wow..You are done.&lt;br /&gt;&lt;br /&gt;There is one more way to accomplish the above mentioned task. We can programmatically export our datatable. The syntax for doing the same is:&lt;br /&gt;&lt;br /&gt;DataTable.Export(FileName)&lt;br /&gt;&lt;br /&gt;Here “FileName” is the full path of the location to which the Data Table should be exported. For example:&lt;br /&gt;&lt;br /&gt;DataTable.Export(“C:\Expert.xls”)&lt;br /&gt;&lt;br /&gt;Note: For detailed information, you can see the inbuilt help file provided by QTP.&lt;br /&gt;&lt;br /&gt;Keywords: QTP, Excel, ExcelSheet, datatable, parameterize&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-5227294333968455469?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/5227294333968455469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=5227294333968455469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5227294333968455469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/5227294333968455469'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/amazing-power-of-qtp-for-import-export.html' title='Amazing power of QTP for Import &amp; Export of Data from datatable using QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LFOEX-ZBxzg/SK-WMokiF-I/AAAAAAAAAGs/19dshrwuxwY/s72-c/DataTable.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2411606482445769639</id><published>2008-06-06T16:34:00.008+05:30</published><updated>2008-12-31T21:12:52.510+05:30</updated><title type='text'>Usage of Datatable: Parameterization</title><content type='html'>Usage of DataTable&lt;br /&gt;&lt;br /&gt;Datatable is infact an excel sheet which is embedded into the QTP with datatable as name. It is mainly used to parameterize the scripts. We have to make the constant value as parameter, so that in each iteration(cycle) it takes a value that is supplied in run-time datatable. Through parameterization only we can drive a transaction (action) with different sets of data.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;There are two types of sheets inside the QTP datatable:&lt;br /&gt;1. Global DataTable&lt;br /&gt;2. Local DataTable&lt;br /&gt;&lt;br /&gt;Global dataTable is created by default with every new script and Local Datatable is created everytime when a new Action is created inside the script. You can even view the contents of your DataTable inside the file “Default.xls” which is created on saving the script.&lt;br /&gt;&lt;br /&gt;Now, lets see how we can really utilize the datatable in our scripting.&lt;br /&gt;&lt;br /&gt;1. Create a new script and open your browser and navigate to http://www.gmail.com.&lt;br /&gt;2. Start recording and provide a dummy username and password say “User1” and “Pass1”.&lt;br /&gt;3. Stop your recording.&lt;br /&gt;&lt;br /&gt;You will see a script like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser("Browser").Page("Gmail: Email from Google").WebEdit("Email").Set "user"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser("Browser").Page("Gmail: Email from Google").WebEdit("Passwd").SetSecure “48af0f9632214bc0964877b44a4e"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Now create two columns in Global DataTable named “Username” and “Password”.&lt;br /&gt;5. Provide “user1” and “user2” in the first two rows of above created “Username” column.&lt;br /&gt;6. Similarly provide “pass1” and “pass2” in the first two rows of the above-created “Password” column.&lt;br /&gt;&lt;br /&gt;Now in order to access the values created in Datatable, we will use DataTable associated methods properties. The most popular is “Value” which is the default datatable property. Now let us see how do we access values stored in dataTable.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UserID1=DataTable.Value(“UserName”,dtGlobalSheet)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Pass1= DataTable.Value(“Password”,dtGlobalSheet)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here “UserName” is the name of DataTable column and dtGlobalSheet signifies we are working with the datatable. Here, you can also ommit "Value" which is optional.&lt;br /&gt;&lt;br /&gt;Now add these two lines into your script and so your script will look like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UserID1=DataTable(“UserName”,dtGlobalSheet)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Pass1= DataTable(“Password”,dtGlobalSheet)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser("Browser").Page("Gmail: Email from Google").WebEdit("Email").Set "user"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser("Browser").Page("Gmail: Email from Google").WebEdit("Passwd").SetSecure “48af0f9632214bc0964877b44a4e"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now modify the above two lines so that they will look like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Browser("Browser").Page("Gmail: Email from Google").WebEdit("Email").Set UserID1 Browser("Browser").Page("Gmail: Email from Google").WebEdit("Passwd").Set Pass1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What I have done in the above script? Any guesses.. Instead of hard coded values, I infact parameterized my script so that my usernames and passwords come from run time datatable.&lt;br /&gt;&lt;br /&gt;In order to move your pointer to next row, I mean if you want to use your second row, just use:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DataTable.SetNextRow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now the real powerful feature of qtp is it can run my script for all datatable values. For this, click File-&gt;Settings. Navigate to Run tab inside Test Settings dialog box. Select “Run on all rows” option and click OK button. Run your script and voila you are done………&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2411606482445769639?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2411606482445769639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2411606482445769639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2411606482445769639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2411606482445769639'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/usage-of-datatable-parameterization.html' title='Usage of Datatable: Parameterization'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-6650327030893278122</id><published>2008-06-06T16:20:00.003+05:30</published><updated>2008-08-28T20:04:08.749+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation Object Model'/><title type='text'>Checking the status of a process in RAM through QTP</title><content type='html'>This site has been brought to you by an HP certified expert of QTP.&lt;br /&gt;&lt;br /&gt;It is my continuous endevour to give the best to my readers.&lt;br /&gt;&lt;br /&gt;This article is under updation will be available to you shortly.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ExpertQTP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://quicktesthp.blogspot.com&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-6650327030893278122?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/6650327030893278122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=6650327030893278122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6650327030893278122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/6650327030893278122'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/to-check-through-qtp-if-process-is.html' title='Checking the status of a process in RAM through QTP'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2933811546986683024</id><published>2008-06-06T16:11:00.015+05:30</published><updated>2008-08-27T08:44:06.904+05:30</updated><title type='text'>Open QTP through VBScript when it is already Closed</title><content type='html'>Following illustration created in VBScript launches the QTP when it is already closed from the beginning means no process in the RAM.&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;Set obj = CreateObject("QuickTest.Application") 'Creates an instance of the QTP&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.Launch&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.Visible = True&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.WindowState = "Maximized" 'Maximizes the application window of the QTP &lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.ActivateView "ExpertView" 'Displays the Expert View of the QTP&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.open "D:\ExpertQTP", False 'Opens the script from C:\ ExpertQTP in an editable mode&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.Test.Run 'Runs the script&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt;obj.Quit 'Quits the QTP application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyways, thereafter we can paste the above script in a Text Editor like “Notepad”, provide the name as "ExpertQTP.vbs" and save this file in the D:\ drive. And lastly, dont forget the double quotes which will go along with the name..&lt;br /&gt;&lt;br /&gt;Keywords: QTP, hp quicktest, VbScript&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-2933811546986683024?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/2933811546986683024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=2933811546986683024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2933811546986683024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/2933811546986683024'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/open-qtp-through-vbscript-when-it-is.html' title='Open QTP through VBScript when it is already Closed'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3967747350771237308</id><published>2008-06-06T16:00:00.001+05:30</published><updated>2008-06-18T22:33:50.609+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Automation Object Model'/><title type='text'>AOM : Automation Object Model</title><content type='html'>&lt;h2 class="pn1Heading"&gt;Automating QuickTest Operations &lt;/h2&gt;&lt;a name="wp76548"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Just as you use QuickTest to automate the testing of your  applications, you can use the QuickTest Professional automation object model to  automate your QuickTest operations. Using the objects, methods, and properties  exposed by the QuickTest automation object model, you can write programs that  configure QuickTest options and run tests or components instead of performing  these operations manually using the QuickTest interface. &lt;/p&gt;&lt;a name="wp76568"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Automation programs are especially useful for performing the  same tasks multiple times or on multiple tests or components, or quickly  configuring QuickTest according to your needs for a particular environment or  application.&lt;br /&gt;&lt;/p&gt;&lt;h2 class="pn2Heading"&gt;About Automating QuickTest Operations &lt;/h2&gt;&lt;a name="wp98555"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;You can use the QuickTest Professional automation object model  to write programs that automate your QuickTest operations. The QuickTest  automation object model provides objects, methods, and properties that enable  you to control QuickTest from another application. &lt;/p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;What is Automation?&lt;/span&gt;&lt;/span&gt; &lt;a name="wp76624"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;&lt;b style="font-weight: bold;"&gt;Automation&lt;/b&gt; is a Microsoft  technology that makes it possible to access software objects inside one  application from other applications. These objects can be easily created and  manipulated using a scripting or programming language such as VBScript or VC++.  Automation enables you to control the functionality of an application  programmatically. &lt;/p&gt;&lt;a name="wp76625"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;An &lt;b style="font-weight: bold;"&gt;object model&lt;/b&gt; is a  structural representation of software objects (classes) that comprise the  implementation of a system or application. An object model defines a set of  classes and interfaces, together with their properties, methods and events, and  their relationships.&lt;br /&gt;&lt;/p&gt;&lt;h4 class="pn3Heading"&gt;&lt;span style="font-size:130%;"&gt;What is the QuickTest Automation Object Model?&lt;/span&gt; &lt;/h4&gt;&lt;a name="wp76632"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Essentially all configuration and run functionality provided  via the QuickTest interface is in some way represented in the QuickTest  automation object model via objects, methods, and properties. Although a  one-on-one comparison cannot always be made, most dialog boxes in QuickTest have  a corresponding automation object, most options in dialog boxes can be set  and/or retrieved using the corresponding object property, and most menu commands  and other operations have corresponding automation methods. &lt;/p&gt;&lt;a name="wp76645"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;You can use the objects, methods, and properties exposed by  the QuickTest automation object model, along with standard programming elements  such as loops and conditional statements to design your program. &lt;/p&gt;&lt;a name="wp76646"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Automation programs are especially useful for performing the  same tasks multiple times or on multiple tests or components, or quickly  configuring QuickTest according to your needs for a particular environment or  application. &lt;/p&gt;&lt;a name="wp117754"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;For example, you can create and run an automation program from  Microsoft Visual Basic that loads the required add-ins for a test or component,  starts QuickTest in visible mode, opens the test or component, configures  settings that correspond to those in the Options, Test or Business Component  Settings, and Record and Run Settings dialog boxes, runs the test or component,  and saves the test or component. &lt;/p&gt;&lt;a name="wp76658"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;You can then add a simple loop to your program so that your  single program can perform the operations described above for multiple tests or  components. &lt;/p&gt;&lt;a name="wp76662"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;You can also create an initialization program that opens  QuickTest with specific configuration settings. You can then instruct all of  your testers to open QuickTest using this automation program to ensure that all  of your testers are always working with the same configuration.&lt;/p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Deciding When to Use QuickTest Automation Programs &lt;/span&gt;&lt;/span&gt;&lt;a name="wp76681"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Like the tests or components you design using QuickTest,  creating a useful QuickTest automation program requires planning, design time,  and testing. You must always weigh the initial investment with the time and  human-resource savings you gain from automating potentially long or tedious  tasks. &lt;/p&gt;&lt;a name="wp76688"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;Any QuickTest operation that you must perform many times in a  row or must perform on a regular basis is a good candidate for a QuickTest  automation program. &lt;/p&gt;&lt;a name="wp76695"&gt;&lt;/a&gt; &lt;p class="pRegtext"&gt;The following are just a few examples of useful QuickTest  automation programs: &lt;/p&gt; &lt;div class="pSmartBullet1"&gt; &lt;ul class="pSmartBullet1"&gt;&lt;a name="wp76696"&gt;&lt;/a&gt;&lt;div class="pSmartBullet1"&gt; &lt;li&gt;&lt;b style="font-weight: bold;"&gt;Initialization programs&lt;/b&gt;—You can write a  program that automatically starts QuickTest and configures the options and the  settings required for recording on a specific environment.&lt;/li&gt;&lt;/div&gt;&lt;a name="wp76700"&gt;&lt;/a&gt;&lt;div class="pSmartBullet1"&gt; &lt;li&gt;&lt;b style="font-weight: bold;"&gt;Maintaining your tests or components&lt;/b&gt;—You  can write a program that iterates over your collection of tests and components  to accomplish a certain goal. For example:&lt;/li&gt;&lt;/div&gt;&lt;div class="pSmartBullet2"&gt; &lt;ul class="pSmartBullet2"&gt;&lt;a name="wp76701"&gt;&lt;/a&gt;&lt;div class="pSmartBullet2"&gt; &lt;li&gt;&lt;b style="font-weight: bold;"&gt;Updating values&lt;/b&gt;—opening each test or  component with the proper add-ins, running it in update run mode against an  updated application, and saving it in order to update the values in all of your  tests and components to match the updated values in your  application.&lt;/li&gt;&lt;/div&gt;&lt;a name="wp87164"&gt;&lt;/a&gt;&lt;div class="pSmartBullet2"&gt; &lt;li&gt;&lt;b style="font-weight: bold;"&gt;Applying new options to existing tests or  components&lt;/b&gt;—When you upgrade to a new version of QuickTest, you may find that  the new version offers certain options that you want to apply to your existing  tests and components. You can write a program that opens each existing test and  component, sets values for the new options, then saves and closes  it.&lt;/li&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/div&gt;&lt;a name="wp76709"&gt;&lt;/a&gt;&lt;div class="pSmartBullet1"&gt; &lt;li&gt;&lt;b style="font-weight: bold;"&gt;Calling &lt;/b&gt;&lt;b style="font-weight: bold;"&gt;QuickTest&lt;/b&gt;&lt;b style="font-weight: bold;"&gt; from other  applications&lt;/b&gt;—You can design your own applications with options or controls  that run QuickTest automation programs. For example, you could create a Web form  or simple Windows interface from which a product manager could schedule  QuickTest runs, even if the manager is not familiar with QuickTest.&lt;/li&gt;&lt;/div&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3967747350771237308?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3967747350771237308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3967747350771237308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3967747350771237308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3967747350771237308'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/aom-automation-object-model.html' title='AOM : Automation Object Model'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-7273159698960410113</id><published>2008-06-06T15:48:00.005+05:30</published><updated>2008-09-03T15:33:11.823+05:30</updated><title type='text'>Pros &amp; Cons of going in for Automated Testing</title><content type='html'>&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;When to use the Automation tools:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Great effort is required in firstly automating the test cases and maintaining them thereafter. Hence some sort of cost-benefit analysis is quite helpful before investing money and putting efforts into it.&lt;br /&gt;&lt;br /&gt;The test engineer should evaluate whether the likely benefits of automation are fitting within the boundaries of the required improvement criteria and whether the pursuit of automated testing on the project is still logical &amp;amp; falling within the framework of organizational needs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Automation is suited to following types of testing with specific intentions:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;1) Functional Testing&lt;/span&gt;&lt;/strong&gt; – on operations which perform as per the expectations.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;2) Regression Testing&lt;/span&gt;&lt;/strong&gt; – on the behavior of the system which has not been changed.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;3) Exception Testing&lt;/span&gt;&lt;/strong&gt; – thereby forcing error conditions in the system.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;4) Stress Testing&lt;/span&gt;&lt;/strong&gt; – to determine the absolute capacities of the application and operational infrastructure.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;5) Performance Testing&lt;/span&gt;&lt;/strong&gt; – to provide assurance that the performance of the system will be adequate for both batch runs and online transactions in relation to business projections and requirements.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;6) Load Testing&lt;/span&gt;&lt;/strong&gt; – to determine the points at which the capacity and performance of the system become degraded to the situation that hardware or software upgrades would be required.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Benefits of Automated Testing:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;1) Reliable:&lt;/span&gt;&lt;/strong&gt; Tests perform precisely the same operations each time they are run, thereby eliminating human error. Hence it produces a reliable system. &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;2) Repeatable:&lt;/span&gt;&lt;/strong&gt; You can test how the software reacts under repeated execution of the same operations.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;3) Programmable:&lt;/span&gt;&lt;/strong&gt; You can program sophisticated tests that bring out hidden information from the application.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;4) Comprehensive:&lt;/span&gt;&lt;/strong&gt; You can build a suite of tests that covers every feature in your application.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;5) Reusable:&lt;/span&gt;&lt;/strong&gt; You can reuse tests on different versions of an application, even if the user interface changes.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;6) Better Quality Software:&lt;/span&gt;&lt;/strong&gt; It Improves the quality of the testing effort. Because you can run more tests in less time with fewer resources&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;7) Fast:&lt;/span&gt;&lt;/strong&gt; It reduces the test effort by minimizing the schedule. Automated Tools run tests significantly faster than human users.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;8) Economical:&lt;/span&gt;&lt;/strong&gt; As the number of resources for regression test are reduced.&lt;br /&gt;&lt;br /&gt;Choosing the right tools for the job and targeting the right areas of the organization to deploy them can only realize these benefits. The right areas where the automation fit must be chosen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Disadvantages of Automation Testing:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Though the automation testing has many advantages, it has its own disadvantages too. Some of the disadvantages are:&lt;br /&gt;&lt;br /&gt;# Proficiency is required to write the automation test scripts.&lt;br /&gt;&lt;br /&gt;# Debugging the test script is major issue. If any error is present in the test script, sometimes it may lead to deadly consequences.&lt;br /&gt;&lt;br /&gt;# Test maintenance is costly in case of playback methods. Even though a minor change occurs in the GUI, the test script has to be re-recorded or replaced by a new test script.&lt;br /&gt;&lt;br /&gt;# Maintenance of test data files is difficult, if the test script tests more screens.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Ultimately how to decide – Whether to go in for Automated Testing or Manual Testing?&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;1) Based upon the frequency of use of Test Cases:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Automating a test case requires almost 3-4 times the effort as compared to manual execution of it once. To draw benefit out of significant investment in the automation tool, we should be able to execute the automation script the maximum number of times or at least 7-8 times. There is no worthwhile idea of going in for an automation tool for short-term product, which can be easily managed by manual means. For products involving many rounds of testing, the use of an automation tool is understandable.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;2) Time comparison:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Automated versus Manual Testing: Generally an automation script runs much faster as compared to manual execution. However post execution activities are considerably time consuming. After running the automation script fully; time consuming activities are the analysis of test results &amp;amp; investigation or identification of actions causing failure at defined checkpoints. Whereas in case of manual execution of the test script, there is no need of any separate time for analysis of the results, since the actions causing failure at checkpoints become already known.&lt;br /&gt;&lt;br /&gt;Hence automated testing is viable only if, the combined time spent on running the automation script as well as doing post automation analysis of test results is significantly less in comparison to the time spent on manual execution. However nicely developed automation scripts do not need constant monitoring and can run without any manual intervention. In such a case automation can be greatly productive &amp;amp; can cut down the time of running the scripts.&lt;br /&gt;&lt;br /&gt;However when large number of regression issues are there after fixing the bugs, automation is the best alternative. Manual testing can be extremely time consuming in such cases.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;3) Reusability of Automation Scripts:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;The automated testing is viable in case automation scripts are reusable in future as well. One may be compelled to think again in favor of automation if considerable effort is expected to be made in upgrading the automation scripts. The return on investment made on the automation tool can be maximized by reusability of the automation scripts with small modifications.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;4) Stability of the Product under Test:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Automation scripts are not advisable for use on software product, which itself is not adequately stable. Frequent changes in automation script are not desirable, thus unless the product acquires enough stability during its development cycle, there is no point in automation unless we are operating in an agile environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;5) Adaptability of test cases for automation:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;A statement that, "All test cases can easily be automated" – is not true. Many a times we land up with some type of test cases, which are not worth automating. Hence there is no point in wasting automation effort over such test cases. For complicated product with tightly integrated bunch of many applications, running the automation script again &amp;amp; again in the event of stoppage of the test case, can become a pain in the neck. In such cases tester would certainly prefer to run the script manually &amp;amp; save considerable amount of time as compared to running the automated script.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;6) Exploitation of automation tool:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;If we want to go in for automated testing of a product, we must draw full benefit out of the test tool to draw the maximum return on its investment. The automation tool should be deployed for performing less complicated / time consuming &amp;amp; repetitive tasks. This will help the test engineers in concentrating their time &amp;amp; energy on other significantly important tasks. There is no point in automating highly complex test cases, which can easily be executed manually.&lt;br /&gt;&lt;br /&gt;Automation tool should be deployed to test the breadth of the application under test. However manual test engineers can handle the in-depth testing more efficiently.&lt;br /&gt;&lt;br /&gt;Manual testing can not be totally eliminated in any way. Automation scripts have both advantage and disadvantages in the sense that they perform actions exactly in the way they are coded to perform without any deviation. For even a slight deviation, the script needs to be changed. Running the same automated script again &amp;amp; again will not detect more bugs. However to detect more &amp;amp; more bugs, we need to move across the side &amp;amp; have little deviation from the flow, &amp;amp; such actions can be better accomplished by manual testing.&lt;br /&gt;&lt;br /&gt;When a test case is perfectly designed &amp;amp; made to execute from end to end automatically through the tool without, it automatically verifies all predefined check points without any manual intervention.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;7) User simulation over large web application:&lt;/span&gt;&lt;/strong&gt; For simulation of several virtual / dummy users interacting over a large web application, load testing automated tools like LoadRunner etc. can be easily deployed to establish the load bearing functionality of the application. Such load testing by manual means is extremely difficult. Thus in spite of many disadvantages &amp;amp; harms from automated scripts, the automation testing is adapted widely all over the world.&lt;br /&gt;&lt;br /&gt;Key Word: Automation Testing, Manual Testing, Pros &amp;amp; Cons&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-7273159698960410113?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/7273159698960410113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=7273159698960410113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7273159698960410113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/7273159698960410113'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/automation-testing-advantages.html' title='Pros &amp; Cons of going in for Automated Testing'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-8344966499078904447</id><published>2008-06-06T15:28:00.002+05:30</published><updated>2008-09-02T16:37:00.735+05:30</updated><title type='text'>Frequently Asked Interview Questions on Test Automation</title><content type='html'>&lt;span style="FONT-WEIGHT: bold"&gt;1. What automating testing tools are you familiar with?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Win Runner , Load runner, QTP , Silk Performer, Test director, Rational robot, QA run.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. How did you use automating testing tools in your job?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. For regression testing&lt;br /&gt;2. Criteria to decide the condition of a particular build&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;3. Describe some problem that you had with automating testing tool.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem of winrunner identifying the third party controls like infragistics control.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;4. How do you plan test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Prepare the automation Test plan&lt;br /&gt;2. Identify the scenario&lt;br /&gt;3. Record the scenario&lt;br /&gt;4. Enhance the scripts by inserting check points and Conditional Loops&lt;br /&gt;5. Incorporated Error Handler&lt;br /&gt;6. Debug the script&lt;br /&gt;7. Fix the issue&lt;br /&gt;8. Rerun the script and report the result.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;5. Can test automation improve test effectiveness?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yes, Automating a test makes the test process:&lt;br /&gt;1.Fast&lt;br /&gt;2.Reliable&lt;br /&gt;3. Repeatable&lt;br /&gt;4.Programmable&lt;br /&gt;5.Reusable&lt;br /&gt;6.Comprehensive&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;6. What is data - driven automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing the functionality with more test cases becomes laborious as the functionality grows. For multiple sets of data (test cases), you can execute the test once in which you can figure out for which data it has failed and for which data, the test has passed. This feature is available in the WinRunner with the data driven test where the data can be taken from an excel sheet or notepad.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;7. What are the main attributes of test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;software test automation attributes :&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Maintainability&lt;/span&gt; - the effort needed to update the test automation suites for each new release&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Reliability&lt;/span&gt; - the accuracy and repeatability of the test automation&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Flexibility&lt;/span&gt; - the ease of working with all the different kinds of automation test ware&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Efficiency &lt;/span&gt;- the total cost related to the effort needed for the automation&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Portability&lt;/span&gt; - the ability of the automated test to run on different environments&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Robustness&lt;/span&gt; - the effectiveness of automation on an unstable or rapidly changing system&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Usability&lt;/span&gt; - the extent to which automation can be used by different types of users&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;8. Does automation replace manual testing?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There can be some functionality which cannot be tested in an automated tool so we may have to do it manually. therefore manual testing can never be repleaced. (We can write the scripts for negative testing also but it is hectic task).When we talk about real environment we do negative testing manually.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;9. How will you choose a tool for test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;choosing of a tool depends on many things ...&lt;br /&gt;1. Application to be tested&lt;br /&gt;2. Test environment&lt;br /&gt;3. Scope and limitation of the tool.&lt;br /&gt;4. Feature of the tool.&lt;br /&gt;5. Cost of the tool.&lt;br /&gt;6. Whether the tool is compatible with your application which means tool should be able to interact with your application&lt;br /&gt;7. Ease of use&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;10. How you will evaluate the tool for test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We need to concentrate on the features of the tools and how this could be beneficial for our project. The additional new features and the enhancements of the features will also help.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;11. What are main benefits of test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FAST ,RELIABLE,COMPREHENSIVE,REUSABLE&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;12. What could go wrong with test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. The choice of automation tool for certain technologies&lt;br /&gt;2. Wrong set of test automated&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;13. How you will describe testing activities?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing activities start from the elaboration phase. The various testing activities are preparing the test plan, Preparing test cases, Execute the test case, Log the bug, validate the bug &amp;amp; take appropriate action for the bug, Automate the test cases.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;14. What testing activities you may want to automate?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Automate all the high priority test cases which needs to be executed as a part of regression testing for each build cycle.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;15. Describe common problems of test automation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The common problems are:&lt;br /&gt;1. Maintenance of the old script when there is a feature change or enhancement&lt;br /&gt;2. The change in technology of the application will affect the old scripts&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;16. What types of scripting techniques for test automation do you know?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5 types of scripting techniques:&lt;br /&gt;Linear&lt;br /&gt;Structured&lt;br /&gt;Shared&lt;br /&gt;Data Driven&lt;br /&gt;Key Driven&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;17. What are principles of good testing scripts for automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Proper code guiding standards&lt;br /&gt;2. Standard format for defining functions, exception handler etc&lt;br /&gt;3. Comments for functions&lt;br /&gt;4. Proper error handling mechanisms&lt;br /&gt;5. The appropriate synchronization techniques&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;18. What tools are available for support of testing during software development life cycle?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing tools for regression and load/stress testing for regression testing like, QTP, load runner, rational robot, winrunner, silk, testcomplete, Astra are available in the market. -For defect tracking BugZilla, Test Runner are available.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;19. Can the activities of test case design be automated?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As I know it, test case design is about formulating the steps to be carried out to verify something about the application under test. And this cannot be automated. IHowever, I agree that the process of putting the test results into the excel sheet.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;20. What are the limitations of automating software testing?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hard-to-create environments like “out of memory”, “invalid input/reply”, and “corrupt registry entries” make applications behave poorly and existing automated tools can’t force these condition - they simply test your application in “normal” environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;21. What skills needed to be a good test automator?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.Good Logic for programming.&lt;br /&gt;2. Analytical skills.&lt;br /&gt;3.Pessimistic in Nature.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;22. How to find that tools work well with your existing system?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Discuss with the support officials&lt;br /&gt;2. Download the trial version of the tool and evaluate&lt;br /&gt;3. Get suggestions from people who are working on the tool&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;23. Describe some problem that you had with automating testing tool.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. The inability of winrunner to identify the third party control like infragistics controls&lt;br /&gt;2. The change of the location of the table object will cause object not found error.&lt;br /&gt;3. The inability of the winrunner to execute the script against multiple languages.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;24. What are the main attributes of test automation?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maintainability, Reliability, Flexibility, Efficiency, Portability, Robustness, and Usability - these are the main attributes in test automation.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;25. What testing activities you may want to automate in a project?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Testing tools can be used for :&lt;br /&gt;* Sanity tests(which is repeated on every build),&lt;br /&gt;* stress/Load tests(U simulate a large no of users,which is manually impossible) &amp;amp;&lt;br /&gt;* Regression tests(which are done after every code change)&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;26. How to find that tools work well with your existing system?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To find this, select the suite of tests which are most important for your application. First run them with automated tool. Next subject the same tests to careful manual testing. If the results are coinciding you can say your testing tool has been performing.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;27. How will you test the field that generates auto numbers of AUT when we click the button 'NEW" in the application?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can create a textfile in a certain location, and update the auto generated value each time we run the test and compare the currently generated value with the previous one will be one solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;28. How will you evaluate the fields in the application under test using automation tool?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can use Verification points(rational Robot) to validate the fields .Ex.Using objectdata,objectdata properties VP we can validate fields.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;29. Can we perform the test of single application at the same time using different tools on the same machine?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No. The Testing Tools will be in the ambiguity to determine which browser is opened by which tool.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;31. What is 'configuration management'?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Configuration management is a process to control and document any changes made during the life of a project. Revision control, Change Control, and Release Control are important aspects of Configuration Management.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;32. How to test the Web applications?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The basic difference in web testing is here we have to test for URL's coverage and links coverage. Using WinRunner we can conduct web testing. But we have to make sure that Webtest option is selected in "Add in Manager". Using WR we cannot test XML objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;33. what are the problems encountered during the testing the application compatibility on different browsers and on different operating systems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Font issues,alignment issues&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;34. how exactly the testing the application compatibility on different browsers and on different operating systems is done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please Send Your Suggestion&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;35. How testing is proceeded when SRS or any other document is not given?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If SRS is not there we can perform Exploratory testing. In Exploratory testing the basic module is executed and depending on its results, the next plan is executed.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;36. How do we test for severe memory leakages ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By using Endurance Testing .&lt;br /&gt;Endurance Testing means checking for memory leaks or other problems that may occur with prolonged execution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-8344966499078904447?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/8344966499078904447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=8344966499078904447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8344966499078904447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/8344966499078904447'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/interview-questions-on-test-automation.html' title='Frequently Asked Interview Questions on Test Automation'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3571745177802134060</id><published>2008-06-06T15:08:00.003+05:30</published><updated>2008-09-06T13:25:43.207+05:30</updated><title type='text'>QTP as a Versatile Functional Testing Tool</title><content type='html'>&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;QTP is an automated functional Graphical User Interface testing tool created by the HP, with which we can do the automation of user actions on a web or client based computer applications. QTP provides an highly interactive &amp;amp; visual environment for the test development. &lt;br /&gt;&lt;br /&gt;It is generally used for functional regression test automation. Since WinRunner has become obsolete now, hence QTP takes its place due to many advanced features &amp;amp; updates.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Key Features of QTP at a Glance:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Ease of use:&lt;/span&gt;&lt;/strong&gt; QTP allows even novice testers to become productive in minutes. You can create a test script by simply pressing a Record button and using an application to perform a typical business process. Each step in the business process is automated documented with a plain-English sentence and screen shot. Users can easily modify, remove, or rearrange test steps in the Keyword View.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Simple interface:&lt;/span&gt;&lt;/strong&gt; QTP is much simpler to understand. It presents a test case as a simple business workflow to the tester.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Simple Language:&lt;/span&gt;&lt;/strong&gt; QTP uses Microsoft’s VBScript for its test procedures, and to manipulate the objects and controls of the application under test. VBScript is a real programming language where several existing functions &amp;amp; resources are easily available for implementation these days.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Use of zero-configuration Technology:&lt;/span&gt;&lt;/strong&gt; QTP uses next-generation "zero-configuration" Keyword Driven testing technology. This helps in faster test creation, easier maintenance, and provides more powerful data-driving capability.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Automatic insertion of checkpoints:&lt;/span&gt;&lt;/strong&gt; QTP enables thorough validation of applications through a full complement of checkpoints. QTP can automatically introduce checkpoints to verify application properties and functionality, for example to validate output or check link validity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Marvelous interface with Data-tables:&lt;/span&gt;&lt;/strong&gt; QTP allows entry of test data into the Data Table, an integrated spreadsheet with the full functionality of Excel, to manipulate data sets and create multiple test iterations, without programming, to expand test case coverage. Data can be typed in or imported from databases, spreadsheets, or text files. QTP has better and easier to use Data table integration compared to WinRunner.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Better object identification mechanism:&lt;/span&gt;&lt;/strong&gt; QTP Identifies objects with Unique Smart Object Recognition, even if objects change from build to build, thereby enabling reliable unattended script execution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Support of variety of environment:&lt;/span&gt;&lt;/strong&gt; QTP supports functional testing of all popular environments, like Windows, Web, .Net, Visual Basic, ActiveX, Java, SAP, Siebel, Oracle, PeopleSoft, terminal emulators, and Web services.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Easy adaptability of Microsoft Object Models:&lt;/span&gt;&lt;/strong&gt; QTP can easily create and implement Microsoft Object Model like: Outlook objects, ADO objects, FileSystem objects, supports DOM, WSH, etc.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Auto-documentation technology:&lt;/span&gt;&lt;/strong&gt; QTP renders test documentation and test creation to a single step with the help of its auto-documentation technology&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Better functionality compared to WinRunner:&lt;/span&gt;&lt;/strong&gt; QTP is significantly easier &amp;amp; better compared to WinRunner in following aspects.&lt;br /&gt;&lt;br /&gt;a) Adaptation and creation of working test cases.&lt;br /&gt;b) Implementation of Test Run Iterations / Data driving of test&lt;br /&gt;c) Parameterization&lt;br /&gt;d) More robust test report&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;# Other marvelous features of QTP:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;a) Key word driven testing&lt;br /&gt;b) Better error handling mechanism&lt;br /&gt;c) Excellent data driven testing features&lt;br /&gt;d) XML support&lt;br /&gt;e) By using ActiveScreen, QTP can enhance existing QuickTest scripts without the "Application Under Test" being available.&lt;br /&gt;f) Easy execution of WinRunner scripts from QTP.&lt;br /&gt;g) Operates stand-alone, or integrated into HP Quality Center.&lt;br /&gt;&lt;br /&gt;Key Word: QTP, Quicktest, Functional Testing Tool, Features QTP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3571745177802134060?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3571745177802134060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3571745177802134060' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3571745177802134060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3571745177802134060'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/qtp-functional-testing-tool-review.html' title='QTP as a Versatile Functional Testing Tool'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-3846595998653135680</id><published>2008-06-06T15:03:00.003+05:30</published><updated>2008-08-28T17:34:22.661+05:30</updated><title type='text'>Crucial Decision – Whether to Automate my Testing or Not</title><content type='html'>Let us firstly delve upon some of the role of Man versus Tool in a Testing Project.&lt;br /&gt;# Analysis of the Product – Done by Human&lt;br /&gt;# Designing of the Test – Done by Human&lt;br /&gt;# Execution of the Test 1st time – Done by Human&lt;br /&gt;# Evaluation of the Results – Done by Human&lt;br /&gt;# Reporting of the 1st Bug – Done by Human&lt;br /&gt;# Saving of the Code – Done by Human&lt;br /&gt;# Saving of the Results – Done by Human&lt;br /&gt;# Documentation of the Test – Done by Human&lt;br /&gt;# Re-run the Test – Done by Tool&lt;br /&gt;# Evaluation of the Results – Done by Tool as well as human in case of a mismatch&lt;br /&gt;# Maintenance of the Results – Done by Human&lt;br /&gt;&lt;br /&gt;Is it not interesting to note that in a software project human intervention plays a major role &amp;amp; can’t be dispensed with? We may be living with a notion that machine or a tool will lighten the burden of humans to great extent, it might be a fair illusion. In practical scenarios, ratio of human effort versus tool effort may be as high as 90:10.&lt;br /&gt;&lt;br /&gt;In spite of full knowledge of such odds, test automation eases out the burden of testers to a great extent. That is why many automation tools are getting popularity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Now Let us see the situations when to automate our Testing Process: &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Decision of automating the testing does not remain an intelligent one in all situations. There can be many situations wherein automated testing may not be viable. Thus to decide whether and when to automate or not is a crucial one. A decision in favor of automation requires proper analysis and near drawing of clear-cut boundaries between automated test plan and the manual test plan. Planning needs to be done for the use of programming language like Visual Basic or C# because writing of test scripts itself is a software development activity consuming great amount of time.&lt;br /&gt;&lt;br /&gt;There is no hard &amp;amp; fast rule to judge as to what should be tested manually and what should be tested with the help of automated test scripts. It is a matter of experience which itself is a best judge. However there are a few preliminary questions, which a team leader can raise before taking a decision in favor of automated testing of a project. The following considerations shall be of great help to us in ascertaining, as to whether it is worthwhile to automate the testing process of the particular project or not.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;1) Consideration of Manpower Skills &amp;amp; Project Complexity:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;There are many occasions when Project Managers are found to go in for automated testing projects giving due consideration to the skill levels of the manpower available with them. Availability of personnel of desired skill levels is extremely important for the success of any project.&lt;br /&gt;Few key aspects needing careful consideration are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Understand the scope of the automated testing:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;If we are aiming at completely automating all the tests, then the scope of testing is totally unrealistic.&lt;br /&gt;&lt;br /&gt;However for introducing automated testing in some of the existing projects or into an absolutely new project – it is better to begin with little but manageable targets. We should not adventure into unrealistic or unmanageable targets. Since the skill levels of all testers &amp;amp; programmers are bound to be different, we should be sure of the capability &amp;amp; experience level of these personnel. To check this aspect, we can ask the team members to write down a few simple utilities which can support our testing project using Visual Basic or C#.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;b) Know the automation skill level of the testing team fully well:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;If the existing team is quite new to the area of automation, we should not make unnecessary haste. We should allocate sufficient time &amp;amp; resources for imparting proper training to them.&lt;br /&gt;&lt;br /&gt;Before starting an automation project for the first time, we would need to reinforce the present team of testers by the induction of experienced automated testing personnel. The level of experience of testing personnel shall be the measure of level of automation the organization shall be able to handle. Thus skill &amp;amp; experience of the testing personnel is of prime importance for the overall success of the automation project.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;c) Check the real availability of the experienced testers:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;In case experienced &amp;amp; skilled testers are present in the organization, still it is important to ascertain as to whether these people are actually available or not. Many a times it would happen that the projects would take off with strong teams with the participation of experienced members, but over a passage of time such people will migrate to other newer projects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;2) Consideration of Product related aspects:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;All applications being tested are not created equal. Generally, when automated test scripts are written, we work behind the GUI, meaning thereby we just create &amp;amp; polish various bits &amp;amp; pieces of the software. We need to do thorough planning to ascertain as to whether these activities are in line with the requirements of our product.&lt;br /&gt;Few key aspects needing careful consideration are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Whether the application is sufficiently stable or not:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;We should not attempt creation of automation scripts unless &amp;amp; until the application has acquired a sufficient degree of stability. Otherwise what will happen is that every day you will be engaged in updating your test script to match the changes happening in the unstable application. Hence if we start ambitiously too soon, we might land up wasting the precious time &amp;amp; money. Automated testing is best suited to products which have acquired enough stability of structure and elements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) Are we going to test the User Interface:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Some of the automated testing tools are specifically tailored to suit the GUI. Thus for the testing of the GUI of an application under test, we should try to deploy such specifically tailored automated testing tools as compared to others. Some of the cheaper / open source tools may also be helpful.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;c) Frequency of repetition of Test Runs:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;If we are forced to repeat the test runs on large frequency – say more than ten times, it is worthwhile to go in for automated testing. Computers are best suited to repetitive tasks perfectly without any strain. Regression testing to resolve high-priority bugs needing repetition of the similar test time &amp;amp; again can be called a perfect case for automation. Doing Build Verification Test on a software product to verify its robustness, build after build is also ideal for going into automation due to being of repetitive nature.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;d) Compatibility over multiple platforms:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Majority of the software product are expected to be used over different versions of OS. In MS Windows family itself so many versions are available like Vista, XP, Win 2K, WinNT, Win9x etc.. Compatibility aspect of the application needs to be given due consideration &amp;amp; automated testing scripts should be designed to take care of such compatibility aspects.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;e) Cost economics justifying the automation:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;Automated testing can be time consuming &amp;amp; a bit taxing on the pocket initially, but can lead to addition of a lot of value to the project. Still for smaller projects it may not be economically viable. But for large projects it would certainly prove to be a cost saver.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;3) Test-Management Aspects:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Few key test management related aspects needing careful consideration are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;a) Availability of proper Software tools relevant to the project:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;Ready availability of adequate number of seats of all relevant software tools is very essential.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;b) Introduction of automated testing in between existing testing process:&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;When automation is to be inserted between the existing testing process, it calls for proper integration of the test scripts with manual tests &amp;amp; ordinary commercial tools. This can become extremely time consuming. Hence important aspect of introduction of test automation in between the other testing process should be given due consideration that it should not have any adverse impact on the budget &amp;amp; overall project time Schedule&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;c) Time Constraints:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Creation of automation test scripts is nothing but an activity being a part of software development. Adequate consideration needs to be given as to whether we have sufficient time for writing, debugging &amp;amp; maintaining the test scripts, otherwise we can land up in wasteful consumption of time &amp;amp; money.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;d) Allocation &amp;amp; Management of Resources:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;Testing efforts &amp;amp; their consequent results like test scripts once developed for a particular project must be reusable for future projects as well. Such scripts become valuable assets for the organization for use in future. Proper identification of such assets together with allocation of responsibility (among an individual or to a group) for their maintenance &amp;amp; archiving is very important, otherwise all efforts shall be become a sheer waste.&lt;br /&gt;&lt;br /&gt;Based upon the individual experience &amp;amp; vision of the testers many such considerations evolve from project to project.&lt;br /&gt;&lt;br /&gt;Key Word: Automation, Testing, QTP, Automated Testing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3132703535514457596-3846595998653135680?l=quicktesthp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://quicktesthp.blogspot.com/feeds/3846595998653135680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3132703535514457596&amp;postID=3846595998653135680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3846595998653135680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3132703535514457596/posts/default/3846595998653135680'/><link rel='alternate' type='text/html' href='http://quicktesthp.blogspot.com/2008/06/software-automation-testing-should.html' title='Crucial Decision – Whether to Automate my Testing or Not'/><author><name>QTP Expert</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3132703535514457596.post-2075078057200656396</id><published>2008-06-06T14:56:00.003+05:30</published><updated>2008-09-04T17:07:45.914+05:30</updated><title type='text'>Key Strategies for Migrating to Test Automation</title><content type='html'>Use of test automation tools especially for Graphic User Interface testing is increasingly becoming a trend. This increasing demand of such tools which are generally called Record and Playback tools is due to emergence of new technologies &amp;amp; increased productivity of the development tools and of the programming languages. It may be a Herculean task to convince the client with an argument that four weeks would be needed to manually test a new web application designed &amp;amp; updated within a span of two weeks by the developers.&lt;br /&gt;&lt;br /&gt;Gradually large numbers of test teams are turning towards test automation tools. Although testing teams have great expectations from automation tools like miracles during shortage of testing time, scarcity of available resources and complete automation; such expectations rarely get fulfilled. Thus purchasing expensive test automation tool may not be enough &amp;amp; it is likely to become just a showpiece, unless a scientific methodology is adopted for timely implementation of the tool.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;strong&gt;Have Realistic Expectations from Automation:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;While moving to test automati
