<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Automation Repository</title>
	
	<link>http://www.automationrepository.com</link>
	<description>QTP Tutorials Made Easy</description>
	<lastBuildDate>Sun, 13 Jan 2013 01:08:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/automationrepository/feeds" /><feedburner:info uri="automationrepository/feeds" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>automationrepository/feeds</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>How to install 30-Day Trial License in UFT 11.5</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/ZP_wuapQSfg/</link>
		<comments>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-license-30-day-seat-license/#comments</comments>
		<pubDate>Sun, 13 Jan 2013 01:07:57 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[QTP Basic Stuff]]></category>
		<category><![CDATA[Download UFT]]></category>
		<category><![CDATA[HP UFT 11.5]]></category>
		<category><![CDATA[Install UFT]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1943</guid>
		<description><![CDATA[This article is an extension of the previous article on UFT 11.5 &#8211; How to install UFT 11.5 Trial Version. This article explains how you can actually use the 30-Day Trial version in UFT 11.5. Before you install the trial license, make sure that you have gone through all the pre-requisites mentioned in the previous &#8230; <a href="http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-license-30-day-seat-license/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This article is an extension of the previous article on UFT 11.5 &#8211; <a title="How to install UFT 11.5 trial version" href="http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/"><strong>How to install UFT 11.5 Trial Version</strong></a>. This article explains how you can actually use the 30-Day Trial version in UFT 11.5.</p>
<p><em> </em><br />
Before you install the trial license, make sure that you have gone through<span id="more-1943"></span> all the <a title="How to install UFT 11.5 trial version" href="http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/">pre-requisites mentioned in the previous article</a>. After you have done so, start installing UFT 11.5 till you reach the final step where the installation of UFT 11.5 is complete. After that, follow the below video, which provides a detailed explanation on how you can use the 30-Day trail seat license in UFT 11.5</p>
<p style="text-align: center;"><iframe width="427" height="320" src="http://www.youtube.com/embed/A0G5DMk2ic0?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><span><br />
</span><br />
<strong>If you face any issues with the download or installation process, you can get in touch with us through email or using the comments section.</strong><br />
<span><br />
</span></p>
<div style="border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>Interested in more new articles on HP UFT 11.5? </strong>Join our blog to get new articles delivered directly in your inbox.</p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;">For more QTP Tutorials, you can visit our <strong><a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a></strong> page. You can also visit our <a title="Download" href="http://www.automationrepository.com/download/"><strong>Download</strong></a> Page to view all the downloadable content.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/ZP_wuapQSfg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-license-30-day-seat-license/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-license-30-day-seat-license/</feedburner:origLink></item>
		<item>
		<title>How to install UFT 11.5 trial version</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/M1bqkL1MHA4/</link>
		<comments>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/#comments</comments>
		<pubDate>Sat, 05 Jan 2013 08:49:49 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[QTP Basic Stuff]]></category>
		<category><![CDATA[HP UFT 11.5]]></category>
		<category><![CDATA[Install UFT]]></category>
		<category><![CDATA[QTP 11.5]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1932</guid>
		<description><![CDATA[First of all, if you have still not downloaded the latest version of QTP (Unified Functional Testing &#8211; UFT 11.5), you can refer this article on how to download UFT 11.5. Once you have downloaded the trial version from HP website, you can install it by referring the steps mentioned below. Before you install UFT &#8230; <a href="http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>First of all, if you have still not downloaded the <a title="HP QTP Latest Version – Unified Functional Testing (UFT) 11.5" href="http://www.automationrepository.com/2012/12/hp-qtp-latest-version-unified-functional-testing-uft-11-5/">latest version of QTP (Unified Functional Testing &#8211; UFT 11.5)</a>, you can refer this article on <strong><a title="Download UFT 11.5 Trial Version from HP" href="http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/">how to download UFT 11.5</a></strong>. Once you have downloaded the trial version from HP website, you can install it by referring the steps mentioned below.<span id="more-1932"></span></p>
<h3>Before you install UFT 11.5</h3>
<p><strong>1)</strong> Make sure that you have administrator privileges on the drive to which you want to install UFT 11.5.</p>
<p><strong>2)</strong> Make sure that you have Internet Explorer 7.0 or later installed on your machine.</p>
<p><strong>3)</strong> <span style="text-decoration: underline;"><strong>You can use UFT 11.5 trial version only if you are installing this for the first time in your system. If you have previously installed any other version of QTP in your system, the trial version of UFT 11.5 will not work (UFT will ask for a license when you try to open it)</strong></span></p>
<p><strong>4)</strong> If you have QTP 9.5 or later or Service Test 10.0 or later, then the installation process will first uninstall QTP or Service Test&#8217;s older version and will then install UFT 11.5. If you have QTP 9.2 installed on your system, then you must manually uninstall it before installing UFT 11.5.<br />
<span><br />
</span></p>
<h3>Step by Step process to install UFT 11.5</h3>
<p>You can either refer the below video or check the step by step process (given below the video) on how to install UFT 11.5.</p>
<p style="text-align: center;"><iframe width="569" height="320" src="http://www.youtube.com/embed/GT5CbL5XMkQ?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><strong>1)</strong> Once you download UFT 11.5, the downloaded file will be available to you as a .zip file. The first step would be to extract the .zip file.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - unzip the file" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-unzip-the-zipped-file.png" alt="Install UFT 11.5 - unzip the file" width="553" height="262" /></p>
<p><em> </em><br />
<strong>2)</strong> Open the unzipped folder and locate <strong>setup.exe</strong>.</p>
<p><img class="aligncenter" title="Install UFt 11.5 - setup.exe" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-setup.exe.png" alt="Install UFt 11.5 - setup.exe" width="506" height="171" /></p>
<p><em> </em><br />
<strong>3)</strong> Open setup.exe to start the installation process. You would be navigated to a screen as shown in the below image.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Installation Main Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-installation-main-page.png" alt="Install UFT 11.5 - Installation Main Screen" width="602" height="502" /></p>
<p><em> </em><br />
<strong>4)</strong> Click on <span style="text-decoration: underline;"><strong>Unified Functional Testing Setup</strong></span> link. You would be navigated to the Welcome Screen as shown below.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Welcome Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-welcome-screen.png" alt="Install UFT 11.5 - Welcome Screen" width="597" height="439" /></p>
<p><em> </em><br />
<strong>5)</strong> Click on Next button from the Welcome Screen. You will then be taken to the License Agreement screen.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - License Agreement screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-license-agreement.png" alt="Install UFT 11.5 - License Agreement screen" width="540" height="351" /></p>
<p><em> </em><br />
<strong>6)</strong> Select &#8216;<strong>I Agree</strong>&#8216; and then click on Next button. You will be now taken to &#8216;Customer Information&#8217; screen.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Customer Information Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-customer-information.png" alt="Install UFT 11.5 - Customer Information Screen" width="538" height="343" /></p>
<p><em> </em><br />
<strong>7)</strong> Upon clicking the Next button, you will be taken to Custom Setup (Add-Ins) Screen.</p>
<p><img class="aligncenter" title="Install UFt 11.5 - Add-ins Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-add-ins-screen.png" alt="Install UFt 11.5 - Add-ins Screen" width="597" height="439" /></p>
<p><em> </em><br />
<strong>8 )</strong> Select the required Add-ins and click on Next button. You would be taken to Select Installation Folder screen.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Select Installation Folder" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-select-installation-folder-screen.png" alt="Install UFT 11.5 - Select Installation Folder" width="538" height="345" /></p>
<p><em> </em><br />
<strong>9)</strong> Provide appropriate installation path and click on Next button. You would be taken to the Confirm Installation screen as shown below.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Confirm Installation" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-confirmation-screen.png" alt="Install UFT 11.5 - Confirm Installation" width="597" height="439" /></p>
<p><em> </em><br />
<strong>10)</strong> Upon clicking the Next button, the installation process will begin. <strong>The entire installation process may take 15-20 minutes to complete.</strong> Once the installation process is complete, you will be taken to the Installation Complete screen as shown below.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Installation Complete Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-installation-complete-screen.png" alt="Install UFT 11.5 - Installation Complete Screen" width="597" height="439" /></p>
<p><em> </em><br />
<strong>11)</strong> Click on Finish button. After this, Additional Installation Requirements Screen will be displayed.</p>
<p><img class="aligncenter" title="Install UFT 11.5 - Additional Installation Information Screen" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-additional-installation-requirements-screen.png" alt="Install UFT 11.5 - Additional Installation Information Screen" width="486" height="406" /></p>
<p><em> </em><br />
<strong>12)</strong> Select the first two check boxes. If you don&#8217;t have a valid license for UFT 11.5 (i.e. you want to install the trial version), uncheck the 3rd check box. Click on Run button. Once the additional installations are completed, you will be taken to a screen as shown below.</p>
<p><img class="aligncenter" title="UFT 11.5 - Installation Complete" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/install-uft-11.5-installation-complete.png" alt="UFT 11.5 - Installation Complete" width="486" height="406" /></p>
<p>Installation of UFT 11.5 is now complete. You can now close the Additional Installation Requirements window and start using UFT 11.5.</p>
<p><strong>If you face any issues with the download or installation process, you can get in touch with us through email or using the comments section.</strong><br />
<span><br />
</span></p>
<div style="border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>Interested in more new articles on HP UFT 11.5? </strong>Join our blog to get new articles delivered directly in your inbox.</p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;">For more QTP Tutorials, you can visit our <strong><a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a></strong> page. You can also visit our <a title="Download" href="http://www.automationrepository.com/download/"><strong>Download</strong></a> Page to view all the downloadable content.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/M1bqkL1MHA4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/</feedburner:origLink></item>
		<item>
		<title>Download UFT 11.5 Trial Version from HP</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/6oqc6wAaWNo/</link>
		<comments>http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/#comments</comments>
		<pubDate>Sat, 29 Dec 2012 02:54:42 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[QTP Basic Stuff]]></category>
		<category><![CDATA[QTP Concepts]]></category>
		<category><![CDATA[Download QTP]]></category>
		<category><![CDATA[Download UFT]]></category>
		<category><![CDATA[HP UFT 11.5]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1909</guid>
		<description><![CDATA[HP has released the latest version of QTP and it is being called HP Unified Functional Testing (UFT) 11.5. As mentioned in the previous article on the features of the new UFT 11.5, the trial version of UFT 11.5 is now available for download from HP website. The trial period of the software is 30 &#8230; <a href="http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HP has released the latest version of QTP and it is being called HP Unified Functional Testing (UFT) 11.5. As mentioned in the previous article on the <a title="HP QTP Latest Version – Unified Functional Testing (UFT) 11.5" href="http://www.automationrepository.com/2012/12/hp-qtp-latest-version-unified-functional-testing-uft-11-5/">features of the new UFT 11.5</a>, the trial version of UFT 11.5 is now available for download from HP website. <strong><span id="more-1909"></span>The trial period of the software is 30 days.</strong></p>
<p>You can either check the below video or follow the step by step approach (provided after the video) to download UFT 11.5 from HP website.</p>
<p style="text-align: center;"><iframe width="569" height="320" src="http://www.youtube.com/embed/bfHfQprTMLA?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h3>Steps to Download UFT (QTP) 11.5 from HP website</h3>
<p><strong>1)</strong> Go to <a title="UFT 11.5 trial version download link" href="http://www8.hp.com/us/en/software-solutions/software.html?compURI=1172957#tab=TAB3" target="_blank">UFT 11.5 download link</a>. You will be navigated to the page shown in the below screenshot.</p>
<p><img class="aligncenter" title="Download UFT 11.5" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/uft-11-5-download-1.png" alt="Download UFT 11.5" width="657" height="448" /></p>
<p><em> </em><br />
<strong>2)</strong> Click on the trial software section to expand it. Once expanded, you will see the links for various trial software that are currently available for download.</p>
<p><img class="aligncenter" title="Download UFT 11.5 - Trial Link" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/uft-11-5-download-2.png" alt="Download UFT 11.5 - Trial Link" width="533" height="322" /></p>
<p><em> </em><br />
<strong>3)</strong> Click on <strong>&#8216;HP Unified Functional Testing 11.50 CC English SW E-Media Evaluation&#8217;</strong> link. You would be taken to a page where you would need to provide your personal details as shown below.</p>
<p><img class="aligncenter" title="UFT 11.5 Download - Providing Personal Details" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/uft-11-5-download-3-personal-details.png" alt="UFT 11.5 Download - Providing Personal Details" width="640" height="428" /></p>
<p><em> </em><br />
<strong>4)</strong> Enter all the mandatory details and then click on Next button at the bottom of the page. If all the details are filled in correctly, you will be navigated to the &#8216;Terms of Service&#8217; screen as shown below.</p>
<p><img class="aligncenter" title="UFT 11.5 Download - Terms of Service" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/uft-11-5-download-4-terms-of-service.png" alt="UFT 11.5 Download - Terms of Service" width="580" height="359" /></p>
<p><em> </em><br />
<strong>5)</strong> Click on <strong>&#8220;I Agree&#8221;</strong> to move to the main download screen as shown in the below image.</p>
<p><img class="aligncenter" title="UFT 11.5 - Download Link" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/uft-11-5-download-5-download-page.png" alt="UFT 11.5 - Download Link" width="643" height="387" /></p>
<p><em> </em><br />
<strong>6)</strong> Click on the <strong>Download</strong> link to download the software. The software will be downloaded as a ZIP file.</p>
<p>As shown in the above image also, the size of UFT 11.5 is around 1.7GB. Downloading the software will take 1-2 hours (depending upon the internet speed).</p>
<p><span style="text-decoration: underline;"><strong>Related Article:</strong></span> <a title="How to install UFT 11.5 trial version" href="http://www.automationrepository.com/2013/01/how-to-install-uft-11-5-trial-version/" target="_blank"><strong>Installing UFT 11.5 Trial Version</strong></a></p>
<p><strong>In case you face any issues while downloading UFT 11.5, please feel free to contact us using email or using the comments section.</strong></p>
<p><span><br />
</span></p>
<div style="border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>Interested in more new articles on HP UFT 11.5? </strong>Join our blog to get new articles delivered directly in your inbox.</p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;">For more QTP Tutorials, you can visit our <strong><a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a></strong> page. You can also visit our <a title="Download" href="http://www.automationrepository.com/download/"><strong>Download</strong></a> Page to view all the downloadable content.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/6oqc6wAaWNo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/</feedburner:origLink></item>
		<item>
		<title>HP Unified Functional Testing (UFT 11.5) – QTP’s Latest Version</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/IEAPEYLPCyU/</link>
		<comments>http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features/#comments</comments>
		<pubDate>Sat, 08 Dec 2012 05:44:17 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[QTP Concepts]]></category>
		<category><![CDATA[HP UFT 11.5]]></category>
		<category><![CDATA[HP UFT Insight]]></category>
		<category><![CDATA[HP UFT Mobile]]></category>
		<category><![CDATA[QTP 11.5]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1900</guid>
		<description><![CDATA[HP has launched would soon be launching the latest version of QuickTest Professional (QTP). This new version of QTP is called HP Unified Functional Testing (UFT) 11.5. Below is the sneak preview of some of the important new features that will be available in UFT 11.5 1) What is UFT 11.5? The new version of &#8230; <a href="http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HP has launched <del>would soon be launching</del> the latest version of QuickTest Professional (QTP). This new version of QTP is called <strong>HP Unified Functional Testing (UFT) 11.5</strong>. Below is the sneak preview of some of the important new features that will be available in UFT 11.5<span id="more-1900"></span><br />
<span><br />
</span></p>
<h3>1) What is UFT 11.5?</h3>
<p>The new version of HP QTP is being called HP Unified Functional Testing 11.5 (UFT 11.5). <strong>UFT 11.5 is actually a combination of HP QTP (for testing GUI) and HP Service Test (for testing API).</strong></p>
<p><img class="aligncenter" title="What is HP UFT 11.5" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/hp-uft-11.5.png" alt="What is HP UFT 11.5" width="677" height="202" /><br />
<span><br />
</span></p>
<h3>2) Brand New Modern IDE</h3>
<p>This point has been discussed so many times at many forums. QTP&#8217;s IDE lacked the punch when compared to many modern IDE&#8217;s like Eclipse, Microsoft Visual Studio etc. It lacked many must have features that were there in many IDEs available in the market. With UFT 11.5, HP will be introducing a brand new modern IDE, which will</p>
<p><strong>a)</strong> have a new IDE aligned with modern dev IDEs (like Eclipse).</p>
<p><strong>b)</strong> have many new features such as script editing, coding, MDI, checkpoints, auto completion etc</p>
<p style="text-align: center;"><img class="aligncenter" title="HP UFT new IDE" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/hp-uft-11.5-new-ide.png" alt="HP UFT new IDE" width="943" height="407" /><br />
Image Courtesy: HP Webinar Slides</p>
<p><span><br />
</span></p>
<h3>3) Image Based Automation &#8211; Using HP UFT Insight</h3>
<p>With what I have understood, this seems to be a real killer. HP claims that, using HP UFT insight, you can simply recognize controls in the application by their appearance. This feature would enable you to record any object displayed on the screen, even if UFT is not able to recognize the Object&#8217;s technology.</p>
<p style="text-align: center;"><img class="aligncenter" title="HP UFT Insight" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/hp-uft-11.5-uft-insight.png" alt="HP UFT Insight" width="899" height="459" /><br />
Image Courtesy: HP Webinar Slides</p>
<p><span><br />
</span></p>
<h3>4) Integration with Open Source CI Systems</h3>
<p>This is another very good feature that has been implemented in UFT 11.5. This was one of the key drawbacks due to which QTP was not considered a good tool for automation in Agile Projects. With this new feature, you would be able to -</p>
<p><strong>a)</strong> integrate UFT with popular CI systems like Jenkins.</p>
<p><strong>b)</strong> automatically execute smoke and regression test cases repeatedly as part of nightly builds.<br />
<span><br />
</span></p>
<h3>5) HP UFT Mobile &#8211; Extended Support for Mobile Testing</h3>
<p>As part of UFT 11.5, HP will be providing lot of new features in mobile testing, where you will be able to -</p>
<p><strong>a)</strong> write agnostic scripts, which once written can be used on multiple devices.</p>
<p><strong>b)</strong> test your scripts on simulators as well as real devices.</p>
<p style="text-align: center;"><img class="aligncenter" title="HP UFT Mobile" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/hp-uft-mobile.png" alt="HP UFT Mobile" width="571" height="343" /><br />
Image Courtesy: HP Webinar Slides</p>
<p><span><br />
</span><br />
Apart from these major features, there are lots of other features such as pdf checkpoints, graphic UI &#8211; canvas, workflows support thanks to integration to QC / ALM, support for latest technologies – Qt apps, Flex, more than 20 new versions etc.</p>
<p>All these new features can be explored when HP releases the trial version of UFT 11.5. <del><strong>The trial version should be available by the end of December 2012.</strong></del> <strong></strong></p>
<p><strong><span style="text-decoration: underline;">Update:</span> </strong>The trial version of the software is now available for download. Refer <strong><a title="Download UFT 11.5 Trial Version from HP" href="http://www.automationrepository.com/2012/12/download-qtp-uft-11-5-trial-version/" target="_blank">UFT 11.5 download link</a></strong> to see detailed step by step process to download UFT 11.5.</p>
<p>For more information on the above points, refer the <strong><a title="HP Webinar Slides" href="http://h30499.www3.hp.com/hpeb/attachments/hpeb/sws-583/198/1/Functional%20Test%20Webinar%20Nov%2028%20final%20slides.pdf" target="_blank">HP Webinar Slides</a>.</strong></p>
<p style="text-align: center;"><iframe width="569" height="320" src="http://www.youtube.com/embed/-DKilwaiyGE?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><span><br />
</span></p>
<h3>Over to you</h3>
<p>What are your thoughts on this new version? Were you looking out for any specific features, that has been included/not included in the latest version? Use the comments section to let us know what you think about this new version.</p>
<p><span><br />
</span></p>
<div style="border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>Interested in more new articles on HP UFT 11.5? </strong>Join our blog to get new articles delivered directly in your inbox.</p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;">For more QTP Tutorials, you can visit our <strong><a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a></strong> page. You can also visit our <a title="Download" href="http://www.automationrepository.com/download/"><strong>Download</strong></a> Page to view all the downloadable content.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/IEAPEYLPCyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/12/hp-unified-functional-testing-uft-11-5-new-features/</feedburner:origLink></item>
		<item>
		<title>Actions in QTP – The Introduction</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/wva0_C0imbI/</link>
		<comments>http://www.automationrepository.com/2012/12/actions-in-qtp/#comments</comments>
		<pubDate>Sun, 02 Dec 2012 14:26:37 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[QTP Basic Stuff]]></category>
		<category><![CDATA[QTP Concepts]]></category>
		<category><![CDATA[QTP Actions]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1883</guid>
		<description><![CDATA[This article contains the basic information about &#8216;Actions in QTP&#8217;. The main points that you would read in this presentation is listed below. 1) What are QTP Actions 2) What are the different types of QTP actions 3) How actions access data from QTP data tables 4) How to call actions in your QTP scripts &#8230; <a href="http://www.automationrepository.com/2012/12/actions-in-qtp/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>This article contains the basic information about &#8216;Actions in QTP&#8217;. The main points that you would read in this presentation is listed below.</p>
<p><strong>1)</strong> What are QTP Actions</p>
<p><strong>2)</strong> What are the different types of QTP actions</p>
<p><strong>3)</strong> How actions access data from QTP data tables</p>
<p><strong>4)</strong> How to call actions in your QTP scripts<span id="more-1883"></span></p>
<p><em> </em><br />
Refer below presentation for more details on the above mentioned points.<br />
<span><br />
</span><br />
<iframe style="border: 1px solid #CCC; border-width: 1px 1px 0; margin-bottom: 5px;" src="http://www.slideshare.net/slideshow/embed_code/15450649?rel=0" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="597" height="486"></iframe></p>
<p>For more presentations on various QTP topics, refer <strong><a href="http://www.slideshare.net/Anish10110" target="_blank">this link</a></strong>.<br />
<span><br />
</span><br />
<strong> If you are unable to view the presentation due to any reason, you can download it from the below link.</strong></p>
<p><strong><a title="Test Automation and QTP - The Zeroth Step" href="http://www.automationrepository.com/wordpress/download-code/Qtp-Actions-The-Basics.pptx" target="_blank">Actions in QTP &#8211; The Basics<br />
</a></strong></p>
<p><strong><a title="Test Automation and QTP - The Zeroth Step" href="http://www.automationrepository.com/wordpress/download-code/Qtp-Actions-The-Basics.pptx" target="_blank"><br />
</a></strong></p>
</div>
<div style="border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p>If you enjoyed this article, you can join our blog to get new articles delivered directly in your inbox.</p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;">For more QTP Tutorials, you can visit our <strong><a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a></strong> page. You can also visit our <a title="Download" href="http://www.automationrepository.com/download/"><strong>Download</strong></a> Page to view all the downloadable content.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/wva0_C0imbI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/12/actions-in-qtp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/12/actions-in-qtp/</feedburner:origLink></item>
		<item>
		<title>Designing Keyword Driven Framework mapped at Functional Level – Part 2</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/s-3xZS4xDsE/</link>
		<comments>http://www.automationrepository.com/2012/11/desigining-keyword-driven-framework-mapped-at-functional-level-part-2/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 02:41:53 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[Advanced Concepts]]></category>
		<category><![CDATA[QTP Concepts]]></category>
		<category><![CDATA[QTP Framework]]></category>
		<category><![CDATA[QTP Keyword Driven Framework]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1863</guid>
		<description><![CDATA[Till now, we have covered many aspects of the Keyword Driven Framework in detail. This would be the last article of the Keyword Driven Framework series. In this article, we will see the actual implementation of the Keyword Driven Framework mapped at functional level (for more information about the design aspects of this framework, refer &#8230; <a href="http://www.automationrepository.com/2012/11/desigining-keyword-driven-framework-mapped-at-functional-level-part-2/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Till now, we have covered many aspects of the Keyword Driven Framework in detail. This would be the last article of the Keyword Driven Framework series. In this article, we will see the actual implementation of the Keyword Driven Framework mapped at functional level <span id="more-1863"></span>(for more information about the design aspects of this framework, refer the previous article from this link &#8211; <a title="Desigining Keyword Driven Framework mapped at Functional Level – Part 1" href="http://www.automationrepository.com/2012/10/desigining-keyword-driven-framework-mapped-at-functional-level-part-1/">Keyword Driven Framework mapped at Functional Level &#8211; Part 1</a>).<br />
<span><br />
</span></p>
<div style="font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: left;">
<p><strong>UPDATES</strong></p>
<p>1) You are free to download and play around with the code used for this framework. <strong>The download link is available at the end of the article.</strong></p>
<p>2) Just like this, we have written more articles on various other QTP Frameworks. If you wish to have a look at those, please visit <a title="QTP Frameworks – An Introduction" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/" target="_blank"><strong>QTP Framework</strong></a><strong></strong> main page. <strong>The bottom of the page contains links to other QTP Frameworks.</strong></p>
</div>
<p><span><br />
</span></p>
<h3>Topics that will be covered in this article</h3>
<p>We will be covering the following topics in this article -</p>
<p><strong>1)</strong> Identifying the components that will be used in this framework.</p>
<p><strong>2)</strong> Identifying the test cases that will be automated as part of this framework.</p>
<p><strong>3)</strong> Describing the process which would be used to write test scripts in this framework.</p>
<p><strong>4)</strong> Enhancements/Improvement points for the framework.</p>
<p>Let us now see each of these topics one by one.<br />
<span><br />
</span></p>
<h3>Components that will be used in this Framework</h3>
<p>Following are the components that we will use to create this framework from scratch.</p>
<p><strong>1) QTP Test Scripts (or QTP Actions):</strong> As part of this framework creation, we will be automating 3 test cases. And for each of these test cases, we will create a separate QTP Test Script.</p>
<p><strong>2) Function Library:</strong> There will be 2 function libraries that will be created for this framework. The first function library will contain all the functions that are related only to the framework (and not to the application). The second function library will contain the functions that will contain the functions related to the application.</p>
<p><strong>3) Object Repository:</strong> For this framework, we will use the Object Repository to store the object properties. <a title="Descriptive Programming in QTP – The Complete Guide : Part1" href="http://www.automationrepository.com/2012/03/descriptive-programming-in-qtp-the-complete-guide-part1/" target="_blank">Descriptive Programming</a> will not be used anywhere in this framework.</p>
<p><strong>4) Excel Sheet to Store Test Case Flow:</strong> We will be using a single excel workbook (and a single excel sheet in the workbook) to store the flow of all the 3 test cases.</p>
<p>Above mentioned are the 4 major components that will be used in this automation framework. Please note that the data for the test cases will be hard-coded in the test scripts only. Separate excel sheets will not be created to store data. The below figure shows the components and their flow.</p>
<p><img class="aligncenter" title="Components of Keyword Driven Framework" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-5-1-components.png" alt="Components of Keyword Driven Framework" width="314" height="498" /></p>
<p><span><br />
</span></p>
<h3>Test Cases that will be automated for this Framework</h3>
<p>For this framework, we will be working on the same test cases that were automated for <a title="Designing Keyword Driven Framework mapped at Operation Level – Part 2" href="http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/" target="_blank">Keyword Driven Framework mapped at Operation Level</a>. The 3 test cases are -</p>
<p><strong>1) TC_01_CreateOrder:</strong> For this test case, we will write a script that will login to Mercury Flight Reservation system and then create a new flight reservation.</p>
<p><strong>2) TC_02_ModifyOrder:</strong> In this test case, the script will log in to the application, open an existing order and then modify the order.</p>
<p><strong>3) TC_03_DeleteOrder:</strong> Here, the script will again log in to the application, open an existing order and then delete the order.<br />
<span><br />
</span></p>
<h3>Step By Step Method to Automate the First Test Script</h3>
<p>In this article, we will cover the creation of first test script in detail. And this test script will be created as per the framework specifications. Once you understand the underlying concepts used for creating the first script, you can use the same concepts to script the remaining test cases.</p>
<p>The below image depicts the basic steps which we will use to script the first test case from scratch.</p>
<p><img class="aligncenter" title="Keyword Driven Framework - Test Script Creation Flow" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-5-2.png" alt="Keyword Driven Framework - Test Script Creation Flow" width="504" height="656" /></p>
<p>Let us now cover each of these points in detail.</p>
<p><span><br />
</span></p>
<h3>Step 1: Creating the First Test Script in QTP in Linear Manner</h3>
<p>The first step would be to create the entire test script in the normal way (i.e. in the <a title="QTP Linear Framework – Complete Reference with Example" href="http://www.automationrepository.com/2012/04/qtp-framework-tutorial-qtp-linear-framework/" target="_blank">linear manner</a>). For this, you can follow the steps mentioned below.</p>
<p><strong>Step 1A:</strong> Open a new Test Case in QTP.</p>
<p><strong>Step 1B:</strong> Navigate to Resources -&gt; Object Repository Manager to open a new Object Repository.</p>
<p><strong>Step 1C:</strong> Open the Flight Reservation Application (windows version) from Start -&gt; All Programs -&gt; QuickTest Professional -&gt; Sample Applications -&gt; Flight (this path may differ depending upon the OS and QTP Versions)</p>
<p><strong>Step 1D:</strong> Add all the necessary objects (that are required for order creation) in the Object Repository.</p>
<p><strong>Step 1E:</strong> Associate the Object Repository with the Test Script.</p>
<p><strong>Step 1F:</strong> Once the Object Repository has been associated with the Test Script, write the script to insert a new order in the flight reservation system.</p>
<p><strong>Step 1G:</strong> Run the script to verify that the code is working fine.</p>
<p>The code you have written to insert a new order in Flight Reservation System will look similar to the code shown below.</p>
<pre class="brush: vb; title: ; notranslate">
'===== Code to Login to the Application =====
SystemUtil.Run &quot;C:\Program Files (x86)\HP\QuickTest Professional\samples\flight\app\flight4b.exe&quot;
Dialog(&quot;Login&quot;).WinEdit(&quot;AgenName&quot;).Set &quot;anish&quot;
Dialog(&quot;Login&quot;).WinEdit(&quot;Password&quot;).Set &quot;mercury&quot;
Dialog(&quot;Login&quot;).WinButton(&quot;OK&quot;).Click

