<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Thoughts on GUI Testing</title>
	<atom:link href="http://myotherpants.com/2009/06/thoughts-on-gui-testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://myotherpants.com/2009/06/thoughts-on-gui-testing/</link>
	<description>I left it in my other pants</description>
	<lastBuildDate>Wed, 25 Jan 2012 02:00:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Ball</title>
		<link>http://myotherpants.com/2009/06/thoughts-on-gui-testing/comment-page-1/#comment-311</link>
		<dc:creator>Ball</dc:creator>
		<pubDate>Sat, 27 Jun 2009 12:39:07 +0000</pubDate>
		<guid isPermaLink="false">http://myotherpants.com/?p=70#comment-311</guid>
		<description>I&#039;ve recently heard of Ranorex.  We were reviewing the tools my client was using and V&amp;V in Miami really liked Ranorex, because of it&#039;s use of C#.  The catch he had was how it handled custom controls.  He claimed it didn&#039;t handle them to his satisfaction.  On the plus side he could annotate his code and automate sections of a manual test runner at a time.

We did share how to use Functions as variables and first class functions in javascript to achive similar goals in Test Complete.

Custom controls are a big part of the WPF draw, and something I hope to address in a couple of posts.

Ranorex does intrigue me and I&#039;ll have to grab a trial license once I have a better idea of what makes a testing tool the bees knees.  It is about 1/2 the cost of TestComplete and if it has all the features I need, then great!</description>
		<content:encoded><![CDATA[<p>I&#8217;ve recently heard of Ranorex.  We were reviewing the tools my client was using and V&#038;V in Miami really liked Ranorex, because of it&#8217;s use of C#.  The catch he had was how it handled custom controls.  He claimed it didn&#8217;t handle them to his satisfaction.  On the plus side he could annotate his code and automate sections of a manual test runner at a time.</p>
<p>We did share how to use Functions as variables and first class functions in javascript to achive similar goals in Test Complete.</p>
<p>Custom controls are a big part of the WPF draw, and something I hope to address in a couple of posts.</p>
<p>Ranorex does intrigue me and I&#8217;ll have to grab a trial license once I have a better idea of what makes a testing tool the bees knees.  It is about 1/2 the cost of TestComplete and if it has all the features I need, then great!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://myotherpants.com/2009/06/thoughts-on-gui-testing/comment-page-1/#comment-308</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Thu, 25 Jun 2009 19:31:27 +0000</pubDate>
		<guid isPermaLink="false">http://myotherpants.com/?p=70#comment-308</guid>
		<description>Working with Ranorex allows you to implement your test with .NET languages. In addition you&#039;re able to seperate identification information from test automation code. Hence, the typical maintenance task is outsourced. Ranorex works with xpath expressions containing structure and technology depending attributes to identify the used controls in the application under test.</description>
		<content:encoded><![CDATA[<p>Working with Ranorex allows you to implement your test with .NET languages. In addition you&#8217;re able to seperate identification information from test automation code. Hence, the typical maintenance task is outsourced. Ranorex works with xpath expressions containing structure and technology depending attributes to identify the used controls in the application under test.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: hfbandy</title>
		<link>http://myotherpants.com/2009/06/thoughts-on-gui-testing/comment-page-1/#comment-301</link>
		<dc:creator>hfbandy</dc:creator>
		<pubDate>Mon, 22 Jun 2009 00:59:38 +0000</pubDate>
		<guid isPermaLink="false">http://myotherpants.com/?p=70#comment-301</guid>
		<description>Working with TestComplete, one of the first things we did was to make a CompareValues method that makes error logging consistent and outputs successes as well as failures.  Outputting every little thing you check can be cumbersome at times, but when it comes time to review errors, it is also very helpful.

Regarding development variable names in code - there&#039;s no way around that I think.  If it were a manual test, you would be tied to the the text that shows up on the button instead of the name of the button.  In my experience, there&#039;s little difference.  However, where automation wins big-time over manual procedures is in code reuse.  In a manual procedure, you wouldn&#039;t want to send the tester back to some page where you define the process to save a single file over and over again.  But, in automation, you can define a procedure to save a file and use it over and over again (and test half a dozen points along the way, to ensure consistency in the application).  My hope is, before long, you will have a slew of test helpers that let you do anything in the application you could want.  Maintenance will be as simple as debugging one test helper.  Writing tests will be as simple as chaining a few helper methods together.  Getting there is a lot of work, but well worth it.

The biggest problem with automating system testing that I&#039;ve encountered hasn&#039;t been performance or maintenance, but state (though state can be tied to maintenance).  Unit tests are easy and quick because your state is usually one or two objects - a relatively small chunk of memory that can be easily disposed and recreated.  In system testing, your state is the entire machine.  Resetting the entire machine is often not easy or even possible.  What&#039;s more, a good system test shouldn&#039;t count on the machine being in a consistent state.  It&#039;s the border cases where the machine is busy getting a Windows update or something equally strange where applications tend to fail miserably.  Writing your tests to handle every version of the application successfully executing an operation can be extremely challenging.  I&#039;m not sure what a test would look like which handles this gracefully.  Perhaps some sort of &quot;optional&quot; flag that can be passed to a method like ConfirmOverwriteDialog so that, just in case the file already exists, your test will go ahead and save over it.  There&#039;s definitely some room for high-level design with tests.</description>
		<content:encoded><![CDATA[<p>Working with TestComplete, one of the first things we did was to make a CompareValues method that makes error logging consistent and outputs successes as well as failures.  Outputting every little thing you check can be cumbersome at times, but when it comes time to review errors, it is also very helpful.</p>
<p>Regarding development variable names in code &#8211; there&#8217;s no way around that I think.  If it were a manual test, you would be tied to the the text that shows up on the button instead of the name of the button.  In my experience, there&#8217;s little difference.  However, where automation wins big-time over manual procedures is in code reuse.  In a manual procedure, you wouldn&#8217;t want to send the tester back to some page where you define the process to save a single file over and over again.  But, in automation, you can define a procedure to save a file and use it over and over again (and test half a dozen points along the way, to ensure consistency in the application).  My hope is, before long, you will have a slew of test helpers that let you do anything in the application you could want.  Maintenance will be as simple as debugging one test helper.  Writing tests will be as simple as chaining a few helper methods together.  Getting there is a lot of work, but well worth it.</p>
<p>The biggest problem with automating system testing that I&#8217;ve encountered hasn&#8217;t been performance or maintenance, but state (though state can be tied to maintenance).  Unit tests are easy and quick because your state is usually one or two objects &#8211; a relatively small chunk of memory that can be easily disposed and recreated.  In system testing, your state is the entire machine.  Resetting the entire machine is often not easy or even possible.  What&#8217;s more, a good system test shouldn&#8217;t count on the machine being in a consistent state.  It&#8217;s the border cases where the machine is busy getting a Windows update or something equally strange where applications tend to fail miserably.  Writing your tests to handle every version of the application successfully executing an operation can be extremely challenging.  I&#8217;m not sure what a test would look like which handles this gracefully.  Perhaps some sort of &#8220;optional&#8221; flag that can be passed to a method like ConfirmOverwriteDialog so that, just in case the file already exists, your test will go ahead and save over it.  There&#8217;s definitely some room for high-level design with tests.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Generic White Rubies are Open &#124; My Other Pants</title>
		<link>http://myotherpants.com/2009/06/thoughts-on-gui-testing/comment-page-1/#comment-299</link>
		<dc:creator>Generic White Rubies are Open &#124; My Other Pants</dc:creator>
		<pubDate>Thu, 18 Jun 2009 21:15:34 +0000</pubDate>
		<guid isPermaLink="false">http://myotherpants.com/?p=70#comment-299</guid>
		<description>[...] been continuing my exploration of IronRuby and White for gui testing. I expected to deal with Automation IDs first, but I&#8217;ll get back to that. For now I&#8217;m [...]</description>
		<content:encoded><![CDATA[<p>[...] been continuing my exploration of IronRuby and White for gui testing. I expected to deal with Automation IDs first, but I&#8217;ll get back to that. For now I&#8217;m [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

