<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>Automation Beyond</title>
	<atom:link href="http://automation-beyond.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://automation-beyond.com</link>
	<description>An engineering approach to Software Testing and Test Automation</description>
	<lastBuildDate>Fri, 20 Apr 2012 13:30:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license>		<item>
		<title>TestComplete Forms &#8211; Using Custom Events</title>
		<link>http://automation-beyond.com/2012/04/17/testcomplete-custom-events/</link>
		<comments>http://automation-beyond.com/2012/04/17/testcomplete-custom-events/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 10:14:48 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Routines]]></category>
		<category><![CDATA[Source code]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Configure]]></category>
		<category><![CDATA[controls]]></category>
		<category><![CDATA[Custom]]></category>
		<category><![CDATA[Dialog]]></category>
		<category><![CDATA[dynamically]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[onchange]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=5052</guid>
		<description><![CDATA[Parent page: Using GUI Forms in TestComplete Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized). [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a href="http://automation-beyond.com/chapters/tutorials/gui-forms-tc/" target="_blank">Using GUI Forms in TestComplete</a></p>
<p>Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized).</p>
<p>Today’s post provides an example of creating and using dialog with custom event handlers &#8211; whenever script user provides input, event handler may be used to provide a customized response.<br />
In the scope of the exercise let&#8217;s use the following task.</p>
<ul>
<li>Setup form prompts to choose an environment where test plan is to be run</li>
<li>User can choose one of predefined environments: DEV, SIT, UAT</li>
<li>Receives a response as a url of the environment</li>
<li>User can leave suggested by default test data file or can type filepath directly</li>
</ul>
<p>&nbsp;</p>
<h4>Preparing Modal Form</h4>
<p>We begin with a <a href="http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/" target="_blank">sample form</a>.</p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Add Edit Controls, Buttons, and Labels</h4>
<p><img class="alignnone size-full wp-image-5055" title="SetupForm" src="http://automation-beyond.com/wp/wp-content/uploads/2012/04/SetupForm.png" alt="" width="262" height="318" /></p>
<h4>Set Object Properties</h4>
<h5>Form</h5>
<ul>
<li>Name – object name to use in the code; ‘Security’ in my example</li>
<li>Caption – title of the window when the form is displayed</li>
</ul>
<h5>Label controls</h5>
<ul>
<li>Caption – displayed text</li>
</ul>
<h5>Edit Box Control</h5>
<ul>
<li>Name – object name to use in the code; ‘ShowUrl’ in my example</li>
<li>Text - initial value</li>
<li>ReadOnly = True &#8211; because user can&#8217;t input Url directly</li>
</ul>
<h5>Combo Box Control</h5>
<ul>
<li>Name – object name to use in the code; ‘Environment’/&#8217;TestData&#8217; in my example</li>
<li>Properties.Items &#8211; items to select; &#8216;DEV&#8217;, &#8216;SIT&#8217;, &#8216;UAT&#8217; in my example</li>
<li>ItemIndex = 0 &#8211; initial selection</li>
<li>Properties.DropDownListStyle = lsFixedList &#8211; for Environment combobox</li>
<li>Properties.DropDownListStyle = lsEditList &#8211; for TestData combobox</li>
</ul>
<h5>Buttons</h5>
<ul>
<li>Caption – displayed text; ‘OK’/&#8217;Cancel’ in my example</li>
<li>Cancel = True – for ‘Cancel’ button</li>
<li>ModalResult = mrCancel &#8211; for ‘Cancel’ button</li>
<li>Default = True – for ‘OK’ button</li>
<li>ModalResult = mrOK &#8211; for ‘OK’ button</li>
</ul>
<p>&nbsp;</p>
<h4>Set Event Handler</h4>
<h5>Properties</h5>
<p><img class="alignnone size-full wp-image-5059" style="border: black 1px solid;" title="Events" src="http://automation-beyond.com/wp/wp-content/uploads/2012/04/Events.png" alt="" width="631" height="374" /></p>
<h5>Path</h5>
<p><a href="http://automation-beyond.com/wp/wp-content/uploads/2012/04/Handler.png"><img class="alignnone size-full wp-image-5060" title="Handler" src="http://automation-beyond.com/wp/wp-content/uploads/2012/04/Handler.png" alt="" width="500" height="470" /></a></p>
<h5>Code</h5>
<pre class="brush: vb; title: ;">

Public Sub Setup_Environment_OnChange(Sender)
  Dim sEnvironment

  sEnvironment = UserForms.Setup.Environment.Text

  Select Case sEnvironment
    Case &quot;DEV&quot;
      UserForms.Setup.ShowUrl.Text = &quot;http://dev/&quot;
      UserForms.Setup.TestData.Text = &quot;W:\Test Suite\Data\DEV.xlsx&quot;
    Case &quot;SIT&quot;
      UserForms.Setup.ShowUrl.Text = &quot;http://sit/&quot;
      UserForms.Setup.TestData.Text = &quot;W:\Test Suite\Data\SIT.xlsx&quot;
    Case &quot;UAT&quot;
      UserForms.Setup.ShowUrl.Text = &quot;http://uat/&quot;
      UserForms.Setup.TestData.Text = &quot;W:\Test Suite\Data\UAT.xlsx&quot;
  End Select

End Sub
</pre>
<h4>Example</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<pre class="brush: vb; title: ;">
Public Function Form1()
  Dim objDlg
  Dim sEnvironment, sTestData
  Dim Result

  'Get object's instance
  Set objDlg = UserForms.Setup

  'Execute
  Result = objDlg.ShowModal

  If Result = mrOK Then
    'retrieve the selected input
    sEnvironment = objDlg.Environment.Text
    sTestData = objDlg.TestData.Text
  Else
    'Respond
    MsgBox &quot;Execution cancelled&quot;, vbOKOnly
    'exit function or finalize execution
  End If

End Function
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2009/08/24/great-plains-automation/" rel="bookmark" class="crp_title">MS Dynamics Great Plains: availability for Test Automation</a></li><li><a href="http://automation-beyond.com/2009/08/26/dynamics-great-plains-gui/" rel="bookmark" class="crp_title">MS Dynamics Great Plains: GUI Platform (automation perspective)</a></li><li><a href="http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/" rel="bookmark" class="crp_title">Adding GUI forms in TestComplete project</a></li><li><a href="http://automation-beyond.com/2010/09/07/anti-sleep-function2/" rel="bookmark" class="crp_title">Anti sleep function (TestComplete, VBScript, LLPlayer)</a></li><li><a href="http://automation-beyond.com/2007/04/10/links-dot-net-objects/" rel="bookmark" class="crp_title">Link-a-log: Dot NET objects</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/04/17/testcomplete-custom-events/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TestComplete – &#8220;UserName/Password&#8221; Form</title>
		<link>http://automation-beyond.com/2012/04/16/testcomplete-username-password-form/</link>
		<comments>http://automation-beyond.com/2012/04/16/testcomplete-username-password-form/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 10:34:35 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Routines]]></category>
		<category><![CDATA[Source code]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Configure]]></category>
		<category><![CDATA[Custom]]></category>
		<category><![CDATA[Dialog]]></category>
		<category><![CDATA[dynamically]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[not store]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[username]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=5041</guid>
		<description><![CDATA[Parent page: Using GUI Forms in TestComplete Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized). [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a href="http://automation-beyond.com/chapters/tutorials/gui-forms-tc/" target="_blank">Using GUI Forms in TestComplete</a></p>
<p>Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized).</p>
<p>Today&#8217;s post provides an example of creating and using ‘Username/Password’ dialog.<br />
But, first, a couple of words why automation scripts would need one.</p>
<p>No, this is not an authorization to run the scripts. This is for the scripts.<br />
Maybe you need to connect to the database. Or run the scripts with administrator&#8217;s permission. Or it&#8217;s just a security requirement from your stakeholders.</p>
<p>Whatever it is, you better not store such sensitive data in a file or the source code. Make them exist only during run-time.</p>
<h4>Preparing Modal Form</h4>
<p>We begin with a <a href="http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/" target="_blank">sample form</a>.</p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Add Edit Controls, Buttons, and Labels</h4>
<p><img class="alignnone size-full wp-image-5046" style="border: black 1px solid;" title="AuthForm" src="http://automation-beyond.com/wp/wp-content/uploads/2012/04/AuthForm.png" alt="" width="409" height="342" /></p>
<h4>Set Object Properties</h4>
<h5>Form</h5>
<ul>
<li>Name &#8211; object name to use in the code; &#8216;Security&#8217; in my example</li>
<li>Caption &#8211; title of the window when the form is displayed</li>
</ul>
<h5>Label controls</h5>
<ul>
<li>Caption &#8211; displayed text</li>
</ul>
<h5>Edit Box Controls</h5>
<ul>
<li>Name &#8211; object name to use in the code; &#8216;EditUsername&#8217;/'EditPassword&#8217; in my example</li>
<li>EditPassword.Properties.EchoMode = eemPassword &#8211; to mask password characters</li>
</ul>
<h5>Buttons</h5>
<ul>
<li>Caption &#8211; displayed text; &#8216;OK&#8217;/'Cancel&#8217; in my example</li>
<li>Cancel = True &#8211; for &#8216;Cancel&#8217; button</li>
<li>ModalResult = mrCancel - for &#8216;Cancel&#8217; button</li>
<li>Default = True &#8211; for &#8216;OK&#8217; button</li>
<li>ModalResult = mrOK - for &#8216;OK&#8217; button</li>
</ul>
<h4>Example</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<pre class="brush: vb; title: ;">
  Dim objDlg
  Dim sUsername, sPassword
  Dim Result

  'Get object's instance
  Set objDlg = UserForms.Security

  'Execute
  Result = objDlg.ShowModal

  If Result = mrOK Then
    'retrieve the input
    sUsername = objDlg.EditUsername.Text
    sPassword = objDlg.EditPassword.Text
  Else
    'Respond
    MsgBox &quot;Execution cancelled&quot;, vbOKOnly
    'exit function or finalize execution
  End If
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2008/10/10/on-functional-decomposition/" rel="bookmark" class="crp_title">On Functional Decomposition</a></li><li><a href="http://automation-beyond.com/2007/01/22/on-hard-coding-of-test-data-2/" rel="bookmark" class="crp_title">On hard-coding of test data (2)</a></li><li><a href="http://automation-beyond.com/2007/01/20/on-hard-coding-of-test-data-1/" rel="bookmark" class="crp_title">On hard-coding of test data (1)</a></li><li><a href="http://automation-beyond.com/2009/01/23/associaterecords/" rel="bookmark" class="crp_title">AssociateRecords (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/" rel="bookmark" class="crp_title">Adding GUI forms in TestComplete project</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/04/16/testcomplete-username-password-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TestComplete &#8211; Using &#8216;File Open&#8217; Dialog</title>
		<link>http://automation-beyond.com/2012/04/10/testcomplete-using-file-open-dialog/</link>
		<comments>http://automation-beyond.com/2012/04/10/testcomplete-using-file-open-dialog/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 10:41:36 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Routines]]></category>
		<category><![CDATA[Source code]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Configure]]></category>
		<category><![CDATA[Custom]]></category>
		<category><![CDATA[Dialog]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=5014</guid>
		<description><![CDATA[Parent page: Using GUI Forms in TestComplete Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized). [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a href="http://automation-beyond.com/chapters/tutorials/gui-forms-tc/" target="_blank">Using GUI Forms in TestComplete</a></p>
<p>Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it’s organized).</p>
<p>The second post in the series provides an example of using &#8216;File Open&#8217; dialog.</p>
<p>We begin with a <a href="http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/" target="_blank">sample form</a>.</p>
<h4>Add &#8216;TOpenDialog&#8217; Icon</h4>
<p><img class="alignnone size-full wp-image-5016" style="border: black 1px solid;" title="FormAddDialog" src="http://automation-beyond.com/wp/wp-content/uploads/2012/03/FormAddDialog.png" alt="" width="516" height="366" /></p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Set Dialog Properties</h4>
<p><img class="alignnone size-full wp-image-5017" style="border: black 1px solid;" title="DialogProperties" src="http://automation-beyond.com/wp/wp-content/uploads/2012/03/DialogProperties.png" alt="" width="409" height="663" /></p>
<p>The property names are straight-forward, so I cover only main ones.</p>
<ul>
<li>Name &#8211; object name to use in the code;</li>
<li>InitialDir &#8211; folder to begin browsing from;</li>
<li>Filter &#8211; to specify what filetypes to display;</li>
<li>FileName &#8211; will contain the full pathname of the file upon successful selection;</li>
<li>Options\ofPathMustExist &#8211; set <strong>True</strong> if selection accepts only existing files;</li>
<li>Options\ofFileMustExist - set <strong>True</strong> if selection accepts only existing files;</li>
</ul>
<p>These properties can be set in the Property Editor or directly in the code at run-time as in the example below.</p>
<h4>Example</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<pre class="brush: vb; title: ;">
'Get object's instance
Set objDlg = UserForms.PlanOpenDlg
'Assign path
objDlg.OpenDialog.InitialDir = &quot;C:\FakePath\Test Plans&quot;
'Set filter
objDlg.OpenDialog.Filter = &quot;XML Test Plans (*.xml)|*.XML&quot;
'Execute as modal and get the status
If objDlg.OpenDialog.Execute Then
  'retrieve the selected file
  sTestPlan = objDlg.OpenDialog.FileName
Else
  'Respond
  MsgBox &quot;Execution cancelled&quot;, vbOKOnly
  'exit function or finalize execution
End If
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2010/10/26/how-to-save-as/" rel="bookmark" class="crp_title">How to &#8220;Save As&#8221; text template</a></li><li><a href="http://automation-beyond.com/2010/08/24/testcomplete-gui-extensibility/" rel="bookmark" class="crp_title">TestComplete GUI extensibility with Object Mapping</a></li><li><a href="http://automation-beyond.com/2009/11/19/using-built-in-and-system-dialogs-in-qtp/" rel="bookmark" class="crp_title">Using built-in and system dialogs in QTP</a></li><li><a href="http://automation-beyond.com/2010/04/08/using-locked-excel-workbook/" rel="bookmark" class="crp_title">How to use test data from a locked Excel Workbook (QTP, VBScript)</a></li><li><a href="http://automation-beyond.com/2009/10/17/how-to-open-excel-workbook-qtp-vbscript/" rel="bookmark" class="crp_title">How to open Excel workbook (QTP, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/04/10/testcomplete-using-file-open-dialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding GUI forms in TestComplete project</title>
		<link>http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/</link>
		<comments>http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 10:43:59 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Routines]]></category>
		<category><![CDATA[Source code]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[Configure]]></category>
		<category><![CDATA[Custom]]></category>
		<category><![CDATA[Dialog]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Input]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[parameter]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[VBScript]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4994</guid>
		<description><![CDATA[Parent page: Using GUI Forms in TestComplete Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it&#8217;s organized). [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a href="http://automation-beyond.com/chapters/tutorials/gui-forms-tc/" target="_blank">Using GUI Forms in TestComplete</a></p>
<p>Even though automation scripts are intended to drive the application under test there are cases when communication with tester is required. With TestComplete, we have a vast arsenal of predefined GUI controls for that (and those, acquainted with Delphi, will be pleasantly surprised by the way it&#8217;s organized).</p>
<p>Today&#8217;s post walks through the main preparation steps.</p>
<h4>Add New Project Item</h4>
<p><img class="alignnone size-full wp-image-4997" style="border: black 1px solid;" title="AddNewItem" src="http://automation-beyond.com/wp/wp-content/uploads/2012/02/AddNewItem.png" alt="" width="585" height="313" /></p>
<h4>Select Project Item Type &#8211; &#8216;User Forms&#8217;</h4>
<p><img class="alignnone size-full wp-image-4998" style="border: black 1px solid;" title="CreateProjectItem" src="http://automation-beyond.com/wp/wp-content/uploads/2012/02/CreateProjectItem.png" alt="" width="522" height="348" /></p>
<h4>Add New Item into &#8216;User Forms&#8217;</h4>
<p><img class="alignnone size-full wp-image-4999" style="border: black 1px solid;" title="AddNewForm" src="http://automation-beyond.com/wp/wp-content/uploads/2012/02/AddNewForm.png" alt="" width="574" height="412" /></p>
<h4>Add New Item into &#8216;User Forms&#8217; &#8211; Create a New Form</h4>
<p><img class="alignnone size-full wp-image-5000" style="border: black 1px solid;" title="CreateNewForm" src="http://automation-beyond.com/wp/wp-content/uploads/2012/02/CreateNewForm.png" alt="" width="519" height="382" /></p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>You end up in the Form Editor</h4>
<p><img class="alignnone size-full wp-image-5012" style="border: black 1px solid;" title="FormView" src="http://automation-beyond.com/wp/wp-content/uploads/2012/03/FormView.png" alt="" width="597" height="721" /></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Note that you can add GUI controls from 4 main categories:</p>
<ul>
<li>&#8216;Editors&#8217;</li>
<li>&#8216;Helpers&#8217;</li>
<li>&#8216;Extra&#8217;</li>
<li>&#8216;Dialogs&#8217;</li>
<li>&#8216;Buttons&#8217;</li>
</ul>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2012/04/16/testcomplete-username-password-form/" rel="bookmark" class="crp_title">TestComplete – &#8220;UserName/Password&#8221; Form</a></li><li><a href="http://automation-beyond.com/2012/04/10/testcomplete-using-file-open-dialog/" rel="bookmark" class="crp_title">TestComplete &#8211; Using &#8216;File Open&#8217; Dialog</a></li><li><a href="http://automation-beyond.com/2012/04/17/testcomplete-custom-events/" rel="bookmark" class="crp_title">TestComplete Forms &#8211; Using Custom Events</a></li><li><a href="http://automation-beyond.com/2007/04/10/links-dot-net-objects/" rel="bookmark" class="crp_title">Link-a-log: Dot NET objects</a></li><li><a href="http://automation-beyond.com/2009/08/24/great-plains-automation/" rel="bookmark" class="crp_title">MS Dynamics Great Plains: availability for Test Automation</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/04/09/adding-gui-forms-in-testcomplete-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GetTokenByKeyword (QTP, TestComplete, VBScript)</title>
		<link>http://automation-beyond.com/2012/03/06/gettokenbykeyword/</link>
		<comments>http://automation-beyond.com/2012/03/06/gettokenbykeyword/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 16:01:41 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Source code]]></category>
		<category><![CDATA[Text Data]]></category>
		<category><![CDATA[answer]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[reusable]]></category>
		<category><![CDATA[routine function]]></category>
		<category><![CDATA[separator]]></category>
		<category><![CDATA[service function]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[trim]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[wrap]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=5035</guid>
		<description><![CDATA[Parent page: Service Functions – String (QTP, VBScript) Description Get token string from the source string. Position is relative, defined by another token-keyword and a number. Implementation Public Function GetTokenByKeyword(ByVal strSource, ByVal chrDelimiter, ByVal strKeyword, ByVal intNumber, ByRef strToken) Dim Tokens, intCount, intIndex Dim i, boolRC Tokens = Split(strSource, chrDelimiter) intCount = UBound(Tokens)+1 intIndex = [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a title="Service Functions – String (QTP, VBScript)" href="http://automation-beyond.com/2009/10/01/service-functions-string/" target="_blank">Service Functions – String (QTP, VBScript)</a></p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Description</h4>
<p>Get token string from the source string. Position is relative, defined by another token-keyword and a number.</p>
<h4>Implementation</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<pre class="brush: vb; title: ;">
Public Function GetTokenByKeyword(ByVal strSource, ByVal chrDelimiter, ByVal strKeyword, ByVal intNumber, ByRef strToken)
	Dim Tokens, intCount, intIndex
	Dim i, boolRC

	Tokens = Split(strSource, chrDelimiter)
	intCount = UBound(Tokens)+1
	intIndex = -1

	For i=0 To intCount-1
		If Regex_Test(Tokens(i),strKeyword) Then
			intIndex = i
			Exit For
		End If
	Next

	If intIndex = -1 Then
    strToken = &quot;&quot;
		GetTokenByKeyword = False
		Exit Function
	End If

	If (intIndex+1+intNumber) &gt; intCount Then
    strToken = &quot;&quot;
		GetTokenByKeyword = False
		Exit Function
	End If

	If (intIndex+1+intNumber) &lt; 0 Then
    strToken = &quot;&quot;
		GetTokenByKeyword = True
		Exit Function
	End If

	strToken = Tokens(intIndex+intNumber)
	GetTokenByKeyword = True
End Function
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2009/10/01/service-functions-string/" rel="bookmark" class="crp_title">Service Functions &#8211; String (QTP, VBScript)</a></li><li><a href="http://automation-beyond.com/2008/06/30/service-functions-msxmldom/" rel="bookmark" class="crp_title">Service Functions &#8211; MSXMLDOM (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2009/01/09/service-functions-dictionary/" rel="bookmark" class="crp_title">Service Functions – Dictionary (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2011/07/20/xmlnodeset2dictionary/" rel="bookmark" class="crp_title">XMLNodeSet2Dictionary (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2008/08/05/p_getxmlelementattrtext/" rel="bookmark" class="crp_title">p_GetXMLElementAttrText (QTP, TestComplete, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/03/06/gettokenbykeyword/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GetTokenByNumber (QTP, TestComplete, VBScript)</title>
		<link>http://automation-beyond.com/2012/03/05/gettokenbynumber/</link>
		<comments>http://automation-beyond.com/2012/03/05/gettokenbynumber/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 14:12:17 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Source code]]></category>
		<category><![CDATA[Text Data]]></category>
		<category><![CDATA[answer]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[How to]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[question]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[reusable]]></category>
		<category><![CDATA[routine function]]></category>
		<category><![CDATA[separator]]></category>
		<category><![CDATA[service function]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[split]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[trim]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[wrap]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=5032</guid>
		<description><![CDATA[Parent page: Service Functions – String (QTP, VBScript) Description Get token string from the source string. Position is absolute, defined by number. Implementation Public Function GetTokenByNumber(ByVal strSource, ByVal chrDelimiter, ByVal intNumber, ByRef strToken) Dim Tokens, intCount strSource = ReplaceEx(strSource, &#34; *&#34;, &#34; &#34;, False) Tokens = Split(strSource, chrDelimiter) intCount = UBound(Tokens) If intNumber &#62; intCount [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a title="Service Functions – String (QTP, VBScript)" href="http://automation-beyond.com/2009/10/01/service-functions-string/" target="_blank">Service Functions – String (QTP, VBScript)</a></p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Description</h4>
<p>Get token string from the source string. Position is absolute, defined by number.</p>
<h4>Implementation</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<pre class="brush: vb; title: ;">
Public Function GetTokenByNumber(ByVal strSource, ByVal chrDelimiter, ByVal intNumber, ByRef strToken)
	Dim Tokens, intCount

	strSource = ReplaceEx(strSource, &quot;  *&quot;, &quot; &quot;, False)
	Tokens = Split(strSource, chrDelimiter)
	intCount = UBound(Tokens)

	If  intNumber &gt; intCount Then
		GetTokenByNumber = FALSE
		Exit Function
	End If

	strToken = Tokens(intNumber-1)
	GetTokenByNumber = TRUE
End Function
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2008/06/30/service-functions-msxmldom/" rel="bookmark" class="crp_title">Service Functions &#8211; MSXMLDOM (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2009/01/09/service-functions-dictionary/" rel="bookmark" class="crp_title">Service Functions – Dictionary (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2011/07/20/xmlnodeset2dictionary/" rel="bookmark" class="crp_title">XMLNodeSet2Dictionary (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2008/08/05/p_getxmlelementattrtext/" rel="bookmark" class="crp_title">p_GetXMLElementAttrText (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2009/10/01/service-functions-string/" rel="bookmark" class="crp_title">Service Functions &#8211; String (QTP, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/03/05/gettokenbynumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automation Robustness Factors (mindmap)</title>
		<link>http://automation-beyond.com/2012/02/15/automation-robustness-mindmap/</link>
		<comments>http://automation-beyond.com/2012/02/15/automation-robustness-mindmap/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 10:28:28 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Mind Maps]]></category>
		<category><![CDATA[Robustness]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[Automation Approach]]></category>
		<category><![CDATA[cost]]></category>
		<category><![CDATA[Coverage]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[diagram]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[mindmap]]></category>
		<category><![CDATA[picture]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[Scalability]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[synchronization]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[thorough]]></category>
		<category><![CDATA[unattended]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4939</guid>
		<description><![CDATA[(Click on the picture to view it full-size in a separate browser window) Related Posts:How to use custom markers with XMind (mindmap)Numeric Boundary Testing (MindMap)Functional Load Testing &#8211; MindMapTest Script RobustnessQA Automation Skill Matrices (mature professionals)]]></description>
			<content:encoded><![CDATA[
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><a href="http://automation-beyond.com/wp/wp-content/uploads/2012/02/Robustness.png" target="_blank"><img class="alignnone size-full wp-image-4944" title="Robustness" src="http://automation-beyond.com/wp/wp-content/uploads/2012/02/Robustness2.png" alt="" width="506" height="225" /></a></p>
<p>(Click on the picture to view it full-size in a separate browser window)<br />
<div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2011/02/16/custom-markers-xmind/" rel="bookmark" class="crp_title">How to use custom markers with XMind (mindmap)</a></li><li><a href="http://automation-beyond.com/2011/07/05/numeric-boundary-testing-mindmap/" rel="bookmark" class="crp_title">Numeric Boundary Testing (MindMap)</a></li><li><a href="http://automation-beyond.com/2011/09/26/functional-load-testing/" rel="bookmark" class="crp_title">Functional Load Testing &#8211; MindMap</a></li><li><a href="http://automation-beyond.com/2007/12/10/test-script-robustness/" rel="bookmark" class="crp_title">Test Script Robustness</a></li><li><a href="http://automation-beyond.com/2009/05/29/qa-automation-skill-matrices-2/" rel="bookmark" class="crp_title">QA Automation Skill Matrices (mature professionals)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/02/15/automation-robustness-mindmap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Buffet with Adam White</title>
		<link>http://automation-beyond.com/2012/01/25/test-buffet-with-adam-white/</link>
		<comments>http://automation-beyond.com/2012/01/25/test-buffet-with-adam-white/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 22:07:05 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Adam White]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[conferring]]></category>
		<category><![CDATA[Fiona Charles]]></category>
		<category><![CDATA[GTA]]></category>
		<category><![CDATA[interest]]></category>
		<category><![CDATA[lunch]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[Michael Bolton]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[tester]]></category>
		<category><![CDATA[Toronto]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4930</guid>
		<description><![CDATA[&#8220;A buffet is a system of serving meals in which food is placed in a public area where the diners generally serve themselves.&#8221; &#8211; that&#8217;s from Wikipedia. The place where I&#8217;ve had lunch today was just like that, except the actual meal wasn&#8217;t the point. Instead, we served each other ideas and challenges on testing [...]]]></description>
			<content:encoded><![CDATA[
<p>&#8220;A buffet is a system of serving meals in which food is placed in a public area where the diners generally serve themselves.&#8221; &#8211; that&#8217;s from <a href="http://en.wikipedia.org/wiki/Buffet" target="_blank">Wikipedia</a>. The place where I&#8217;ve had lunch today was just like that, except the actual meal wasn&#8217;t the point. Instead, we served each other ideas and challenges on testing and diligently worked on them.</p>
<p>Now, I won&#8217;t be putting much of details here. I think, the best would be to come and engage in person. But for those who don&#8217;t live in Greater Toronto Area, here&#8217;s someting&#8230;</p>
<p>I really enjoyed conversation with <a href="http://www.quality-intelligence.com/" target="_blank">Fiona Charles</a> about the subject:</p>
<p> <br />
<a href="http://automation-beyond.com/wp/wp-content/uploads/2012/01/i1.jpg" target="_blank"><img class="alignnone size-medium wp-image-4931" title="scheme 1" src="http://automation-beyond.com/wp/wp-content/uploads/2012/01/i1-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>I had even longer discussion with <a href="http://www.adamkwhite.com/" target="_blank">Adam White</a>, the organizer of the event,  and <a href="http://www.developsense.com/" target="_blank">Michael Bolton</a>, about the following proposition -</p>
<p> <br />
<a href="http://automation-beyond.com/wp/wp-content/uploads/2012/01/i2.jpg" target="_blank"><img class="alignnone size-medium wp-image-4932" title="scheme2" src="http://automation-beyond.com/wp/wp-content/uploads/2012/01/i2-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>- but we still left it only partially covered.</p>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2011/02/22/wta-07-questioning-the-mission/" rel="bookmark" class="crp_title">WTA07: Questioning the Mission</a></li><li><a href="http://automation-beyond.com/2009/08/14/youre-not-supposed-to-get-outside-of-your-box/" rel="bookmark" class="crp_title">You are NOT supposed to get outside of your box! (Discussed)</a></li><li><a href="http://automation-beyond.com/2009/11/25/7-questions-on-testing-vs-checking/" rel="bookmark" class="crp_title">7 questions on &quot;Testing vs. Checking&quot;</a></li><li><a href="http://automation-beyond.com/2007/01/15/on-test-data/" rel="bookmark" class="crp_title">On Test Data</a></li><li><a href="http://automation-beyond.com/2007/09/27/test-log-requirements/" rel="bookmark" class="crp_title">Test Log &#8211; Requirements</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/01/25/test-buffet-with-adam-white/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic Data Maintenance &#8211; Date/Time (Excel)</title>
		<link>http://automation-beyond.com/2012/01/08/automatic-data-maintenance-1/</link>
		<comments>http://automation-beyond.com/2012/01/08/automatic-data-maintenance-1/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:02:55 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[MS Excel Data]]></category>
		<category><![CDATA[3. Automation]]></category>
		<category><![CDATA[automatic]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Formula]]></category>
		<category><![CDATA[Macro]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4831</guid>
		<description><![CDATA[A few simple Excel macros I use for automatic data maintenance. Date Macro Current date/time =NOW() 9/7/2011 17:57 Date formatted as text =TEXT(NOW(),&#8221;mm/dd/yyyy&#8221;) 09/07/2011 Future date (5 days from today) =TEXT(NOW()+5,&#8221;mm/dd/yyyy&#8221;) 09/12/2011 A year 180 days before today =TEXT(YEAR(NOW()-180), &#8220;00&#8243;) 2011 A month 58 days from today =TEXT(MONTH(NOW()+58), &#8220;00&#8243;) 11 Year, formatted =TEXT(YEAR(NOW()), &#8220;0000&#8243;) 2011 [...]]]></description>
			<content:encoded><![CDATA[
<p>A few simple Excel macros I use for automatic data maintenance.</p>
<h4>Date Macro</h4>
<p><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* 4 links text line */
google_ad_slot = "5367351963";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<table width="283" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="283" /></colgroup>
<tbody>
<tr>
<td width="283" height="20"><strong>Current date/time</strong></td>
</tr>
<tr>
<td align="right" height="20">=NOW()</td>
</tr>
<tr>
<td align="right" height="20">9/7/2011 17:57</td>
</tr>
<tr>
<td height="20"><strong>Date formatted as text</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(NOW(),&#8221;mm/dd/yyyy&#8221;)</td>
</tr>
<tr>
<td align="right" height="20">09/07/2011</td>
</tr>
<tr>
<td height="20"><strong>Future date (5 days from today)</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(NOW()+5,&#8221;mm/dd/yyyy&#8221;)</td>
</tr>
<tr>
<td align="right" height="20">09/12/2011</td>
</tr>
<tr>
<td height="20"><strong>A year 180 days before today</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(YEAR(NOW()-180), &#8220;00&#8243;)</td>
</tr>
<tr>
<td align="right" height="20">2011</td>
</tr>
<tr>
<td height="20"><strong>A month 58 days from today</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(MONTH(NOW()+58), &#8220;00&#8243;)</td>
</tr>
<tr>
<td align="right" height="20">11</td>
</tr>
<tr>
<td height="20"><strong>Year, formatted</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(YEAR(NOW()), &#8220;0000&#8243;)</td>
</tr>
<tr>
<td align="right" height="20">2011</td>
</tr>
<tr>
<td height="20"><strong>Month, formatted</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(MONTH(NOW()), &#8220;00&#8243;)</td>
</tr>
<tr>
<td align="right" height="20">09</td>
</tr>
<tr>
<td height="20"><strong>Day, formatted</strong></td>
</tr>
<tr>
<td align="right" height="20">=TEXT(DAY(NOW()), &#8220;00&#8243;)</td>
</tr>
<tr>
<td align="right" height="20">07</td>
</tr>
<tr>
<td width="283" height="20"><strong>Weekday of today as number (1 &#8211; Monday, 7 &#8211; Sunday)</strong></td>
</tr>
<tr>
<td align="right" height="20">=WEEKDAY(NOW(), 2)</td>
</tr>
<tr>
<td align="right" height="20">5</td>
</tr>
<tr>
<td width="283" height="20"><strong>Workday or not?</strong></td>
</tr>
<tr>
<td align="right" height="20">=IF(WEEKDAY(NOW(), 2)&lt;=5, &#8220;Work&#8221;, &#8220;Rest&#8221;)</td>
</tr>
<tr>
<td align="right" height="20">Work</td>
</tr>
<tr>
<td width="283" height="20"><strong>2 work (business) days from today</strong></td>
</tr>
<tr>
<td align="right" height="20">=IF(WEEKDAY(NOW()+3, 2)&lt;=5, TEXT(NOW()+3,&#8221;mm/dd/yyyy&#8221;), TEXT(NOW()+3+2,&#8221;mm/dd/yyyy&#8221;))</td>
</tr>
<tr>
<td align="right" height="20">09/12/2011</td>
</tr>
</tbody>
</table>
<p><div style="position: relative; z-index:1;"><script type="text/javascript"><!--
google_ad_client = "pub-4470793787913935";
/* Banner 468x60 */
google_ad_slot = "8933038987";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></p>
<h4>Date Calculations</h4>
<table width="347" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="283" />
<col width="64" /></colgroup>
<tbody>
<tr>
<td width="283" height="20"><strong>Date from components</strong></td>
<td width="64"> </td>
</tr>
<tr>
<td align="right" height="20">Year</td>
<td align="right">2010</td>
</tr>
<tr>
<td align="right" height="20">Month</td>
<td align="right">6</td>
</tr>
<tr>
<td align="right" height="20">Day</td>
<td align="right">15</td>
</tr>
<tr>
<td align="right" height="20">=DATE(C24,C25,C26)</td>
<td> </td>
</tr>
<tr>
<td align="right" height="20">06/15/2010</td>
<td> </td>
</tr>
<tr>
<td width="283" height="40"><strong>Difference in days (first parameter must be always earlier)</strong></td>
<td width="64"> </td>
</tr>
<tr>
<td align="right" height="20">Year</td>
<td align="right">2010</td>
</tr>
<tr>
<td align="right" height="20">Month</td>
<td align="right">6</td>
</tr>
<tr>
<td align="right" height="20">Day</td>
<td align="right">15</td>
</tr>
<tr>
<td colspan="2" height="20">=DATEDIF(DATE(C30,C31,C32),TODAY(), &#8220;D&#8221;) &amp; &#8221; Days&#8221;</td>
</tr>
<tr>
<td align="right" height="20">451 Days</td>
<td> </td>
</tr>
</tbody>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2009/08/12/test-automation-problems-4c/" rel="bookmark" class="crp_title">Test Automation Problems (4) &#8211; Implementation Approach &#8211; Verification</a></li><li><a href="http://automation-beyond.com/2007/05/15/data-models-in-test-automation/" rel="bookmark" class="crp_title">Data Models in Test Automation</a></li><li><a href="http://automation-beyond.com/2008/09/15/winrunner2qtp-2/" rel="bookmark" class="crp_title">WinRunner to QTP migration notes (2)</a></li><li><a href="http://automation-beyond.com/2009/05/23/excel-vbscript-2/" rel="bookmark" class="crp_title">Mapping Excel col names (QTP, VBScript)</a></li><li><a href="http://automation-beyond.com/2010/04/08/using-locked-excel-workbook/" rel="bookmark" class="crp_title">How to use test data from a locked Excel Workbook (QTP, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2012/01/08/automatic-data-maintenance-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BBST: Something to Brag About</title>
		<link>http://automation-beyond.com/2011/12/29/bbst1/</link>
		<comments>http://automation-beyond.com/2011/12/29/bbst1/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 13:00:28 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Albert Gareev]]></category>
		<category><![CDATA[BBST]]></category>
		<category><![CDATA[best]]></category>
		<category><![CDATA[Black]]></category>
		<category><![CDATA[Black Box]]></category>
		<category><![CDATA[Black Box Software Testing]]></category>
		<category><![CDATA[Box]]></category>
		<category><![CDATA[Cem Kaner]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[expert]]></category>
		<category><![CDATA[exploratory]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[hands-on]]></category>
		<category><![CDATA[James Bach]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[Michael Larsen]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[rapid]]></category>
		<category><![CDATA[recommended]]></category>
		<category><![CDATA[RST]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4916</guid>
		<description><![CDATA[I have made two major investments into my professional development this year. One of them, taken in April, is the course of Rapid Software Testing. I wrote about my experience and takeaways, as well as proudly gave a personal endorsement. Another course, similar and different at the same time, is Black Box Software Testing (Foundations [...]]]></description>
			<content:encoded><![CDATA[
<p>I have made two major investments into my professional development this year.</p>
<p>One of them, taken in April, is the course of <a href="http://www.developsense.com/courses.html" target="_blank">Rapid Software Testing</a>. I wrote about my <a href="http://automation-beyond.com/2011/08/02/my-path-in-exploratory-testing/" target="_blank">experience and takeaways</a>, as well as proudly gave a <a href="http://automation-beyond.com/2011/11/14/personal-recommendation-rst/" target="_blank">personal endorsement</a>.</p>
<p>Another course, similar and different at the same time, is <a href="http://www.associationforsoftwaretesting.org/training/" target="_blank">Black Box Software Testing</a> (<a href="http://www.associationforsoftwaretesting.org/training/courses/foundations/" target="_blank">Foundations</a> level), which was taken in Autumn. Same as with the RST course, I&#8217;ve got a unique blend of experiences.  And I want to say more about it.</p>
<p style="text-align: center;"><a href="http://automation-beyond.com/wp/wp-content/uploads/2011/12/BBST1.png" target="_blank"><img class="size-medium wp-image-4924 aligncenter" style="border: black 1px solid;" title="BBST1" src="http://automation-beyond.com/wp/wp-content/uploads/2011/12/BBST1-300x232.png" alt="" width="300" height="232" /></a></p>
<p>The course itself is organized in a &#8220;research lab&#8221; style. It actually reminded me of my happy student years. Theory and practice are given in an excellent mixture, and the course has a potential of keeping knowledge-thirsty students busy for 40 hours a week. (Although you don&#8217;t have to spend <em>that</em> much time to pass the exam. But I found the assignments so addictive that I worked even on those not given to me.)</p>
<p>In this sense, the Foundations level course will be a true testament of skills even for someone considering himself (or herself) a senior tester.</p>
<p>The course aims for the following learning objectives:</p>
<ul>
<li>Understanding key testing challenges; choosing the strategy to meet your actual needs under present constraints.</li>
<li>Rapid learning, as well as learning through collaboration and reflection.</li>
<li>Critical thinking and precision in reading.</li>
<li>Efficient and effective communication, and well-structured feedback.</li>
<li>Understanding diversity of definitions in software testing terminology.</li>
<li>“Complete” vs. “Good Enough” testing.</li>
<li>Heuristic approach.</li>
<li>Programming fundamentals.</li>
<li>What is coverage?</li>
<li>Measurement and metrics. </li>
</ul>
<p>  </p>
<p>That&#8217;s a lot for just 3 weeks! But what makes the course really special is the tight collaboration it requires and encourages. I felt pretty strong on many topics yet I was deeply engaged in the assignments either finding new aspects for myself or supporting fellow students. We had quite a group! I wish at my day jobs I&#8217;d always meet such a strong passion for testing and learning.</p>
<p>If, at this point, you haven’t signed up for the course yet, here’s another argument to consider: you will get to work with a star team of instructors. For the particular course I was taking, our instructors and facilitators were <a href="http://kaner.com/?page_id=11" target="_blank">Cem Kaner</a>, <a href="http://www.beckyfiedler.com/philosophy.htm" target="_blank">Rebecca Fiedler</a>, <a href="http://www.mkltesthead.com/p/about-me.html" target="_blank">Michael Larsen</a>, <a href="http://selenadelesie.com/about/" target="_blank">Selena Delesie</a>, and <a href="http://bjosman.wordpress.com/about/" target="_blank">Brian Osman</a>. – And I’m very thankful to them for all the feedback and coaching given.</p>
<p>On a final note, I want to say: if the RST course with Michael Bolton was the most insightful and inspiring experience of this year, the BBST course was the most challenging and motivating experience, and I look forward to taking Advanced classes.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2011/08/19/weekend-testing-modeling-and-practicing/" rel="bookmark" class="crp_title">Weekend Testing: Modeling and Practicing</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/12/29/bbst1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