'===== Code to Insert a New Order =====
Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
WshShell.SendKeys &quot;%(fn)&quot; 'Press Alt F+N to open new order screen
Window(&quot;Flight Reservation&quot;).ActiveX(&quot;DateOfFlight&quot;).Type &quot;010114&quot;
Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyFrom&quot;).Select &quot;Paris&quot;
Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyTo&quot;).Select &quot;Sydney&quot;
Window(&quot;Flight Reservation&quot;).WinButton(&quot;Flights&quot;).Click
'Select any Flight
Window(&quot;Flight Reservation&quot;).Dialog(&quot;FlightsTable&quot;).WinButton(&quot;OK&quot;).Click
'Provide Name and Insert Order
Window(&quot;Flight Reservation&quot;).WinEdit(&quot;Name&quot;).Set &quot;Anish&quot;
Window(&quot;Flight Reservation&quot;).WinButton(&quot;InsertOrder&quot;).Click

'===== Logout from Application =====
Window(&quot;Flight Reservation&quot;).Close
</pre>
<p>If your code to Insert New Order in Flight Reservation Application is running fine, then you have accomplished the first task. You now have the basic script that can insert a new order. Now all your remaining steps would focus on how to modify this script and fit it into the framework.<br />
<span><br />
</span></p>
<h3>Step 2: Dividing the Script into Different Functions and calling them from the Test Script</h3>
<p>In the previous step, you had created the test script in linear fashion. Now in this step, you would need to convert the linear flow into different functions and then call the same from the test script. To do this, you have to follow the steps mentioned below -</p>
<p><strong>Step 2A:</strong> First Step is to identify the functions which should be created from the linear flow. One look at the test case, and you would get to know that the test case can be divided into 3 flows or functions. These are &#8211; Login, Insert Order and Logout.</p>
<p><strong>Step 2B:</strong> Create 3 different functions in the Test Case and then cut paste the appropriate code in all the 3 functions. Example, the Login function will contain the code to login to the application.</p>
<p><strong>Step 3B:</strong> Once all the functions have been created, call these functions from the test script itself. The code in the QTP test script should look something like this -</p>
<pre class="brush: vb; title: ; notranslate">
' - - Test Case Flow - -
fnLogin()
fnInsertOrder()
fnLogout()

