<?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>Thu, 02 Feb 2012 14:56:14 +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>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>
		<item>
		<title>Mapping Testing Story (My article in The Testing Planet)</title>
		<link>http://automation-beyond.com/2011/12/23/mapping-testing-story/</link>
		<comments>http://automation-beyond.com/2011/12/23/mapping-testing-story/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 21:07:08 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Mind Maps]]></category>
		<category><![CDATA[My Articles]]></category>
		<category><![CDATA[Albert Gareev]]></category>
		<category><![CDATA[exploratory]]></category>
		<category><![CDATA[heuristic]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[mind map]]></category>
		<category><![CDATA[mindmap]]></category>
		<category><![CDATA[mindmapping]]></category>
		<category><![CDATA[postal code]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[session-based]]></category>
		<category><![CDATA[SFDEPOT]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Software Testing Club]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[The Testing Planet]]></category>
		<category><![CDATA[XMind]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4904</guid>
		<description><![CDATA[Publication URL: http://www.thetestingplanet.com/2011/11/november-2011-issue-6/ Download PDF: The Testing Planet November Issue And you can view the large mind map here (click to open in a separate window). Related Posts:Do you want to help with the all new Software Testing magazine?Dirty MappingTelling testing storyThe keys are under the mat&#8230; The brains are on the Web&#8230; Are we missing something?Minor [...]]]></description>
			<content:encoded><![CDATA[
<p>Publication URL: <a href="http://www.thetestingplanet.com/2011/11/november-2011-issue-6/" target="_blank">http://www.thetestingplanet.com/2011/11/november-2011-issue-6/</a></p>
<p>Download PDF: <a href="http://automation-beyond.com/wp/wp-content/uploads/2011/12/Issue-6-WEB.pdf" target="_blank">The Testing Planet November Issue</a></p>
<p>And you can view the large mind map here (click to open in a separate window).</p>
<p><a href="http://automation-beyond.com/wp/wp-content/uploads/2011/12/Mapping-Testing-Story.png" target="_blank"><img class="alignnone size-full wp-image-4908" style="border: black 1px solid;" title="Mapping Testing Story" src="http://automation-beyond.com/wp/wp-content/uploads/2011/12/Mapping-Testing-Story.png" alt="" width="600" height="600" /></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>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2009/11/13/do-you-want-to-help-with-the-all-new-software-testing-magazine/" rel="bookmark" class="crp_title">Do you want to help with the all new Software Testing magazine?</a></li><li><a href="http://automation-beyond.com/2010/09/16/dirty-mapping/" rel="bookmark" class="crp_title">Dirty Mapping</a></li><li><a href="http://automation-beyond.com/2007/09/17/telling-testing-story/" rel="bookmark" class="crp_title">Telling testing story</a></li><li><a href="http://automation-beyond.com/2009/11/04/brains-on-the-web-concern/" rel="bookmark" class="crp_title">The keys are under the mat&#8230; The brains are on the Web&#8230; Are we missing something?</a></li><li><a href="http://automation-beyond.com/2008/11/10/minor-major-defect/" rel="bookmark" class="crp_title">Minor defect as a symptom of a major defect</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/12/23/mapping-testing-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CopyChildElements (QTP, TestComplete, VBScript)</title>
		<link>http://automation-beyond.com/2011/12/08/copychildelements/</link>
		<comments>http://automation-beyond.com/2011/12/08/copychildelements/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 10:41:39 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Source code]]></category>
		<category><![CDATA[XML Data]]></category>
		<category><![CDATA[Child]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[depth]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[hierarchy]]></category>
		<category><![CDATA[How]]></category>
		<category><![CDATA[Move]]></category>
		<category><![CDATA[MSXMLDOM]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[Nodes]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XMLDOM]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4794</guid>
		<description><![CDATA[Parent page: Service Functions – MSXMLDOM (QTP, TestComplete, VBScript) Description Copy all child elements (and attributes, comments, text nodes) from one XML node to another. Implementation Public Function CopyChildElements(ByRef objXMLSrc, ByRef objXMLDest)    Dim objCloneNode      If objXMLSrc is Nothing Then     Set MoveChildElements = objXMLDest     Exit Function    End If    If [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a title="Service Functions – MSXMLDOM (QTP, TestComplete, VBScript)" href="http://automation-beyond.com/2008/06/30/service-functions-msxmldom/" target="_blank">Service Functions – MSXMLDOM (QTP, TestComplete, 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>Copy all child elements (and attributes, comments, text nodes) from one XML node to another.</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 CopyChildElements(ByRef objXMLSrc, ByRef objXMLDest)
   Dim objCloneNode
 
   If objXMLSrc is Nothing Then
    Set MoveChildElements = objXMLDest
    Exit Function
   End If

   If objXMLDest is Nothing Then
    Set objXMLDest = objXMLSrc.CloneNode(True)
    Set CopyChildElements = objXMLDest
    Exit Function
   End If

   Set objCloneNode = objXMLSrc.CloneNode(True)

   While Not (objCloneNode.FirstChild is Nothing)
    Call objXMLDest.AppendChild(objCloneNode.FirstChild)
   Wend

   Set objCloneNode = Nothing

   Set CopyChildElements = objXMLDest

End Function
</pre>
<h4>Test Code</h4>
<pre class="brush: vb; title: ;">
  Set objXMLDoc = CreateXMLDOM(&quot;test&quot;)
  Set objXMLParent = CreateChildElementByName(objXMLDoc.DocumentElement, &quot;Modules&quot;, &quot;modules parent node&quot;)
  If objXMLParent is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 1&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 2&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 3&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If

  sText = &quot;&lt;root&gt;text&lt;/root&gt;&quot;
  Set objXMLDoc2 = CreateXMLDOMFromString(sText)
  If objXMLDoc2 is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateXMLDOMFromString&quot;, &quot;&quot;)
  End If

  Set objXMLParent2 = Nothing
  Set objXMLParent2 = CopyChildElements(objXMLParent, objXMLParent2)

  Set objXMLNode = ChildElementByName(objXMLParent2, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = ChildElementByName(objXMLParent, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If

  Set objXMLParent2 = CreateChildElementByName(objXMLDoc2.DocumentElement, &quot;Modules&quot;, &quot;modules parent node dest&quot;)
  If objXMLParent2 is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLParent2 = CopyChildElements(objXMLParent, objXMLParent2)
  Set objXMLNode = ChildElementByName(objXMLParent2, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = ChildElementByName(objXMLParent, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
</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/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/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/2008/08/06/p_setxmlelementattrtext/" rel="bookmark" class="crp_title">p_SetXMLElementAttrText (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2008/08/19/childelementbyname/" rel="bookmark" class="crp_title">ChildElementByName (QTP, TestComplete, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/12/08/copychildelements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MoveChildElements (QTP, TestComplete, VBScript)</title>
		<link>http://automation-beyond.com/2011/12/06/movechildelements/</link>
		<comments>http://automation-beyond.com/2011/12/06/movechildelements/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 10:21:22 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Source code]]></category>
		<category><![CDATA[XML Data]]></category>
		<category><![CDATA[Child]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[depth]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[elements]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[hierarchy]]></category>
		<category><![CDATA[How]]></category>
		<category><![CDATA[Move]]></category>
		<category><![CDATA[MSXMLDOM]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[Nodes]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[testcomplete]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XMLDOM]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4790</guid>
		<description><![CDATA[Parent page: Service Functions – MSXMLDOM (QTP, TestComplete, VBScript)   Description Move all child elements (and attributes, comments, text nodes) from one XML node to another.  Implementation Public Function MoveChildElements(ByRef objXMLSrc, ByRef objXMLDest)    If objXMLSrc is Nothing Then     Set MoveChildElements = objXMLDest     Exit Function    End If    If objXMLDest is Nothing Then     [...]]]></description>
			<content:encoded><![CDATA[
<p>Parent page: <a title="Service Functions – MSXMLDOM (QTP, TestComplete, VBScript)" href="http://automation-beyond.com/2008/06/30/service-functions-msxmldom/" target="_blank">Service Functions – MSXMLDOM (QTP, TestComplete, VBScript)</a><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>
<h4>Description</h4>
<p>Move all child elements (and attributes, comments, text nodes) from one XML node to another. </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 MoveChildElements(ByRef objXMLSrc, ByRef objXMLDest)

   If objXMLSrc is Nothing Then
    Set MoveChildElements = objXMLDest
    Exit Function
   End If

   If objXMLDest is Nothing Then
    Set objXMLDest = objXMLSrc.CloneNode(False)
   End If

   While Not (objXMLSrc.FirstChild is Nothing)
    Call objXMLDest.AppendChild(objXMLSrc.FirstChild)
   Wend

   Set MoveChildElements = objXMLDest

End Function
</pre>
<h4>Test Code</h4>
<pre class="brush: vb; title: ;">

  Set objXMLDoc = CreateXMLDOM(&quot;test&quot;)
  Set objXMLParent = CreateChildElementByName(objXMLDoc.DocumentElement, &quot;Modules&quot;, &quot;modules parent node&quot;)
  If objXMLParent is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 1&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 2&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 3&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If

  sText = &quot;&lt;root&gt;text&lt;/root&gt;&quot;
  Set objXMLDoc2 = CreateXMLDOMFromString(sText)
  If objXMLDoc2 is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateXMLDOMFromString&quot;, &quot;&quot;)
  End If
  Set objXMLParent2 = CreateChildElementByName(objXMLDoc2.DocumentElement, &quot;Modules&quot;, &quot;modules parent node dest&quot;)
  If objXMLParent2 is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If

  Set objXMLParent2 = MoveChildElements(objXMLParent, objXMLParent2)

  Set objXMLNode = ChildElementByName(objXMLParent2, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If

  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 1&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 2&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If
  Set objXMLNode = CreateChildElementByName(objXMLParent, &quot;Macro&quot;, &quot;macro node 3&quot;)
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;CreateChildElementByName&quot;, &quot;&quot;)
  End If

  Set objXMLParent2 = Nothing
  Set objXMLParent2 = MoveChildElements(objXMLParent, objXMLParent2)

  Set objXMLNode = ChildElementByName(objXMLParent2, &quot;Macro&quot;) 
  If objXMLNode is Nothing Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.BaseName &lt;&gt; &quot;Macro&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
  If objXMLNode.Text &lt;&gt; &quot;macro node 1&quot; Then
    Call Reporter.ReportEvent(micFail, &quot;ChildElementByName&quot;, &quot;&quot;)
  End If
</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/2011/12/08/copychildelements/" rel="bookmark" class="crp_title">CopyChildElements (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/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/2008/08/06/p_setxmlelementattrtext/" rel="bookmark" class="crp_title">p_SetXMLElementAttrText (QTP, TestComplete, VBScript)</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/12/06/movechildelements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to select random list item (QTP, VBScript)</title>
		<link>http://automation-beyond.com/2011/11/24/how-to-select-random-list-item/</link>
		<comments>http://automation-beyond.com/2011/11/24/how-to-select-random-list-item/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 10:36:55 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Source code]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[How]]></category>
		<category><![CDATA[item]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[pick]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[rnd]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[to]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[WebList]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4723</guid>
		<description><![CDATA[Description  Get object reference. Get total number of items in the list. Generate an index within the given range. Select item by index. Implementation Dim objPage, objList Dim boolRC Dim intItemsCount, intRndItem 'Assumptions: ' &#34;Google Advanced Search&#34; page is up ' &#34;Results per page&#34; WebList exists and enabled 'Get page object Set objPage = Browser(&#34;CreationTime:=0&#34;).Page(&#34;title:=Google Advanced Search&#34;) [...]]]></description>
			<content:encoded><![CDATA[
<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 object reference. Get total number of items in the list. Generate an index within the given range. Select item by index.</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: ;">

Dim objPage, objList
Dim boolRC
Dim intItemsCount, intRndItem

'Assumptions:
' &quot;Google Advanced Search&quot; page is up
' &quot;Results per page&quot; WebList exists and enabled

'Get page object
Set objPage = Browser(&quot;CreationTime:=0&quot;).Page(&quot;title:=Google Advanced Search&quot;)
boolRC = objPage.Exist(0)
If Not boolRC Then
 ExitTest
End If

'Get list object
Set objList = objPage.WebList(&quot;name:=num&quot;)
boolRC = objList.Exist(0)
If Not boolRC Then
 ExitTest
End If

'Get number of list items
intItemsCount = objList.GetROProperty(&quot;items count&quot;)
'Create random index
Randomize
intRndItem = CInt(Rnd*intItemsCount)
'Select the item
'Note: selection by index is zero-based
objList.Select &quot;#&quot; &amp; intRndItem
</pre>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2007/12/23/custom-lists-winrunner/" rel="bookmark" class="crp_title">Custom lists: Select Multi / Select All with WinRunner</a></li><li><a href="http://automation-beyond.com/2007/11/15/test-log-messages/" rel="bookmark" class="crp_title">Test Log Messages</a></li><li><a href="http://automation-beyond.com/2011/07/19/xmlnode2dictionary/" rel="bookmark" class="crp_title">XMLNode2Dictionary (QTP, TestComplete, VBScript)</a></li><li><a href="http://automation-beyond.com/2009/09/23/gp-automation-vbscript-limitation/" rel="bookmark" class="crp_title">GP/QTP Automation: Overcoming VBScript limitation with Excel macros</a></li><li><a href="http://automation-beyond.com/2010/03/04/manually-get-dexterity-gui-field-names/" rel="bookmark" class="crp_title">How to manually get Dexterity GUI field names</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/11/24/how-to-select-random-list-item/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personal Recommendation: Rapid Software Testing</title>
		<link>http://automation-beyond.com/2011/11/14/personal-recommendation-rst/</link>
		<comments>http://automation-beyond.com/2011/11/14/personal-recommendation-rst/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 10:42:42 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Messages]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Albert Gareev]]></category>
		<category><![CDATA[answers]]></category>
		<category><![CDATA[best]]></category>
		<category><![CDATA[course]]></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[Michael Bolton]]></category>
		<category><![CDATA[questions]]></category>
		<category><![CDATA[rapid]]></category>
		<category><![CDATA[Rapid Software Testing]]></category>
		<category><![CDATA[RST]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4891</guid>
		<description><![CDATA[Note. The reason of this posting is two-fold: While considering taking the Rapid Software Testing course I found surprisingly little of feedback information on testers&#8217; blogs, and none of that addressed the questions I actually had. So I&#8217;m fixing this issue retrospectively. There are too many aggressive pseudo-education &#8220;courses&#8221; or scamming certification schemas advertised on [...]]]></description>
			<content:encoded><![CDATA[
<p>Note. The reason of this posting is two-fold:</p>
<ul>
<li>While considering taking the <a href="http://www.developsense.com/courses.html" target="_blank">Rapid Software Testing</a> course I found surprisingly little of feedback information on testers&#8217; blogs, and none of that addressed the questions I actually had. So I&#8217;m fixing this issue retrospectively.</li>
<li>There are too many aggressive pseudo-education &#8220;courses&#8221; or scamming certification schemas advertised on every corner. I think it&#8217;s time for all the testers who care about the craft to start caring about signal/noise ratio. I do it with my personal endorsement.</li>
</ul>
<p>&nbsp;</p>
<p>And here it goes in a question-answer format.</p>
<p><strong><em>- Why should I take the course if there are a lot of materials available online, for free? </em></strong></p>
<p>Yes, there are many articles, blog posts and presentations available online on <a href="http://www.satisfice.com/" target="_blank">James Bach’s</a> and <a href="http://www.developsense.com/" target="_blank">Michael Bolton’s</a> web-sites. They are provided in a form of condensed knowledge. They are conclusions. And the course is rich with hands-on, practical exercises, which allowed me to digest the theory and acquire the conclusions as if they were my own. Plus the special exercises giving a chance to try what have just been learnt.</p>
<p>Yet the materials available online served another important purpose for me. Reading them, studying them, prepares for taking of the course at much deeper level, as there are many layers of knowledge there. </p>
<p><strong><em>-  What I wish was different?</em></strong></p>
<p> The first answer would be the length. I wish it was 5 days long. Some areas were touched too briefly. (Though Michael Bolton explicitly said that he leaves a lot for personal learning, and that’s what I’m doing quite actively). Anyway, if there was a “Follow up RST course” I would have gladly gone for it. Since we don’t have one, I channel my energy into personal learning and online collaboration with likeminded testers, especially at Weekend Testing Americas.</p>
<p>In technical aspects, I wish we talked more about multi-tier, large scale applications. That’s what I deal with at work, and that’s where I see – applying the heuristic-based approach gives especially critical advantages. </p>
<p><strong><em>- What this course does not teach?  (and some about what it does)</em></strong></p>
<p>It does not teach abstract definitions and bookish techniques. However, it teaches to critically assess claims and statements without worshipping to labels and metrics.  This prepares to be comfortable and efficient as a tester in a variety of environments with their unique contexts and challenges.</p>
<p>The course teaches to develop and thoughtfully apply testing techniques as needed and as long as they make sense (dealing with the problem of “best practices”).</p>
<p>The course doesn’t teach testing politics or staff management. However, we were given some effective communication techniques that one can apply in all levels of the organization.</p>
<p>The course doesn’t teach either programming or ‘test automation’. However, Michael Bolton demonstrated some impressive examples on how use of tools and scripts amplifies effectiveness of tests. I’ve also learnt about the ways how an automation developer can increase his value for the testing team. </p>
<p><strong><em>- Which part I didn’t get?</em> </strong></p>
<p>Or, at least, I’m not sure I got it the way it was intended.</p>
<p>This is test estimation part. I know from my own experience, and I totally agree with the concept that nobody really cares about “test estimation” – testing just absolutely must fit the development schedule (“Release date is written in stone!”). That is why, as a contractor, and a test lead, I pretty much do “test budgeting” trying to use the time given most effectively instead of demanding for the time budget based on the estimates. And budgeting time boxes for session-based exploratory testing – I get that. But how to plan “test execution phase”? How to bake in time for investigation of unknown problems and re-testing of unknown number of bug fixes? Possibly, these questions are addressed in “Rapid Software Testing for Test Managers” course? I’m definitely going to take this one. </p>
<p><strong><em>- What I found especially challenging in the course?</em> </strong></p>
<p>The course is called <em>Rapid</em> Software Testing for a reason. Yet, I’m rather analytical type of person. You know – gather [all relevant] information, build a picture (model), carefully review, etc.. Of course, in testing, redundancy of information is a luxury one rarely has. As the course teaches rapid and fallible methods of assessment (heuristics) in conditions of lack of information and time pressure, I felt that my ‘natural habits’ anchor me. This was a bit frustrating at times. </p>
<p><strong><em>- Did I feel disappointed in some of my expectations about the course?</em></strong></p>
<p>No, not at all. In fact, I gained more than I expected. However, I used to see some comments online expressing vague disappointment. With regards to those, I can say – the course is not a magical initiation which instantly turns students into testing experts. Instead, it shows the lead and charges with the inspiration to follow the road of continuous learning. And that’s the most valuable takeaway. </p>
<p><strong><em>- What I have gained I didn’t expect at all?</em></strong></p>
<p>I have read some wide-known books about testing and even much more online article. I heard of the <em>notion</em> of a ‘testing story’ in online talks within the context-driven community. But the course gave me clear and concise points – what is that, why is that important, and even how to do that – <em>telling testing story</em>.</p>
<p><strong><em>-  To whom would I recommend attending the course?</em></strong></p>
<p> Myself, 5 years ago. </p>
<p>Another answer: anybody involved in software development, especially testers, programmers, business analysts – and their managers.</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2011/12/29/bbst1/" rel="bookmark" class="crp_title">BBST: Something to Brag About</a></li><li><a href="http://automation-beyond.com/2011/08/02/my-path-in-exploratory-testing/" rel="bookmark" class="crp_title">My Path In Exploratory Testing</a></li><li><a href="http://automation-beyond.com/2011/05/15/michael-bolton-interview/" rel="bookmark" class="crp_title">Exploratory Questions to Michael Bolton</a></li><li><a href="http://automation-beyond.com/2011/04/19/functionality-testing-mindmap/" rel="bookmark" class="crp_title">Functionality Testing &#8211; Mindmap</a></li><li><a href="http://automation-beyond.com/2011/04/18/claims-testing-mindmap/" rel="bookmark" class="crp_title">Claims Testing &#8211; Mindmap</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/11/14/personal-recommendation-rst/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exploratory Security Testing Tool &#8211; GroundSpeed</title>
		<link>http://automation-beyond.com/2011/11/07/groundspeed/</link>
		<comments>http://automation-beyond.com/2011/11/07/groundspeed/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 15:28:09 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[WTAmericas]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Example]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[Groundspeed]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Weekend]]></category>
		<category><![CDATA[WTA]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4888</guid>
		<description><![CDATA[Modern applications have a few layers of &#8216;defense&#8217; that are supposed to protect against unauthorized access. The very first layer is at the front-end, merged with the UI. The UI part, client-side part, is at user&#8217;s computer and therefore users have the most capacities to manipulate it. Penetration testing is a purely exploratory testing activity. [...]]]></description>
			<content:encoded><![CDATA[
<p>Modern applications have a few layers of &#8216;defense&#8217; that are supposed to protect against unauthorized access. The very first layer is at the front-end, merged with the UI. The UI part, client-side part, is at user&#8217;s computer and therefore users have the most capacities to manipulate it. <em><a href="http://en.wikipedia.org/wiki/Penetration_test">Penetration testing</a></em> is a purely exploratory testing activity. By using trial-and-error approach we can learn about particular weaknesses in the application, and then use that knowledge to gain some advantage. Of course, as testers, we use that knowledge to evaluate the risks and to help improving the application&#8217;s security. Although complete security testing requires specific knowledge and skills, there&#8217;s no reason why Black-Box testers can not expand their arsenal with some quick, simple, yet powerful penetration testing techniques.</p>
<p>Groundspeed is a free tool that allows to learn about application and to manipulate it in the ways users normally can not, thus helping to expand the testing scope.</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>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="199">Area of use</td>
<td valign="top" width="420">Security (Penetration) Testing of Web Applications</td>
</tr>
<tr>
<td valign="top" width="199">Platform (OS)</td>
<td valign="top" width="420">Windows</td>
</tr>
<tr>
<td valign="top" width="199">Vendor</td>
<td valign="top" width="420"><a href="http://groundspeed.wobot.org/" target="_blank">Open Source</a></td>
</tr>
<tr>
<td valign="top" width="199">Author</td>
<td valign="top" width="420"><a href="http://www.linkedin.com/in/felipemoreno" target="_blank">Felipe Moreno</a></td>
</tr>
<tr>
<td valign="top" width="199">Twitter</td>
<td valign="top" width="420"><a href="http://twitter.com/#!/fmsnewyork" target="_blank">@fmsnewyork</a></td>
</tr>
<tr>
<td valign="top" width="199">Price</td>
<td valign="top" width="420">Free</td>
</tr>
<tr>
<td valign="top" width="199">Usability (1-5, 5 – Best)</td>
<td valign="top" width="420">4</td>
</tr>
<tr>
<td valign="top" width="199">Link</td>
<td valign="top" width="420"><a href="https://addons.mozilla.org/en-US/firefox/addon/groundspeed/">https://addons.mozilla.org/en-US/firefox/addon/groundspeed/</a></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>
<p>Recently, I conducted Weekend Testing <a href="http://weekendtesting.com/archives/2277" target="_blank">session #21</a> where we worked through a few exercises, and then discussed new testing techniques enabled by the Groundspeed.</p>
<p>1. <strong>B</strong>ypass front-end validation of values.</p>
<p>2. <strong>I</strong>nput values that you are normally not able to input – via hidden fields.</p>
<p>3. <strong>T</strong>rigger function calls in the application that are normally disabled or not accessible.</p>
<p>An unexpected outcome was a shorthand mnemonic crafted by <a href="http://www.mkltesthead.com/p/about-me.html" target="_blank">Michael Larsen</a>: &#8220;Remember the BIT&#8221;.</p>
<p>&nbsp;</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2011/11/01/mark-draw-fire/" rel="bookmark" class="crp_title">Mark! Draw! Fire!</a></li><li><a href="http://automation-beyond.com/2010/03/25/security-tools-cacls/" rel="bookmark" class="crp_title">Security Administration Tool &#8211; Microsoft CACLS</a></li><li><a href="http://automation-beyond.com/2010/04/20/security-tools-setacl/" rel="bookmark" class="crp_title">Security Administration Tool &#8211; (Open Source) SetACL</a></li><li><a href="http://automation-beyond.com/2010/02/14/active-directory-scripts/" rel="bookmark" class="crp_title">Active Directory &#8211; Sample Scripts (Excel/VBA)</a></li><li><a href="http://automation-beyond.com/2010/04/27/setacl-command-line-examples/" rel="bookmark" class="crp_title">SetACL command line examples</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/11/07/groundspeed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mark! Draw! Fire!</title>
		<link>http://automation-beyond.com/2011/11/01/mark-draw-fire/</link>
		<comments>http://automation-beyond.com/2011/11/01/mark-draw-fire/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 13:55:00 +0000</pubDate>
		<dc:creator>Albert Gareev</dc:creator>
				<category><![CDATA[WTAmericas]]></category>
		<category><![CDATA[2. Testing]]></category>
		<category><![CDATA[Albert Gareev]]></category>
		<category><![CDATA[exploratory]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[penetration]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[training]]></category>
		<category><![CDATA[Weekend]]></category>
		<category><![CDATA[Weekend Testing]]></category>
		<category><![CDATA[Weekend Testing Americas]]></category>

		<guid isPermaLink="false">http://automation-beyond.com/?p=4878</guid>
		<description><![CDATA[Archery is a craft, practice, and skill. I dedicated a fair amount of time in my youth when I practiced sports archery, and I still like Medieval age novels. Needless to say, now I dedicate a lot of my time to the craft of testing &#8211; but there are analogies to archery that we can [...]]]></description>
			<content:encoded><![CDATA[
<p>Archery is a craft, practice, and skill. I dedicated a fair amount of time in my youth when I practiced sports archery, and I still like Medieval age novels. Needless to say, now I dedicate a lot of my time to the craft of testing &#8211; but there are analogies to archery that we can use&#8230;</p>
<p>In the scripted approach to testing everything is dominated by numbers. You know, &#8220;10,000 test cases in scope&#8221;, &#8220;100 days to &#8216;execute&#8217;&#8221;, &#8220;20 test cases per day per resource&#8221;. Well, in Medieval Age some commanders tried to follow similar &#8216;straight forward&#8217; approach: &#8220;1 knight is as strong as 10 regular soldiers&#8221;, &#8220;3 to 1 strength ratio guarantees victory&#8221;.<br />
Yet as History knows, a straight forward approach almost never worked. There are too many factors that may throw off balance and screw up the most careful planning. The presence of Longbow Archers was one of them. At the <a title="Wikipedia link" href="http://en.wikipedia.org/wiki/Battle_of_Cr%C3%A9cy" target="_blank">Battle of Cressy</a>, heavily outnumbered Anglo-Welsh army was victorious as a result of superior training and tactics of Longbow Archers.<br />
In exploratory testing, we are constantly sharpening our skills, and we use asymmetric approach to overcome outnumbering hordes of bugs.<br />
I have been meaning to offer fellow Weekend Testers some armour-piercing practice for a while, but I was held by inability to bring in some solid testing challenge. Finally, my thought is &#8211; that shouldn&#8217;t prevent us from conducting a group training session. I will offer examples I have prepared, and we can together discuss the techniques we want to include in our arsenal.<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>
<h3>How to participate</h3>
<p>1. Add “WeekendTestersAmericas” to your Skype contacts if you haven’t already. </p>
<p>2. Fifteen minutes prior to the start of the session, message “WeekendTestersAmericas” and ask to be added to the chat session. Once we see you, we will add you to the session.</p>
<p>Also recommended: Send an email to <a href="mailto:WTAmericas@gmail.com">WTAmericas@gmail.com</a> with the request to add you to mailing list to receive announcements. </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>
<h4>Be prepared</h4>
<p>Install <a href="http://www.firefox.com/" target="_blank">Firefox Browser</a>.</p>
<p>Install <a title="download" href="https://addons.mozilla.org/en-US/firefox/addon/groundspeed/" target="_blank">GroundSpeed</a> add-on for Firefox.</p>
<h4>Be on time</h4>
<p>Date: Saturday, November 5, 2011</p>
<p>Time: 09:00 a.m. – 11:00 a.m. PDT. <a title="time converter" href="http://timeanddate.com/worldclock/fixedtime.html?msg=WTA21&amp;iso=20111105T12&amp;p1=250&amp;ah=2" target="_blank">Check in your time zone</a>.</p>
<h4> </h4>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://automation-beyond.com/2009/05/25/excel-vbscript/" rel="bookmark" class="crp_title">Excel File Worksheet compare (QTP, VBScript)</a></li><li><a href="http://automation-beyond.com/2011/04/25/testing-and-hiring/" rel="bookmark" class="crp_title">Testing and Hiring</a></li><li><a href="http://automation-beyond.com/2008/05/10/proverbs-testing-and-communication/" rel="bookmark" class="crp_title">Proverbs and quotes about Testing and Communication</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/2010/08/24/testcomplete-gui-extensibility/" rel="bookmark" class="crp_title">TestComplete GUI extensibility with Object Mapping</a></li></ul></div>
]]></content:encoded>
			<wfw:commentRss>http://automation-beyond.com/2011/11/01/mark-draw-fire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

