<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7601976230567298568</id><updated>2026-10-17T03:37:18.182+05:30</updated><category term="VBScript"/><category term="API Programming"/><category term="AutoIT"/><category term="Better Testing Quality"/><category term="Chat Engine"/><category term="Excel chart exporter"/><category term="FTP Client"/><category term="File Upload Download tests"/><category term="FormatNumber"/><category term="HTTP GET"/><category term="HTTP Methods"/><category term="HTTP POST"/><category term="Large Text files"/><category term="Mixing multi-dimensional thoughts into Testing"/><category term="Network Programming"/><category term="QTP"/><category term="Requests"/><category term="Socket programming"/><category term="TCP Messaging"/><category term="Test Automation Techniques"/><category term="Text File generator"/><category term="Type Conversion"/><category term="Wininet.dll"/><category term="chart exporting code"/><category term="open excel chart exporter"/><title type='text'>The Automation Expert&#39;s Forum</title><subtitle type='html'>This blog has been created to share the knowledge regarding automation to Software Testers world-wide. I hope to share information regarding Software Test Automation, Regarding Automation Frameworks, Some automation tools etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-8100533761338324309</id><published>2012-04-08T08:49:00.000+05:30</published><updated>2012-04-08T08:49:31.344+05:30</updated><title type='text'>Scripting Batch File: Split String</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
Its been a very long time that I have posted something. I was creating certain batch files and came across the requirement of splitting strings and searching for specific strings. I thought of sharing the same to all, so that one&amp;nbsp;can refer and get help in case one needs.&lt;br /&gt;
&lt;br /&gt;
In order to split a string, one can use the FOR loop. The syntax of the command that one may use to split a string is as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;FOR /F &quot;&lt;arguments&gt;&quot; %%&lt;variable&gt; IN (&quot;&lt;string&gt;&quot;) DO (statement/s)&lt;/string&gt;&lt;/variable&gt;&lt;/arguments&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Set of arguments to be used for splitting a string can be any combination of the below:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;delims=xxx : specifies a delimiter set. &amp;nbsp;The default delimiters are space and tab (if not specified).&lt;/li&gt;
&lt;li&gt;tokens=x,y,m-n : specifies which tokens from each line are to be passed to the for body for each iteration. This will cause additional variable names to be allocated. &amp;nbsp;The m-n form is a range, specifying the mth through the&amp;nbsp;nth tokens. &amp;nbsp;If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on the line after the last token parsed.&lt;/li&gt;
&lt;li&gt;usebackq : specifies that the new semantics are in force, where a back quoted string (`&lt;string&gt;`) is executed as a command and a single quoted string (&#39;&lt;string&gt;&#39;) is a literal string command and allows the use of double&amp;nbsp;quotes (&quot;&lt;string&gt;&quot;) to quote file names in file-set.&lt;/string&gt;&lt;/string&gt;&lt;/string&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Lets look into some examples now:&lt;br /&gt;
&lt;br /&gt;
a) &lt;i&gt;FOR /F %a in (&quot;Testing this is a very simple task&quot;) do @echo %a&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The above command would print Testing as output. That means, if you do not specify any argument, it would split the variable and set the value of variable %a as the first fragment.&lt;br /&gt;
&lt;br /&gt;
b) &lt;i&gt;FOR /F &quot;tokens=1-7&quot; %a in (&quot;Testing this is a very simple task&quot;) do @echo %a %f %g&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The above command would print &quot;Testing simple task&quot; as the output. When we specify the above command with tokens=1-7, it would split the string for each Space and assign it to a variable starting from %a. In detail,&amp;nbsp;the command would set variables with values as follows:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %a = Testing&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %b = this&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %c = is&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %d = a&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %e = very&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %f = simple&lt;br /&gt;
&amp;nbsp; &amp;nbsp; %g = task&lt;br /&gt;
&lt;br /&gt;
In the above command, one can also set numerals as variables. i.e., FOR /F &quot;tokens=1-7&quot; %1 in (&quot;Testing this is a very simple task&quot;) do @echo %1 %6 %7 is also a valid command and would return the same output.&lt;br /&gt;
&lt;br /&gt;
c) Now we can use the &quot;delims=&quot; argument to specify any different delimiters based on which the string should be split. For example, the following command splits the string based on delimiter &quot;,&quot; (comma).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;i&gt;FOR /F &quot;tokens=1-7 delims=,&quot; %a in (&quot;Testing,this,is,a,very,simple,task&quot;) do @echo %a %f %g&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Output of the command would be same as that in example b.&lt;br /&gt;
&lt;br /&gt;
d) Now, if you want to get a command executed and then split the output string, then use the command string within single back quotes ( &#39;&lt;command&gt;&lt;/command&gt;&#39; ). For example, the command&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;FOR /F &quot;tokens=1-2 delims=.&quot; %a in (&#39;dir /b&#39;) do @echo %a&lt;/i&gt; would return all the file names without their extension.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; or else,&lt;br /&gt;
&lt;br /&gt;
one can force the new semantics and then insert the &quot;usebackq&quot; argument and specify the command within back-quotes (`&lt;command&gt;&lt;/command&gt;`). Example: &lt;i&gt;FOR /F &quot;usebackq tokens=1-2 delims=.&quot; %a in (`dir /b`) do @echo %a&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
e) If you want to parse through a text file and then split strings with delimiters present in the lines, use the command without any quotes. Example: &lt;i&gt;FOR /F &quot;tokens=1-5 delims=,&quot; %a in (a.txt) do @echo %a&lt;/i&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;br /&gt;
or else,&lt;br /&gt;
&lt;br /&gt;
one can force the new semantics and then insert the &quot;usebackq&quot; argument and define the file name within double-quotes (&quot;&lt;filename&gt;&quot;). Example: &lt;i&gt;FOR /F &quot;usebackq tokens=1-5 delims=,&quot; %a in (&quot;a.txt&quot;) do @echo %a&lt;/i&gt;&lt;/filename&gt;&lt;br /&gt;
&lt;br /&gt;
f) If one uses the new semantics by inserting the &quot;usebackq&quot; argument, and wants to split a string, then the string should be provided between single quotes (&#39;&lt;string&gt;&#39;). Example: &lt;i&gt;FOR /F &quot;usebackq tokens=1-5 delims= &quot; %a&amp;nbsp;in (&#39;dir /b&#39;) do @echo %a&lt;/i&gt;&lt;/string&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/8100533761338324309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2012/04/scripting-batch-file-split-string.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8100533761338324309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8100533761338324309'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2012/04/scripting-batch-file-split-string.html' title='Scripting Batch File: Split String'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-6939860641525700875</id><published>2011-01-14T12:25:00.001+05:30</published><updated>2011-01-14T12:28:21.611+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="chart exporting code"/><category scheme="http://www.blogger.com/atom/ns#" term="Excel chart exporter"/><category scheme="http://www.blogger.com/atom/ns#" term="open excel chart exporter"/><title type='text'>Microsoft Excel Chart Exporting</title><content type='html'>&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Someone in my company came across a requirement for exporting charts in Microsoft Excel. It was then that he came across some automation for the same. He got a tool for himself, but it was quite buggy and very small in features. It was then that I thought of creating one for myself and what I could see was that there are tools available in the market, but people have kept the code password protected and licensed. I thought of making an excel add-in and making the keeping the code open for use.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;I have used the “&lt;i&gt;Sheets (&lt;sheetname&gt;&lt;sheetname&gt;).ChartObjects(i).Chart.Export&lt;/sheetname&gt;&lt;/sheetname&gt;&lt;/i&gt;” to export the charts in excel. Please download the &lt;a href=&quot;http://www.4shared.com/file/voAMVT_u/OpenChartExporter.html&quot;&gt;OpenChartExporter add-in here&lt;/a&gt;. It is simple to use. &lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Find the steps to install and use the add-in below.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Steps to Install the Add-In:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Download the attachment.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Open Excel, import the addin (Tools &lt;/span&gt;&lt;span style=&quot;font-family: Wingdings; font-size: 14pt; line-height: 115%;&quot;&gt;--&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt; Add-Ins --&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt; Browse and add the downloaded vba file).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Check the flag against the Add-In OpenChartExporter.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;span style=&quot;font: 7pt &amp;quot;Times New Roman&amp;quot;;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Click OK button and that’s it!&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Note: This is a onetime activity to install the add-in&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;How to Use:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Open the Excel with charts&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Press Keys “Control + e” to invoke the menu&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Select the target file type, target folder to save the exported image and worksheet whose charts needed to be exported&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Select the chart to be exported, or use the “export all” button to export all the charts available within the sheet&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;One can view the code by opening the Visual Basic Editor (Macro). Hope it helps you!&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/6939860641525700875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2011/01/microsoft-excel-chart-exporting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6939860641525700875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6939860641525700875'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2011/01/microsoft-excel-chart-exporting.html' title='Microsoft Excel Chart Exporting'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-5315553152788435333</id><published>2010-12-11T16:37:00.000+05:30</published><updated>2010-12-11T16:37:02.189+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Better Testing Quality"/><category scheme="http://www.blogger.com/atom/ns#" term="Mixing multi-dimensional thoughts into Testing"/><title type='text'>Mixing multi-dimensional thoughts into Testing</title><content type='html'>I was thinking for a solution to the question what should be the team composition to cover the maximum possible test scenarios that can be thought of, while testing an application/product. It was then that the idea of different people testing the same application in different perspectives came into my mind. &lt;br /&gt;
&lt;br /&gt;
Different people always have different personalities and the same leads them look into things in with a different mentality. Once when I asked a person involved in embedded testing whether he wanted to look for a job into the application testing, the guy furiously refused it. I have had a similar experience from another person involved in application testing, regarding website testing. Another incident, which I have come across many a time, is that people get adhered and addicted to the environment that they had been working for a certain time period. There has been many a time that I listened to people complaining about the new work places due to be using some management application, just because they have been comparing it with the application that they used in their earlier company.&lt;br /&gt;
&lt;br /&gt;
What these made me understand is that people become biased to the type of work that they do. If a person is involved in testing a Visual C# Application for some time, he molds his thoughts to such a direction where all applications behave in the same way that the applications he had been working with. This is a common human mentality, because we always make things to become habits. &lt;br /&gt;
&lt;br /&gt;
Now, when I thought of a method in which we combine the efforts of different people who have different skill levels and domain backgrounds, into testing an application along with some who have been testing the application, it let me make some sense. I thought putting together some people from different domains into one test team, which is testing a totally new product, could prove better than a team of common minds. The thoughts and principles that testers from different backgrounds follow are different and this brings in a lot of variety in testing, once these people come together as a team. If a team which is testing a gaming application includes telecom domain testers, web application testers, network testers etc., then the coverage of testing would be overwhelmingly better than one could imagine. Of course, one thing that is implicit is that, it needs each to be good in their respective fields. &lt;br /&gt;
&lt;br /&gt;
I tried this idea practically into one of those projects that we undertook for an IPTV application. That experience boosted my confidence in this ideology to a great extent. We were only a group of two along with the original testers who were involved from the beginning. Both of us had experiences from the past which are of different backgrounds – one a web tester with experience with different domain accounting systems and the other, experienced in embedded telecom devices, banking applications etc. Together, we were able to test the application and make the product owner change the work-flow a couple of times. The main reason, now I understand, is that we, having expertise working in different domains, were able to create and execute diverse scenarios which were unknown to the other fellow testers. Although the product owner had to change his architecture couple of times, this helped him deliver a product in which his clients, with their own test team, couldn’t find a single bug. This resulted in increased confidence of the client on us, helping us to bag some more projects of the same kind. &lt;br /&gt;
&lt;br /&gt;
There are certain things which need care, while we deal with teams including testers from different domains. It is the fact that the team selection needs to be very even; else it may lead to the testing getting diverted into a single way more and the application development getting affected. A good management should always be able to handle this, because this is common with all teams. I would like to try and implement it in a more projects. Mixing and applying multi-dimensional thoughts for testing an application could prove much more worthy than the usual strategies.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/5315553152788435333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/12/mixing-multi-dimensional-thoughts-into.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5315553152788435333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5315553152788435333'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/12/mixing-multi-dimensional-thoughts-into.html' title='Mixing multi-dimensional thoughts into Testing'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-1747749959642247141</id><published>2010-04-21T19:42:00.001+05:30</published><updated>2010-04-21T19:43:28.965+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="AutoIT"/><category scheme="http://www.blogger.com/atom/ns#" term="Chat Engine"/><category scheme="http://www.blogger.com/atom/ns#" term="Network Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Socket programming"/><category scheme="http://www.blogger.com/atom/ns#" term="TCP Messaging"/><title type='text'>Network Testing Utilities and Functions with AutoIT</title><content type='html'>This is interesting to a very high level. I came across the networking utilities of AutoIT. The tool has a very good set of network related functions which could be made use in network testing. There are options for sending and receiving packets through AutoIT. Both TCP and UDP messages could be handled with the tool! Interesting, isn’t it?&lt;br /&gt;
&lt;br /&gt;
One can do socket programming with this testing tool. Believe me, you can open a socket, send and receive TCP/UDP packets, Listen on a specific port, do messaging, etc. with AutoIT. If one has the idea, then creating a server is not so tough with this tool! Below listed are the functions which are available with AutoIT for playing around with the Messages. These are other than what I have mentioned in the earlier post, which talked about FTP programming.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPStartup &lt;/span&gt;&lt;/b&gt;– To Start TCP services&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPConnect &lt;/span&gt;&lt;/b&gt;– To create a socket and connect to the specified server&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPSend &lt;/span&gt;&lt;/b&gt;– Send TCP data on a connected socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPListen &lt;/span&gt;&lt;/b&gt;– Creates and starts listening on a socket for incoming connections&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPAccept &lt;/span&gt;&lt;/b&gt;– Permits an incoming connection on a listening socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPRecv &lt;/span&gt;&lt;/b&gt;– Receives data from a connected socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPNameToIP &lt;/span&gt;&lt;/b&gt;– To convert internet name into the IP address&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPCloseSocket &lt;/span&gt;&lt;/b&gt;– Closes a TCP socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;TCPShutdown &lt;/span&gt;&lt;/b&gt;– Shuts down the TCP services on the machine&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPStartup &lt;/span&gt;&lt;/b&gt;– To start the UDP services&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPOpen &lt;/span&gt;&lt;/b&gt;– Opens and connects a UDP socket to a server&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPBind &lt;/span&gt;&lt;/b&gt;– Creates a socket bound to an incoming connection&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPSend &lt;/span&gt;&lt;/b&gt;– Send UDP data on a connected socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPRecv &lt;/span&gt;&lt;/b&gt;– Receives UDP data on a connected socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPCloseSocket &lt;/span&gt;&lt;/b&gt;– Closes the UDP socket&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #4c1130;&quot;&gt;UDPShutdown &lt;/span&gt;&lt;/b&gt;– Shuts down the UDP services on the machine&lt;/li&gt;
&lt;/ul&gt;For explanatory purpose, I have created an example of PC-to-PC Messaging system utilizing these functions. It utilizes the TCP messaging functions. There are two codes which I have created, of which one acts as the server and the second as client. The client establishes connection with the server and gets authenticated with a welcome message. There onwards, messages could be exchanged between these two softwares. This is very much similar to a chat engine, and could in fact be used as such, with some little modifications. Please find the executable &lt;a href=&quot;http://www.4shared.com/file/SE4KqCha/Chat-Client-Server-exe.html&quot;&gt;here&lt;/a&gt;. I have also uploaded the Source code, which could be downloaded &lt;a href=&quot;http://www.4shared.com/file/YJzoH0re/Chat-Client-Server-Source.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I will come up with more examples and more on automated testing of UDP based protocols like TFTP. It is really easy and handy to use AutoIT, because it is a very simple function call which needs to be made for all these.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/1747749959642247141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/04/network-testing-utilities-and-functions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/1747749959642247141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/1747749959642247141'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/04/network-testing-utilities-and-functions.html' title='Network Testing Utilities and Functions with AutoIT'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-3712083894639675555</id><published>2010-03-05T00:38:00.001+05:30</published><updated>2010-03-05T00:39:00.293+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="FormatNumber"/><category scheme="http://www.blogger.com/atom/ns#" term="Type Conversion"/><category scheme="http://www.blogger.com/atom/ns#" term="VBScript"/><title type='text'>VBScript Type Conversion</title><content type='html'>It&#39;s very often for people who are interested in VBScripting to encounter the problem of type conversion from string to number. There is no predefined method that could be found to convert the string variable type to numeric.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; We can use the &quot;FormatNumber&quot; for the conversion into Float type. But, this case fails if there is an addition operation. For Example: Consider the code below:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Dim &lt;/span&gt;Var01, Var02&lt;br /&gt;
&lt;br /&gt;
Var01 = &lt;span style=&quot;color: blue;&quot;&gt;FormatNumber&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;InputBox&lt;/span&gt;(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Enter a Number&quot;&lt;/span&gt;))&lt;br /&gt;
Var02 = &lt;span style=&quot;color: blue;&quot;&gt;FormatNumber&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;InputBox&lt;/span&gt;(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Enter another Number&quot;&lt;/span&gt;))&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;MsgBox &lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Sum is &quot;&lt;/span&gt; &amp;amp; Var01 + Var02 &lt;br /&gt;
&lt;br /&gt;
The output of this code that one expects would be the sum, to be returned. But if we input values 2 and 3 here, then the output will be displayed as 2.003.00, instead of 5. This is because the effective action which gets performed is string concatenation, rather than addition of two numbers.&lt;br /&gt;
&lt;br /&gt;
Now, how to perform such an action then? Well, we need to adopt a different method in order to achieve this! Just perform an addition of a zero to the Variable, and all goes fine. Now the code should be:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Dim &lt;/span&gt;Var01, Var02&lt;br /&gt;
&lt;br /&gt;
Var01 = &lt;span style=&quot;color: blue;&quot;&gt;FormatNumber&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;InputBox&lt;/span&gt;(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Enter a Number&quot;&lt;/span&gt;))&lt;br /&gt;
Var02 = &lt;span style=&quot;color: blue;&quot;&gt;FormatNumber&lt;/span&gt;(&lt;span style=&quot;color: blue;&quot;&gt;InputBox&lt;/span&gt;(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Enter another Number&quot;&lt;/span&gt;))&lt;br /&gt;
Var02 = Var02 + 0&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;MsgBox &lt;/span&gt;&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Sum is &quot;&lt;/span&gt; &amp;amp; Var01 + Var02&lt;br /&gt;
&lt;br /&gt;
Now the code works completely fine. This piece of code returns the sum as &quot;5&quot; for inputs 2 and 3. &lt;br /&gt;
&lt;br /&gt;
So the solution for the addition issue is that you add a 0 to the string variable that has been accepted from an input box. Hereby, we can achieve the task of successful type conversion.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/3712083894639675555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/03/vbscript-type-conversion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3712083894639675555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3712083894639675555'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/03/vbscript-type-conversion.html' title='VBScript Type Conversion'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-7730769835984593724</id><published>2010-02-25T21:30:00.000+05:30</published><updated>2010-02-25T21:30:21.045+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="API Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="FTP Client"/><category scheme="http://www.blogger.com/atom/ns#" term="Wininet.dll"/><title type='text'>FTP with AutoIT - API Programming</title><content type='html'>It is really easy to call Win32 API functions through AutoIT. All that one needs to know is how to use the “DllCall” function in AutoIT and the functions which are available in the particular dll that one intends to utilize. In order to create an FTP client, it is really easy if one uses AutoIT. We can make use of the “Wininet.dll” for the sake of creating FTP client software. The functions that are useful for us will be as follows:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;InternetOpen&lt;/li&gt;
&lt;li&gt;InternetConnect&lt;/li&gt;
&lt;li&gt;FtpGetFile&lt;/li&gt;
&lt;li&gt;FtpPutFile&lt;/li&gt;
&lt;li&gt;FtpFindFirstFile&lt;/li&gt;
&lt;li&gt;InternetFindNextFile&lt;/li&gt;
&lt;li&gt;InternetCloseHandle&lt;/li&gt;
&lt;/ul&gt;There are many more functions which are available with wininet.dll, but in order to make the Ftp client software, the above mentioned files are more than enough. Now, let me describe the step by step process which needs to be followed in order to do an Ftp get.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Open an Internet Connection – This is to initialize the wininet API. One can use any connection name for achieving this&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;$InternetOpen&lt;/span&gt; = &lt;span style=&quot;color: blue;&quot;&gt;DllCall&lt;/span&gt;(&quot;wininet.dll&quot;, &quot;long&quot;, &quot;InternetOpen&quot;, &quot;str&quot;, “My FTP Control”, &quot;long&quot;, 1, &quot;str&quot;, “”, &quot;str&quot;, “”, &quot;long&quot;, 0)&lt;span style=&quot;color: #38761d;&quot;&gt;;We can keep the proxy name and proxy bypass as blank&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;Connect to the server with the username and password – One need to have a username and password for the same, as well as the handle returned from the previous step&lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;$InternetConnect&lt;/span&gt; = &lt;span style=&quot;color: blue;&quot;&gt;DllCall&lt;/span&gt;(&quot;wininet.dll&quot;, &quot;long&quot;, &quot;InternetConnect&quot;, &quot;long&quot;, $InternetOpen, &quot;str&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$ServerName&lt;/span&gt;, &quot;int&quot;, 0, &quot;str&quot;,&lt;span style=&quot;color: #990000;&quot;&gt; $Username&lt;/span&gt;, &quot;str&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$Password&lt;/span&gt;, &quot;long&quot;, 1, &quot;long&quot;, 0, &quot;long&quot;, 0)&lt;span style=&quot;color: #38761d;&quot;&gt;; Servername, Username, Password need to be provided.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Start the file transfer with FtpGetFile function – Filename and handle needs to be provided as the inputs&lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;$FTPget&lt;/span&gt; = &lt;span style=&quot;color: blue;&quot;&gt;DllCall&lt;/span&gt;(&quot;wininet.dll&quot;, &quot;int&quot;, &quot;FtpGetFile&quot;, &quot;long&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$InternetConnect&lt;/span&gt;, &quot;str&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$RemoteFile&lt;/span&gt;, &quot;str&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$SaveLocalFile&lt;/span&gt;, &quot;int&quot;, 0, &quot;long&quot;, 0, &quot;long&quot;, 0, &quot;long&quot;, 0)&lt;span style=&quot;color: #38761d;&quot;&gt;;This would save the file in the local computer with the name as provided in place of variable $SaveLocalFile.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Close both the handles&lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;$CloseCC&lt;/span&gt; = &lt;span style=&quot;color: blue;&quot;&gt;DllCall&lt;/span&gt;(&quot;wininet.dll&quot;, &quot;int&quot;, &quot;InternetCloseHandle&quot;, &quot;int&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$InternetOpen&lt;/span&gt;)&lt;br /&gt;
&lt;span style=&quot;color: #990000;&quot;&gt;$CloseCC&lt;/span&gt; = &lt;span style=&quot;color: blue;&quot;&gt;DllCall&lt;/span&gt;(&quot;wininet.dll&quot;, &quot;int&quot;, &quot;InternetCloseHandle&quot;, &quot;int&quot;, &lt;span style=&quot;color: #990000;&quot;&gt;$InternetConnect&lt;/span&gt;)&lt;/li&gt;
&lt;/ol&gt;That’s all the one needs. The file would be saved in the local machine with the desired name. For more details on the functions in wininet.dll, one can visit &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa385473%28VS.85%29.aspx.&quot;&gt;http://msdn.microsoft.com/en-us/library/aa385473%28VS.85%29.aspx.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I have created Ftp client software with the same function, and you can download it freely by &lt;a href=&quot;http://www.4shared.com/file/229626048/ceeb68af/FTPClient_v1_0.html&quot;&gt;clicking here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If you want to access the code, kindly post a request for it through the comments section. I will share the code with anyone who requires.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/7730769835984593724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/02/ftp-with-autoit-api-programming.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7730769835984593724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7730769835984593724'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/02/ftp-with-autoit-api-programming.html' title='FTP with AutoIT - API Programming'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-6421146247505214185</id><published>2010-01-31T23:16:00.002+05:30</published><updated>2010-01-31T23:19:08.056+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="QTP"/><category scheme="http://www.blogger.com/atom/ns#" term="Test Automation Techniques"/><title type='text'>The importance of settings – A QTP Experience</title><content type='html'>It might sound odd, but it is interesting. The settings that need to be made on the tool before starting the automation session, is really important. It becomes more important when we talk about the automation of applications built with complex objects, for example: ActiveX controls. &lt;br /&gt;
&lt;br /&gt;
ActiveX components are nowadays very common in most of the applications that we come across. The automation scripts that we create on our application are meant to be running across different platforms. But many a times, we forget to keep the settings of the tool same in different environments. The result is awful! We end up disturbing the script multiple times at multiple places, and yielding no result. &lt;br /&gt;
&lt;br /&gt;
I shall share one of the experiences that I have faced myself with QTP. It was at this time when we were trying to automate this product which was declared an unfit candidate for automation, by its makers. Now, after the efforts of a day and half, we were in a position where we had one of the most complex parts of this application automated and displayed to the required. But when it came to running the script in a different work station, we failed. QTP threw an “Object Unidentified” error again and again, till we finally figured out what the real issue was! The issue was that, we forgot to set the “Record and run test on any open Windows-based application” option to be selected. Now see, how annoying it is to have missed out such a simple setting, resulting in wastage of a lot of time! So I would certainly advice you to keep a look at the environment settings on the work station that you are about to run your script. Man, the tool settings though simple, are important enough to make your life complex, at times!</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/6421146247505214185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/01/importance-of-settings-qtp-experience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6421146247505214185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6421146247505214185'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/01/importance-of-settings-qtp-experience.html' title='The importance of settings – A QTP Experience'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-5118113095355909426</id><published>2010-01-03T15:21:00.002+05:30</published><updated>2010-01-12T21:59:48.710+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="File Upload Download tests"/><category scheme="http://www.blogger.com/atom/ns#" term="Large Text files"/><category scheme="http://www.blogger.com/atom/ns#" term="Text File generator"/><title type='text'>File Upload/Download Tests</title><content type='html'>Usually software testers find it difficult to create large sized files which are needed for upload/download tests that we normally do. Even if it is a text file that we normally require, the accuracy of the file size becomes the problem. If we require a file of exact size 5 MB, we usually find it difficult to get the size correct. I have tried to solve this issue by creating a File generator. Please find the executable at the location &lt;a href=&quot;http://www.4shared.com/file/195192377/31cf44bd/DataGenv11.html&quot;&gt;http://www.4shared.com/file/195192377/31cf44bd/DataGenv11.html&lt;/a&gt;. This helps in generating text files that are exactly as the size specified, which could be used in your upload/download tests.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/5118113095355909426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/01/file-uploaddownload-tests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5118113095355909426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5118113095355909426'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2010/01/file-uploaddownload-tests.html' title='File Upload/Download Tests'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-7919069478661471447</id><published>2009-12-23T00:29:00.000+05:30</published><updated>2009-12-23T00:29:05.056+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTTP GET"/><category scheme="http://www.blogger.com/atom/ns#" term="HTTP Methods"/><category scheme="http://www.blogger.com/atom/ns#" term="HTTP POST"/><category scheme="http://www.blogger.com/atom/ns#" term="Requests"/><category scheme="http://www.blogger.com/atom/ns#" term="VBScript"/><title type='text'>HTTP GET and POST methods in VBScript</title><content type='html'>We can get the http response of a website with VBScript using XMLHTTP methods. In this post I am including a sample code using which one can use the GET and POST methods on some sample sites.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Option Explicit&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; Dim FSO, objTextFile, Path, strWebSite&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; On Error Resume Next&lt;br /&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&amp;nbsp; &#39;The Website URL&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; strWebSite = &quot;http://automationexpertsforum.blogspot.com/&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&amp;nbsp; &#39;Getting the current directory Path into a variable&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Path = Replace(Wscript.ScriptFullName, Wscript.ScriptName, &quot;&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&amp;nbsp; &#39;Calling the HTTP Get and Writing the response into text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #6aa84f;&quot;&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Creating File System Object for writing the code&lt;/span&gt; &lt;/span&gt;into the text file&lt;br /&gt;
&amp;nbsp; Set objTextFile = FSO.OpenTextFile(Path &amp;amp; &lt;span style=&quot;color: magenta;&quot;&gt;&quot;HTTPGetResponse.txt&quot;&lt;/span&gt;, 8, True)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Open the text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objTextFile.WriteLine Hget(strWebSite)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Writing the response into the text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objTextFile.Close&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Close the Text File&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #38761d;&quot;&gt;&amp;nbsp; &#39;Calling the HTTP Post and Writing the response into text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Set objTextFile = FSO.OpenTextFile(Path &amp;amp; &lt;span style=&quot;color: magenta;&quot;&gt;&quot;HTTPPostResponse.txt&quot;&lt;/span&gt;, 8, True)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Open the text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objTextFile.WriteLine Hpost(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;http://www.xchangebooks.net/home?destination=node%2F1&quot;&lt;/span&gt;, &lt;span style=&quot;color: magenta;&quot;&gt;&quot;name=&quot;&lt;/span&gt;&amp;amp;strUsername&amp;amp;&lt;span style=&quot;color: magenta;&quot;&gt;&quot;&amp;amp;pass=&quot;&lt;/span&gt;&amp;amp;strPassword&amp;amp;&lt;span style=&quot;color: magenta;&quot;&gt;&quot;&amp;amp;op=Log+in&amp;amp;form_build_id=form-dedc377ad8922e3fa40dc6a80674002c&amp;amp;form_id=user_login_block&quot;&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Writing the response into the text file&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objTextFile.Close&lt;span style=&quot;color: #38761d;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Close the Text File&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Set FSO = Nothing&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Release the File System Object&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Function Hget(strURL)&lt;br /&gt;
&amp;nbsp; Dim objHTTP&lt;br /&gt;
&amp;nbsp; Set objHTTP = CreateObject(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Microsoft.XMLHTTP&quot;&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Create XML HTTP object for the Get method&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objHTTP.Open &lt;span style=&quot;color: magenta;&quot;&gt;&quot;GET&quot;&lt;/span&gt;, strURL, False&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt; &#39;Opening the HTTP get method&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objHTTP.Send()&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Sending the request&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; If Err.Number = 0 And objHTTP.Status = 200 Then&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;objHTTP.Status returns the status code of the HTTP Get Request&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Hget = objHTTP.ResponseText&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;ResponseText returns the response HTML code in text format&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Hget = &lt;span style=&quot;color: magenta;&quot;&gt;&quot;HTTP Error returned! Error Code = &quot;&lt;/span&gt; &amp;amp; objHTTP.Status&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp; Set objHTTP = Nothing&lt;br /&gt;
End Function&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;==&amp;gt; HTTP GET Method&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Function Hpost(strURL, strDatatoSend)&lt;br /&gt;
&amp;nbsp; Dim objHTTP&lt;br /&gt;
&amp;nbsp; Set objHTTP = CreateObject(&lt;span style=&quot;color: magenta;&quot;&gt;&quot;Microsoft.XMLHTTP&quot;&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Create XML HTTP object for the Post method&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objHTTP.open &lt;span style=&quot;color: magenta;&quot;&gt;&quot;POST&quot;&lt;/span&gt;, strURL, False&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Opening the HTTP post method&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objHTTP.setRequestHeader &lt;span style=&quot;color: magenta;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt;, &lt;span style=&quot;color: magenta;&quot;&gt;&quot;application/x-www-form-urlencoded&quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; objHTTP.send strDatatoSend&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;Sending the request&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; If Err.Number = 0 And objHTTP.Status = 200 Then&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;objHTTP.Status returns the status code of the HTTP Post Request&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Hpost = objHTTP.ResponseText&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #38761d;&quot;&gt;&#39;ResponseText returns the response HTML code in text format&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Hpost = &lt;span style=&quot;color: magenta;&quot;&gt;&quot;HTTP Error returned! Error Code = &quot; &lt;/span&gt;&amp;amp; objHTTP.Status&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
&amp;nbsp; Set objHTTP = Nothing&lt;br /&gt;
End Function&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #38761d;&quot;&gt; &#39;==&amp;gt; HTTP POST method&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/7919069478661471447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/http-get-and-post-methods-in-vbscript.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7919069478661471447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7919069478661471447'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/http-get-and-post-methods-in-vbscript.html' title='HTTP GET and POST methods in VBScript'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-2566619107326561484</id><published>2009-12-14T23:48:00.000+05:30</published><updated>2009-12-14T23:48:36.901+05:30</updated><title type='text'>Screen Grabber with AutoIT</title><content type='html'>There are quite a lot of tools that are really useful. There are a lot of things that we can do with such common automation tools available. AutoIT is one of such tools which are really interesting to learn. I would suggest that anyone with experience in automation, should go through the tool once.&lt;br /&gt;
&lt;br /&gt;
Here I am presenting a screen Grabbing software that I made with the help of AutoIT. Hope that it helps in some way or the other. Download the Screen Grabbing software &lt;a href=&quot;http://www.4shared.com/file/172914392/f6432770/KGrab.html&quot;&gt;Here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/2566619107326561484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/screen-grabber-with-autoit.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/2566619107326561484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/2566619107326561484'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/screen-grabber-with-autoit.html' title='Screen Grabber with AutoIT'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-8500108721030449194</id><published>2009-12-10T20:41:00.000+05:30</published><updated>2009-12-10T20:41:45.380+05:30</updated><title type='text'>Candidates which are suitable for Automation</title><content type='html'>It has been always noticed that people are confused about what to automate and when to automate. The main reason that I feel is the inexperience with automation that puts people into such a dilemma. Proper understanding of automation concepts would help one resolve this question. The answer lies in the same old definition of automation. Why do we require automation? In order to reduce manual errors in repetitive and iterative tasks. It proves to be the answer to the question of what needs to be automated as well. Any task that needs to be executed repetitively and iteratively across releases need to be automated.&lt;br /&gt;
&lt;br /&gt;
The reason behind this is the fact that complex iterative tasks become really a factor that could lead to human errors. But such errors are really not acceptable while you are in production releases. The release dates always become a bound on the tester as a matter of time that he can spend on a module or the complete test. This induces the tendency of creating errors in the process. Let me take the example of testing a desktop application. If the tester is manually executing the test cases that he had prepared before the first round of testing, by around the 15th round of testing, the tester would be confident enough about the test cases and steps. Once he faces frequent releases again and again, he might be in a position where some modules would be skipped from testing due to the information that the feature was working in the previous releases, and the chance of breaking is none. But this assumption should not be correct all the times. Believe in me, I have seen functionality breaking after somewhere after 18-20 releases have been passed. Think of the case if it was an automated script that was testing the application. It would not mind if it was the 10th or 100th release. It will still execute the same steps again and again, whenever it is played. This avoids the chance of any issues being propagated through the release due to human errors. &lt;br /&gt;
&lt;br /&gt;
This does not cover everything. Executing Test cases is only one part. There are more aspects of Automation that could be utilized. Whatever process is very time consuming and tedious due to its complexity, is always a good candidate for automation. Consider the example of a product solution, where there are around 25 servers and applications that need to be installed for installing the product. If it takes 4 hours to install a server and bring it live with all applications, then the total effort required would be 100 man hours which is approximately 13 working man days that gets utilized in the process. This certainly is a candidate for automation, and should be automated with immediate effect. A simple automation framework could be utilized, which could perform installation on different server machines, controlled by a single central machine and with little human intervention. This process could be achieved in the count of some hours only. This could save a lot much of effort, and prove worthy enough for the company as well.&lt;br /&gt;
&lt;br /&gt;
So the automation task is regulated by some factors like&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Repetition of&amp;nbsp; Testing tasks&lt;/li&gt;
&lt;li&gt;Iterations that need to be executed&lt;/li&gt;
&lt;li&gt;Complexity of tasks to be performed&lt;/li&gt;
&lt;li&gt;Time consumption by the various tasks involved, and so on&lt;/li&gt;
&lt;/ul&gt;At any time, test automation should be made into use, so that the manual effort could be focussed more into finding bugs that exist in the application which are not revealed through test cases.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/8500108721030449194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/candidates-which-are-suitable-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8500108721030449194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8500108721030449194'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/candidates-which-are-suitable-for.html' title='Candidates which are suitable for Automation'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-7050593606446036915</id><published>2009-12-07T20:55:00.002+05:30</published><updated>2009-12-07T20:55:39.649+05:30</updated><title type='text'>Keyword Driven Frameworks</title><content type='html'>We come across this phrase of Keyword driven frameworks, every time we think of test automation. There are commercial tools that come inbuilt with the keyword driven approach implemented. So what is this Keyword Driven Framework?&lt;br /&gt;
&lt;br /&gt;
In Keyword Driven Frameworks, we design a framework to accept certain keywords as triggers to start the test. It is the Keyword that a tester provides, which drives the test, and hence the name. The main and the most important feature of a Keyword driven framework is its reusability. The same keyword could be used across different applications and platforms.&lt;br /&gt;
&lt;br /&gt;
Consider an example where the test case is for a login web page. While considering a login page, there would be a text field that accepts username, a text field that accepts password and also a Sign In button. A classic Keyword Driven Framework would suggest us to tackle this situation using three keywords – “Open WebPage”, “Enter Values” and “Click”. One needs to write procedures for these three keywords only. The keywords would look somewhat like:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; · Open WebPage(“www.yahoo.com”)&lt;br /&gt;
&amp;nbsp; · Enter Value(“username”, “tester01”)&lt;br /&gt;
&amp;nbsp; · Enter Value(“passwd”, “password”)&lt;br /&gt;
&amp;nbsp; · Click(“.save”)&lt;br /&gt;
&lt;br /&gt;
Now, doesn’t it seem like, if we change the url and object ids, for gmail, it would work? Certainly Yes. It needs to work even for any other site as well, till the page technology does not really differ from the normal. So this means that we achieve reusability of the procedures and hence the framework, in a keyword driven approach.&lt;br /&gt;
&lt;br /&gt;
In order to get a better idea, I have added the code for the same. Please find the code section below for the same below:&lt;br /&gt;
&lt;br /&gt;
Call OpenWebPage(&quot;http://www.test.com/&quot;)&lt;br /&gt;
Call EnterValue(&quot;Email&quot;, &quot;username&quot;)&lt;br /&gt;
Call EnterValue(&quot;Passwd&quot;, &quot;password&quot;)&lt;br /&gt;
Call ClickButton(&quot;signIn&quot;)&lt;br /&gt;
&lt;br /&gt;
Function OpenWebPage(strURL)&lt;br /&gt;
&amp;nbsp; Set IE = CreateObject(&quot;InternetExplorer.Application&quot;)&lt;br /&gt;
&amp;nbsp; IE.Visible = True&lt;br /&gt;
&amp;nbsp; IE. Navigate strURL&lt;br /&gt;
&amp;nbsp; Do Until IE.ReadyState = 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Sleep 1000&lt;br /&gt;
&amp;nbsp; Loop&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Function EnterValue(strObjName, strValue)&lt;br /&gt;
&amp;nbsp; If strObjName &amp;lt;&amp;gt; &quot;&quot; And strValue &amp;lt;&amp;gt; &quot;&quot; Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Document.GetElementByID(strObjName).Value = strValue&lt;br /&gt;
&amp;nbsp; Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox &quot;Invalid Inputs&quot;&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Function ClickButton(strButton)&lt;br /&gt;
&amp;nbsp; If strButton &amp;lt;&amp;gt; &quot;&quot; Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Document.GetElementByID(strButton).Click&lt;br /&gt;
&amp;nbsp; Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox &quot;Button name is not valid&quot;&lt;br /&gt;
&amp;nbsp; End If&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
The above code would work for yahoo as well as gmail or any other site. With some more modifications, which includes creating an excel based input test case to read the inputs, and an HTML report to show the results of test case execution. This would make the the process of a keyword driven framework complete, like the one we can find in any commercial tool.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/7050593606446036915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/keyword-driven-frameworks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7050593606446036915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/7050593606446036915'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/12/keyword-driven-frameworks.html' title='Keyword Driven Frameworks'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-6392324816054903717</id><published>2009-11-14T23:08:00.001+05:30</published><updated>2009-11-14T23:09:59.423+05:30</updated><title type='text'>Data Driven Frameworks</title><content type='html'>Data Driven frameworks, as the name suggests, are those where the test input data drives the test. There would be data driven scripts which contain a high level of hardcoded areas, with variable data. Hence the data driven scripts are mostly Application Specific. The same framework cannot be used across different applications to test them. This puts a limitation on people adapting data driven frameworks for testing their applications, but these frameworks could be used to perform an exhaustive testing of your application. &lt;br /&gt;
&lt;br /&gt;
Data Driven Frameworks could be therefore defined as a set of application specific scripts which tests and validates the application against application data. Consider the following architecture of a sample framework.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHscWEb-drU4h089E6bLXIYUPvUA7AIl7LZSTjdqWcEmSgb38NYdlj8ZqTZPlnM9QViFtZQn-yQPpci8coeHTQK9gY3m0vSkwtm0cK7_cJON8rWdM9d_6Q9hupqPyzXg8j59mN297LWFs/s1600-h/DDF_Sample.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHscWEb-drU4h089E6bLXIYUPvUA7AIl7LZSTjdqWcEmSgb38NYdlj8ZqTZPlnM9QViFtZQn-yQPpci8coeHTQK9gY3m0vSkwtm0cK7_cJON8rWdM9d_6Q9hupqPyzXg8j59mN297LWFs/s320/DDF_Sample.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #783f04;&quot;&gt;Fig: A Sample Data Driven Framework&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Here, the data pool would contain the data necessary for testing the application. This includes both the input data, as well as the data for result analysis. There will be a large amount of Hardcoded part in the script, apart from the varying data input section. &lt;br /&gt;
&lt;br /&gt;
Let me explain this in an easier way. If we design a data driven framework to test a website namely www.google.com, we cannot test another similar website like www.altavista.com with the same framework. The reason behind this is that the scripts that we use will include sections where the object names of the google web page, which are hardcoded in our framework. &lt;br /&gt;
&lt;br /&gt;
Now, let me just show an example where the test case checks the second page for the search keyword. Find the following VBScript code. The code just tests the google search. You can &lt;a href=&quot;http://www.4shared.com/file/152128664/3d731c19/DDF_Sample.html&quot;&gt;download the code and input file here&lt;/a&gt; (http://www.4shared.com/file/152128664/3d731c19/DDF_Sample.html)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;The Code&lt;/b&gt;:&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;Dim IE, strTestInput(100), strTestVal, strActualResult, strTextFile, intCount, i&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&#39;Setting the Folder Path&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;Path = Replace(Wscript.ScriptFullName, Wscript.ScriptName, &quot;&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&#39;Reading the inputs from Text File&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;If FSO.FileExists(Path&amp;amp;&quot;testinput.txt&quot;) Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set strTextFile = FSO.OpenTextFile(Path&amp;amp;&quot;testinput.txt&quot;, 1, True)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intCount = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until strTextFile.AtEndofStream&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strTestInput(intCount) = strTextFile.Readline&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; intCount = intCount + 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Performing the Search on Google&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set IE = CreateObject(&quot;InternetExplorer.Application&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Visible = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until i = intCount&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Navigate &quot;www.google.co.in&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Do Until IE.ReadyState = 4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Sleep 1000&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Document.GetElementByID(&quot;q&quot;).Value = strTestInput(i)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Document.GetElementByID(&quot;btnG&quot;).Click&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Sleep 3000&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; strActualResult = IE.Document.GetElementByID(&quot;q&quot;).Value&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If StrComp(strActualResult, strTestInput(i)) = 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox &quot;Pass!!&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox &quot;Fail!!&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i = i + 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IE.Quit()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set IE = Nothing&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox &quot;The file &quot;&amp;amp;Path&amp;amp;&quot;testinput.txt&quot;&amp;amp;&quot; does not exist. Please create the file with test inputs before proceeding&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #0b5394;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Note: In order to use the code, one should create a text file named “testinput.txt” with the input values.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
The fact is that one cannot test another website with this piece of code. The code is specifically for www.google.com. This could be taken as an example of a data driven test script.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/6392324816054903717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/11/data-driven-frameworks.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6392324816054903717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/6392324816054903717'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/11/data-driven-frameworks.html' title='Data Driven Frameworks'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHscWEb-drU4h089E6bLXIYUPvUA7AIl7LZSTjdqWcEmSgb38NYdlj8ZqTZPlnM9QViFtZQn-yQPpci8coeHTQK9gY3m0vSkwtm0cK7_cJON8rWdM9d_6Q9hupqPyzXg8j59mN297LWFs/s72-c/DDF_Sample.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-5270405673540389060</id><published>2009-10-31T00:00:00.000+05:30</published><updated>2009-10-31T00:00:10.006+05:30</updated><title type='text'>What are Automation Frameworks?</title><content type='html'>&lt;span style=&quot;font-size: small;&quot;&gt;In Simple terms, one can easily define an automation framework as “&lt;i&gt;a platform for conducting automated test design and execution&lt;/i&gt;”. The automation framework can be considered as the ground where a tester designs his test case in the form of scripts, and then runs the script or a set of scripts. &lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
There are a number of types of frameworks that we normally come to hear about. Like the common Data-Driven frameworks, Keyword driven frameworks, Hybrid Frameworks, Test Modularity Frameworks etc. What are these frameworks anyway? Why do we have such a number of types of frameworks anyway? What is the best framework that we can use? These might be some among the questions that come into your mind now. Let’s try to solve the questions.&lt;br /&gt;
&lt;br /&gt;
All the types of frameworks, that we come to hear, are basically the way in which one wants to get his automated tests executed. Let me go into detail with a simple example of the windows calculator application.&lt;br /&gt;
&lt;br /&gt;
If the test case is to check 10 + 10 = 20, this could be automated in different ways.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Create an automated script to press “10 + 10 =” – This could be defined as the data driven way. Here the script directly reads the input value as 10 and does the calculation and checks the outputs. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Create a script to read input values from a file and do the processing – This is also a data driven method of automation. Here, although the data is read from a file, the script is created to perform an addition task.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Create functions to press buttons on calculator and pass the values as object names – This is the Keyword Driven way of automation. Here the final script is not restricted to an addition task. It could be used in other cases as well.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span style=&quot;font-size: small;&quot;&gt;From the example above, we can identify that we can create and use different types of frameworks, according to our outlook of the application and method that needed to be followed.&lt;br /&gt;
&lt;br /&gt;
When comparing different frameworks, the keyword driven framework has an upper hand over the other types of framework, because of its ease of use, reusability, maintainability and other uses. Considering the calculator example shown above itself, if we proceed with the data driven approach, there is a limitation of the script being used only for addition test. For conducting a substraction test, one needs to create another script. But this certainly has an advantage in the fact of repeatability. The script can execute at a faster pace than the one created in the Keyword driven approach, when there is a huge amount of data that needs to be used for testing. Here the data is the one which drives the framework. Thus, the data driven approach makes the framework application dependent. This could not be used across applications. It is meant for a specific application only.&lt;br /&gt;
&lt;br /&gt;
But think about the keyword driven framework, where we create and call function to click certain object. In this case, the same function could be re-used for substraction, division as well as other functionalities. Thus, a keyword driven framework could be reused for various functionalities as well as different applications as well. Thus the application/software dependency is removed from automation, when keyword driven approach is adopted.&lt;br /&gt;
&lt;br /&gt;
I will come up with more light on different frameworks and examples in the coming posts.&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/5270405673540389060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/what-are-automation-frameworks.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5270405673540389060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/5270405673540389060'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/what-are-automation-frameworks.html' title='What are Automation Frameworks?'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-3768483352953132489</id><published>2009-10-25T13:38:00.002+05:30</published><updated>2009-10-25T13:38:37.660+05:30</updated><title type='text'>How to decide on the automation?</title><content type='html'>This is an interesting topic to discuss. Testers always find it difficult to find a solution to this problem. Most of the times they go ahead without proper planning about the procedure to be followed in automation, and then end up being in a mess. Proper idea of automation should be put into use for deciding the process that needs to be followed in test automation. Else, one may face a road-block, where it would be difficult to change the procedure, and also cannot proceed forward with the same procedure.&lt;br /&gt;
&lt;br /&gt;
So what are the pre-requisites that one need to have before deciding on test automation? The answer is quite simple. Complete understanding of the application or software that you are proceeding to test. Let me explain it a bit more deeply. The engineer should have confidence regarding the application that he is going to do automation for. He should have the in-and-out idea about the various functionalities that exist in the application. This plays an important role in deciding the type of automation that needs to be performed. &lt;br /&gt;
&lt;br /&gt;
Idea about the development platform is another important aspect that a person needs to have before deciding on automation. If one has idea about that is the language that the application is built in, then he can choose a tool, that is most suited for automating applications made in that language. For example: There are issues that we normally face with automation when dealing with .NET applications, since they may include many third party controls. This makes many a number of tools which are unable to identify the objects embedded in the application, insufficient for automation. So the complexity of the code should be properly understood prior to select an automation tool or framework.&lt;br /&gt;
Another important aspect that needs to be taken care before planning automation is the amount of automation that is expected. Although it might not seem to be affecting automation, it certainly is important because it is a deciding factor in choosing the tool that we can utilize for automation. Why should we choose a tool like QTP, when there are very few test cases which need to be automated? So these factors need to be defined well earlier during the planning process of automation itself.&lt;br /&gt;
&lt;br /&gt;
There are other important factors also which decide test automation like tool support, cost of tool, effort required in automation etc. So the proper way should be beginning with a discussion including the various departments involved in the development process taking into consideration all the above mentioned facts.</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/3768483352953132489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/how-to-decide-on-automation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3768483352953132489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3768483352953132489'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/how-to-decide-on-automation.html' title='How to decide on the automation?'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-8858681249997029357</id><published>2009-10-24T23:11:00.003+05:30</published><updated>2009-10-24T23:13:42.858+05:30</updated><title type='text'>Why do we need test automation anyway?</title><content type='html'>&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Whenever a software testing is planned and test cases are prepared, one would always have identified certain number of test cases which need to be executed in order to ensure that the functionality is working fine without many bugs. We generally term these test cases as regression test cases.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Whenever there is a new release in a tester’s hand, with some bugs fixed in the code, there certainly is a large chance of the fix affecting another related functionality of the software. This generally is due to the fact that usually coding is based on utilizing reusable functions to a maximum, so that code complexity as well as the size of code could be reduced. This certainly is a boon to the Software Testing industry, and in particular to the Software Test Engineers. This keeps our department busy in the industry, and thereby keeps its position sustained and important in the life of the Software. So Regression testing could be put across in this way – &lt;i&gt;While a bug gets fixed, there are chances that some related functionalities get affected. In order to test this, while planning the tests, we identify a set of test cases that confirm the functionality of the various features and mark them as regression test cases. Regression Testing is testing the software to make sure that the software functionalities are not affected in a new release”&lt;/i&gt;. Regression test cases are usually Positive functionality test cases.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;So regression test cases are some set of test cases which need to be executed at every test cycle probably, apart from small releases. This makes it repeating tests. While repeating the execution of test cases again and again, there is a high chance and risk of human errors. There can be missing steps in test execution that can lead to major issues getting exposed to the customers. I have seen a situation when a tester passed a test case just quoting that the functionality was working fine in the previous release, and there was a situation when it turned out to be not working when client tried the same. So a manual test execution has a chance of missing test steps. But considering the test case being automated, there is no chance of any step getting missed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Not only the human errors are the reason in choosing automation against manual, but the efforts required in Manual Testing is too high when compared to Automation for a long term. The charges of automation is a onetime cost, they would well be redeemed, when the same automated tests are executed over a long period, say a year or so. Thereby, it reduces the cost involved in testing.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;There are quite a lot of other uses in choosing automation other than the above mentioned, like Automation makes test execution &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size-adjust: none; font-size: 7pt; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Faster&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Reliable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Reusable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Cost Effective&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;More Accurate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;Maintainable&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Symbol; font-size: 14pt; line-height: 115%;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;And so on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Garamond&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 14pt; line-height: 115%;&quot;&gt;But even with automation, the manual efforts could not be completely excluded at any point of time. Automation Scripts are just a number of steps performed in sequence, nothing else. So at any time in testing, Manual efforts can never be completely replaced by Automation. But certainly, the efforts of manual intervention in repeatable things could be reduced to a very high level with test automation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/8858681249997029357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/why-do-we-need-test-automation-anyway.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8858681249997029357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/8858681249997029357'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/why-do-we-need-test-automation-anyway.html' title='Why do we need test automation anyway?'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7601976230567298568.post-3304210895910973402</id><published>2009-10-24T22:39:00.000+05:30</published><updated>2009-10-24T22:39:16.923+05:30</updated><title type='text'>Introduction to Blogging</title><content type='html'>Hi All,&lt;br /&gt;
&lt;br /&gt;
I am Kishore Krishnan. I am a software test engineer. I have quite a bit of experience in test automation and have worked on many tools. To quote some would be AutoIT, Perl, TCL, Sahi, QTP, TestComplete, Selenium etc. I have designed frameworks with many of the industry available tools as mentioned above.&lt;br /&gt;
&lt;br /&gt;
The idea behind me starting this blog is to share some thoughts that I have with other needy people around the world. I am planning to Issue some interesting concepts about Software Test Automation, Frameworks, Some methodologies to be used to make automation interesting, and so on. I hope that this blog could help atleast some in understanding basic concepts of automation, and also some of tools.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
Kishore</content><link rel='replies' type='application/atom+xml' href='http://automationexpertsforum.blogspot.com/feeds/3304210895910973402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/introduction-to-blogging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3304210895910973402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7601976230567298568/posts/default/3304210895910973402'/><link rel='alternate' type='text/html' href='http://automationexpertsforum.blogspot.com/2009/10/introduction-to-blogging.html' title='Introduction to Blogging'/><author><name>Kishore Krishnan</name><uri>http://www.blogger.com/profile/09740704586049011350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIxbyKAxS_w0i4udBzQtHT1UrdB37Hm0hCTs7PaHJGdAcQDunR-tquv5WPBXz-T-kvHCGMwD91S04Rc6oh5KfSit_kQlOkLOMqN_gag5oUrtgV2LYmog_SpJaZlI0fWw/s220/DSC00088.JPG'/></author><thr:total>0</thr:total></entry></feed>