'========================================
'   Function Name - fnLogin
'   Purpose - This function is used to login to flight reservation application
'========================================
Function fnLogin()

	SystemUtil.Run &quot;C:\Program Files (x86)\HP\QuickTest Professional\samples\flight\app\flight4b.exe&quot;
	Dialog(&quot;Login&quot;).WinEdit(&quot;AgenName&quot;).Set &quot;anish&quot;
	Dialog(&quot;Login&quot;).WinEdit(&quot;Password&quot;).Set &quot;mercury&quot;
	Dialog(&quot;Login&quot;).WinButton(&quot;OK&quot;).Click

End Function

'========================================
'   Function Name - fnInsertOrder
'   Purpose - This function inserts a new order in flight reservation application
'========================================
Function fnInsertOrder()

	Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
	WshShell.SendKeys &quot;%(fn)&quot; 'Press Alt F+N to open a new order screen
	Window(&quot;Flight Reservation&quot;).ActiveX(&quot;DateOfFlight&quot;).Type &quot;010114&quot;
	Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyFrom&quot;).Select &quot;Paris&quot;
	Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyTo&quot;).Select &quot;Sydney&quot;
	Window(&quot;Flight Reservation&quot;).WinButton(&quot;Flights&quot;).Click
	'Select any Flight
	Window(&quot;Flight Reservation&quot;).Dialog(&quot;FlightsTable&quot;).WinButton(&quot;OK&quot;).Click
	'Provide Name and Insert Order
	Window(&quot;Flight Reservation&quot;).WinEdit(&quot;Name&quot;).Set &quot;Anish&quot;
	Window(&quot;Flight Reservation&quot;).WinButton(&quot;InsertOrder&quot;).Click

