<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Test Automation Blog &#187; UI automation</title>
	<atom:link href="http://testautomationblog.com/tag/ui-automation/feed/" rel="self" type="application/rss+xml" />
	<link>http://testautomationblog.com</link>
	<description>On software test automation and quality assurance</description>
	<lastBuildDate>Sun, 16 May 2010 09:33:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows 7 Automation API Available on Vista and Server 2008</title>
		<link>http://testautomationblog.com/2009/10/31/windows-7-automation-api-platform-update/</link>
		<comments>http://testautomationblog.com/2009/10/31/windows-7-automation-api-platform-update/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 10:19:56 +0000</pubDate>
		<dc:creator>TAB</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Automation API]]></category>
		<category><![CDATA[automation tools]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[UI automation]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Automation API]]></category>

		<guid isPermaLink="false">http://testautomationblog.com/?p=152</guid>
		<description><![CDATA[
Right after the recent release of Windows 7 Microsoft also released a platform update for Windows Vista and Windows Server 2008. The update brings in some of the new technologies from Windows 7 to those operating systems. Besides 'Windows Graphics, Imaging, and XPS Library' (which  actually gives you  new DirectX), 'Windows Portable Devices Platform' and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-154" title="Windows-Automation" src="http://testautomationblog.com/wp-content/uploads/2009/10/Windows-Automation.jpg" alt="Windows-Automation" width="240" height="235" /></p>
<p>Right after the recent release of Windows 7 Microsoft also released a <a href="http://support.microsoft.com/kb/971644" target="_blank">platform update</a> for Windows Vista and Windows Server 2008. The update brings in some of the new technologies from Windows 7 to those operating systems. Besides<strong> </strong>'<strong>Windows Graphics, Imaging, and XPS Library</strong>' (which  actually gives you  new DirectX), '<strong>Windows Portable Devices Platform</strong>' and '<strong>Windows Ribbon and Animation Manager Library</strong>' (I hate the ribbon interface), the update also includes something called '<strong>Windows Automation API</strong>', which "<em>enables accessibility tools and test automations to access the Windows user interface in a consistent way across operating system versions</em>"<br />
Since <strong>Active Accessibility</strong> Microsoft has been providing programmatic interfaces for UI automation in Windows.  So if you are starting a Windows automation project, think about using this approach.  You can script with the <a href="http://msdn.microsoft.com/en-us/library/dd561932%28VS.85%29.aspx" target="_blank">Automation API</a> in any of Microsoft's programming languages (Visual Basic, C# and even C++)  even with the free <a href="http://www.microsoft.com/exPress/" target="_blank">Express Editions of Visual Studio</a>. This will not only be a really cost efficient approach, compared with the prices of automation tools like <strong>QTP </strong>or <strong>RFT</strong>, but probably will produce results which are more stable too.  After all this is the technology Microsoft uses to create UI tests for their own applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://testautomationblog.com/2009/10/31/windows-7-automation-api-platform-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TestPartner Review &#8211; Final</title>
		<link>http://testautomationblog.com/2009/10/04/test-partner-review-final/</link>
		<comments>http://testautomationblog.com/2009/10/04/test-partner-review-final/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 17:18:23 +0000</pubDate>
		<dc:creator>TAB</dc:creator>
				<category><![CDATA[Test Tool Reviews]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[TestPartner]]></category>
		<category><![CDATA[UI automation]]></category>

		<guid isPermaLink="false">http://testautomationblog.com/?p=83</guid>
		<description><![CDATA[...use Window.TextSelect if you can not identify something

This is the final part of my hands-on review of TestPartner. Here I will try to demonstrate the old-style Visual Basic scripting approach, which I find to be more reliable.   I will again use my GMail scenario.
As I mentioned before, the only place I find recording useful is [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><em>...use Window.TextSelect if you can not identify something</em></p>
<p align="left"><em><img class="aligncenter size-full wp-image-148" title="Review" src="http://testautomationblog.com/wp-content/uploads/2009/10/617842_measure_1.jpg" alt="Review" width="225" height="300" /></em></p>
<p align="left">This is the final part of my hands-on review of TestPartner. Here I will try to demonstrate the old-style Visual Basic scripting approach, which I find to be more reliable.   I will again use my GMail scenario.</p>
<p align="left">As I mentioned before, the only place I find recording useful is in such cases when you want to get to know how the tool ‘sees’ the UI.  I have no experience with the UI of GMail,  so I tried to record the scenario first.</p>
<p align="left">This is the script that I got:</p>
<pre class="vb"><span style="color: #b1b100;">Sub</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
<span style="color: #808080;">' Begin record on Monday, 13. September 2009 at</span>
<span style="color: #808080;">' 11:17:07 by Admin</span>
&nbsp;
    <span style="color: #808080;">' Attach to Gmail Email from Google -</span>
    <span style="color: #808080;">' Microsoft Internet Explorer IEWindow</span>
    IEWindow<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Gmail Email from Google - IEWindow&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
&nbsp;
    <span style="color: #808080;">' Attach to Caption='Gmail: Email from</span>
    <span style="color: #808080;">' Google'</span>
    HTMLBrowser<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Gmail: Email from Google'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
        HTMLEditBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=Email&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">SetText</span> <span style="color: #ff0000;">&quot;testautomationblog&quot;</span>
        HTMLEditBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=Passwd&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">SetPasswordText</span> <span style="color: #ff0000;">&quot;***&quot;</span>
        HTMLButton<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=signIn&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
&nbsp;
    <span style="color: #808080;">' Attach to Gmail - Inbox (2) -</span>
    <span style="color: #808080;">' testautomationblog@gmailcom - Microsoft</span>
    <span style="color: #808080;">' Internet Explorer IEWindow</span>
    IEWindow<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Gmail - Inbox (2) - IEWindow&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
&nbsp;
    <span style="color: #808080;">' Attach to Name=cgudh0fxq7w2n</span>
    HTMLFrame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=cgudh0fxq7w2n&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
        HTMLSpan<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID=':r3'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span> <span style="color: #cc66cc;">43</span>, <span style="color: #cc66cc;">12</span>
&nbsp;
    <span style="color: #808080;">' Attach to Gmail - Compose Mail -</span>
    <span style="color: #808080;">' testautomationblog@gmailcom - Microsoft</span>
    <span style="color: #808080;">' Internet Explorer IEWindow</span>
    IEWindow<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Gmail - Compose Mail - IEWindow&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
&nbsp;
    <span style="color: #808080;">' Attach to ID=':kl'</span>
    HTMLFrame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID=':kl'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
        HTMLFrame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID=':kl'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span> <span style="color: #cc66cc;">33</span>, <span style="color: #cc66cc;">19</span>
        HTMLFrame.<span style="color: #b1b100;">Type</span> <span style="color: #ff0000;">&quot;Lorem Ipsum Dolor&quot;</span>
&nbsp;
    <span style="color: #808080;">' Attach to Name=cgudh0fxq7w2n</span>
    HTMLFrame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=cgudh0fxq7w2n&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
        HTMLImage<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID=':ia'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
        HTMLDiv<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID='' Index=589&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span> <span style="color: #cc66cc;">48</span>, <span style="color: #cc66cc;">7</span>
        HTMLAnchor<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Drafts (1)'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
        HTMLSpan<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID='' Index=38&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">MouseDown</span> <span style="color: #cc66cc;">42</span>, <span style="color: #cc66cc;">7</span>
        HTMLDiv<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID='' Index=702&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">MouseUp</span> <span style="color: #cc66cc;">358</span>, <span style="color: #cc66cc;">25</span>
        HTMLDiv<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;ID='' Index=733&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span> <span style="color: #cc66cc;">35</span>, <span style="color: #cc66cc;">12</span>
        HTMLAnchor<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Sign out'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
&nbsp;
<span style="color: #808080;">' End record on Monday, 13. September 2009 at</span>
<span style="color: #808080;">' 11:18:22 by Admin</span>
&nbsp;
<span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></pre>
<p>As I expected, the recorded script could not be run successfully at all.  So what is wrong with it?</p>
<p>The recording has used two ways of addressing the controls. The first one is used with controls that TestPartner attaches to, those seem to be the controls it sees as more important,  for example see line 12. Those controls are identified using something called object maps. The object maps are artifacts that represent definitions of UI controls. When you access a control in a script via an object map, you provide only the name of the map. The actual properties used to identify the control are stored in the map itself. This is the definition of the object map from line 12:</p>
<p style="text-align: center;"><a href="http://testautomationblog.com/wp-content/uploads/2009/04/object_map.png"><img class="aligncenter size-full wp-image-99" title="object_map" src="http://testautomationblog.com/wp-content/uploads/2009/04/object_map.png" alt="object_map" width="323" height="237" /></a></p>
<p>Basically this says that the window we are interested in is an Internet Explorer window with a caption 'Gmail: Email from Google - Microsoft Internet Explorer'. The idea of object maps is that they try to separate how controls are identified from the test logic. If something changes in some particular control, you will have to modify only the relevant object map, but not the script itself.    This looks like a nice idea, but I found that in practice it does not always work that well.</p>
<p>The second way of addressing controls is called 'Raw attach names'. You can see it for example in rows 12-15.  Here you just provide sets of properties and their values as a string.  Notice how TestPartner identifies controls with expressions like "Name=cgudh0fxq7w2n"  and "ID=':r3'".  Unfortunately as we  saw before, those IDs and Names are dynamically generated and change each time you log in GMail. We need a better way to locate those controls. Unfortunately GMail does not provide easy and reliable way to locate some of them (like persistent names or IDs for example), and TestPartner on the other hand does not know how to identify controls based on their relative location in the page.</p>
<p>Still, with some dirty hacks,  I was able to quickly come up with this version of the script which can be executed reliably:</p>
<pre class="vb"><span style="color: #b1b100;">Sub</span> Main<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
    sText = <span style="color: #ff0000;">&quot;Lorem Ipsum Dolor&quot;</span>
&nbsp;
    <span style="color: #808080;">' -- Login</span>
    IEWindow<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Gmail*'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Attach</span>
    HTMLEditBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=Email&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">SetText</span> <span style="color: #ff0000;">&quot;testautomationblog&quot;</span>
    HTMLEditBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=Passwd&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">SetPasswordText</span> <span style="color: #ff0000;">&quot;********&quot;</span>
    HTMLButton<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name=signIn&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
&nbsp;
    <span style="color: #808080;">' -- Go to compose mail and type the text</span>
    HTMLSpan<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;InnerText='Compose Mail'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
    HTMLFrame<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Name='' Index=1&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
    IEWindow.<span style="color: #b1b100;">Type</span> sText
&nbsp;
    <span style="color: #808080;">' -- Center and save</span>
    HTMLImage<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Width=20 Height=20 Index=16&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
    Window.<span style="color: #66cc66;">TextSelect</span> <span style="color: #ff0000;">&quot;Save Now&quot;</span>
&nbsp;
    <span style="color: #808080;">' -- Wait for the draft to get saved</span>
    Sleep <span style="color: #cc66cc;">2</span>
    Window.<span style="color: #66cc66;">TextSelect</span> <span style="color: #ff0000;">&quot;Draft saved&quot;</span>
&nbsp;
    <span style="color: #808080;">' -- Go to Drafts</span>
    HTMLAnchor<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Drafts*'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
    HTMLSpan<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;InnerText='*&quot;</span> &amp;amp; sText &amp;amp; <span style="color: #ff0000;">&quot;'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
&nbsp;
    <span style="color: #808080;">' -- Find the text and discard the draft</span>
    Window.<span style="color: #66cc66;">TextSelect</span> sText
    Window.<span style="color: #66cc66;">TextSelect</span> <span style="color: #ff0000;">&quot;Discard&quot;</span>
&nbsp;
    <span style="color: #808080;">' -- Logout</span>
    HTMLAnchor<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Caption='Sign out'&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #66cc66;">Click</span>
&nbsp;
<span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Sub</span></pre>
<p>This is a quick summary:<br />
At line 6 I attach to the IE window. This is the only place I attach in the script as I only work in one window. I used raw attach instead of object map. Note how I used a wilcard for the window caption. Lines 7-12 are self explainotary. What you see in lines 13 and 14 is really a small hack. The editor area in GMail is contained in a HTMLFrame.  TestPartner can not find anything meaningful in it to identify it, so I used HTMLFrame("Name='' Index=1"), which means basically the first HTMLFrame with empty name.  Because the HTMLFrame object does not support the SetText method (like the HTMLEditBox in line 7 for example), I first click on it (line 13) and then just type in the text (line 14). I do not feel very good about this solution, but it was the first quick hack I could think of.<br />
Identifying the center button in the toolbar of GMail was also problematic (line 17). All the buttons in GMail also lack unique IDs or Names, so I was able to identify the button only as HTMLImage("Width=20 Height=20 Index=16") - the 16th HTMLImage with Width=20 and Height=20 in the page.<br />
Clicking the 'Save Now' button (line 18) also proved more difficult than I anticipated. For some reason it appeared as an empty unidentifiable Div when I tried to locate it with the object browser.  I used the Window.TextSelect trick, which is the most universal way to make TestPartner click on some text you can not identify otherwise.  This is actually a helpful tip - use Window.TextSelect if you can not identify something.  After clicking the 'Save Now' button we have to wait for the backend to actually save the page before moving on with the test. A quick and somewhat dirty way to do this is shown on lines and - wait for 2 seconds and then verify that the "Draft saved" text appears on the page.  I think the rest of the script needs no explanation.</p>
<p>To sum it up - TestPartner can be buggy and confusing, but after all, it is powerful enough to let you automate almost anything.  Maybe you'll need some time to find the right workarounds. Probably they will be ugly. Overall there are much better tools, especially if you want to do web automation. There are worse too, but I am happy that I don't have to use TestPartner anymore.</p>
]]></content:encoded>
			<wfw:commentRss>http://testautomationblog.com/2009/10/04/test-partner-review-final/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TestPartner 6 Review, Part I &#8211; Visual Tests</title>
		<link>http://testautomationblog.com/2009/04/03/testpartner-review-visual-tests/</link>
		<comments>http://testautomationblog.com/2009/04/03/testpartner-review-visual-tests/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 21:06:53 +0000</pubDate>
		<dc:creator>TAB</dc:creator>
				<category><![CDATA[Test Tool Reviews]]></category>
		<category><![CDATA[record and replay]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[test tools]]></category>
		<category><![CDATA[TestPartner]]></category>
		<category><![CDATA[UI automation]]></category>

		<guid isPermaLink="false">http://testautomationblog.com/?p=28</guid>
		<description><![CDATA[TestPartner supposedly "allows application users—who are intimately familiar with the application under test, but often lack the technical expertise to use automated testing tools—to comfortably and confidently capture business transactions, verify the proper functionality is tested and assist in updating the test when inaccuracies are found or the application changes".
As a whole I was not impressed with the visual record &#038; replay capability of TestPartner.]]></description>
			<content:encoded><![CDATA[<p><em>Yes, it is about capture/replay again.</em></p>
<p style="text-align: left;"><img class="aligncenter size-full wp-image-47" title="spaners" src="http://testautomationblog.com/wp-content/uploads/2009/04/spaners.jpg" alt="spaners" width="300" height="224" />I decided to start my automation tool reviews with <a href="http://en.wikipedia.org/wiki/TestPartner" target="_blank">TestPartner</a> 6  for two reasons - the first is that it is the UI automation tool that I am currently  using on my project.  The second reason is because the 'Visual Tests'  (also called 'Visual Navigator') feature, introduced with the last major release of TestPartner<em>, </em>supposedly <em>"allows application users<span style="font-size: 12pt;">—</span>who are intimately familiar with the application under test, but often lack the technical expertise to use automated testing tools<span style="font-size: 12pt;">—</span>to comfortably and confidently capture business transactions, verify the proper functionality is tested and assist in updating the test when inaccuracies are found or the application changes".</em> The quoted text comes from the <a href="http://www.compuware.com/products/qacenter/2925_ENG_HTML.htm" target="_blank">product review</a> on the site of Compuware. With TestPartner 6 they are basically trying to catch up with the competition, because HP/Mercury QuickTest Professional (<a href="http://en.wikipedia.org/wiki/HP_QuickTest_Professional" target="_blank">QTP</a>) had this feature first - you record your UI actions and what is created is not code, but descriptive and supposedly less frightening to non-technical people list of entries in a table.</p>
<p>I do not actually use this feature and if you have read my previous post you know <a href="http://testautomationblog.com/2009/03/16/record-playback-does-not-work/" target="_blank">why</a>, but I came up with this simple scenario to test how it works overal:</p>
<ol>
<li>
<pre><span style="color: #000000;">Open Gmail</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Log-in</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Go to 'Compose Mail'</span><span style="color: #000000;">
</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Enter some text in the mail body</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Center the text, using the toolbar button</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Click ‘Save Now’ to save the email as draft</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Go to the 'Drafts' folder</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Click on the draft email you just created</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Use the features of the test tool to check that the contents
of the text in the email body are the same as entered</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Discard the draft message</span></pre>
</li>
<li>
<pre><span style="color: #000000;">Log-out</span></pre>
</li>
</ol>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">I decided to use Gmail as a test application, because I wanted to challenge the tool a little by using some AJAX instead of static HTML and also because almost everyone is <em>"intimately familiar"</em> with Gmail.  The scenario is very short and I think that it is reasonable to expect that automation tools should be able to handle well this level of complexity.</p>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">I recorded the sequence with TestPartner.  In the screenshot below you will see how the recorded script looks like:</p>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">
<div id="attachment_39" class="wp-caption aligncenter" style="width: 310px"><a href="http://testautomationblog.com/wp-content/uploads/2009/04/visual_test.png"><img class="size-medium wp-image-39" title="Recorded Script" src="http://testautomationblog.com/wp-content/uploads/2009/04/visual_test-300x232.png" alt="Recorded Script" width="300" height="232" /></a><p class="wp-caption-text"> (click image to enlarge)</p></div>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">It basically borrows from <a href="http://en.wikipedia.org/wiki/HP_QuickTest_Professional" target="_blank">QTP</a> a  lot – for each step of the recording you see a ‘Screen Preview’. The steps are shown as a sequence in the so called ‘Storyboard’ and the currently selected step is shown enlarged in the preview. This is not just a screenshot, but contains the metadata for the UI objects in the application at this particular moment.  It is a little like having the real application in front of you at each step and can be nice in case you want to change something little in the middle of a long test.</p>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">To the right of the preview you will see the table with the recorded test steps. The descriptions are verbose like <em>Click the text ‘Sign In’</em>.<br />
Using the ‘Logic Toolbox’  to the right you can insert control flow constructs  like loops and If statements, using a series of wizards. You can also insert checks to verify things (like in step 9 in my sequence) and add additional UI interactions.</p>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">I am a little skeptical about the whole idea, because to me it seems that if you can handle this king of wizard-assisted programming, then you can also learn to write code and in the long run you will be happier in terms of your efficiency if you do so.</p>
<p class="MsoNormal" style="margin-right: 0px; margin-left: 0px;">I wanted to replay the script without any changes in the test environment first.  I expected this to work, but afterwards wanted to see if the recorded script would manage to execute successfully if I have other draft emails in the folder (with other subjects and body texts). My intention was to check how well the tool chooses which properties of the UI elements to use for their identification.</p>
<div>Unfortunately TestPartner could not replay the recorded steps successfully, even without changes in the mailbox. It also failed very early - at the log-in phase:</div>
<div>
<p style="text-align: center;"><img class="size-full wp-image-40 aligncenter" title="playback_error" src="http://testautomationblog.com/wp-content/uploads/2009/04/tp_error.png" alt="playback_error" width="392" height="230" /></p>
</div>
<div>
<p style="text-align: center;"><img class="size-full wp-image-41 aligncenter" title="error_step" src="http://testautomationblog.com/wp-content/uploads/2009/04/error_step.png" alt="s" width="508" height="173" /></p>
</div>
<div>The reason for this is very simple.  If you look at the screenshot above, you will see that in step 9 the tool recorded that I clicked the <strong>text</strong> 'Sign in'. Unfortunately on the same screen there is another 'Sign in' text,  located above the button. When replaying it just clicks this text instead of the button:</div>
<div><img class="aligncenter size-full wp-image-42" title="two_texts" src="http://testautomationblog.com/wp-content/uploads/2009/04/two_texts.png" alt="two_texts" width="268" height="236" /></div>
<div>
<div>Normally the tool should have identified that you are clicking a button, not just any text in the page. If this action was recorded as a button click, the replay would not get confused there.  As a whole I was not impressed with the visual record &amp; replay capability of TestPartner. If you really want something like this, you will probably be better off with QTP.</div>
<div>I think that the strengths of TestPartner lie elsewhere.  Read about this in the second part of my review.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://testautomationblog.com/2009/04/03/testpartner-review-visual-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
