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

<channel>
	<title>STANDARD DeViATiON</title>
	<atom:link href="http://www.stdeviation.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stdeviation.com/blog</link>
	<description>Making the world a better place. One feature at a time.</description>
	<lastBuildDate>Mon, 24 Oct 2011 08:50:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>New Beginnings&#8230;</title>
		<link>http://www.stdeviation.com/blog/2011/10/24/new-beginnings/</link>
		<comments>http://www.stdeviation.com/blog/2011/10/24/new-beginnings/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 08:36:22 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stdeviation.com/blog/?p=517</guid>
		<description><![CDATA[Its been a year of change and finally, after 3 years on the wordpress.com platform, STANDARD DeViATiON has a new (self hosted) home and a fresh new look. For those that subscribe, please remember to update your bookmarks and feeds. STANDARD DeViATiON&#8217;s new home is at http://www.stdeviation.com/blog And you can find the new STANDARD DeViATiON RSS [...]]]></description>
			<content:encoded><![CDATA[<p>Its been a year of change and finally, after 3 years on the wordpress.com platform, STANDARD DeViATiON has a new (self hosted) home and a fresh new look.</p>
<p>For those that subscribe, please remember to update your bookmarks and feeds.</p>
<p>STANDARD DeViATiON&#8217;s new home is at <a href="http://www.stdeviation.com/blog">http://www.stdeviation.com/blog</a></p>
<p>And you can find the new STANDARD DeViATiON RSS feed here <a href="http://www.stdeviation.com/rss">http://www.stdeviation.com/rss</a></p>
<p>Stay tuned for some new content and enjoy the new look!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2011/10/24/new-beginnings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Host Based Analytics Testing &#8211; Source Release</title>
		<link>http://www.stdeviation.com/blog/2011/05/10/host-based-analytics-testing-source-release/</link>
		<comments>http://www.stdeviation.com/blog/2011/05/10/host-based-analytics-testing-source-release/#comments</comments>
		<pubDate>Tue, 10 May 2011 03:11:47 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=421</guid>
		<description><![CDATA[It&#8217;s been a while since I last posted an update on the host based analytics initiative. Unfortunately, the project hasn&#8217;t received the love and attention its deserved over the last year, mostly because of changes in my role / competing priorities. As originally promised, I&#8217;ve decided to finally publish the source code for this project [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since I last posted an update on the host based analytics initiative. Unfortunately, the project hasn&#8217;t received the love and attention its deserved over the last year, mostly because of changes in my role / competing priorities. As originally promised, I&#8217;ve decided to finally publish the source code for this project to github. Thanks to those who have emailed and commented over the last 12 months asking for code samples &#8211; I hope this work can inspire you to contribute to, and build on the host based analytics testing concept.<br />
As always, the release comes with a disclaimer. Some of the work needs (much) polish (particularly the viewer component). Again, the lack of time meant that much has been built, tested and left in its original state so please excuse the unpleasantness (default var names, structure etc). Even better, feel free to fix it <img src='http://www.stdeviation.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Documentation is lacking (apart from my blog posts) so I&#8217;m happy to provide assistance via email to anyone who has trouble configuring the beacon / viewer. Requirements wise, I&#8217;d recommend you run IIS 7, MSSQL 2008 and .Net 3.5. If you prefer to run IIS 6, you can still host the beacon in ASPX page mode (unlike IIS 7 where you can host it as a HTTP listener).</p>
<p>Finally, I&#8217;d like to acknowledge the support of my employer <a title="SEEK, Australia's no. 1 jobs, career, employment and recruitment site" href="http://www.seek.com.au" target="_blank">seek.com.au</a> in the development and release of this project.<br />
You can find the source code for the beacon and viewer components at my github repo here:</p>
<p><a title="http://github.com/stoja" href="http://github.com/stoja" target="_blank">http://github.com/stoja</a></p>
<p>If you&#8217;re interested in following up on the previous posts in the series, take a look at:<br />
<a title="Host Based Analytics Testing - Part 1" href="http://stdev.wordpress.com/2010/01/15/selenium-automation-webanalytics/" target="_blank">Host Based Analytics Testing &#8211; Part 1</a><br />
<a title="Host Based Analytics Testing - Part 2" href="http://stdev.wordpress.com/2010/03/25/automated-web-analytics-testing-with-selenium-part-2/" target="_blank">Host Based Analytics Testing &#8211; Part 2</a><br />
<a title="Host Based Analytics Testing - Part 3" href="http://stdev.wordpress.com/2010/07/22/automated-web-analytics-testing-with-selenium-part-3/" target="_blank">Host Based Analytics Testing &#8211; Part 3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2011/05/10/host-based-analytics-testing-source-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Web Analytics Testing with Selenium :: Part 3</title>
		<link>http://www.stdeviation.com/blog/2010/07/22/automated-web-analytics-testing-with-selenium-part-3/</link>
		<comments>http://www.stdeviation.com/blog/2010/07/22/automated-web-analytics-testing-with-selenium-part-3/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 00:37:16 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[host based analytics]]></category>
		<category><![CDATA[omniture]]></category>

		<guid isPermaLink="false">https://stdev.wordpress.com/?p=346</guid>
		<description><![CDATA[It&#8217;s been well over six months since we started developing the concepts behind automated web analytics testing. It&#8217;s fair to say that much has changed in the six months since we began this journey. Our test dataset has grown tremendously and through detailed analysis, we&#8217;ve gained a thorough understanding of the data which supports our [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been well over six months since we started developing the concepts behind automated web analytics testing. It&#8217;s fair to say that much has changed in the six months since we began this journey. Our test dataset has grown tremendously and through detailed analysis, we&#8217;ve gained a thorough understanding of the data which supports our automated analysis system. Through increasing our understanding, it&#8217;s also enabled us to refine the very rules that govern what data we collect and which data we ignore, further improving the relevance and accuracy of our dataset. We&#8217;ve discovered and treated several scalability and performance issues, and today have a much more robust and scalable solution than when we first started. And finally, we&#8217;ve moved from an new and unproven concept to a practical, functional implementation which were currently trialling internally -  and as a consequence, we&#8217;ve formally named the approach &#8220;Host Based Analytics Testing&#8221;.</p>
<div id="attachment_367" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.stdeviation.com/blog/wp-content/uploads/2010/08/wa_viewer.jpg"><img class="size-medium wp-image-367" title="wa_viewer" src="http://www.stdeviation.com/blog/wp-content/uploads/2010/08/wa_viewer.jpg?w=300" alt="viewer screenshot" width="300" height="240" /></a><p class="wp-caption-text">The final product: Our custom web analytics viewer - supported by web analytics data collected via our internal collection beacon.</p></div>
<p>One item that I&#8217;ve failed to discuss in any significant detail is the role that functional test automation plays in driving this approach. Host based analytics testing will function with or without automation &#8211; but it&#8217;s potential is greatly increased in environments where test automation already exists. By relying on test automation to drive the application under test, organisations can maintain a high frequency of test resulting in more current data and more relevant results. Without functional automation, testers are required to manually drive the application under test on a regular basis in order to maintain a current representation of the web application and its associated web analytics implementation. The ideal approach of course, is to use both &#8211; test automation in conjunction with manual testing. By capturing analytics traffic from all testers, regardless of what they&#8217;re testing (they don&#8217;t need to be testing web analytics specifically) and combining it with data captured during automated testing, you can ensure the ongoing currency of your dataset.<br />
Finally, considering that I&#8217;ve specifically mentioned Selenium in the title of my posts, I should clarify that you don&#8217;t *need* to be using Selenium. You can use whichever functional automation tool you prefer, provided it has the ability to drive a web application via a web browser. I mentioned Selenium because I personally use it on a daily basis and I consider it one of the most capable tools on the market but ultimately, the choice is yours.</p>
<div id="attachment_366" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.stdeviation.com/blog/wp-content/uploads/2010/08/wa_edit.jpg"><img class="size-medium wp-image-366" title="wa_edit" src="http://www.stdeviation.com/blog/wp-content/uploads/2010/08/wa_edit.jpg?w=300" alt="edit dialog screenshot" width="300" height="179" /></a><p class="wp-caption-text">The baseline value edit dialog.</p></div>
<p>By implementing the techniques descibed in this series, organisations can reduce the typical costs associated with maintaining their web analytics implementations while also reducing their dependency on manual test resources. For the record, I do intend to release all the source code associated with this project eventually. I&#8217;ll post a few updates as our internal trial wraps up.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2010/07/22/automated-web-analytics-testing-with-selenium-part-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>41 Days, 28 Cities, 13 Countries and 30,754 Miles</title>
		<link>http://www.stdeviation.com/blog/2010/07/09/41-days-28-cities-13-countries-and-30754-miles/</link>
		<comments>http://www.stdeviation.com/blog/2010/07/09/41-days-28-cities-13-countries-and-30754-miles/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 01:10:54 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=339</guid>
		<description><![CDATA[After a six week vacation, I&#8217;m finally back to reality and back to work. The inevitable post vacation decline in my spirits hasn&#8217;t begun yet (surprisingly), despite having to deal with a serious and costly mechanical failure (my car died) and other assorted inconveniences such as the loss of my iPhone. My return to reality [...]]]></description>
			<content:encoded><![CDATA[<p>After a six week vacation, I&#8217;m finally back to reality and back to work. The inevitable post vacation decline in my spirits hasn&#8217;t begun yet (surprisingly), despite having to deal with a serious and costly mechanical failure (my car died) and other assorted inconveniences such as the loss of my iPhone.<br />
My return to reality coincides with my return to the online world. I&#8217;m back on twitter, back to blogging and looking forward to catching up on any new developments in the testing world. After 6 weeks with limited internet access, there&#8217;s quite a lot to catch up on.</p>
<p>For those interested in the details, here&#8217;s a quick overview of our trip (courtesy of tripit.com).<br />
Days 41<br />
Distance 30,754 miles / 49,494 km<br />
Cities 28<br />
Countries 13</p>
<p><strong>Places visited (in no particular order):</strong><br />
Singapore, Singapore; Athens, Greece; Barcelona, Spain; Brugge, Belgium; Cannes, France; Nice, France; Corfu, Greece; Dublin, Ireland; Dubrovnik, Croatia; Florence, Italy; Genova, Italy; Milan, Italy; Edinburgh, Scotland; Kusadasi, Turkey; Lisbon, Portugal; London, United Kingdom; Mykonos, Greece; New York, NY; Paris, France; Rhodes, Greece; Rome, Italy; Southampton, United Kingdom; Sydney, Australia; Santorini, Greece; Venice, Italy</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2010/07/09/41-days-28-cities-13-countries-and-30754-miles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Web Analytics Testing with Selenium :: Part 2</title>
		<link>http://www.stdeviation.com/blog/2010/03/25/automated-web-analytics-testing-with-selenium-part-2/</link>
		<comments>http://www.stdeviation.com/blog/2010/03/25/automated-web-analytics-testing-with-selenium-part-2/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 10:07:14 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[omniture]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=274</guid>
		<description><![CDATA[In part one of my &#8220;Automated Web Analytics Testing with Selenium&#8221; series, I described the steps necessary to configure a custom web analytics beacon to enable automated testing of your site&#8217;s web analytics code. If you missed part one, you can find it here: http://stdev.wordpress.com/2010/01/15/selenium-automation-webanalytics/ Since establishing the beacon, it has collected over 50,000 unique [...]]]></description>
			<content:encoded><![CDATA[<p>In part one of my &#8220;Automated Web Analytics Testing with Selenium&#8221; series, I described the steps necessary to configure a custom web analytics beacon to enable automated testing of your site&#8217;s web analytics code. If you missed part one, you can find it here:</p>
<p><a href="http://stdev.wordpress.com/2010/01/15/selenium-automation-webanalytics/">http://stdev.wordpress.com/2010/01/15/selenium-automation-webanalytics/</a></p>
<p>Since establishing the beacon, it has collected over 50,000 unique variables across countless pages, multiple test environments and from a combination of automated and manual test clients. While performance was a consideration in the original solution design, exposing the beacon to multiple test clients and introducing the possibility of parallel result processing quickly revealed a scalability problem. Given this (and for maintainability reasons), I decided to port the beacon from PHP, MySQL and Apache to .Net, MSSQL and IIS6. If you&#8217;re interested in the details, let me know and I can email you some info.</p>
<p>Below is a summary of some of my findings from the project with some important considerations for anyone wishing to develop their own custom analytics beacon.</p>
<h2>Be Selective</h2>
<p>In the beginning, it&#8217;s likely that your beacon will be logging ALL analytics data being sent to it. This isn&#8217;t a problem, but it can turn into one if left too long. Logging duplicate or irrelevant data will unnecessarily increase the size of your database and potentially increase processing times.<br />
After you&#8217;ve gathered a good amount of data, perform some analysis to determine whether there&#8217;s anything being logged that you don&#8217;t care about. For example, it&#8217;s very likely that you&#8217;re beacon is storing analytics variables which detail page access times. In terms of testing your analytics code, these dynamic variables probably don&#8217;t reveal much and can be ignored.<br />
In addition, ensure that any url&#8217;s you&#8217;re using to identify pages are stripped of any variable query string data before logging. You&#8217;ll likely be using these urls to identify unique pages so this variable data can mislead your beacon into logging another instance of what is actually an existing page.</p>
<h2>Manage Undefined Variables</h2>
<p>Undefined variables might show up in your analytics query string data. You wont know where and you won&#8217;t know when so it&#8217;s important to handle this data appropriately within your beacon code. Before deciding whether or not to store undefined variables (in some fashion), think of the situations where they&#8217;ll be used. For example, if the undefined variable is a host, url or page name field, it&#8217;s very likely that these core attributes will be used to query the database at a later stage. Ultimately, analytics data doesn&#8217;t mean much if you don&#8217;t know where it came from or what page it relates too but use your own judgement as to whether to keep or discard these records.</p>
<h2>Single Page, Multiple Instances</h2>
<p>In the web analytics world, a single page can have several different instances based on the path taken through the site to reach it. In order to log data for each of these instances, ensure that you log based on unique url and referrer, otherwise your beacon will overwrite the same instance of the page with each set of new variables that it receives.</p>
<h2>Database Indexing</h2>
<p>Naturally, exposing your beacon to multiple test clients increases the amount of data being processed and written to the database. Combine this with an all-inclusive logging approach (at least in the early stages of data collection) and chances are, you&#8217;ll be storing thousands of records. To prove the importance of indexing, my performance tests revealed that once the database grew to 100,000+ records, beacon processing and response times jumped from &lt; 1 second to approximately 10 seconds. In my specific example, this ultimately resulted on our test automation timing out waiting for the analytics request to complete. In this particular case, indexing was a simple solution.</p>
<p>For those considering automating their manual analytics testing effort, the above steps should help you develop an effective and efficient analytics logging solution. In the last post of this series, I&#8217;ll detail the final steps required to fully automate your analytics testing, including baselining your resultset and displaying your test results.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2010/03/25/automated-web-analytics-testing-with-selenium-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Melbourne Selenium Meetup Group</title>
		<link>http://www.stdeviation.com/blog/2010/01/19/melbourne-selenium-meetup-group/</link>
		<comments>http://www.stdeviation.com/blog/2010/01/19/melbourne-selenium-meetup-group/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 04:39:11 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Melbourne]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[meetup.com]]></category>
		<category><![CDATA[sig]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=277</guid>
		<description><![CDATA[It&#8217;s been a long time coming but Melbourne finally has its very own Selenium Meetup group! Following the success of Selenium meetups in the US and UK, Melbourne&#8217;s Selenium Meetup group will give Selenium users of all skill levels the opportunity to network and discuss a variety of different topics including (but not limited to) [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time coming but Melbourne finally has its very own Selenium Meetup group!<br />
Following the success of Selenium meetups in the US and UK, Melbourne&#8217;s Selenium Meetup group will give Selenium users of all skill levels the opportunity to network and discuss a variety of different topics including (but not limited to) Selenium, Agile Testing, Test Driven Development, Behaviour Driven Development and Continuous Integration.<br />
Now that the group is live, its all about generating interest so if you know anyone in a software development / test related field that might be interested in attending (or even volunteering to present), please direct them to the Selenium Meetup group site to register their interest.</p>
<p>You can visit the official Melbourne Selenium Meetup group page by clicking on the link below.</p>
<p><a href="http://www.meetup.com/Melbourne-Selenium-Meetup-Group/">Melbourne Selenium Meetup Group</a></p>
<div style="text-align: center;"><img src="http://www.stdeviation.com/blog/wp-content/uploads/2010/01/melb.jpg" alt="melb.jpg" width="500" height="333" border="0" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2010/01/19/melbourne-selenium-meetup-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Web Analytics Testing with Selenium :: Part 1</title>
		<link>http://www.stdeviation.com/blog/2010/01/15/selenium-automation-webanalytics/</link>
		<comments>http://www.stdeviation.com/blog/2010/01/15/selenium-automation-webanalytics/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 05:38:18 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web analytics]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[omniture]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=236</guid>
		<description><![CDATA[**Before I begin, I&#8217;ve decided to make this a multi-part post. The post below will include some conceptual information and implementation requirements. I&#8217;ll be adding the remaining parts as I experiment with the concept over the next few weeks so stay tuned.** In todays world, web analytics play an important role in developing &#38; maintaining [...]]]></description>
			<content:encoded><![CDATA[<p>**Before I begin, I&#8217;ve decided to make this a multi-part post. The post below will include some conceptual information and implementation requirements. I&#8217;ll be adding the remaining parts as I experiment with the concept over the next few weeks so stay tuned.**</p>
<p>In todays world, web analytics play an important role in developing &amp; maintaining any successful web presence.<br />
As more and more organisations begin to rely on their web analytics data to drive strategic decision making, the importance of verifying your website&#8217;s web analytics code becomes paramount.</p>
<p>From a testing perspective, web analytics testing is typically done manually. In fact, I&#8217;ve never heard of if being done any other way. The process involves scouring your website with a browser based analytics profiler like <a href="https://addons.mozilla.org/en-US/firefox/addon/4001">WASP</a> and verifying that data being sent to your analytics provider is accurate. While this type of testing is relatively simple (and tedious), it&#8217;s repetitive nature makes it the perfect candidate for automation.</p>
<p>Fresh from integrating yslow performance analysis into our Selenium tests, the next step was to analyse what part Selenium could play in validating our onsite analytics code.</p>
<h2>The Concept</h2>
<p>The concept for automated web analytics testing is relatively simple. As Selenium drives GUI based tests through your web application, we intercept any outgoing analytics data, capture it and store it in a database for further processing. The process isn&#8217;t actually all that different to what&#8217;s already happening under the hood with the exception of the &#8220;intercept&#8221; component &#8211; typically, the data hits your analytics provider where its stored and processed in a similar manner. Once you&#8217;ve captured this data, it&#8217;s simply a matter of comparing it against a production baseline and identifying any differences every time you execute a test run.</p>
<h2>Environment Setup</h2>
<p>In order to implement the above, here&#8217;s a list of what I needed:</p>
<p><strong>1) A website&#8230; with web analytics code embedded.</strong><br />
In my specific context, the target site includes a significant implementation of Omniture web analytics code. The concept will work with other analytics providers too so this solution isn&#8217;t confined to a single flavour of web analytics. Ultimately, the bigger your target site and the more analytics code it includes, the more value that you&#8217;ll derive from this exercise.</p>
<p><strong>2) A machine that runs your Selenium based automation against your target site.</strong><br />
My guess is you already have something in place here so I wont go into any further detail.<br />
For the sake of transparency, I run in a Selenium Grid environment where I&#8217;ve configured multiple clients with this setup.</p>
<p><strong>3) A custom analytics host &#8211; essentially, a machine that will collect your analytics data.</strong><br />
This machine will impersonate your actual analytics provider. It needs to be running apache web server and must run a database (mysql or similar). PHP is recommended but optional (you&#8217;ll need it for (5) listed below but you can replace it with whatever technology you prefer).<br />
NOTE: I&#8217;d strongly recommend implementing this on the same machine running your showslow server as the prerequisites are the same. In fact, if you&#8217;ve already got showslow setup, this should be a pretty simple extension for you.</p>
<p><strong>4) A hosts file redirect which hijacks your analytics traffic and directs it to your custom analytics host in step 3</strong>. This needs to be completed on the machine performing your automated tests. Analysing your target site&#8217;s html should reveal your analytics host, for example analytics.company.com. Once you have this information, redirect all traffic accessing this host to your custom analytics host.</p>
<p><strong>5) An analytics beacon to capture, parse and store your analytics data on your custom analytics host.</strong><br />
You need a little bit of development knowledge for this bit. Similar to how yslow / showslow work, your analytics data is usually sent to your analytics provider in a query string containing a series of name / value pairs. These pairs hold the analytics variable name and associated value. In order to strip these values, you&#8217;ll need to setup a page that you can direct traffic to (this page will be hosted on your custom analytics host) which strips parameters from the query string and logs them to the database. I&#8217;d strongly recommend having a look at how showslow&#8217;s yslow beacon has been setup as the concept is practically the same. Also, I have some code in this area that I could possibly share (after I clean it up a little) so feel free to get in touch if you need some assistance. Once you&#8217;ve setup the beacon, ensure you configure apache to load the beacon page automatically when you hit the location of the page in your browser.</p>
<p>Finally, you need to actually verify the format being used to send analytics data to your analytics host. If the URL actually includes subdirectories for example, &#8220;http://analytics.company.com/site/data?test=test&amp;test1=test1&amp;&#8221;, you&#8217;ll need to set a rule in apaches httpd.conf alias_module so it can redirect any traffic including the &#8220;/site/data&#8221; component of the URL. This will ensure your analytics data is directed to the right place.</p>
<div style="text-align: center;"><img src="http://www.stdeviation.com/blog/wp-content/uploads/2010/01/config.jpg" alt="config.jpg" width="552" height="335" border="0" /></div>
<p>Once you&#8217;ve configured the above, you should have most of the pieces in place to capture and log your analytics traffic. Part 2 of this post will include details on the pro&#8217;s and con&#8217;s of this implementation as well as some important factors which need to be considered before entirely eliminating your manual web analytics test effort.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2010/01/15/selenium-automation-webanalytics/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Performance Feedback with YSlow &amp; Selenium</title>
		<link>http://www.stdeviation.com/blog/2009/10/29/yslow-selenium/</link>
		<comments>http://www.stdeviation.com/blog/2009/10/29/yslow-selenium/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 08:27:15 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=135</guid>
		<description><![CDATA[Lately I&#8217;ve been experimenting with integrating YSlow into our existing Selenium test suites. For those not familar with YSlow, its a Firefox add-on developed by Yahoo which provides page performance analysis. An excellent tool if web testing is a part of your repertoire. The Selenium / YSlow integration concept itself isn&#8217;t new. There&#8217;s a great [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been experimenting with integrating <a href="https://addons.mozilla.org/en-US/firefox/addon/5369">YSlow</a> into our existing Selenium test suites. For those not familar with YSlow, its a Firefox add-on developed by Yahoo which provides page performance analysis. An excellent tool if web testing is a part of your repertoire.</p>
<p><img src="http://www.stdeviation.com/blog/wp-content/uploads/2009/10/yslow_example.png" alt="Example: YSlow Statistics" /></p>
<p>The Selenium / YSlow integration concept itself isn&#8217;t new. There&#8217;s a great post on <a href="http://adam.goucher.ca/?p=1017">Adam Goucher&#8217;s blog</a> discussing the idea and while I wasn&#8217;t keen on tying it to our CI system, the idea of getting page performance data at the completion of our automated tests sounded great.<br />
In terms of setup, its relatively painless. The solution is based around the free Yslow firefox addon and the (opensource) ShowSlow reporting server. Given that there isn&#8217;t a lot of information available on the setup process, here&#8217;s a brief overview:</p>
<p><strong><span style="text-decoration: underline;">ShowSlow Server Setup</span></strong></p>
<p>1. Download and install Apache, PHP and MySQL (essentials will do).<br />
2. Once all of the above are setup, checkout the ShowSlow project source from <a href="http://showslow.googlecode.com/svn/trunk">here</a> and host it via Apache.<br />
3. You&#8217;ll also need to create a new database in MySQL and run in tables.sql (from the ShowSlow directory) to create all the relevant tables for ShowSlow.<br />
4. Edit config.php and supply your database credentials.<br />
5. Load the ShowSlow site in your browser on your webserver and click on the &#8220;configuring your yslow&#8221; link &#8211; you&#8217;ll need the values from this page later.</p>
<p><strong><span style="text-decoration: underline;"> YSlow Client Setup</span></strong></p>
<p>1. Create a custom Firefox profile on your Selenium RC machines (using firefox.exe -ProfileManager). The profile needs to be setup with the following attributes (at minimum):</p>
<ul>
<li>YSlow add-on installed and setup to run perf analysis on page load (set in Yslow options).</li>
<li>In about:config, set &#8220;extensions.yslow.optinBeacon&#8221; to true and &#8220;extensions.yslow.beaconUrl&#8221; to the value from your &#8220;configuring your yslow&#8221; page.</li>
</ul>
<p>2. On each Selenium RC box (the machine you&#8217;ll use to run automated tests), you&#8217;ll need to setup Selenium to use your new custom profile (using DseleniumArgs=&#8221;-firefoxProfileTemplate &#8221; argument). In order to achieve this, modify the Selenium RC launch command to include the path to the new Firefox profile you just created. For example:</p>
<p>java -jar selenium-server.jar -firefoxProfileTemplate &#8220;C:/SELENI~2/SELENI~1&#8243;</p>
<p>NOTE: You need to provide the profile path using the DOS short name format. For more info on finding your firefox profile directory, see: http://support.mozilla.com/en-US/kb/profiles</p>
<p>Once you&#8217;ve completed the setup, running your automated tests should result in some YSlow performance statistics being sent to your ShowSlow server.</p>
<p>It&#8217;s worth noting that there are some downsides to this setup. Firstly, its Firefox only (currently) so any tests run against other browsers wont record any results with ShowSlow. And finally, it records page performance data for every page that your browser loads. This means that you&#8217;ll get performance data for URL&#8217;s that you don&#8217;t necessarily care about like those used by Selenium and those with variable query strings. While you can&#8217;t explicitly tell YSlow to not record performance data for these URL&#8217;s, you can modify the code within ShowSlow to prevent these URL&#8217;s from contaminating your results (eg./ I&#8217;m currently stripping some variable data out of certain URL&#8217;s as well as filtering the ShowSlow ouput).</p>
<p>If you&#8217;re already using Selenium as the basis for your automated testing, I&#8217;d definitely recommend tying it in with YSlow. With a little extra effort up front, it&#8217;ll add ongoing value to your automated tests.</p>
<p>UPDATE: It seem that 2.0b6 is the last that works correctly with the current version of ShowSlow. Version 2.0.1 of Yslow seems to rely on POST&#8217;s to send the full set of performance data to the beacon server. Version 2.0.1 will still work, you&#8217;ll just notice that the details page has a &#8220;0&#8243; value for all of the Yslow Breakdown results.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2009/10/29/yslow-selenium/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Test Automation for the Masses</title>
		<link>http://www.stdeviation.com/blog/2009/10/07/test-automation-for-the-masses/</link>
		<comments>http://www.stdeviation.com/blog/2009/10/07/test-automation-for-the-masses/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 06:48:23 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=120</guid>
		<description><![CDATA[Building your case for automation? Well, put your wallet away. Historically, the costs associated with implementing automation, particularly those associated with automation tools have been large. Big name tools usually have all the bells and whistles. Record and playback, test runners, reporting suites&#8230; all integrated into the same package. The question is&#8230; is this all [...]]]></description>
			<content:encoded><![CDATA[<p>Building your case for automation? Well, put your wallet away.<br />
Historically, the costs associated with implementing automation, particularly those associated with automation tools have been large.<br />
Big name tools usually have all the bells and whistles. Record and playback, test runners, reporting suites&#8230; all integrated into the same package. The question is&#8230; is this all still necessary?</p>
<p>Big vendors like HP &amp; IBM have capitalised on a long period where test automation as a profession was immature. At the time, test automation was a niche dominated by the big players. Choice was limited and if you managed to settle on a tool, it&#8217;s very likely that it was a costly decision. In today&#8217;s world, test automation as a profession is no longer immature&#8230; and its no longer a niche market.</p>
<p>Open source tools like <a href="http://seleniumhq.org">Selenium</a> are now competing head to head with the major players in the test automation space. Granted, most open source tools don&#8217;t come shrink wrapped and they don&#8217;t come with a bundle of brochures but does it really matter?<br />
Functionally, open source tools allow unparalleled flexibility. Don&#8217;t like the reporting component that comes with your tool? Then just switch it to something more suitable&#8230; or write your own. Also, you can forget the support contracts and maintenance agreements. Upgrades are free and support is an email / forum post / tweet away.</p>
<p>The test automation game is changing&#8230; in fact, its been changing for a while.<br />
Open source test automation tools make automation available to the masses. Not only that, but in most cases, they do it better.<br />
So, if you&#8217;re in a position to be considering the software that will form the core of your test automation framework, think twice before reaching for your wallet (or more appropriately, asking your boss to reach for theirs). Times have changed and you have a choice. Personally, I see no compelling reason to invest thousands of dollars into something that I can get for free.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2009/10/07/test-automation-for-the-masses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better late than never&#8230; CITCON Brisbane 2009</title>
		<link>http://www.stdeviation.com/blog/2009/10/06/better-late-than-never-citcon-brisbane-2009/</link>
		<comments>http://www.stdeviation.com/blog/2009/10/06/better-late-than-never-citcon-brisbane-2009/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 00:19:36 +0000</pubDate>
		<dc:creator>Steven Stojanovski</dc:creator>
				<category><![CDATA[automation]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://stdev.wordpress.com/?p=106</guid>
		<description><![CDATA[It&#8217;s been a while since my last post. I&#8217;ve got no real excuse other than the last 4 months have felt more like 4 weeks. So, as promised 4 months ago, a few words about CITCON Brisbane 2009. Firstly&#8230; the format of the conference. The &#8220;open spaces&#8221; format is quite effective. It seemed to inspire [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a while since my last post. I&#8217;ve got no real excuse other than the last 4 months have felt more like 4 weeks.<br />
So, as promised 4 months ago, a few words about CITCON Brisbane 2009.</p>
<p>Firstly&#8230; the format of the conference.<br />
The &#8220;open spaces&#8221; format is quite effective. It seemed to inspire a lot more discussion than a more typical presentation format.<br />
Given that topics are defined based on input from the attendees, I found that there was rarely a case where we weren&#8217;t discussing something that was of interest or value to me. In contrast, there were a few occasions where discussions diverted from the &#8220;agreed&#8221; topic to other matters. The general rule in these cases is that everyone has the right to walk out and sit in on another session&#8230; and I did on a couple of occasions.</p>
<p>In terms of content, we discussed everything from BDD to cloud based testing solutions. Believe me, even if you&#8217;re fairly confident about your position in the testing world, you&#8217;ll learn something new at CITCON. It&#8217;s worth mentioning that the conference is opensource-centric, so don&#8217;t expect to hear much about .Net. That&#8217;s not to say you cant talk about it, just that its probably not at the top of everyone&#8217;s list.<br />
Regardless, most of the examples shown at CITCON aren&#8217;t technology specific and the same patterns can be applied in your organisation&#8217; technology of choice.</p>
<p>Overall, CITCON was well worthwhile. The opportunity to share experiences with other testers was invaluable. CITCON is the perfect forum to raise and discuss the challenges we regularly encounter in our roles. Even if you don&#8217;t think you have much to contribute, you&#8217;ll be surprised at how much you actually have in common with other testers.</p>
<p>In closing, I should mention that I was really impressed by the number of organisations pushing the envelope in terms of test automation. The fact that most of these organisations were relatively small was inspirational&#8230; proof that you don&#8217;t need a big budget to implement a successful test automation strategy (I&#8217;ll talk more about this later).</p>
<p>If you have the opportunity, CITCON is well worth your time.<br />
For info on the 2010 event in New Zealand, go to: <a href="http://citconf.com/">http://citconf.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stdeviation.com/blog/2009/10/06/better-late-than-never-citcon-brisbane-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