End Function

'========================================
'   Function Name - fnLogout
'   Purpose - This function is used to logout from the flight reservation application
'========================================
Function fnLogout()

	Window(&quot;Flight Reservation&quot;).Close

End Function
</pre>
<p><strong>Step 2D:</strong> Run the code to verify that it is working fine.</p>
<p>In the beginning of the article, we had mentioned that we will be creating 2 function libraries in this framework. And one of these function libraries will be used to store the test case flow. So now, we will create a function library and then move the functions from the test script to this function library. This will be the function library that will contain the application related code.</p>
<p><strong>Step 2E:</strong> Create a new function library and save it at an appropriate location.</p>
<p><strong>Step 2F:</strong> Associate this function library to the QTP Test Script.</p>
<p><strong>Step 2G:</strong> Cut paste the functions from the test script to the function library.</p>
<p>Now at this step, the function library will contain all the 3 functions and the test script will contain the function calls for all these 3 functions. The code in the test script and the function library will look something like this -</p>
<p>* * * * * Code in QTP Test Script * * * * *</p>
<pre class="brush: vb; title: ; notranslate">
fnLogin()
fnInsertOrder()
fnLogout()
</pre>
<p><em> </em><br />
* * * * * Code in Application Related Function Library * * * * *</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'   Function Name - fnLogin
'   Purpose - This function is used to login to flight reservation application
'========================================
Function fnLogin()

	SystemUtil.Run &quot;C:\Program Files (x86)\HP\QuickTest Professional\samples\flight\app\flight4b.exe&quot;
	Dialog(&quot;Login&quot;).WinEdit(&quot;AgenName&quot;).Set &quot;anish&quot;
	Dialog(&quot;Login&quot;).WinEdit(&quot;Password&quot;).Set &quot;mercury&quot;
	Dialog(&quot;Login&quot;).WinButton(&quot;OK&quot;).Click

End Function

'========================================
'   Function Name - fnInsertOrder
'   Purpose - This function inserts a new order in flight reservation application
'========================================
Function fnInsertOrder()

	Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
	WshShell.SendKeys &quot;%(fn)&quot; 'Press Alt F+N to open a new order screen
	Window(&quot;Flight Reservation&quot;).ActiveX(&quot;DateOfFlight&quot;).Type &quot;010114&quot;
	Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyFrom&quot;).Select &quot;Paris&quot;
	Window(&quot;Flight Reservation&quot;).WinComboBox(&quot;FlyTo&quot;).Select &quot;Sydney&quot;
	Window(&quot;Flight Reservation&quot;).WinButton(&quot;Flights&quot;).Click
	'Select any Flight
	Window(&quot;Flight Reservation&quot;).Dialog(&quot;FlightsTable&quot;).WinButton(&quot;OK&quot;).Click
	'Provide Name and Insert Order
	Window(&quot;Flight Reservation&quot;).WinEdit(&quot;Name&quot;).Set &quot;Anish&quot;
	Window(&quot;Flight Reservation&quot;).WinButton(&quot;InsertOrder&quot;).Click

End Function

'========================================
'   Function Name - fnLogout
'   Purpose - This function is used to logout from the flight reservation application
'========================================
Function fnLogout()

	Window(&quot;Flight Reservation&quot;).Close

End Function
</pre>
<p><strong>Step 2H:</strong> Run the code and make sure that everything runs fine.</p>
<p>Once this step is finished successfully, you will have the script that is made up of separate functions. At this point, you can see that the flow of the test case is defined in the QTP Test Script. (All the functions are being called from the QTP Test Script and therefore the flow of the test cases is available in the QTP test script only)</p>
<p>The next step would be to create a Test Case Flow excel sheet where we will add all the keywords associated with the test case. By doing this, the flow of the test case will be dictated by the test case flow excel sheet. Let&#8217;s see how this can be done.<br />
<span><br />
</span></p>
<h3>Step 3: Creating a Test Case Flow Excel Sheet and mapping it with the Test Script</h3>
<p>In this step, we will create a test case flow excel sheet and then add the keywords that have been identified for the test case. Then we will write code that will read the keywords from the excel sheet call the functions associated with the test cases. You can follow the below mentioned steps to perform the above task.</p>
<p><strong>Step 3A:</strong> The first step is to identify the keywords that will be associated with our test case. Looking at the functions that we have come up with in the previous step, we can have the following keywords which we can associate with the script -</p>
<ul>
<li>login &#8211; To login to the application</li>
<li>InsOrd &#8211; To insert a new order into the application</li>
<li>logout &#8211; To logout from the application</li>
</ul>
<p><strong>Step 3B:</strong> Once the keywords have been identified, the next step is to add the keywords in the excel sheet. Create a new excel sheet and add keywords to it as shown in the below image. Save the excel sheet by giving some appropriate name.</p>
<p><img class="aligncenter" title="Keyword Driven Framework - Test Case Flow" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-5-3.png" alt="Keyword Driven Framework - Test Case Flow" width="385" height="107" /></p>
<p>Now we have to write the code that will fetch the keywords from the excel sheet and call the associated function. The code to fetch open the excel sheet and fetch the keywords is the generic code that is independent of the application. This is because even if you have some other application, the only change here would be the name of the test case, the keywords and the description.</p>
<p>No matter what the keywords are, the code to fetch them would remain the same. So, the functions that we would write here would go to a separate function library (framework related function library). This way you would be able to keep the generic and application specific code separate.</p>
<p><strong>Step 3C:</strong> Create a new function library where you will store the framework specific code. For this framework, we will name this function library as &#8216;FrameworkRelatedFunctionLibrary&#8217;. Associate this function library with the test script.</p>
<p><strong>Step 3D:</strong> You have to now write the function that will read the keywords from the excel sheet. Below is the sample code that shows how this can be done.</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'   Function Name - fnReadKeywords
'   Purpose - This function reads the keywords that are associated to a given test case
'========================================
Function fnReadKeywords(sTCName)

	'Add a new Sheet into QTP Data Table
	DataTable.AddSheet(&quot;dtTCFlow&quot;)

	'Import the Excel Sheet into QTP Data Table
	DataTable.ImportSheet sExcelLocation, &quot;TestCaseFlowSheet&quot;, &quot;dtTCFlow&quot;

	'Loop through all the rows in the Data Sheet
	iRow = DataTable.GetSheet(&quot;dtTCFlow&quot;).GetRowCount

	For iR=1 to iRow
			'Set the Current Row in the Data Sheet according to the loop counter
			DataTable.SetCurrentRow iR

			'Capture the Keyword based upon the test case name
			If DataTable(&quot;TestCaseName&quot;, &quot;dtTCFlow&quot;) = sTCName Then
					'Call the executeFlow function that will execute the function associated to the keyword
					 executeFlow DataTable(&quot;TestCaseFlow&quot;, &quot;dtTCFlow&quot;)
			End If
	Next

