<?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>Altentee » Performance &#38; Test Automation Experts &#187; Altentee</title>
	<atom:link href="http://altentee.com/blogs/category/altentee/feed/" rel="self" type="application/rss+xml" />
	<link>http://altentee.com</link>
	<description>Performance and Test Automation Experts</description>
	<lastBuildDate>Mon, 26 Mar 2012 01:03:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Gridin&#8217;it again</title>
		<link>http://altentee.com/blogs/2012/gridinit-again/</link>
		<comments>http://altentee.com/blogs/2012/gridinit-again/#comments</comments>
		<pubDate>Sun, 25 Mar 2012 21:35:58 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[Gridinit]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1335</guid>
		<description><![CDATA[It&#8217;s been a while and I&#8217;ve been reasonably busy starting a new family and getting on with Altentee client work. I&#8217;m still galavanting about in the commercial performance testing space working on all sorts of target systems with a mixed bag of commercial and open source tools. In the meantime, and the purpose of this [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">It&#8217;s been a while and I&#8217;ve been reasonably busy starting a new family and getting on with Altentee client work. I&#8217;m still galavanting about in the commercial performance testing space working on all sorts of target systems with a mixed bag of commercial and open source tools.</p>
<div style="text-align: center;"><img class="aligncenter" style="text-align: center;" title="no 1 for service" src="http://us.dphoto.com/10/blog/151861-zfms3v.jpg" alt="" width="400" height="300" /></div>
<p>In the meantime, and the purpose of this post, I&#8217;d like to re-introduce you to <a href="http://gridinit.com">Gridinit.com</a>. In its third iteration (or third re-invention) it serves as a collection of performance and test automation tools, bound together in the cloud and reporting as a single entity. The tools I&#8217;m using are:</p>
<div id="_mcePaste">
<ul>
<li><a href="http://jmeter.apache.org/">JMeter</a> for high volume protocol based load testing. I favour this tool because it allows for more complex test design (emulate user cache, session cookies, header manipulation, conditional logic) whilst still being able to achieve reasonably high concurrency and throughput from a single machine.</li>
<li><a href="http://www.joedog.org/index/siege-manual">Siege</a> which is basically a high volume url basher. Sometimes it&#8217;s easier just to whack a front page and associated resources to get a very basic indication of performance. Tools such as Siege are good for this high volume type load. Soon to be added will be <a href="http://www.hpl.hp.com/research/linux/httperf/">Httperf</a>, which is of a similar vein, but also obeys things like TCP keepalives so you can also test high concurrency as well as volume targets.</li>
<li><a href="http://watirwebdriver.com/">Watir WebDriver</a> for browser based testing. I always keep a small pool of real browsers running under load, as you&#8217;d be surprised what types of issues this control sample can weasel out. This is where the first iteration of Gridinit was born, until I accepted that browser based load testing is not economically viable when executed without some form of protocol based load to support it. I&#8217;m also looking at some more efficient full browser (but headless) implementations, particularly around <a href="http://www.phantomjs.org/">phantomjs</a>.</li>
</ul>
</div>
<p>No surprises there, three stable workhorses that get that job done.</p>
<p>But testing site after site and using early versions of the grid, I realised something was missing. It took a step back into the commercial world of tools to realise what that was. <strong>Canned reporting</strong>.</p>
<p>I was tired of re-inventing the collection and reporting mechanism for each test effort. Whether that was man-draulic-ally sucking in humongous CSV files, writing exorbitant parsers, or flipping through different charting packages, trust me, I tried them all.</p>
<p>I&#8217;m a big fan of templating the test effort, so you can get on with the job of analysing results, rather than worrying about the formatting of them, so I settled on the following tools for the onerous task of data collection and reporting:</p>
<div id="_mcePaste">
<ul>
<li><a href="http://logstash.net/">Logstash</a> to munge and grok pretty much any log format and ship them off to grid central via Zero MQ. This tool is awesome. Available as a jar file, I use its agents to tail all the logs of the different performance and test automation tools, grok their results into a useable format and store them in elasticsearch.</li>
<li><a href="http://www.elasticsearch.org/">Elasticsearch</a> just makes sense really. I have all this disparite data, seemingly impossible to index yet elasticsearch lets me index using JSON over HTTP, scale out to the near horizon and search in real time. You just have to use it to see what I mean.</li>
</ul>
</div>
<div id="_mcePaste">The results look something like this &#8230;</div>
<div><a rel="attachment wp-att-1341" href="http://altentee.com/blogs/2012/gridinit-again/grid/"><img class="alignnone size-full wp-image-1341" title="grid" src="http://altentee.com/blogs/wp-content/uploads/grid.png" alt="" width="729" height="731" /></a></div>
<p>Hopefully clean, simple, powerful and ready to paste into any report.</p>
<p>So now I have the means to consistently generate the load, the mechanism to index and search the data generated, and glue, being a simple rails application, to tie it all together. It&#8217;s hosted on the cloud, runs on EC2 or any Debian based image making it pretty damn portable and cheap. And best of all, it&#8217;s all open source. Yep, no monthly fees, no pay per VU, just try out the demo on <a href="http://gridinit.com">Gridinit.com</a> and if you like, <a href="https://github.com/altentee/gridinit">fork it</a>, or <a href="https://github.com/altentee/gridinit/blob/master/config/bootstrap.sh">bootstrap</a> your own image. If there&#8217;s enough interest I&#8217;ll make a snapshot of the AMI publicly available for EC2 users.</p>
<p>I&#8217;ll be tracking <a href="https://github.com/altentee/gridinit/issues">issues</a> on github and making regular updates to the site as I use it for more clients. How to use it will be blogged about here. Let me know how you go.</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2012/gridinit-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Visualizing Web Performance</title>
		<link>http://altentee.com/blogs/2011/visualizing-web-performance/</link>
		<comments>http://altentee.com/blogs/2011/visualizing-web-performance/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 03:17:30 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1332</guid>
		<description><![CDATA[This really is a cool info graphic from strangeloopnetworks.com &#8230;]]></description>
			<content:encoded><![CDATA[<p>This really is a cool info graphic from strangeloopnetworks.com &#8230;</p>
<div class="visually_embed"><img class="visually_embed_infographic" src="http://visually.visually.netdna-cdn.com/Visualizingwebsiteperformance_4e8251329bb8b_w587.jpg" alt="" /></p>
<div class="visually_embed_bar"></div>
<p><a id="visually_embed_view_more" href="http://visual.ly/visualizing-website-performance" target="_blank"></a><br />
<script src="http://visual.ly/embeder/embed.js" type="text/javascript"> </script></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/visualizing-web-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Split panes and &#8216;remembered&#8217; sessions in iTerm2</title>
		<link>http://altentee.com/blogs/2011/split-panes-and-remembered-sessions-in-iterm2/</link>
		<comments>http://altentee.com/blogs/2011/split-panes-and-remembered-sessions-in-iterm2/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 01:13:59 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1326</guid>
		<description><![CDATA[If you&#8217;re a mac user and frequently use the terminal, then you should probably have a look at iTerm2. &#8220;Its focus is on performance, internationalization, and supporting innovative features that make your life better.&#8221; Amongst its many features, I love the ability to slit a pane horizontally or vertically. (Command-Shift-D or d) It&#8217;s great being [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re a mac user and frequently use the terminal, then you should probably have a look at <a href="http://www.iterm2.com/#/section/home">iTerm2</a>.</p>
<blockquote><p>&#8220;Its focus is on performance, internationalization, and supporting innovative features that make your life better.&#8221;</p></blockquote>
<p>Amongst its many features, I love the ability to slit a pane horizontally or vertically. (Command-Shift-D or d) It&#8217;s great being able to be logged in to multiple backend servers at once.</p>
<p style="text-align: center;"><img class="aligncenter" title="split_panes" src="http://www.iterm2.com/images/screen-shots/split_panes.png" alt="" width="600" height="360" /></p>
<p>Another cool feature is the ability to send commands to all panes in a tab (Alt-Command-I), useful when editing multiple files on multiple servers or starting and stopping services etc.</p>
<p>But the coolest hack I reckon is using applescript to start up iTerm windows and sessions within them. I use something like the following to launch my workspace.</p>

<div class="wp_syntax"><div class="code"><pre class="applescript" style="font-family:monospace;"><span style="color: #0066ff;">launch</span> <span style="color: #009900;">&quot;iTerm&quot;</span>
&nbsp;
<span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #0066ff;">application</span> <span style="color: #009900;">&quot;iTerm&quot;</span>
 <span style="color: #0066ff;">activate</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">-- my project workspace</span>
 <span style="color: #ff0033; font-weight: bold;">set</span> myterm <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">&#40;</span><span style="color: #0066ff;">make</span> <span style="color: #0066ff;">new</span> terminal<span style="color: #000000;">&#41;</span>
 <span style="color: #ff0033; font-weight: bold;">tell</span> myterm
  <span style="color: #0066ff;">launch</span> session <span style="color: #009900;">&quot;varnish&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> columns <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">100</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> rows <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">30</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;cd Code/myproject &amp;amp;&amp;amp; git pull origin master&quot;</span>
 <span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #ff0033; font-weight: bold;">tell</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">-- ssh in split panes to my varnish stack</span>
 <span style="color: #ff0033; font-weight: bold;">set</span> myterm <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">&#40;</span><span style="color: #0066ff;">make</span> <span style="color: #0066ff;">new</span> terminal<span style="color: #000000;">&#41;</span>
 <span style="color: #ff0033; font-weight: bold;">tell</span> myterm
  <span style="color: #0066ff;">launch</span> session <span style="color: #009900;">&quot;varnish&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> columns <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">100</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> rows <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">60</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh vara.cbr&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;varnishlog&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> i term <span style="color: #0066ff;">application</span> <span style="color: #009900;">&quot;System Events&quot;</span> <span style="color: #ff0033; font-weight: bold;">to</span> keystroke <span style="color: #009900;">&quot;D&quot;</span> using command down
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh varb.cbr&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> i term <span style="color: #0066ff;">application</span> <span style="color: #009900;">&quot;System Events&quot;</span> <span style="color: #ff0033; font-weight: bold;">to</span> keystroke <span style="color: #009900;">&quot;D&quot;</span> using command down
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh varc.cbr&quot;</span>
 <span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #ff0033; font-weight: bold;">tell</span>
&nbsp;
 <span style="color: #808080; font-style: italic;">-- ssh in split panes to my apache stack</span>
 <span style="color: #ff0033; font-weight: bold;">set</span> myterm <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">&#40;</span><span style="color: #0066ff;">make</span> <span style="color: #0066ff;">new</span> terminal<span style="color: #000000;">&#41;</span>
 <span style="color: #ff0033; font-weight: bold;">tell</span> myterm
  <span style="color: #0066ff;">launch</span> session <span style="color: #009900;">&quot;appserver&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> columns <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">100</span>
  <span style="color: #ff0033; font-weight: bold;">set</span> <span style="color: #0066ff;">number</span> <span style="color: #ff0033; font-weight: bold;">of</span> rows <span style="color: #ff0033; font-weight: bold;">to</span> <span style="color: #000000;">60</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh appa.cbr&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> i term <span style="color: #0066ff;">application</span> <span style="color: #009900;">&quot;System Events&quot;</span> <span style="color: #ff0033; font-weight: bold;">to</span> keystroke <span style="color: #009900;">&quot;D&quot;</span> using command down
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh appb.cbr&quot;</span>
  <span style="color: #ff0033; font-weight: bold;">tell</span> i term <span style="color: #0066ff;">application</span> <span style="color: #009900;">&quot;System Events&quot;</span> <span style="color: #ff0033; font-weight: bold;">to</span> keystroke <span style="color: #009900;">&quot;D&quot;</span> using command down
  <span style="color: #ff0033; font-weight: bold;">tell</span> <span style="color: #ff0033;">the</span> <span style="color: #ff0033;">last</span> session <span style="color: #ff0033; font-weight: bold;">to</span> write <span style="color: #0066ff;">text</span> <span style="color: #009900;">&quot;ssh appc.cbr&quot;</span>
 <span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #ff0033; font-weight: bold;">tell</span>
&nbsp;
<span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #ff0033; font-weight: bold;">tell</span></pre></div></div>

<p>I did try other session management tools such as tmux, but whilst on OSX, am finding iTerm2 + Applescript perfect for my needs. YMMV.</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/split-panes-and-remembered-sessions-in-iterm2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WatirGrid 1.1.3 Released</title>
		<link>http://altentee.com/blogs/2011/watirgrid-1-1-3-released/</link>
		<comments>http://altentee.com/blogs/2011/watirgrid-1-1-3-released/#comments</comments>
		<pubDate>Thu, 26 May 2011 05:35:07 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[Gridinit]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[gridinit]]></category>
		<category><![CDATA[watirgrid]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1318</guid>
		<description><![CDATA[WatirGrid just passed 3,400 downloads. Help it get to 4,000 downloads in June 2011 and Altentee will donate a flock of 10 sheep to a respectable cause. 1.1.3 has been released which includes the following changes: Improved command line &#8211;help and more simple instructions in the Readme. There&#8217;s also a mention at watir.com/frameworks Deprecated support for -b [...]]]></description>
			<content:encoded><![CDATA[<p>WatirGrid <em>just passed 3,400 downloads</em>. Help it get to <strong><a href="https://rubygems.org/gems/watirgrid">4,000 downloads in June 2011</a></strong> and Altentee will <a href="http://www.youtube.com/v/vNnh7Jpk9LE?fs=1&amp;hl=en_US&amp;rel=0&amp;autoplay=1">donate a flock of 10 sheep to a respectable cause</a>.</p>
<p><img class="alignright" title="Sheep" src="http://donate.worldvision.org/OA_MEDIA/xxwvus/istore/L1577.jpg" alt="" width="160" height="177" /></p>
<p><strong>1.1.3</strong> has been released which includes the following changes:</p>
<ul>
<li>Improved command line &#8211;help and more simple instructions in the <a href="https://github.com/90kts/watirgrid/blob/master/README.rdoc">Readme</a>. There&#8217;s also a mention at <a href="http://watir.com/frameworks">watir.com/frameworks</a></li>
<li>Deprecated support for -b flag on provider where you used to specify a browser.<br />
Now just specify -d DRIVER flag to specify which driver you want to provide (watir, firewatir, safariwatir, webdriver or selenium)</li>
<li>Updated <a href="https://github.com/90kts/watirgrid/tree/master/examples/cucumber">basic cucumber examples</a></li>
<li><a href="https://github.com/90kts/watirgrid/blob/master/spec/webdriver_spec.rb">.control and .iterate</a> methods to yield browser objects so you don&#8217;t need to mess around with threads. Your test cases can start looking more like normal Watir code rather than a jungle of threads and remote DRb objects.</li>
<li>Put the code base on a diet with 400+ lines deleted, and cut out a lot of extraneous &#8216;features&#8217;</li>
</ul>
<p>On that last point, I&#8217;ve decided to keep <em>WatirGrid as slim as possible</em>. This means you won&#8217;t see development of extraneous features like grid management tasks such as starting/stopping VMs, killing browser processes and the like. For full fledged &#8216;grid management&#8217; you should of course check out <a href="http://gridinit.com">Gridinit</a> or Selenium Grid.</p>
<p>Gridinit is also getting some complimentary changes. Things to look out for in June include:</p>
<ul>
<li><strong>BYOG</strong> &#8211; bring your own grid, will let you use your own EC2 account, radically reducing costs and making Gridinit one of the most cost effective solutions out there.</li>
<li><strong>Zombies</strong> &#8211; currently working on a <a href="https://github.com/90kts/webdriver-zombie">remote WebDriver server implementation using Node.js and Zombie.js</a> for insanely fast headless browsers. This means you&#8217;ll get <em>much more bang for your buck </em>from a single core, and overcome many of the JavaScript woes that affect other headless solutions like HtmlUnit. Zombies will also be available for WatirGrid.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watirgrid-1-1-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gridinit Beta Released</title>
		<link>http://altentee.com/blogs/2011/gridinit-beta-released/</link>
		<comments>http://altentee.com/blogs/2011/gridinit-beta-released/#comments</comments>
		<pubDate>Fri, 13 May 2011 23:49:39 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[Gridinit]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1290</guid>
		<description><![CDATA[The Gridinit beta has been officially released this weekend. &#8221;Gridinit makes it incredibly simple to control hundreds of browsers from a single test case, with easy configuration and control of your own cloud based grid network.&#8221; You can see a quick overview and video here. Gridinit supports execution of Watir or Selenium test cases using Ruby [...]]]></description>
			<content:encoded><![CDATA[<h1><a href="http://gridinit.com?promo"><img class="alignleft" title="Gridinit" src="http://gridinit.com/images/gridinit.png" alt="Distributed testing made simple" width="146" height="50" /></a></h1>
<p>The Gridinit beta has been officially released this weekend. &#8221;<em>Gridinit makes it incredibly simple to control hundreds of browsers from a single test case, with easy configuration and control of your own cloud based grid network.</em>&#8221;</p>
<p>You can see a quick <a href="http://gridinit.com/public/overview?promo">overview and video here</a>.</p>
<p>Gridinit supports execution of <a href="http://watir.com">Watir</a> or <a href="http://seleniumhq.org/">Selenium</a> test cases using Ruby in parallel on real browsers across a grid network, allowing you to easily distribute your tests.</p>
<p><strong>Spend Less Time Scripting</strong></p>
<p>Watir and Selenium scripts let you interact with the browser, not at the protocol level. You can use the same scripts from acceptance testing right through to performance testing.</p>
<p><strong>Simply Powerful</strong></p>
<p>Gridinit gives you options to control the grid as you prefer:</p>
<ul>
<li>A command line interface available as a <a href="http://rubygems.org/gems/grid">gem</a></li>
<li>A RESTful <a href="http://gridinit.com/public/console">web service</a></li>
<li>A simple <a href="http://gridinit.com">web based interace</a></li>
</ul>
<p>Our powerful yet simple API lets you incorporate the grid into your existing test frameworks including RSpec, Capybara, Cucumber and others. Have a <a href="http://gridinit.com/public/examples">look at our examples</a> or write your own!</p>
<p><strong>Up Next</strong></p>
<p>Gridinit is the new kid on the block for cloud based distributed testing, with an eye for the Ruby community. We&#8217;ll be adding plenty more examples and integrating with more Ruby test frameworks as we listen to and explore user feedback through the beta. We&#8217;re also looking at BYO EC2 accounts, packaged installations for your own private networks, support for htmlunit, webrat and much more &#8230;</p>
<p><a href="http://gridinit.com/public/overview?promo">Learn more</a> or <a href="http://gridinit.com/public/account/signup?promo">sign up</a> for an account now.</p>
<p><span style="color: #999999;">Email us at support@gridinit.com or follow us on twitter @gridinit</span></p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/gridinit-beta-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watirgrid and Gridinit on Watir Podcast</title>
		<link>http://altentee.com/blogs/2011/watirgrid-and-gridinit-on-watir-podcast/</link>
		<comments>http://altentee.com/blogs/2011/watirgrid-and-gridinit-on-watir-podcast/#comments</comments>
		<pubDate>Wed, 04 May 2011 21:53:56 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[Gridinit]]></category>
		<category><![CDATA[gridinit]]></category>
		<category><![CDATA[watir]]></category>
		<category><![CDATA[watirgrid]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1286</guid>
		<description><![CDATA[As the title implies, I get to spend 15 minutes talking about Watirgrid and Gridinit on the Watir podcast. This family of tools lets you easily distribute watir test cases onto a grid network, the latter being a commercial implementation on EC2 of the former. I&#8217;ll be posting more about Gridinit soon as we enter [...]]]></description>
			<content:encoded><![CDATA[<p>As the title implies, I get to spend 15 minutes talking about <a href="http://watirgrid.info">Watirgrid</a> and <a href="http://gridinit.com">Gridinit</a> on the <a href="http://watirpodcast.com/44-tim-koopmans-on-watirgrid-and-gridinit/">Watir podcast</a>.</p>
<p>This family of tools lets you easily distribute watir test cases onto a grid network, the latter being a commercial implementation on EC2 of the former. I&#8217;ll be posting more about Gridinit soon as we enter into our beta!</p>
<p>http://watirpodcast.com/44-tim-koopmans-on-watirgrid-and-gridinit/</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watirgrid-and-gridinit-on-watir-podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to be a performance tester &#8230;</title>
		<link>http://altentee.com/blogs/2011/how-to-be-a-performance-tester/</link>
		<comments>http://altentee.com/blogs/2011/how-to-be-a-performance-tester/#comments</comments>
		<pubDate>Sun, 01 May 2011 23:28:45 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1283</guid>
		<description><![CDATA[I&#8217;ve come to a juncture (read voluntary unemployment) where I&#8217;ve had the chance to reflect on my last 6 years as a performance tester, working in the mostly enterprise / commercial test space in and around Australia&#8230; Here&#8217;s my reflections on what has worked for me as a performance tester: 1. Document templates: Everything from [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve come to a juncture (read voluntary unemployment) where I&#8217;ve had the chance to reflect on my last 6 years as a performance tester, working in the mostly enterprise / commercial test space in and around Australia&#8230; Here&#8217;s my reflections on what has worked for me as a performance tester:</p>
<p>1. <strong>Document templates</strong>: Everything from a test strategy through to detailed plans, application simulation models, status updates or summary reports are all based on a template for me now.  A template view of things is also a good way of culling back all the unnecessary guff that you often find in these documents. Unless you&#8217;re legally obliged to, cut back on the guff and tell them what you&#8217;re planning to test, how you&#8217;re going to measure it, and what you&#8217;re going to do if things fall outside your hypotheses&#8230;</p>
<p>2. <strong>Look beyond LoadRunner</strong>: I&#8217;ve gained much self satisfaction and saved employers large sums along the way by looking at tools other than LoadRunner. You may feel like you&#8217;re shafting yourself initially as you fumble about in strange GUIs or delve into the command line /code but in reality, you&#8217;re making yourself a better tester by understanding what it is you&#8217;re trying to test/simulate, and the multitude of ways you can accomplish it. Time to wean yourself off that expensive teat and start looking at the alternatives.</p>
<p>3. <strong>Business intelligence</strong>: You need to be able to understand machine events and transform them back into business speak. Most managers don&#8217;t give a hoot about number of IO&#8217;s per second or the vagaries of GC algorithms. You need to transform this data into a language that you can communicate up the chain. Avoid the FUD (Fear, Uncertainty &amp; Doubt) and instead speak in terms of risk (probability, frequency, impact).</p>
<p>4. <strong>Monitor and measure</strong>: If you can&#8217;t monitor then you probably can&#8217;t measure. I&#8217;ve heard so many times that &#8220;you need this one tool because &#8230; &#8221; it pulls everything together in one interface &#8230; Really, you need to know what you can measure and monitor, what tools support capture (most platforms have native commands to do so) and how you&#8217;re going to pull it all together. Timestamps are your friend (for correlating events) and so too are databases for storage. More often than not I&#8217;ve employed some form of RRD or RDMS such as MySql and more recently have been looking at the virtues of NoSQL with things like CouchDB or MongoDB.</p>
<p>5. <strong>The web server bone&#8217;s connected to the, database bone</strong>: You need to understand the stack you&#8217;re playing in. Most prod environments don&#8217;t give you the luxury of prodding around, but VMs are your friend and you&#8217;ll probably find most platforms you&#8217;re working on have free or developer versions of their products to play with. Chances are if you&#8217;ve never installed and configured it, you&#8217;re probably not going to have the fuzziest on where to start debugging or tuning it!</p>
<p>6. <strong>Adopt a scripting language</strong>: You&#8217;ll no doubt need to munge data, fake stubs, mock services, crawl for information and the like. I&#8217;ve seen some hilarious examples of this using heavyweight tools such as QTP/LoadRunner and some downright painful (although closer to zen) alternatives in shell script. But honestly, adopt a scripting language like Ruby, Python or even Perl, buy the corresponding cookbook, and you&#8217;ll have an answer to just about every housekeeping task you might find yourself faced with.</p>
<p>7. <strong>Learn from others</strong>: Go on, be humble, get yourself an RSS reader and learn from others. My personal favourites to name a few are:</p>
<p>Scott Barber http://www.perftestplus.com/scott_blog.php<br />
Neil Gunther http://perfdynamics.blogspot.com/<br />
Stuart Moncrieff http://www.myloadtest.com/<br />
Corey Coldberg http://www.goldb.org/<br />
Jared Quinert http://www.software-testing.com.au/blog/<br />
Sam Abdelhamid http://mishmashmoo.com/blog/</p>
<p>8. <strong>Write your own blog</strong>: Got something to share? Want to improve your writing skills? Go on, write your own blog. I often find that in showing someone else either in person or the written form, I get to understand the subject matter better. So what are you waiting for?</p>
<p>Thanks for listening =)</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/how-to-be-a-performance-tester/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Watir-Webdriver-Performance gem released</title>
		<link>http://altentee.com/blogs/2011/watir-webdriver-performance-gem-released/</link>
		<comments>http://altentee.com/blogs/2011/watir-webdriver-performance-gem-released/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 04:09:59 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[watir]]></category>
		<category><![CDATA[webdriver]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1277</guid>
		<description><![CDATA[Today I added a simple watir-webdriver-performance gem whose purpose is to collect performance metrics specified for web applications to access timing information related to navigation and elements. User latency is an important quality benchmark for Web Applications. While JavaScript-based mechanisms can provide comprehensive instrumentation for user latency measurements within an application, in many cases, they [...]]]></description>
			<content:encoded><![CDATA[<p>Today I added a simple watir-webdriver-performance gem whose purpose is to collect performance metrics specified for web applications to access timing information related to navigation and elements.</p>
<blockquote><p>User latency is an important quality benchmark for Web Applications. While JavaScript-based mechanisms can provide comprehensive instrumentation for user latency measurements within an application, in many cases, they are unable to provide a complete end-to-end latency picture.</p>
<p>To address the need for complete information on user experience, this document introduces the <a href="http://w3c-test.org/webperf/specs/NavigationTiming/#nt-navigation-timing-interface">PerformanceTiming</a> interfaces. This interface allows JavaScript mechanisms to provide complete client-side latency measurements within applications. With the proposed interface, the previous example can be modified to measure a user&#8217;s perceived page load time.</p></blockquote>
<p><span id="more-1277"></span>You can read more about the PerformanceTiming <a href="http://w3c-test.org/webperf/specs/NavigationTiming/">specification here</a>. Essentially this gem collects all available metrics from the browser and summarises them in a format similar to the following diagram:</p>
<p style="text-align: center;"><img class="aligncenter" title="timing-overview" src="http://w3c-test.org/webperf/specs/NavigationTiming/timing-overview.png" alt="timing-overview" width="884" height="527" /></p>
<p>To use this gem simply install:</p>
<pre> gem install watir-webdriver-performance</pre>
<p>And use the browser.performance helper method to access the metrics.</p>
<pre>&gt;&gt; require 'watir-webdriver'
&gt;&gt; require 'watir-webdriver-performance'
&gt;&gt; b = Watir::Browser.new :chrome
&gt;&gt; b.goto "watirgrid.com"
=&gt; "https://github.com/90kts/watirgrid"
&gt;&gt; # End user response time was
?&gt; b.performance.summary[:response_time]/1000
=&gt; 8
&gt;&gt; #seconds ...
?&gt; # Time to first byte i.e. "server time" was
?&gt; b.performance.summary[:time_to_first_byte]
=&gt; 3341
&gt;&gt; #milliseconds ...
?&gt; # Summary timings available
{
    :summary => {
                   :redirect=>0,
                  :app_cache=>0,
                        :dns=>0,
            :tcp_connection=>982,
     :tcp_connection_secure=>721,
                  :request=>1222,
                    :response=>4,
           :dom_processing=>4293,
            :response_time=>7298,
       :time_to_first_byte=>2205,
        :time_to_last_byte=>2209
    },
    :navigation => {
                     :type => 0,
        :type_back_forward => 2,
           :redirect_count => 0,
            :type_reserved => 255,
            :type_navigate => 0,
              :type_reload => 1
    },
        :memory => {
        :total_js_heap_size => 0,
        :js_heap_size_limit => 0,
         :used_js_heap_size => 0
    },
        :timing => {
                   :domain_lookup_start => 1303180421599,
                        :load_event_end => 0,
                           :connect_end => 1303180421642,
                          :response_end => 1303180421853,
                           :dom_loading => 1303180421840,
                      :navigation_start => 0,
                          :redirect_end => 0,
                    :unload_event_start => 0,
               :secure_connection_start => 0,
                         :connect_start => 1303180421600,
          :dom_content_loaded_event_end => 1303180421934,
                     :domain_lookup_end => 1303180421600,
                       :dom_interactive => 1303180421934,
                      :load_event_start => 0,
                         :request_start => 1303180421642,
                        :response_start => 1303180421838,
                          :dom_complete => 0,
                           :fetch_start => 1303180421598,
        :dom_content_loaded_event_start => 1303180421934,
                        :redirect_start => 0,
                      :unload_event_end => 0
    }
  }</pre>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watir-webdriver-performance-gem-released/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WatirGrid 1.0.6 released &#8230; can haz Selenium?</title>
		<link>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/</link>
		<comments>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 20:54:42 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[seconf]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[watir]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1271</guid>
		<description><![CDATA[I&#8217;ve just released WatirGrid 1.0.6 which now includes support for Selenium WebDriver&#8230; So can I really call it WatirGrid anymore? Realistically the Watir and Selenium projects are headed in the same direction courtesy of WebDriver, so it makes sense to give Watir users (I like to think of them as Ruby users ) the option [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just released WatirGrid 1.0.6 which now <strong>includes support for Selenium WebDriver</strong>&#8230; So can I really call it WatirGrid anymore? Realistically the Watir and Selenium projects are headed in the same direction courtesy of WebDriver, so it makes sense to give Watir users (I like to think of them as Ruby users <img src='http://altentee.com/blogs/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) the option to use Selenium where it best fits.</p>
<p><span id="more-1271"></span></p>
<p>To use Selenium via WatirGrid &#8230;</p>
<p>Get it</p>
<pre>&lt;sudo&gt; gem install watirgrid</pre>
<p>Start a <strong>controller</strong> &#8230;</p>
<pre>controller
I, INFO -- : Controller started on : druby://10.0.1.3:11235</pre>
<p>Start a <strong>provider</strong> with -b selenium &#8230;</p>
<pre>provider -b selenium
I, INFO -- : Provider started on   : druby://10.0.1.3:11236
I, INFO -- : Controller found on   : druby://10.0.1.3:12358
I, INFO -- : Provider registered   : druby://10.0.1.3:12358</pre>
<p>Execute your Selenium code in Ruby!</p>
<pre>&gt;&gt; require 'watirgrid'
=&gt; true
&gt;&gt; Watir::Grid.control(
&gt;&gt;   :controller_uri=&gt;'druby://10.0.1.3:11235') do |driver, id|
&gt;&gt;   driver.navigate.to "http://google.com"
&gt;&gt;   element = driver.find_element(:name, 'q')
&gt;&gt;   element.send_keys "Hello WebDriver!"
&gt;&gt;   element.submit
&gt;&gt;   driver.quit
&gt;&gt; end</pre>
<p>So what&#8217;s the difference between <strong>WatirGrid</strong> and <strong>SeleniumGrid</strong>?</p>
<p>They have radically different architectures in terms of establishing a Grid network. WatirGrid is built on distributed programming paradigms such as Linda and is a pure Ruby implementation. <a href="http://selenium-grid.seleniumhq.org/run_the_demo.html">SeleniumGrid</a> is perhaps a more heavy weight Java implementation (you can still write your tests in most languages) and packs a lot more features for grid control into its design. Both have their own merits, you be the judge!</p>
<p>Next steps for WatirGrid is to look at implementing some type of Capybara adapter, since this tool (and WebRat) appear to dominate the Ruby test automation space. I&#8217;m also working on Gridinit, a commercial implementation on EC2 which is available for beta testing. <a href="http://gridinit.com">Sign up</a> and give it a try!</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watirgrid-1-0-6-released-can-haz-selenium/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Watir Day and Selenium Conference .. w00t</title>
		<link>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/</link>
		<comments>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 02:34:30 +0000</pubDate>
		<dc:creator>Tim Koopmans</dc:creator>
				<category><![CDATA[Altentee]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[watir]]></category>

		<guid isPermaLink="false">http://altentee.com/?p=1269</guid>
		<description><![CDATA[Wow, What an awesome experience. Despite spending most of it jet-lagged, travelling to San Francisco was such a great experience for me, and helped reaffirm just how strong the Watir and Selenium community is. Without dropping names, some of the experiences I got to enjoy were: Sharing late night beers and early morning burgers with [...]]]></description>
			<content:encoded><![CDATA[<p>Wow,</p>
<p>What an awesome experience. Despite spending most of it jet-lagged, travelling to San Francisco was such a great experience for me, and helped reaffirm just how strong the Watir and Selenium community is. Without dropping names, some of the experiences I got to enjoy were:</p>
<ol>
<li>Sharing late night beers and early morning burgers with the <a href="http://twitter.com/#!/charley_baker">leader of Watir development</a></li>
<li><a href="http://twitter.com/#!/charley_baker"></a>Pair coding on watir-webdriver performance extensions with the <a href="https://github.com/jarib">smartest kid in Norway</a></li>
<li>Finally meeting perhaps the <a href="http://watirmelon.com">leader of Australian based Watir testing</a></li>
<li><a href="http://watirmelon.com"></a>Eating chinese with the <a href="http://pettichord.com/">god-father of Watir</a> and hearing some great anecdotes on the origins of Selenium</li>
<li>Shown the light on page objects, opera and superbad with a <a href="http://www.slideshare.net/testrus">Polish born American</a></li>
<li>Hearing about the inner workings of &#8216;that other browser&#8217; from a <a href="http://home.e-tjenesten.org/~ato/">genius at Opera</a></li>
<li>Learning more about the Watir community and getting a t<a href="http://zeljkofilipin.com/">hirst for Croatian micro breweries</a></li>
<li>Meeting my <a href="http://lightbody.net/blog/">role model in person</a> and perhaps feeling a bit shied by his awesomeness!</li>
<li>Getting <a href="http://www.linkedin.com/in/bramhaghosh">some great advice</a> and tips for my own startup</li>
<li>Being awed and perhaps jealous (in a slightly convict vs. colonial way) of the <a href="http://www.google.com.au/search?q=steel+cage+knife+fight">greatest mind behind webdriver</a></li>
</ol>
<p>I met many other people whilst there, did tons of late night coding and got to experience public speaking for the first time. A big thank you to all the organisers of #watirday and #seconf. Looking forward to the next!</p>
]]></content:encoded>
			<wfw:commentRss>http://altentee.com/blogs/2011/watir-day-and-selenium-conference-w00t/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

