<?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"
	>

<channel>
	<title>Marathon - Java GUI Testing</title>
	<atom:link href="http://blog.marathontesting.com/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.marathontesting.com</link>
	<description>All things Marathon, Marathonite, Java and GUI Test automation, scripting and whatever is useful for test automation projects.</description>
	<pubDate>Thu, 08 Jul 2010 11:58:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Test Data Generation</title>
		<link>http://blog.marathontesting.com/test-data-generation.html</link>
		<comments>http://blog.marathontesting.com/test-data-generation.html#comments</comments>
		<pubDate>Thu, 08 Jul 2010 11:58:14 +0000</pubDate>
		<dc:creator>Ganesh</dc:creator>
		
		<category><![CDATA[MarathonITE]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=58</guid>
		<description><![CDATA[Marathonite(Marathon Integrated Testing Environment) provides a mechanism through which data can be generated using data generation methodologies. The generated test data can be saved in a set of standard formats.

Generate Test Data Window will appear on clicking &#8220;Generate Data&#8221; button as said in the post &#8220;Marathonite:Data driven testing&#8221;.
Parameters whose test data is to be generated [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.marathontesting.com/Marathonite.html">Marathonite(Marathon Integrated Testing Environment) </a>provides a mechanism through which data can be generated using data generation methodologies. The generated test data can be saved in a set of standard formats.<br />
<span id="more-58"></span><br />
Generate Test Data Window will appear on clicking &#8220;Generate Data&#8221; button as said in the post <a href="http://blog.marathontesting.com/marathonite-data-driven-testing.html#more-52">&#8220;Marathonite:Data driven testing&#8221;.</a><br />
Parameters whose test data is to be generated can be selected by selecting the checkbox in the first column. Unchecking it creates empty values for the particular parameter. All the parameters which are selected to be data driven are displayed in second column under the tables with their respective window names.<br />
Data type can be selected in third column (Ex: Integer, String, etc).</p>
<p>Configuration of the test data required to be generated can be done by clicking on &#8220;Configure&#8221; button. After clicking &#8220;Configure&#8221; button, &#8220;Configure Data&#8221; window will be displayed. In this window, configuration of test data to be generated can be specified. (Ex: Range of numbers, Length of String, number of data etc). Configuration specified will be displayed in the Description column.</p>
<p><a href="http://blog.marathontesting.com/wp-content/uploads/2010/07/datagenwithwindow.png"><img class="aligncenter size-full wp-image-59" title="datagenwithwindow" src="http://blog.marathontesting.com/wp-content/uploads/2010/07/datagenwithwindow.png" alt="" width="550" /></a></p>
<p>Test Data Generation can also be used as Stand Alone Application. Option of deleting and  inserting the parameters will be available only when Test Data Generation is used as Stand Alone Application.Window name will not appear when used as stand alone application.<br />
Any of the parameters can be deleted by clicking on &#8220;Delete&#8221;,additional parameters can be inserted by clicking on &#8220;Insert Parameter&#8221; button, this adds another row to the table.</p>
<p>Once all the parameters are configured test data can be generated by selecting the available generation methodology in dropdown list and click on &#8220;Generate&#8221; button.After clicking &#8220;Generate&#8221; Button provide the file name and save it.<br />
Generated data will be saved in standard format containing Parameter Name as header for respective generated data.</p>
<p>The generated file will be as following :<br />
The window name will appear as table Title and Parameter Name will appears in first row.</p>
<p>W1<br />
Parameter1,Parameter2<br />
Value111,Value112<br />
Value121,Value122<br />
Value131,Value132</p>
<p>W2<br />
Parameter1,Parameter2<br />
Value211,Value212<br />
Value212,Value222<br />
Value213,Value232</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/test-data-generation.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Marathonite: Data driven testing</title>
		<link>http://blog.marathontesting.com/marathonite-data-driven-testing.html</link>
		<comments>http://blog.marathontesting.com/marathonite-data-driven-testing.html#comments</comments>
		<pubDate>Fri, 02 Jul 2010 11:01:00 +0000</pubDate>
		<dc:creator>Sampath</dc:creator>
		
		<category><![CDATA[MarathonITE]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=52</guid>
		<description><![CDATA[As part of Marathonite (Marathon Integrated Testing Environment) a mechanism to convert an existing test case into a data driven test case will be added.
An existing test script can be converted to a data driven test by clicking on the &#8220;Convert to Data Driven&#8221; button available in the toolbar of Marathon Main Window.

When the button [...]]]></description>
			<content:encoded><![CDATA[<p>As part of <a href="http://www.marathontesting.com/Marathonite.html" style="color:BLUE">Marathonite (Marathon Integrated Testing Environment)</a> a mechanism to convert an existing test case into a data driven test case will be added.<br />
An existing test script can be converted to a data driven test by clicking on the &#8220;Convert to Data Driven&#8221; button available in the toolbar of Marathon Main Window.<br />
<span id="more-52"></span><br />
When the button is clicked playback of the test script begins, breaking at every function call to prompt the user with the available parameters in the function call which can be made data driven.<br/></p>
<pre>def test():
	java_recorded_version = '1.5.0_24'

	if window('w1'):
		select('First Name', 'ABCDEF')
		select('Password', 'adsf')
		method1('ABC', 'DEF', 'GHI')
	close()
</pre>
<p style="text-align: center;"><a href="http://blog.marathontesting.com/wp-content/uploads/2010/07/ddcc.png"><img class="aligncenter" title="Data Driven Control Center" src="http://blog.marathontesting.com/wp-content/uploads/2010/07/ddcc-300x150.png" alt="Data Driven Control Center" width="300" height="150" align="center" /></a></p>
<p><br/></p>
<p>The parameters which are to be converted to data driven can be selected by selecting the checkbox available in the first column. Clicking on the &#8220;Continue&#8221; button continues execution of test script and breaks at the next function call (usually in the next line of the script). The &#8220;Step-In&#8221; button will be enabled when there is a call to the function which is defined  in a module or another test script. Clicking on &#8220;Step-In&#8221; button will enter into the module function and converts the module function to data driven. Care should be taken while converting a module function to data driven as the module function might be used in other scripts where it is not expected to be data driven.</p>
<p>When the playback of the script is finished, the &#8220;Save Conversion&#8221; window is displayed. All the parameters which are selected to be data driven are displayed in tables with respective window names as table-titles.<br />
<br/></p>
<p style="text-align: center"><a href="http://blog.marathontesting.com/wp-content/uploads/2010/07/saveconversion.png"><img class="alignnone size-medium wp-image-54" title="Save Conversion" src="http://blog.marathontesting.com/wp-content/uploads/2010/07/saveconversion-300x222.png" alt="" width="300" height="222" /></a></p>
<p><br/></p>
<p>When the &#8220;Save&#8221; button is clicked, the converted data driven script and a corresponding spreadsheet containing the entered values for the respective parameters are saved. Once the data driven script is saved the user can choose to generate the data by clicking on &#8220;Generate Data&#8221; button. On clicking &#8220;Generate Data&#8221;, another window appears where user is required to configure the type, format and other attributes for each parameter for which the data is to be generated. (You will get to see another post explaining about &#8220;Data Generation&#8221; very soon.)<br />
<br/></p>
<p style="text-align:center"><a href="http://blog.marathontesting.com/wp-content/uploads/2010/07/generatedata.png"><img class="alignnone size-medium wp-image-55" title="Generate Data" src="http://blog.marathontesting.com/wp-content/uploads/2010/07/generatedata-300x178.png" alt="" width="300" height="178" /></a></p>
<p><br/></p>
<p>After configuring the parameters, when the &#8220;Generate&#8221; button is clicked, data for the required parameters is generated and saved into the spreadsheet which was created earlier while saving the data driven script.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/marathonite-data-driven-testing.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Inserting Checklist to Test Script</title>
		<link>http://blog.marathontesting.com/inserting-checklist-to-test-script.html</link>
		<comments>http://blog.marathontesting.com/inserting-checklist-to-test-script.html#comments</comments>
		<pubDate>Thu, 24 Jun 2010 07:47:20 +0000</pubDate>
		<dc:creator>Ganesh</dc:creator>
		
		<category><![CDATA[Marathon]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=37</guid>
		<description><![CDATA[
Using Marathon, checklists can be inserted while recording the testcases. While recording a &#8220;New Test Case&#8221;, checklist can be inserted so that it is prompted to accept when played back. While recording a &#8220;Exploratory Test Case&#8221;, checklist is added to make a note/comment about the status of the AUT  (Application Under Test), this checklist [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">
Using Marathon, checklists can be inserted while recording the testcases. While recording a &#8220;New Test Case&#8221;, checklist can be inserted so that it is prompted to accept when played back. While recording a &#8220;Exploratory Test Case&#8221;, checklist is added to make a note/comment about the status of the AUT  (Application Under Test), this checklist is shown when the recorded test script is played.<br />
Screenshots can also be added to the checklists. Required parts of the screenshots can be highlighted and a note for these highlighted parts can also be added if needed.
</p>
<p><span id="more-37"></span></p>
<p style="text-align: left;"><br/><strong>Checklist for test case:</strong></p>
<p style="text-align: left;">Checklist will be a list of predefined conditions that should be satisfied by the test application. A Checklist can be inserted into the script while recording and can be verified for these conditions when the script is played. If any Checklist conditions are not satisfied, then the Status of the particular checklist item in the Checklist can be changed and a comment can be added if needed. A screenshot of the AUT can also be added. Test reports are generated in HTML and XML formats in the set location (&lt;Marathon_Project_Directory&gt;/Test Reports).</p>
<p style="text-align: left;"><br/><strong>Recording using &#8220;New Test Case&#8221;:</strong></p>
<p style="text-align: left;">Once the recording is started, Marathon main window will be minimized and the &#8220;Marathon Control Center&#8221; window will be displayed. AUT also starts and the UI of it appears.</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/marathoncontrolcenter.png"><img class="alignnone" title="MarathonControlCenter" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/marathoncontrolcenter-300x96.png" alt="MarathonControlCenter" width="300" /></a></p>
<p><br/></p>
<p style="text-align: left;">While recording, a checklist can be inserted by clicking on the &#8220;Insert Checklist&#8221; <a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/checklist.gif"><img class="alignnone size-medium wp-image-48" title="checklist" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/checklist.gif" alt="" width="16" height="16" /></a> button in the &#8220;Marathon Control Center&#8221; window. Once the Insert Checklist button is clicked, &#8220;Select a Checklist&#8221; window will be displayed as shown below.</p>
<p style="text-align: center;">
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/checklistmenu.png"><img title="SelectAcheckList" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/checklistmenu-300x202.png" alt="" /></a></p>
<p><br/></p>
<p style="text-align: left;">A list of available Check Lists will be displayed in the &#8220;Select a Checklist&#8221; window. Any of these Check Lists can be inserted to the script by selecting the Check List and clicking on the &#8220;Insert&#8221; button.</p>
<p style="text-align: left;"><br/><strong>Creating new Check List:</strong></p>
<p style="text-align: left;">A new Checklist can be created by clicking &#8220;New&#8221; button in the &#8220;Select a Checklist&#8221; window. On clicking New button, &#8220;Create a New Checklist&#8221; window will be displayed prompting to enter &#8220;Name&#8221; and &#8220;Description&#8221;.</p>
<p style="text-align: center;">
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/createnewchecklist.png"><img title="createnewchecklist" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/createnewchecklist-300x157.png" alt="" width="300"/></a></p>
<p><br/></p>
<p style="text-align: center;">
<p style="text-align: left;">&#8220;Create New Checklist&#8221; window has three tabs. First tab is Header clicking on which, a window &#8220;New Header&#8221; will be displayed to enter the header.</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/createnewheader.png"><img class="aligncenter" title="createnewheader" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/createnewheader-300x127.png" alt="" /></a></p>
<p><br/></p>
<p style="text-align: left;">Second Tab is &#8220;Checklist&#8221; which will create a Checklist Item to Check List. Clicking on &#8220;Checklist&#8221; tab will open a window &#8220;New Checklist item&#8221; in which the Label for the checklist item has to be entered.</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/newchecklistitem.png"><img class="wp-image-43 aligncenter" title="newchecklistitem" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/newchecklistitem-300x127.png" alt="" width="300" height="127" /></a></p>
<p><br/></p>
<p style="text-align: left;">Third Tab is &#8220;Textbox&#8221; which will create Textbox to Check List. Clicking on Textbox will open a similar window as above where Textbox name can be entered.</p>
<p style="text-align: left;">Once all these fields have been filled click on &#8220;Save&#8221; button on &#8220;Create a New Checklist&#8221; window. Filename for Checklist needs to be entered for saving it. This creates a new Checklist and the created Checklist will be visible in &#8220;Check Lists&#8221; column of &#8220;Select a checklist&#8221; window as shown in the below image .</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/selectachecklist-addednew.png"><img class="wp-image-44 aligncenter" title="selectachecklist-addednew" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/selectachecklist-addednew-300x240.png" alt="" width="300" height="240" /></a></p>
<p><br/></p>
<p style="text-align: left;"><br/><strong>Playing Scripts:</strong></p>
<p>To Enable Checklists while playing, click on &#8220;Enable Checklists&#8221; item in &#8220;Marathon&#8221; in the Marathon main Window.</p>
<p style="text-align: center;">
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/maratonmenuenablechecklist.png"><img class="wp-image-45          alignnone" title="maratonmenuenablechecklist" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/maratonmenuenablechecklist-300x288.png" alt="" width="300" height="288" /></a></p>
<p><br/></p>
<p style="text-align: left;">While playing the recorded script, when the inserted checklist is reached, the CheckList window will be displayed as below.</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/playbackdisplaychecklist.png"><img class="wp-image-46         aligncenter" title="playbackdisplaychecklist" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/playbackdisplaychecklist.png" alt="" width="282" height="265" /></a></p>
<p><br/></p>
<p style="text-align: left;">In this window the Status of checklist Item can be changed and comments can be added. Screenshot of AUT  can also be added by clicking &#8220;Screen Capture&#8221; button. After clicking the &#8220;Screen Capture&#8221; Button screenshot of AUT will be generated. In screen shot a required part can be highlighted and comments can be added as &#8220;Annotations&#8221; for the highlighted part.</p>
<p style="text-align: center;"><br/><a href="http://blog.marathontesting.com/wp-content/uploads/2010/06/playbackscreenshotannotation.png"><img class="class="wp-image-47 aligncenter" title="playbackscreenshotannotation" src="http://blog.marathontesting.com/wp-content/uploads/2010/06/playbackscreenshotannotation-300x270.png" alt="" width="300" height="270" /></a></p>
<p><br/></p>
<p style="text-align: left;">Click on &#8220;Save&#8221; button to save the added annotations and/or comments in the respective windows, Playback of the script continues after saving. The annotations and comments added will be inserted in the reports generated.</p>
<p style="text-align: left;"><br/><strong>Checklist for &#8220;Exploratory Test Case&#8221;:</strong></p>
<p style="text-align: left;">While recording an Exploratory test case a checklist can be inserted in the similar way said above (by clicking on the &#8220;Insert Checklist&#8221; button in Marathon Control Center). The status of the Checklist item can be changed and comments and/or screenshot can be added if needed.</p>
<p style="text-align: left;">While Playing, execution of script will halt once it reaches the inserted check list and &#8220;Check List&#8221; window will be displayed. This will show the Checklist Item State, Screenshot if added while recording can be viewed by clicking on &#8220;Screen Capture&#8221; button.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/inserting-checklist-to-test-script.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Data driven testing with Marathon</title>
		<link>http://blog.marathontesting.com/data-driven-testing-with-marathon.html</link>
		<comments>http://blog.marathontesting.com/data-driven-testing-with-marathon.html#comments</comments>
		<pubDate>Fri, 18 Jun 2010 09:26:42 +0000</pubDate>
		<dc:creator>Sampath</dc:creator>
		
		<category><![CDATA[Marathon]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=31</guid>
		<description><![CDATA[Current version of Marathon does not support data driven testing. However a recorded test case can be changed to fetch the test data from a csv file and run the test multiple times. The &#8220;csv&#8221; module available in Jython-2.5 is needed to fetch the data. As Marathon is presently bundled with Jython-2.2, it is required [...]]]></description>
			<content:encoded><![CDATA[<p>Current version of Marathon does not support data driven testing. However a recorded test case can be changed to fetch the test data from a csv file and run the test multiple times. The &#8220;csv&#8221; module available in Jython-2.5 is needed to fetch the data. As Marathon is presently bundled with Jython-2.2, it is required to update Jython to version 2.5 to use csv reader. Jython-2.5 can be downloaded from <a href="http://www.jython.org/">Jython</a> website.<br />
<span id="more-31"></span></p>
<h2>Change in project settings:</h2>
<p>Update the Python Home under Python path in Marathon Project Settings to point the installation directory of Jython version 2.5.<br/><br />
<img src="http://blog.marathontesting.com/wp-content/uploads/2010/06/settings-pythonpath-home.png" alt="" width="550" /></p>
<h2>Change in test case:</h2>
<p>A simple example test case recorded for SampleApp looks as follows:</p>
<p><code></p>
<pre>
def test():
    java_recorded_version = '1.5.0_24'

    if window('Simple Widgets'):
        select('First Name', 'TestName')
        select('Password', 'P@ssword')
        select('Email', 'TestName@Email.com')
        select('Address', 'Address1, Line1')
        click('save')

        if window('Simple Widgets(1)'):
            click('OK')
        close()
    close()</pre>
<p></code><br />
Assuming the data to be fetched is in &#8220;SampleAppTestData.csv&#8221;, modify the test script to fetch the data from the csv as below.</p>
<p><code></p>
<pre>import csv

def test():
    java_recorded_version = '1.5.0_24'

    reader=csv.DictReader(file("&lt;PATH_TO_CSV&gt;/SampleAppTestData.csv"))

    if window('Simple Widgets'):
        for record in reader:
            select('First Name', record["Name"])
            select('Password', record["Password"])
            select('Email', record["EmailID"])
            select('Address', record["Location"])
            click('save')

            if window('Simple Widgets(1)'):
                click('OK')
            close()
    close()</pre>
<p></code><br />
Note that Name, Password, EmailID, Location in record["&lt;keyword&gt;"] are the headers in the csv.<br />
CSV file used in example looks as following:<br />
<code></p>
<pre>Name,Password,EmailID,Location
TestName1,P@ssword1,TestName1@Email.com,"Address1, Line1"
TestName2,P@ssword2,TestName2@Email.com,"Address2, Line2"
TestName3,P@ssword3,TestName3@Email.com,"Address3, Line3"
TestName4,P@ssword4,TestName4@Email.com,"Address4, Line4"
TestName5,P@ssword5,TestName5@Email.com,"Address5, Line5"
TestName6,P@ssword6,TestName6@Email.com,"Address6, Line6"
TestName7,P@ssword7,TestName7@Email.com,"Address7, Line7"
TestName8,P@ssword8,TestName8@Email.com,"Address8, Line8"
TestName9,P@ssword9,TestName9@Email.com,"Address9, Line9"
TestName10,P@ssword10,TestName10@Email.com,"Address10, Line10"
TestName11,P@ssword11,TestName11@Email.com,"Address11, Line11"
TestName12,P@ssword12,TestName12@Email.com,"Address12, Line12"
TestName13,P@ssword13,TestName13@Email.com,"Address13, Line13"
TestName14,P@ssword14,TestName14@Email.com,"Address14, Line14"
TestName15,P@ssword15,TestName15@Email.com,"Address15, Line15"
TestName16,P@ssword16,TestName16@Email.com,"Address16, Line16"
TestName17,P@ssword17,TestName17@Email.com,"Address17, Line17"
TestName18,P@ssword18,TestName18@Email.com,"Address18, Line18"</pre>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/data-driven-testing-with-marathon.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Welcoming Sampath and Ganesh</title>
		<link>http://blog.marathontesting.com/welcoming-sampath-and-ganesh.html</link>
		<comments>http://blog.marathontesting.com/welcoming-sampath-and-ganesh.html#comments</comments>
		<pubDate>Fri, 18 Jun 2010 06:56:27 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[jalian]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=28</guid>
		<description><![CDATA[It is couple of months since Sampath and Ganesh came on board. Expect some posts from both of them soon.  With this additon, we expect more activity on both this blog and the groups.
]]></description>
			<content:encoded><![CDATA[<p>It is couple of months since Sampath and Ganesh came on board. Expect some posts from both of them soon.  With this additon, we expect more activity on both this blog and the groups.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/welcoming-sampath-and-ganesh.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Marathon Screencast - Creating a Project</title>
		<link>http://blog.marathontesting.com/marathon-screencast-creating-a-project.html</link>
		<comments>http://blog.marathontesting.com/marathon-screencast-creating-a-project.html#comments</comments>
		<pubDate>Fri, 09 Jan 2009 10:25:42 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[Marathon]]></category>

		<category><![CDATA[screencast]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=24</guid>
		<description><![CDATA[They say a picture is worth 1000 words. What about a moving picture?
We are planning to post screencasts that demonstrate various aspects of Marathon. As part of the series, the first screencast is up on YouTube.
Creating A Project
This screencast walks you through creating a Marathon project.
We hope you enjoy it. You can discuss the screencast [...]]]></description>
			<content:encoded><![CDATA[<p>They say <a href="http://en.wikipedia.org/wiki/A_picture_is_worth_a_thousand_words">a picture is worth 1000 words</a>. What about a moving picture?</p>
<p>We are planning to post screencasts that demonstrate various aspects of Marathon. As part of the series, the first screencast is up on YouTube.</p>
<p><strong><a href="http://www.youtube.com/watch?v=6FGKDuZwnFM&amp;fmt=18">Creating A Project</a></strong></p>
<p>This screencast walks you through creating a Marathon project.</p>
<p>We hope you enjoy it. You can discuss the screencast on <a href="http://groups.google.co.in/group/marathon-testing">marathon-testing group</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/marathon-screencast-creating-a-project.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Marathon 2.0b4 Release</title>
		<link>http://blog.marathontesting.com/marathon-20b4-release.html</link>
		<comments>http://blog.marathontesting.com/marathon-20b4-release.html#comments</comments>
		<pubDate>Wed, 07 Jan 2009 19:05:01 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[JRuby]]></category>

		<category><![CDATA[Jython]]></category>

		<category><![CDATA[Marathon]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=22</guid>
		<description><![CDATA[At last, Marathon 2.0b4 is released today. There are extensive changes in this release. The ChangeLog is quite long - you can find it at sourceforge.
Now Marathon supports some additional features:

You can create semi automatic test cases, by inserting checklists into the test scripts.
There is an exploratory test mode. This mode is similar to recording, [...]]]></description>
			<content:encoded><![CDATA[<p>At last, Marathon 2.0b4 is released today. There are extensive changes in this release. The ChangeLog is quite long - you can find it at <a title="Change Log" href="https://sourceforge.net/project/shownotes.php?group_id=46616&amp;release_id=652028" target="_blank">sourceforge</a>.</p>
<p>Now Marathon supports some additional features:</p>
<ol>
<li>You can create semi automatic test cases, by inserting checklists into the test scripts.</li>
<li>There is an exploratory test mode. This mode is similar to recording, except that you can insert and fill the checklists at the same time.</li>
<li>New assertion window. When the mouse/key trigger is pressed, the component is highlighted. While the window is open, you can click on different components and insert assertions.</li>
<li>While we are at the assertion window, you can also insert a wait. The wait_p works just like assert_p, but waits for the value of the property to change to the expected value. This should make usage of sleep pretty rare indeed.</li>
</ol>
<p>But the major changes are actually internal.</p>
<ol>
<li>Using dispatch thread to invoke the operations on components.</li>
<li>Dependence on jaccess has been reduced. In a later version, I hope to remove the total dependency.</li>
<li>Marathon doesn&#8217;t override the EventQueue any more. We use AWTEventListener to listen to mouse/keyboard triggers.</li>
</ol>
<p>The bundled versions of JRuby and Jython are 1.5 and 2.2.1 respectively. If you want to use a different version, you can set the home directory in the project settings.</p>
<p>The command line invocation format changed. I hope the new one is simpler and straight forward. Use marathon -help to look at the options.</p>
<p>Thanks Santhosh for patiently testing this version over the last two weeks. He has been using <a href="http://jgnash.sourceforge.net" target="_blank">jgnash</a> as the test application.</p>
<p>Lastly, the users guide has been updated, though not as extensively as I hoped. Still, tomorrow is always there for the updates.</p>
<p>Post your feedback to marathontesting google group.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/marathon-20b4-release.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Marathon and JavaFX</title>
		<link>http://blog.marathontesting.com/marathon-and-javafx.html</link>
		<comments>http://blog.marathontesting.com/marathon-and-javafx.html#comments</comments>
		<pubDate>Mon, 05 Jan 2009 13:24:01 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[Marathon]]></category>

		<category><![CDATA[javafx]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=20</guid>
		<description><![CDATA[This came somewhat as an anti-climax.
Suitably impressed (and also inspired) by Using FEST-Swing to discover (via testing) what&#8217;s under the hood of JavaFX - I decided to give JavaFX a try with Marathon. This is the way I went about it:


Since Marathon can&#8217;t (yet) support any JavaFX controls, I searched around and found some examples that purely [...]]]></description>
			<content:encoded><![CDATA[<p>This came somewhat as an anti-climax.</p>
<p>Suitably impressed (and also inspired) by <a href="http://www.jroller.com/alexRuiz/entry/using_fest_swing_to_discover">Using FEST-Swing to discover (via testing) what&#8217;s under the hood of JavaFX</a><a href="http://www.jroller.com/alexRuiz/entry/using_fest_swing_to_discover"> </a>- I decided to give JavaFX a try with Marathon. This is the way I went about it:</p>
<p><span id="more-20"></span></p>
<ol>
<li>Since Marathon can&#8217;t (yet) support any JavaFX controls, I searched around and found some examples that purely use swing components from <a title="JavaFX Swing Components" href="http://jfx.wikia.com/wiki/SwingComponents" target="_self">here</a>. They are pretty simple, since I don&#8217;t know JavaFX - I can&#8217;t make any thing more complicated work.</li>
<li>Next is to find the java command line used by javafx when an application is launched. Atleast on OSX it is a shell script. I just modified it and added an &#8216;echo&#8217; to print out the command line.</li>
<li>From the command line, I get a ton of jars.</li>
<li>Next is to create a Marathon project. That is simple enough. I set all these jars into the class path and give the main class and save the project.</li>
<li>Record a test case - and it works!!!</li>
</ol>
<p>What does this mean? If you use only Swing components and develop a JavaFX application, Marathon can be used to test it. But, whatever I have seen on the net - it looks like there is going to be proliferation of JavaFX controls. At a quick glance, it looks like Marathon should at least handle SGControl&#8217;s for it to be more useful. I will have a look into it soon.</p>
<p>Meanwhile, if anyone can point me to some good JavaFX/Swing application - I would like to give it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/marathon-and-javafx.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>JRuby: Passing array of array of string to java</title>
		<link>http://blog.marathontesting.com/jruby-passing-array-of-array-of-string-to-java.html</link>
		<comments>http://blog.marathontesting.com/jruby-passing-array-of-array-of-string-to-java.html#comments</comments>
		<pubDate>Wed, 31 Dec 2008 07:01:57 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[JRuby]]></category>

		<category><![CDATA[Marathon]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=15</guid>
		<description><![CDATA[Working on assert_content implementation for JRuby. And straight-away headed into a road block. The call to assert_content looks like this:

assert_content('component', [['R1C1', 'R1C2', 'R1C3'], ['R2C1', 'R2C2', 'R2C3']])

This function from ruby should call a java function:

assertContent(String componentName, String[][] content);

Now it is easy enough in JRuby to convert an array of strings to java array of strings:

['hello'].to_java :String [...]]]></description>
			<content:encoded><![CDATA[<p>Working on assert_content implementation for JRuby. And straight-away headed into a road block. The call to assert_content looks like this:<br />
<code><br />
assert_content('component', [['R1C1', 'R1C2', 'R1C3'], ['R2C1', 'R2C2', 'R2C3']])<br />
</code><br />
This function from ruby should call a java function:<br />
<code><br />
assertContent(String componentName, String[][] content);<br />
</code><br />
Now it is easy enough in JRuby to convert an array of strings to java array of strings:<br />
<code><br />
['hello'].to_java :String #=&gt; String[]<br />
</code><br />
But converting a array of array of strings is not that straight forward. After a bit of hacking, I found this way.<br />
<code><br />
[['r1c1', 'r1c2'], ['r2c1', 'r2c2']].to_java([].to_java(:String).class) #=&gt; String[][]<br />
</code><br />
Is there any better way of doing this?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/jruby-passing-array-of-array-of-string-to-java.html/feed</wfw:commentRss>
		</item>
		<item>
		<title>Checklists, Exploratory Testing and Marathon</title>
		<link>http://blog.marathontesting.com/checklists-exploratory-testing-and-marathon.html</link>
		<comments>http://blog.marathontesting.com/checklists-exploratory-testing-and-marathon.html#comments</comments>
		<pubDate>Wed, 19 Nov 2008 06:24:09 +0000</pubDate>
		<dc:creator>KD</dc:creator>
		
		<category><![CDATA[Marathon]]></category>

		<guid isPermaLink="false">http://blog.marathontesting.com/?p=13</guid>
		<description><![CDATA[This post is about two features that are yet to be released for Marathon. We are working on these features and hope to release soon. I am publishing these details in the hope of getting feedback.
Checklists
Checklists are everywhere. The GTD crowd lives by them. A checklist is a tool in testers arsenal when used well [...]]]></description>
			<content:encoded><![CDATA[<p>This post is about two features that are yet to be released for Marathon. We are working on these features and hope to release soon. I am publishing these details in the hope of getting feedback.</p>
<h2>Checklists</h2>
<p>Checklists are everywhere. The GTD crowd lives by them. A checklist is a tool in testers arsenal when used well makes mundane tasks easy to handle, complex tasks more structured and overall provides systematic way of handling testing.<br />
<span id="more-13"></span></p>
<h2>Marathon Checklists</h2>
<p>Marathon brings the goodness of checklists to the automation - making it possible to create semi automatic test scripts.<br />
Marathon checklist is a form containing either checkbox items (along with an explanatory text area) or plain text areas. The forms are stored as plain XML files. These can be created through an (rudimentary) UI while recording or using you favorite text editor.<br />
While recording a test script, you can insert a checklist action. You will be prompted with the existing forms and you can either select a predefined form or create a new one.<br />
While playing a test script with a checklist action, the user will be presented with the form. The form will have options to succeed or fail the test script. In both the cases, the results are written into a XML file. At the end of test run, you can create a checklist report that formats the results and display either in text or html format.<br />
The checklist actions by default are ignored during batch run (from commandline or JUnit view). You can enable the checklist actions by passing a command line parameter (for batch run) or a menu option (for JUnit run).</p>
<h2>Exploratory Testing With Marathon</h2>
<p>Having the checklists is good and we can make it better by adding an exploratory test mode. The exploratory test mode is similar to recording mode (may be the same option) - where the application is started and the script is recorded. But the recorded script is not used for playback. It is used to provide the step by step operations for reproducing a bug. During this mode, you have an option of adding a test failure. When using this option, you can either provide free form text or use an existing checklist. Marathon will store the results including the recorded part of the script in a XML file. A report option provides the Text or HTML view of the results.<br />
Another feature of exploratory testing mode - for a later release - is the ability to add a window screen shot and making annotation markings on the screenshot image. This screenshot will also be added to the results.</p>
<p>How does these features sound? Do you think these will be useful? Please leave feedback in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.marathontesting.com/checklists-exploratory-testing-and-marathon.html/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