End Function
</pre>
<p>The above function opens the excel sheet, loads its contents into QTP Datatable and then reads the keywords that are associated to the given test case. Once it identifies the keyword, it passes the keyword to a different function which then executes the actual function associated with this keyword.</p>
<p><strong>Step 3E:</strong> The next step is to map the keywords with the actual flow functions so that whenever a keyword is encountered, the matching function can be executed. We will create a separate function where will define the mapping in a Select Case statement. Since this function is dependent on the application, we will store this function in the application related function library. Below you can see how this function has been implemented for the first test case.</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'   Function Name - executeFlow
'   Purpose - This function executes the functions that are associated to the given keyword
'========================================
Function executeFlow(flowName)

	'Call the function associated with the keyword
	Select Case flowName
		Case &quot;login&quot;  fnLogin()
		Case &quot;insOrd&quot; fnInsertOrder()
		Case &quot;logout&quot; fnLogout()
	End Select

End Function
</pre>
<p>Now the final part that is pending is to call the above functions from the test script. If you recall, the main test script currently contains the flow of the test case. But now, since the flow has been defined in the test case flow excel sheet, we can remove the previous function calls from the main test script.</p>
<p>We can now just call the fnReadKeywords() function from the main script. Once the function has been called it will do its job and execute all the functions that are associated with the keyword.</p>
<p><strong>Step 3F:</strong> Open the main QTP Test Script. Delete the function calls that are written there and write the new code that will call the fnReadKeywords() function and pass the test case name as the parameter. The code for that will look similar to the one shown below.</p>
<pre class="brush: vb; title: ; notranslate">
sTestCaseName = Environment.Value(&quot;TestName&quot;)
fnReadKeywords sTestCaseName
</pre>
<p><strong>Step 3G:</strong> Execute the test case and see if it is running fine.</p>
<p>Once you verify that the test case is running fine, you will have with you the working model of a basic Keyword Driven Framework where the keywords are mapped at function level. Now you can easily add more test cases to this framework by following the steps mentioned above.</p>
<p>The entire framework together with the function library and flow for all the 3 test cases is available in the sample framework. You can download this framework (link available near the bottom of the article) and play around with the code.<br />
<span><br />
</span></p>
<h3>Improvements in the Framework</h3>
<p>As mentioned in the beginning of the article, this is a very basic framework that will just contain the basic things to help you understand the concepts easily. You can try to improve this framework by adding more features to it. This would make the framework more robust and easy to use and maintain. This would also work as a practice exercise for you and would help you learn more stuff.</p>
<p>Please note that these changes or improvements are not available in the attached framework. This is just a practice exercise which you can try from your end.</p>
<p><strong>Improvement 1)</strong> Currently, the test case flow just contains the TestCaseName, Keywords and Description only. You can try to add an additional Column where you can store the result as &#8216;Pass&#8217; or &#8216;Fail&#8217; for each keyword. You would also need to write some code which after executing every function, will update this column as &#8216;Pass&#8217; or &#8216;Fail&#8217;. This will help you keep a track of the results easily.</p>
<p><strong>Improvement 2)</strong> You can add one more additional column which will tell QTP whether the particular flow has to be executed or not. The column can have values as &#8216;Yes&#8217; or &#8216;No&#8217;. Once QTP encounters a keyword, it will first check this column and then execute the function associated with the keyword only when the column contains the value &#8216;Yes&#8217;.</p>
<p>After implementing the above 2 enhancement points, the test case flow excel sheet would look something like this.</p>
<p><img class="aligncenter" title="Keyword Driven Framework - Test Case Flow Excel Sheet" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-4-3.png" alt="Keyword Driven Framework - Test Case Flow Excel Sheet" width="480" height="206" /></p>
<p><strong>Improvement 3)</strong> You would also have observed that the data is hard-coded with the flow. Because of this, if you want to run the flow for multiple data, you would need to change the data values before each run. To avoid this, you can try to separate the data from the flow by adding it to a separate excel sheet. This way you would be able to change the data without touching the flow and you can also re-run the same flow multiple times by using a loop.</p>
<p>Try out these changes and let me know if you face any issues in-between. If you have any points to add here, or if you have any other improvement which can be added in this framework, please let us know about it using the comments section.<br />
<span><br />
</span></p>
<p><center><a href="http://www.automationrepository.com/wordpress/download-code/QTP-Keyword-Driven-Framework-2.zip"><img src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/blog_images/qtp-scripts-download.png" alt="" width="366" height="123" /></a></center><br />
<span><br />
</span></p>
<div style="font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>If you enjoyed this article, you can join our blog to get new articles delivered directly in your inbox.</strong></p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;"><strong>Visit <a title="QTP Frameworks – An Introduction" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/">QTP Frameworks</a> Main Page for more articles on QTP Frameworks</strong>. You can also visit our <a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a> page for more QTP Tutorials.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/s-3xZS4xDsE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/11/desigining-keyword-driven-framework-mapped-at-functional-level-part-2/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/11/desigining-keyword-driven-framework-mapped-at-functional-level-part-2/</feedburner:origLink></item>
		<item>
		<title>Designing Keyword Driven Framework mapped at Functional Level – Part 1</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/4K0fCQ_U5Lo/</link>
		<comments>http://www.automationrepository.com/2012/10/desigining-keyword-driven-framework-mapped-at-functional-level-part-1/#comments</comments>
		<pubDate>Wed, 31 Oct 2012 12:18:13 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[Advanced Concepts]]></category>
		<category><![CDATA[QTP Framework]]></category>
		<category><![CDATA[QTP Keyword Driven Framework]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1846</guid>
		<description><![CDATA[In the previous two articles we saw how to create a Keyword Driven Framework where the keywords are mapped at Operation Level. In this article, we will cover a different type of Keyword Driven Framework &#8211; the one where the keywords are mapped at Functional Level. Keyword Driven Framework mapped at Functional Level is the &#8230; <a href="http://www.automationrepository.com/2012/10/desigining-keyword-driven-framework-mapped-at-functional-level-part-1/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify; font-family: Verdana;">
<p>In the previous two articles we saw how to create a <a title="Keyword Driven Framework in QTP – The Basics" href="http://www.automationrepository.com/2012/07/designing-keyword-driven-framework-in-qtp-with-examples/" target="_blank">Keyword Driven Framework</a> where the <a title="Designing Keyword Driven Framework mapped at Operation Level – Part 2" href="http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/" target="_blank">keywords are mapped at Operation Level</a>. In this article, we will cover a different type of Keyword Driven Framework &#8211; the one where the keywords are mapped at Functional Level.</p>
<p>Keyword Driven Framework mapped at Functional Level is <span id="more-1846"></span>the most commonly used Keyword Driven Framework type. How its actually implemented may vary from project to project. But the basic premise always remains the same &#8211; <strong>&#8220;define keywords and assign them to actions or functions&#8221;.</strong></p>
<p>The important point that should be noted in this framework is that the keywords are mapped to a function which will contain more than one line of code. For example, you can have a keyword called &#8216;Login&#8217; that in turn can be mapped to function called fnLogin. Now, this function will contain the few lines of code that will open the application, enter user name and password and then click on Submit button.</p>
<p>This is different from the Keyword Driven Framework implementation mapped at Operational Level, where the keyword is mapped to an action performed at object level. (For more details about the basics of the Keyword Driven Framework, refer &#8211; <a title="Keyword Driven Framework in QTP – The Basics" href="http://www.automationrepository.com/2012/07/designing-keyword-driven-framework-in-qtp-with-examples/" target="_blank"><strong>Basics of Keyword Driven Framework</strong></a>)</p>
<p><span><br />
</span></p>
<h3>Topics that will be covered in this article</h3>
<p><strong>1)</strong> The components that are commonly used with this framework.</p>
<p><strong>2)</strong> Flow of the test cases in this framework.</p>
<p>Let us see each of these points one by one.</p>
<p><span><br />
</span></p>
<h3>Common Components used in Keyword Driven Framework mapped at Functional Level</h3>
<p>Following are the components that are commonly used with this framework -</p>
<p><img class="aligncenter" title="Components of Keyword Driven Framework" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-4-1.png" alt="Components of Keyword Driven Framework" width="357" height="347" /></p>
<p><strong>1)</strong> <strong>Test Scripts or Driver Script:</strong> As mentioned in the beginning of this article, in this type of framework all the keywords are associated with some functions. So naturally, the entire test case flow would be composed of multiple functions.</p>
<p>For example, consider a test case where the you have to login to Gmail, send an email and then you have to Logout from Gmail. Looking at the test case, you can easily figure out that the test case can be divided into 3 functions -</p>
<ul>
<li>fnGmail_Login</li>
<li>fnGmail_SendEmail</li>
<li>fnGmail_Logout</li>
</ul>
<p>Normally what we do is &#8211; create the functions and then save them in the function library.Then we will create a test script where we will call all these functions one after the other. This is what you do in <a title="QTP Frameworks : Designing QTP Modular Framework from scratch" href="http://www.automationrepository.com/2012/04/qtp-framework-tutorial-using-qtp-modular-framework/" target="_blank">functional decomposition framework</a> also.</p>
<p>But in the keyword driven framework, the keywords, and hence the flow of the test case are actually specified in the excel sheets (refer below image for example). Now, since the flow of the test case is mentioned in excel sheets, the actual test script will not store the test case flow. Hence the test script will not be used the way we do it in other framework types.</p>
<p><img class="aligncenter" title="Test Case Flow - Keyword Driven Framework" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-flow1.PNG" alt="Test Case Flow - Keyword Driven Framework" width="528" height="339" /></p>
<p>So in this case, the test script would be used as a driver script whose sole purpose would be to pass the control on to the function library.</p>
<p><em> </em><br />
<strong>2) Object Repository:</strong> As is the case with all the <a title="QTP Framework Tutorials – Framework Types, Examples &amp; Code Snippets" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/" target="_blank">QTP Framework Types</a>, you can use the Object Repository to store the properties of the objects and then call the same in the test scripts. You can also use the <a title="Descriptive Programming in QTP – The Complete Guide : Part1" href="http://www.automationrepository.com/2012/03/descriptive-programming-in-qtp-the-complete-guide-part1/" target="_blank">Descriptive Programming</a> approach if you wish to skip using the Object Repository. As part of this framework creation, we will be using the Object Repository to store the object properties.</p>
<p><em> </em><br />
<strong>3) Function Library:</strong> In the Keyword Driven Framework, the operations of the function library can be broadly classified into the following two types -</p>
<p><img class="aligncenter" title="Function Library Operations - Keyword Driven Framework" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-4-2.png" alt="Function Library Operations - Keyword Driven Framework" width="264" height="193" /></p>
<ul>
<li><span style="text-decoration: underline;">a)</span> <span style="text-decoration: underline;">Application Related Flow:</span> This is the most common purpose for which the function library is used for in all the framework types. Application flow means that the function library will contain functions that will depict the flow of the test cases. For example, the function library may contain functions such as Login and Logout which are actually a part of the application under test.</li>
<li><span style="text-decoration: underline;">b)</span> <span style="text-decoration: underline;">Framework Related Flow:</span> This part of the function library deals with the functions that are not directly related to the application as such. These are the functions which are related to the framework. For example, functions such as read keyword from excel. These types of functions are application independent and can be used at all the places where this framework is implemented.</li>
</ul>
<p><strong>NOTE:</strong> If you are going to implement your Keyword Driven Framework for different applications, you may want to create two separate function libraries for application related flow and framework related flow. This will help you implement the framework for different applications in a smooth manner.</p>
<p><em> </em><br />
<strong>4) Excel Sheets to Store Data:</strong> You can use excel sheets to store the data and then use it in your test scripts. You can choose any format for the data sheets as per your requirement. In order to keep things simple, we will be hard-coding the data in the test scripts. Hence we will not be using any data sheets for this framework implementation.</p>
<p><em> </em><br />
<strong>5) Excel Sheets to Store Keywords:</strong> In this framework, all the keywords (and hence the flow) associated to the test cases will be stored in excel sheets. The way in which the keywords are added in the excel sheets may differ from project to project. Also, together with the keywords, you can add additional details in the excel sheets which would make the flow more readable. For example, you can -</p>
<ul>
<li><strong>a) Add description along with the Keywords:</strong> This would make the test case flow more readable.</li>
<li><strong>b) Add a Result column together with the Keywords:</strong> You can add a Result column next to the Keywords and then you can write a function which would update each keyword as pass or fail when the test script is run. So if a test run fails, you can easily figure out till which point the test case has run and at which place it has failed.</li>
<li><strong>c) Add an execute Column along with the Keywords:</strong> If you have Keywords independent of each other, you can add an Execute column along with the Keywords. You can have values as Yes and No in the execute column. You can then write a function which will first check the Execute column and then will execute only those keywords where the value is set as Yes.</li>
</ul>
<p>The below figure depicts how the excel sheet would look like.</p>
<p><img class="aligncenter" title="Sample Excel Sheet with Keywords" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-4-3.png" alt="Sample Excel Sheet with Keywords" width="480" height="206" /></p>
<p>As part of this framework, we will be adding only the keywords and the description about them. But you can try the remaining concepts on your own and see how it goes.</p>
<p><span><br />
</span></p>
<h3>Flow of the Test Scripts in this Framework</h3>
<p>In this type of Keyword Driven Framework, the flow of the test scripts will be as follows -</p>
<p><strong>1)</strong> The execution of the test cases would start from the QTP Test Script. In this framework, we will create a separate test script for each test case that needs to be automated.</p>
<p><strong>2)</strong> The test script will give a call to the function library which contains the code to read the excel sheets containing the keywords. (There will be 2 separate function libraries in the framework. One which handles the framework flow and the other which handles the application flow)</p>
<p><strong>3)</strong> The function will read the excel sheet and depending upon the keyword encountered, it will give a call to the function from the &#8216;application related&#8217; function library.</p>
<p><strong>4)</strong> This function would perform the required actions on the application and once done, it would return the control back to the calling function.</p>
<p>The below image depicts the above mentioned flow.</p>
<p><img class="aligncenter" title="Keyword Driven Framework Flow" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework-4-4.png" alt="Keyword Driven Framework Flow" width="314" height="494" /><br />
<span><br />
</span><br />
This was the basic information of Keyword Driven Framework mapped at Functional Level. In the next article, we will cover, in detail, on how to create this framework from scratch and write test cases in this framework.</p>
<p>What are your thoughts about this article? You can let us know your response using the comments section.</p>
<p><span><br />
</span></p>
</div>
<div style="font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>If you enjoyed this article, you can join our blog to get new articles delivered directly in your inbox.</strong></p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;"><strong>Visit <a title="QTP Frameworks – An Introduction" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/">QTP Frameworks</a> Main Page for more articles on QTP Frameworks</strong>. You can also visit our <a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a> page for more QTP Tutorials.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/4K0fCQ_U5Lo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/10/desigining-keyword-driven-framework-mapped-at-functional-level-part-1/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/10/desigining-keyword-driven-framework-mapped-at-functional-level-part-1/</feedburner:origLink></item>
		<item>
		<title>Designing Keyword Driven Framework mapped at Operation Level – Part 2</title>
		<link>http://feedproxy.google.com/~r/automationrepository/feeds/~3/MvCFjKaxJBI/</link>
		<comments>http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/#comments</comments>
		<pubDate>Tue, 11 Sep 2012 17:20:36 +0000</pubDate>
		<dc:creator>Anish Pillai</dc:creator>
				<category><![CDATA[QTP Concepts]]></category>
		<category><![CDATA[QTP Framework]]></category>
		<category><![CDATA[QTP Keyword Driven Framework]]></category>

		<guid isPermaLink="false">http://www.automationrepository.com/?p=1814</guid>
		<description><![CDATA[In the previous article on Keyword Driven Framework mapped at Operation Level, we covered the basic features of the framework that we would be creating here. The article contained information about the components that can be used in this framework as well as the general flow of the test cases. In this article, we will &#8230; <a href="http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/">Read more <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify; font-family: Verdana;">
<p>In the previous article on <a title="Designing Keyword Driven Framework mapped at Operation Level – Part 1" href="http://www.automationrepository.com/2012/08/keyword-driven-framework-mapped-at-operation-level-part-1/" target="_blank">Keyword Driven Framework mapped at Operation Level</a>, we covered the basic features of the framework that we would be creating here. The article contained information about the components that can be used in this framework as well as the general flow of the test cases. In this article, we will <span id="more-1814"></span>actually implement all this and come up with a basic keyword driven framework.<br />
<span><br />
</span></p>
<div style="font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: left;">
<p><strong>UPDATES</strong></p>
<p>1) You are free to download and play around with the code used for this framework. <strong>The download link is available at the end of the article.</strong></p>
<p>2) Just like this, we have written more articles on various other QTP Frameworks. If you wish to have a look at those, please visit <a title="QTP Frameworks – An Introduction" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/" target="_blank"><strong>QTP Framework</strong> </a>main page. <strong>The bottom of the page contains links to other QTP Frameworks.</strong></p>
</div>
<p><span><br />
</span></p>
<h3>What we would be doing in this article</h3>
<p><strong>1)</strong> In this article, we will create the keyword driven framework with 3 test cases. All these 3 test cases will be based on Mercury Flight Reservation application (<strong>windows based application</strong>).</p>
<p><strong>2)</strong> The flow of the test cases will be written in the excel sheets. The data for the test cases will also be provided with the flow only.</p>
<p><strong>3)</strong> A function library will be created which will contain the code to read the lines from excel and convert in into QTP recognizable format.</p>
<p><strong>4)</strong> Towards the end of the article, we will list out few enhancements/improvements which you can try to implement in the framework on your own. This will really help you practice the concepts and get a good hold on the framework.<br />
<span><br />
</span></p>
<h3>Identifying the Test Cases for this Framework</h3>
<p>Before beginning with the framework creation part, the first step would be to identify the test cases that you want to automate. For this article, we will be working on the following 3 test cases.</p>
<p><strong>1) TC_01_CreateOrder:</strong> For this test case, we will write the script that will login to Mercury Flight Reservation system and then create a new flight reservation.</p>
<p><strong>2) TC_02_ModifyOrder:</strong> In this test case, the script will log in to the application, open an existing order and then modify the order.</p>
<p><strong>3) TC_03_DeleteOrder:</strong> Here, the script will again log in to the application, open an existing order and then delete the order.<br />
<span><br />
</span></p>
<h3>Step by Step method to create the First Test Case</h3>
<p>As always, the hardest part is to begin with the first step. Once that is done, the remaining portions become relatively easier to do. So in this article, we will describe how to create the first test case in detail. Once you are comfortable writing the first test case, the remaining ones will be fairly easy to tackle.</p>
<p>Writing test cases in this framework can be divided into 3 main parts:</p>
<p><strong>Step 1)</strong> <strong>Writing the test case flow in excel sheet.</strong></p>
<p><strong>Step 2)</strong> <strong>Writing functions in the function library that will read the excel sheet.</strong></p>
<p><strong>Step 3)</strong> <strong>Combining Steps 1 and 2 to run the test case.</strong></p>
<p>Let&#8217;s see each of these steps one by one.</p>
<p><em> </em><br />
<span style="text-decoration: underline;"><strong>Step 1-A:</strong></span> The first step would be to define the format of the excel sheet that will be used to store the flow of the test cases. You would need to create a format and stick with it for all the test cases.</p>
<p>To create the excel sheet format that we will be using here, open an excel sheet and add the values as shown in the below figure.</p>
<p><img class="aligncenter" title="Keyword Driven Framework - Structure of Excel Sheet" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-1.png" alt="Keyword Driven Framework - Structure of Excel Sheet" width="577" height="78" /></p>
<p><em> </em><br />
<span style="text-decoration: underline;"><strong>Step 1-B:</strong></span> Let&#8217;s now have a look at this format in detail and see what different columns mean and what kind of data will go in each of these columns.</p>
<p><strong>Parent [Column A]</strong> &#8211; This column will contain the hierarchy of all the objects until the actual control on which you want to perform some operation. For example, consider the below statement -</p>
<p><span style="color: #0000ff;"><strong>Browser(&#8220;B&#8221;).Page(&#8220;P&#8221;).Frame(&#8220;F&#8221;).WebEdit(&#8220;W&#8221;).Set &#8220;some value&#8221;</strong></span></p>
<p>Here, WebEdit(&#8220;W&#8221;) is the object on which you will perform the operation. So the hierarchy before it would be: Browser &#8211; Page &#8211; Frame. <strong>So Column A will contain the value Browser,Page,Frame</strong><strong><br />
</strong></p>
<p><span style="text-decoration: underline;">Please note that Column A will only list the Object names and not there properties. Also, the object names are separated by the delimiter comma (,)</span></p>
<p><em> </em><br />
<strong>PProperty [Column B]</strong> &#8211; This column will contain the properties of the objects that were added in Column A. The properties will also be separated by comma (,). Also, the property of an object is usually a name value pair. The name and value will be written as is it done in case of <a title="Descriptive Programming in QTP – The Complete Guide : Part1" href="http://www.automationrepository.com/2012/03/descriptive-programming-in-qtp-the-complete-guide-part1/" target="_blank">descriptive programming</a>. <strong>So as per the above example, column B can have text like &#8211; title:=B,title:=P,name:=F</strong></p>
<p><em> </em><br />
<strong>Control [Column C]</strong> &#8211; Column C will contain the name of the control on which you want to perform the operation. In this example, the control is WebEdit(&#8220;W&#8221;) on which you want to perform the Set operation. <strong>So Column C will contain the value WebEdit.</strong> Since there will always be only one object on which you will need to perform some operation, so there would be no hierarchy of objects in this column.</p>
<p><em> </em><br />
<strong>CProperty [Column D]</strong> &#8211; Column D will contain the property that is associated with the object in Column C. Here let use assume that the WebEdit has &#8216;W&#8217; as its name. <strong>So, the value in Column D would be name:=W</strong></p>
<p><em> </em><br />
<strong>Action [Column E]</strong> &#8211; This column stores the name of the action that needs to be performed on the object. <strong>This action or operation will be the keyword that will be mapped to some appropriate operation in the function library.</strong> In our example, the action that needs to be performed is Set. So we can use a keyword SetValue to denote this action. <strong>So column E will contain the value SetValue</strong></p>
<p><em> </em><br />
<strong>Data [Column F]</strong> &#8211; In this column, you will be providing the data that goes with the action. For example, for Set action, we will need to provide the data that will be entered in that particular field. <strong>In this case, the value that will go to Column F is &#8216;some value&#8217; (without &#8216; &#8216;).</strong></p>
<p>Also, there will be certain cases where there would be no data requirement. For example, click operation on a button. In this case, you just need to click on the button, there is no data that needs to entered anywhere. So in such cases Column F will be empty.</p>
<p>The below image shows how the flow will look in excel sheet for the sample sheet covered here.</p>
<p><img class="aligncenter" title="Keyword Driven Frawork - Flow Excel Sheet" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-2.png" alt="Keyword Driven Frawork - Flow Excel Sheet" width="550" height="163" /></p>
<p><em> </em><br />
<strong>NOTE 1:</strong> There would be certain cases where you would need to perform operation on the parent object only. For example, you may want to close the parent window. Here, this close operation will be performed on the parent object. So in such cases, columns C and D will be empty. Only Columns A and B will be filled in with values to identify the parent object.</p>
<p><strong>NOTE 2:</strong> There will also be certain cases where the operation would not be performed on any object. For example &#8211; SystemUtil.Run statement. This statement doesn&#8217;t work on any object, neither parent nor child. So in such cases, Columns A, B, C and D will be empty. Only column E will have some value which will depict the operation that needs to be performed.</p>
<p>The below image will make these two points more clear.</p>
<p><img class="aligncenter" title="Keyword Driven Frawork - Flow Excel Sheet" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-3.png" alt="Keyword Driven Frawork - Flow Excel Sheet" width="543" height="323" /><br />
<span><br />
</span><br />
<span style="text-decoration: underline;"><strong>Step 1-C:</strong></span> Since you have understood the structure of the test case flow excel sheet, we can now start writing the flow of the test case in the excel sheet. You can follow the below mentioned steps to start with the process.</p>
<p><strong>1)</strong> Open QTP. Since we will be working on a windows based application, you can deselect the Web Add-in from Add-in Manager at start-up. (If you need more information about <a title="QTP Add-In Manager:  Did You Know?" href="http://www.automationrepository.com/2011/12/qtp-add-in-manager-add-in-name-and-description/" target="_blank">QTP Add-in manager</a>, you can check <a title="QTP Add-In Manager [1]: How to Enable or Disable Add-In Manager at Startup in QTP" href="http://www.automationrepository.com/2011/11/how-to-enable-disable-add-in-manager-at-startup-in-qtp/" target="_blank">how to enable/disable Add-in Manager</a> and  <a title="QTP Add-In Manager [2]: How to install or add add-ins other than the default ones in QTP" href="http://www.automationrepository.com/2011/11/how-to-install-or-add-add-ins-other-than-the-default-ones-in-qtp/" target="_blank">how to install/uninstall other add-ins</a>).</p>
<p><strong>2)</strong> Once QTP is opened, open the &#8216;Mercury flight reservation application&#8217;, so that the login screen of the application is displayed.</p>
<p><strong>3)</strong> Now whatever actions we have to perform in the application, we have to capture it in the excel sheet. As an example, we will just work on the login portion of the application where we will enter Agent Name, the Password and then we will click on OK button. Once this is done, we will close the main window of the application.</p>
<p><strong>4)</strong> To capture the object properties, we will use the Object Spy. Open object spy and click on the Agent Name field. Once you spy on the Agent Name field, you would note that the hierarchy in the Object Spy window consists of 2 elements &#8211; Dialog and WinEdit (image shown below). And from the structure of the excel sheet that we mentioned above, it can easily be made out that the object Dialog with its properties would go in columns A and B, and the object WinEdit and its properties will go in columns C and D. The action that we would need to perform here is Set.</p>
<p><img class="aligncenter" title="Keyword Driven Framework in QTP" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-4.png" alt="Keyword Driven Framework in QTP" width="585" height="581" /></p>
<p><strong>5)</strong> Have a look at the properties of both the controls and select the ones that you think will uniquely identify both the objects. Add the objects and the properties in the excel sheet in the 2nd row (just below the header).</p>
<p><strong>NOTE 3:</strong> If you are not comfortable with this process of identifying the properties using Object Spy, you can follow an alternate method where you can first record the scenario in QTP. Then you can go to local Object Repository and select the values that have been used by QTP. Once you start working with this approach, you will be able to work real quickly with the Object Spy because you would get an idea about the properties that usually go with different types of objects.</p>
<p><strong>6)</strong> Once you have added the values for Agent Name field in the excel sheet, you can follow the same process to add the values for entering values for password field and OK button. Once you are done with all these steps, you would have an excel sheet that would look similar to the image below (the properties of the objects may change based upon what values you have selected to use).</p>
<p><img class="aligncenter" title="Keyword Driven Framework - Excel Sheet Preparation" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-5.png" alt="Keyword Driven Framework - Excel Sheet Preparation" width="510" height="91" /><br />
<span><br />
</span><span style="text-decoration: underline;">You would have noted that we have added the word <strong>End</strong> in the 6th row. This End word indicates to QTP that the test case has ended here. So when QTP encounters this keyword, it will stop processing this test case. We have also added Run command in Row 2. This command will instruct QTP to open the flight reservation application.</span></p>
<p>Since we have written the flow of the login portion in the excel sheet, we can leave it at this step for the time being and start concentrating on the next part which is &#8211; writing code or functions in the function library that will read the excel and convert it into QTP readable format. The idea here is that we will create the necessary functions and then run the script for the 5-6 lines you have written in the excel sheet. Once you are able to run the excel statements from QTP, you can be sure that the logic is working fine. Then you can just add on the steps in the excel sheet and run everything from QTP.<br />
<span><br />
</span><br />
<strong>Step 2)</strong> <strong>Writing functions in the function library that will read the excel sheet.</strong> Now there are multiple categories of functions that you will need to write here. Let&#8217;s see what are these different categories of functions -</p>
<p><strong>a) Category 1: </strong>Function(s) that will be used to open or connect to the excel sheet.</p>
<p><strong>b) Category 2: </strong>Function(s) that read each line in the excel and convert it into QTP readable format.</p>
<p><strong>c) Category 3: </strong>Function(s) that do some action on the application. Like click on button, set value in some text field etc.</p>
<p><strong>d) Category 4: </strong>Function(s) that will call the Category 3 functions based upon the keyword in the excel sheet.<strong><br />
</strong><br />
<span><br />
</span><br />
Before writing the functions, make sure that you create a function library and associate it with your QTP Test Case. Once this is done, you can start writing these functions one by one. Below we have covered few of these functions which will help you understand the logic.</p>
<p><span style="text-decoration: underline;"><strong>1)</strong></span> Function that reads the excel sheet and loads the cell values into Global Variables. We are using global variables because the variables are being used in multiple functions. (To read more about global variables, you can read &#8211; <a title="2 Different Ways to Create Global Variables in QTP" href="http://www.automationrepository.com/2011/10/global-variables-in-qtp/" target="_blank">Different ways to define Global Variables in QTP</a>)</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'	Function Name - fnReadExcel
'	Purpose - This function loads the excel sheet into QTP data table and stores the cell values in Global Variables
'========================================
Function fnReadExcel(sSheetName)

	 	'Add the Data Sheet into QTP Data Table
		DataTable.AddSheet(&quot;dtSheet&quot;)

		'Import the Excel Sheet into QTP Data Table
		DataTable.ImportSheet sExcelLocation, sSheetName, &quot;dtSheet&quot;

		'Loop through all the rows in the Data Sheet
		iRow = DataTable.GetSheet(&quot;dtSheet&quot;).GetRowCount

		For iR = 1 to iRow
				'Set the Current Row in the Data Sheet according to the loop counter
				DataTable.SetCurrentRow iR

				'Capture all the cell values in different variables
				sParent = DataTable(&quot;Parent&quot;, &quot;dtSheet&quot;)
				sParentProp = DataTable(&quot;PProperty&quot;, &quot;dtSheet&quot;)
				sControl = DataTable(&quot;Control&quot;, &quot;dtSheet&quot;)
				sControlProp = DataTable(&quot;CProperty&quot;, &quot;dtSheet&quot;)
				sAction = DataTable(&quot;Action&quot;, &quot;dtSheet&quot;)
				sDataValue = DataTable(&quot;Data&quot;, &quot;dtSheet&quot;)

				'Call the function that will convert the excel data into QTP readable format
				If sParent = &quot;End&quot; Then
						Exit For
				ElseIf sParent &lt;&gt; &quot;&quot; Then
						fnIdentifyParentHierarchy()
				Else
						'The action is independent of the all the controls (refer NOTE  2 from the article)
						fnAction()
				End If

		Next

End Function
'============= End Function ===============
</pre>
<p><em> </em><br />
<span style="text-decoration: underline;"><strong>2)</strong></span> The below function converts values from columns A and B of the excel sheet into QTP readable format.</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'	Function Name - fnIdentifyParentHierarchy
'	Purpose - This function converts the values in cells A and B into QTP readable format
'========================================
Function fnIdentifyParentHierarchy()

	 	'Split Parent Property so that multiple objects casn be resolved
		arrParentProp = Split(sParentProp, &quot;,&quot;)

		'Resolve the hierarchy of all the objects that are parent to the actual control
		Select Case sParent

				Case &quot;Dialog&quot;
						Set obj_hierarchy = Dialog(arrParentProp(0))

				Case &quot;Window&quot;
						Set obj_hierarchy = Window(arrParentProp(0))

		End Select

		'Call the function that will resolve the Control Object
		fnIdentifyControl()

End Function
'============= End Function ===============
</pre>
<p><em> </em><br />
<strong><span style="text-decoration: underline;">3)</span></strong> This function converts data from cell C and D in QTP readable format. Later, it combines values in Cells A, B, C and D to form one complete object on which the action will be performed.</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'	Function Name - fnIdentifyControl
'	Purpose - This function converts the values in cells C and D into QTP readable format and then combines values from Cells A, B, C and D to come up with a single object
'========================================
Function fnIdentifyControl()

		'Split the Control Property
		If sControl &lt;&gt; &quot;&quot; Then
				arrControlProp = Split(sControlProp, &quot;:=&quot;)

				'Resolve the Control object to obtain the complete heirarchy on which the action can be performed
				Set child_object = Description.Create()
				child_object(&quot;micclass&quot;).value = sControl
				child_object(arrControlProp(0)).value = arrControlProp(1)

				'Create the object on which the action will be performed
				Set control_object = obj_hierarchy.ChildObjects(child_object)
		Else
				'Control Object is the parent hierarchy on which the action will be performed (refer NOTE 1 from the article)
				Set control_object = obj_hierarchy
		End If

		'Call the function that will perform the necessary action on the object
		fnAction()

End Function
'============= End Function ===============
</pre>
<p><em> </em><br />
<span style="text-decoration: underline;"><strong>4)</strong></span> The below function performs Actions or Operations on the object which is retrieved from the previous function.</p>
<pre class="brush: vb; title: ; notranslate">
'========================================
'	Function Name - fnAction
'	Purpose - This function performs action on the object based upon the defined keyword
'========================================
Function fnAction()

		'Perform Action on the control_object based upon the keyword defined in the excel sheet
		Select Case sAction

				Case &quot;SetValue&quot;
						control_object(0).Set sDataValue

				Case &quot;Click&quot;
						control_object(0).Click

				Case &quot;WindowClose&quot;
						control_object.Close

				Case &quot;Run&quot;
						SystemUtil.Run sDataValue

		End Select
End Function
'============= End Function ===============
</pre>
<p>Please don&#8217;t worry much if you don&#8217;t understand the code and functions at this point in time. Once you have a look at the entire framework, you will get a fairly good idea about the functions and how they interact with each other. <strong>For ease of understanding, you can check the below image which shows the low level flow of a test case as per this framework.</strong></p>
<p><img class="aligncenter" title="Keyword Driven Framework - Low Level Flow" src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/keyword-driven-framework3-6.png" alt="Keyword Driven Framework - Low Level Flow" width="460" height="717" /></p>
<p>The good part of this framework and the function library is that you would need to work more on the functions and the code in the initial part only (when you are beginning to develop the framework). As and when you add new code in the function library, you will be able to reuse it for similar type of objects and hence the time taken to write the later test cases will be greatly reduced.</p>
<p>As an example, you can see that the functions SetValue, Click etc are already written in the function library. Now, if you want to use these functions for any other text box, button or link, you would just need to call the keyword in the excel sheet. The more you work on this framework, there would come a time when you would mostly need to write the flow in the excel sheet only. Most of the keywords would already have been covered in the function library.</p>
<p>Once we have written the basic functions for running the script from excel sheets, we need to combine everything together and run the code to see if it works.<br />
<span><br />
</span><br />
<strong>Step 3)</strong> <strong>Combining Steps 1 and 2 to run the test case.</strong> To combine everything together, you need to create a proper framework with the folder structure, save the function library and the excel sheet in appropriate locations. Now you should create a QTP Test Case (which will act as a driver script in this case). Associate the function library with the test case and call appropriate functions that will run the test case. (You can check the folder structure and other details from the sample framework attached at the end of this article)</p>
<p>In this example, we have called <strong>the function fnExecuteTestCase() in the Driver Script and passed the test case name as a parameter to this function.</strong> This function is nothing but a wrapper function which gives a call to <strong>fnReadExcel()</strong> function. Since the test case name and sheet names are same, the function fnReadExcel will call the appropriate sheet and execute the flow provided in the excel sheet.</p>
<pre class="brush: vb; title: ; notranslate">
'Code in Driver Script

'Execute --&gt; TC_01_CreateOrder
fnExecuteTestCase(&quot;TC_01_CreateOrder&quot;)
</pre>
<p>Run the test case to see if the code is running correctly. Once you have verified that the code is running fine, you can then keep on adding the flow in the excel sheet and add corresponding keywords in the function library. Just make sure that whenever you encounter a new keyword, you have to add it in the excel sheet and write corresponding action in the function library. This way you would be able to create all the 3 test cases easily without any issues.</p>
<p><strong>The entire sample framework together with the function library and flow for all the 3 test cases is available in the sample framework. You can download this framework (link available near the bottom of the article) and play around with the code.</strong><br />
<span><br />
</span></p>
<h3>Can you Improve this Keyword Driven Framework?</h3>
<p>Have you read this article and tried to work on the sample keyword driven framework attached here? Have you understood all the functions and the entire flow of test cases in this framework? If yes, then you can try to improve this framework by adding more features to it. This would make the framework more robust and easy to use and maintain. This would also work as a practice exercise for you and would help you learn more stuff.</p>
<p>Since this is a basic framework created to just help you understand the basics, there are many things which are not covered as part of this framework. I would list down the points here and you can try to modify the framework by incorporating these changes. Please note that these changes or improvements are not available in the attached framework. This is just a practice exercise which you can try from your end.</p>
<p><strong>Improvement 1)</strong> You would have noticed here that the test case flow in excel sheets is not modularized. For example, all the 3 test cases contain the flow of the login part (which means that login code is repeated in all the 3 test cases). You can try to modularize this flow where instead of having the complete test case flow in one excel sheet, you can try adding just a module, like login or create order in one excel sheet. This way you would be able to reuse many common flows.</p>
<p><strong>Improvement 2)</strong> You would also have observed that the data is hard-coded with the flow. Because of this, if you want to run the flow for multiple data, you would need to change the data values before each run. To avoid this, you can try to separate the data from the flow by adding it to a separate excel sheet. This way you would be able to change the data without touching the flow and you can also re-run the same flow multiple times by using a loop.</p>
<p>Try out these changes and let me know if you face any issues in-between. If you have any points to add here, or if you have any other improvement which can be added in this framework, please let us know about it using the comments section.<br />
<span><br />
</span></p>
<p><center><a href="http://www.automationrepository.com/wordpress/download-code/QTP-Keyword-Driven-Framework-1.zip"><img src="http://www.automationrepository.com/wordpress/wp-content/uploads/ar/blog_images/qtp-scripts-download.png" alt="" width="366" height="123" /></a></center><br />
<span><br />
</span></p>
</div>
<div style="font-family: Verdana,sans-serif; border: 1px solid #C8B560; padding: 3mm; background: #FFF8C6; text-align: center;">
<p><strong>If you enjoyed this article, you can join our blog to get new articles delivered directly in your inbox.</strong></p>
<form style="text-align: center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=automationrepository/feeds', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow">
<input style="width: 160px; height: 20px;" onfocus="if (this.value == 'Enter Your Email Address') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Enter Your Email Address';}" type="text" value="Enter Your Email Address" />
<input type="hidden" name="uri" value="automationrepository/feeds" />
<input type="hidden" name="loc" value="en_US" />
<input type="submit" value="Join Us" />
<p style="text-align: justify;">
</form>
</div>
<p style="border: 1px solid #C38EC7; padding: 3mm; background: #EBDDE2;"><strong>Visit <a title="QTP Frameworks – An Introduction" href="http://www.automationrepository.com/2012/03/qtp-framework-types-an-introduction/">QTP Frameworks</a> Main Page for more articles on QTP Frameworks</strong>. You can also visit our <a title="QTP Tutorials" href="http://www.automationrepository.com/tutorials-for-qtp-beginners/" target="_blank">QTP Tutorials</a> page for more QTP Tutorials.</p>
<img src="http://feeds.feedburner.com/~r/automationrepository/feeds/~4/MvCFjKaxJBI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://www.automationrepository.com/2012/09/designing-keyword-driven-framework-mapped-at-operation-level-part-2/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: www.automationrepository.com @ 2013-06-10 22:44:54 by W3 Total Cache -->
