<?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>Google Data &#187; Patrick Copeland</title>
	<atom:link href="/author/patrick-copeland/feed/" rel="self" type="application/rss+xml" />
	<link>https://googledata.org</link>
	<description>Everything Google: News, Products, Services, Content, Culture</description>
	<lastBuildDate>Thu, 19 Mar 2015 12:00:08 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.7.5</generator>
	<item>
		<title>Entrepreneurial Innovation at Google</title>
		<link>https://googledata.org/google-testing/entrepreneurial-innovation-at-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=entrepreneurial-innovation-at-google</link>
		<comments>https://googledata.org/google-testing/entrepreneurial-innovation-at-google/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 03:49:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=2b23f741c6d25912afc2a85188d19001</guid>
		<description><![CDATA[The April 2011 issue of Computer,&#160;the flagship publication of the IEEE Computer Society,&#160;features a cover article written by&#160;Alberto Savoia and&#160;Patrick Copeland (@copelandpatrick). The article,&#160;Entrepreneurial Innovation at Goo...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"><span class="Apple-style-span" style="border-collapse: collapse;">The April 2011 issue of Computer,&nbsp;</span>the flagship publication of the IEEE Computer Society,<span class="Apple-style-span" style="border-collapse: collapse;">&nbsp;features a cover article written by&nbsp;</span><span class="Apple-style-span" style="border-collapse: collapse; line-height: 20px;">Alberto Savoia and&nbsp;</span><span class="Apple-style-span" style="border-collapse: collapse; line-height: 20px;">Patrick Copeland (<a href="http://twitter.com/#!/copelandpatrick">@copelandpatrick</a>). The article,&nbsp;</span><span class="Apple-style-span" style="border-collapse: collapse;">Entrepreneurial Innovation at Google, explores some of the ideas we use to encourage engineers to well, innovate. For a limited time you can see a digital version of the article on&nbsp;</span><span class="Apple-style-span" style="border-collapse: collapse;">Computing Now – see&nbsp;</span><span class="Apple-style-span" style="border-collapse: collapse;"><a href="http://www.computer.org/portal/web/computingnow" style="color: #0000cc;" >http://www.computer.org/<wbr></wbr>portal/web/computingnow</a>.</span></span><br /><span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Helvetica, sans-serif;"><br /></span><br /><span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Helvetica, sans-serif;">Enjoy,</span><br /><span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, Helvetica, sans-serif;">Alberto &amp; Pat</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2685915826770163273?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/entrepreneurial-innovation-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;re back live on twitter</title>
		<link>https://googledata.org/google-testing/were-back-live-on-twitter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=were-back-live-on-twitter</link>
		<comments>https://googledata.org/google-testing/were-back-live-on-twitter/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 05:22:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=037866ae505c078ea1268ea4adf19959</guid>
		<description><![CDATA[For our followers on twitter, we didn't realize our feed we broken until today! Shame, lots of good posts recently. Come check them out. @googletesting]]></description>
				<content:encoded><![CDATA[For our followers on twitter, we didn't realize our feed we broken until today! Shame, lots of good posts recently. Come check them out. <a href="http://twitter.com/googletesting">@googletesting</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-7011861055457479213?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/were-back-live-on-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Innovation at Google</title>
		<link>https://googledata.org/google-testing/innovation-at-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=innovation-at-google</link>
		<comments>https://googledata.org/google-testing/innovation-at-google/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:30:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false">https://googledata.org/?guid=d451c96cda2ea2ef34feb3707f4339cf</guid>
		<description><![CDATA[by Patrick CopelandGoogle Innovation and the Pretotyping Manifesto*: I had the pleasure of keynoting at the sold out San Francisco and London QCon conferences. Combined about 1300 people attended. They recently published the video and I'm including it ...]]></description>
				<content:encoded><![CDATA[<div><span class="Apple-style-span">by Patrick Copeland</span></div><div><span class="Apple-style-span"><br /></span></div><div><span class="Apple-style-span">Google Innovation and the Pretotyping Manifesto*: I had the pleasure of keynoting at the sold out San Francisco and London QCon conferences. Combined about 1300 people attended. They recently published the video and I'm including it here with some reviews. Enjoy!</span></div><div><span class="Apple-style-span"><br /></span></div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;"><a href="http://www.infoq.com/presentations/QCon-Keynote-Innovation-at-Google">The slides and video</a>.<br /></span></span><br /><div><span class="Apple-style-span"><br /></span></div><div><span class="Apple-style-span">Reviews and commentary from attendees:</span></div><div><a href="http://blog.rodger-brown.com/2011/03/qcon-2011-london-day-two.html"><span class="Apple-style-span">http://blog.rodger-brown.com/2011/03/qcon-2011-london-day-two.html</span></a></div><div><a href="http://alblue.bandlem.com/2011/03/qcon-day-2.html"><span class="Apple-style-span">http://alblue.bandlem.com/2011/03/qcon-day-2.html</span></a></div><div><a href="http://blogg.altran.se/cis/2011/03/12/qcon-2011-second-day-first-half/"><span class="Apple-style-span">http://blogg.altran.se/cis/2011/03/12/qcon-2011-second-day-first-half/</span></a></div><div><a href="http://orange-coding.net/?p=23"><span class="Apple-style-span">http://orange-coding.net/?p=23</span></a></div><div><a href="http://craignicol.wordpress.com/"><span class="Apple-style-span">http://craignicol.wordpress.com/</span></a></div><div><a href="http://tweetmeme.com/story/4236295014/infoq-qcon-keynote-innovation-at-google"><span class="Apple-style-span">http://tweetmeme.com/story/4236295014/infoq-qcon-keynote-innovation-at-google</span></a></div><div><span class="Apple-style-span"><br /></span></div><div><span class="Apple-style-span">*not your typical testing post, but once you see the talk you'll understand why we think testing and innovation go hand in hand. </span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-3434061794397340866?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/innovation-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Innovation and The Pretotyping Manifesto</title>
		<link>https://googledata.org/google-testing/google-innovation-and-the-pretotyping-manifesto/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-innovation-and-the-pretotyping-manifesto</link>
		<comments>https://googledata.org/google-testing/google-innovation-and-the-pretotyping-manifesto/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 20:40:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I'll be speaking very soon about innovation and The Pretotyping Manifesto (note: not prototyping). It's a concept that works well for any type of engineering, testing, or idea. Here's a brief preview...The talk starts off by discussing the odds against...]]></description>
				<content:encoded><![CDATA[<div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse; ">I'll be speaking very soon about innovation and The Pretotyping Manifesto (note: not prototyping). It's a concept that works well for any type of engineering, testing, or idea. Here's a brief preview...</span></span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;"><br /></span></span></div><div><span class="Apple-style-span"><span class="Apple-style-span" style="border-collapse: collapse;">The talk starts off by discussing the odds against innovators and how the deck is stacked against you from the start. Most engineers begin with trying to come up with THE killer idea. But you quickly realize that ideas are cheap. We all believe that our own ideas are good. As a matter of fact, most of us LOVE our own ideas to the point where it clouds our judgement. In parallel, there is a strong desire to jump in and build something after a great idea has been identified. Sometimes swarms of well intentioned people join in and "help." Quickly innovators can find themselves in the weeds or feeling disconnected from their original dream. So, what can be done? The idea is to use pretotyping and to focus on techniques that allow you to: </span><span style="border-collapse: collapse; ">Build the right it vs. Build it right.</span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse;"><span class="Apple-style-span"><br /></span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse;"><span class="Apple-style-span">Last time I did this talk, it was called: "<span style="line-height: 16px; "><a href="http://www.infoq.com/articles/QCon-San-Francisco-2010#__26">the best keynote of any tech conference ever!</a>"</span></span></span></div><div><span class="Apple-style-span" style="border-collapse: collapse;"><br /></span></div><div style="border-collapse: collapse; "><span class="Apple-style-span">I'm looking forward to seeing some of you the week of March7th when I'll be in London. In addition to dropping into the Google office, I'll be speaking at QCon London. <span style="border-collapse: collapse; ">If you want to attend (at a cheaper rate than normal) here are the details:</span></span></div><div style="border-collapse: collapse; "><p class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.0001pt; margin-left: 0px; line-height: normal; border-collapse: collapse; "><span class="Apple-style-span"><span style="color: rgb(31, 73, 125); "></span></span></p><ul type="disc" style="border-collapse: collapse; "><li class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; line-height: normal; "><span style="background-color: rgb(255, 255, 255); "><span class="Apple-style-span"><a href="http://qconlondon.com/london-2011/conference/"  style="color: rgb(0, 0, 204); ">London event</a> March 7-11, 2011.</span></span></li><li class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; line-height: normal; "><span style="background-color: rgb(255, 255, 255); "><span class="Apple-style-span">My personal "<span style="color: rgb(34, 34, 34); ">promotion</span> code" will save you £100 if they enter this code during registration.</span></span></li><li class="MsoNormal" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 15px; line-height: normal; "><span style="background-color: rgb(255, 255, 255); "><span class="Apple-style-span"><span style="color: rgb(34, 34, 34); ">Promotion</span> code is: COPE100</span></span></li></ul><div><span class="Apple-style-span">Hope to see you in London,</span></div><div><span class="Apple-style-span">Patrick Copeland</span></div><div><span class="Apple-style-span">Senior Engineering Director, Google</span></div></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2338504732622610439?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/google-innovation-and-the-pretotyping-manifesto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC #5: videos, slides, abstracts</title>
		<link>https://googledata.org/google-testing/gtac-5-videos-slides-abstracts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-5-videos-slides-abstracts</link>
		<comments>https://googledata.org/google-testing/gtac-5-videos-slides-abstracts/#comments</comments>
		<pubDate>Fri, 31 Dec 2010 07:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The published content for this year's GTAC is finally available. You can find the links to all the material below and also at the GTAC site. Other interesting artifacts can be found via Google Search or Twitter or Facebook.. On behalf of the Committee ...]]></description>
				<content:encoded><![CDATA[<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "><span class="Apple-style-span" style="font-family: arial; font-size: small; "><span id="internal-source-marker_0.5659982315264642" style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">The published content for this year's GTAC is finally available. You can find the links to all the material below and also at the </span><a href="http://www.gtac.biz/"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">GTAC site</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">. Other interesting artifacts can be found via </span><a href="http://www.google.com/search?tbs=mbl:1&amp;hl=en&amp;source=hp&amp;q=gtac&amp;btnG=Search&amp;qscrl=1"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">Google Search</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> or </span><a href="http://twitter.com/#!/search?q=gtac"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">Twitter</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> or </span><a href="http://www.facebook.com/home.php?sk=group_157363314299388&amp;ap=1"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">Facebook.</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">. </span></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "><span class="Apple-style-span"  ><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "><span class="Apple-style-span" style="white-space: pre-wrap;"><br />On behalf of the Committee and Google I want to thank all the speakers, attendees and volunteers  who made this event a great professional engagement. Some moments of the conference are captured in </span></span><a href="http://picasaweb.google.com/gtac.2010.hyd"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">photos</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">.</span><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Looking forward to next year’s GTAC in the city of Google’s headquarters. </span><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Happy Holidays.</span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Sujay Sahni for the GTAC 2010 Committee</span><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; background-color: transparent;"></span><br /><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; background-color: transparent;"></span><br /></span><hr /><span class="Apple-style-span"  ><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Day 1</span><br /><span style="color: rgb(0, 0, 255); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Welcome and Opening Remarks</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Sujay Sahni, Google Inc. &amp; GTAC Committee Chair</span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span><a href="http://www.youtube.com/watch?v=5anI6xcnonQ&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=1"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8wY2M0a2dncnI&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Day 1 Opening Keynote</span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">What Testability Tells us About the Software Performance Envelope</span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span><span style="color: rgb(89, 89, 89); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Robert Victor Binder, Founder and CEO, mVerify</span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span><a href="http://www.youtube.com/watch?v=1keyEiJHqPw&amp;list=PL1242F05D3EA83AB1&amp;playnext=1"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkNTIxZmE5MDctYTJhZS00OThhLTkwY2QtNTk2OGQ4MjUzNWQx&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=1"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="http://www.gtac.biz/keynote-speakers"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Twist, a next generation functional testing tool for building and evolving test suites</span><br /><span style="color: rgb(89, 89, 89); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Vivek Prahlad, ThoughtWorks</span><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span><a href="http://www.youtube.com/watch?v=13oE_7SVGoQ&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=3"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8yOWdqZmpucmR4&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=2"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">The Future of Front-End Testing</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Greg Dennis &amp; Simon Stewart, Google Inc.<br /></span><a href="http://www.youtube.com/watch?v=oX-0Mt5zju0&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=4"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF81Mmtxc2pqc2Nq&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=3"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Lightning Talks/Interactive Session</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">GTAC Attendees</span><br /><a href="http://www.youtube.com/watch?v=nqBWkRWev6U&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=5"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8yMzZmanpqbTJmYg&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=4"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Testivus on Testability</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Alberto Savoia, Google Inc.<br /></span><a href="http://www.youtube.com/watch?v=wJbQgC_KTtg&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=6"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkMTEyZGViYjAtNDM4Yi00MTg2LTkzYTAtMWQ3Y2NjZmUwYmM4&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=5"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Lessons Learned from Testability Failures</span><br /><span style="color: rgb(127, 127, 127); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Esteban Manchado Velázquez, Opera Software ASA</span><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><a href="http://www.youtube.com/watch?v=4CFj5thxYQA&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=7"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF83NmduY3N4bWRn&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=6"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Git Bisect and Testing</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Christian Couder</span><br /><a href="http://www.youtube.com/watch?v=49OYaF_v7EA&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=8"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkMDMxYTBjNTktYzQ0NC00NDViLWE0MzAtMmNmM2YyOTA5Y2Fi&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=7"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Flexible Design? Testable Design? You Don’t Have To Choose!</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Russ Rufer &amp; Tracy Bialik, Google Inc.  </span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span><a href="http://www.youtube.com/watch?v=K3q_y8H1ZTo&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=9"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkOWU4M2M0Y2YtYjY5ZC00MjE1LWFiYzAtODFmZDI4MGRiNDU1&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=8"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><span style="color: rgb(85, 26, 139); font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span><br /></span><hr /><span class="Apple-style-span"  ><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; background-color: transparent;"></span><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Day 2</span><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Day 2 Opening Keynote</span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Automatically Generating Test Data for Web Applications<br /></span><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Jeff Offutt, Professor of Software Engineering, Volgenau School of Information and Technology, George Mason University</span><br /><a href="http://www.youtube.com/watch?v=lmS5ElMyIHU&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=10"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkNWU5ZjI5NDMtMzBlNS00YTMxLWFmMTctMTI4NjA4YzhlOTFm&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=9"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="http://www.gtac.biz/keynote-speakers"><span style="color: rgb(78, 125, 191); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Early Test Feedback by Test Prioritisation</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Shin Yoo, University College London &amp;  Robert Nilsson, Google Inc.</span><br /><a href="http://www.youtube.com/watch?v=bMTI7c1AHS4&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=11"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8xMDdoY3RwY3BkbQ&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=10"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Measuring and Monitoring Experience in Interactive Streaming Applications</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Shreeshankar Chatterjee, Adobe Systems India</span><br /><a href="http://www.youtube.com/watch?v=5FuMYpoyPKg&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=12"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkY2FkNzdjYWUtZDFlNS00YjIxLWE4YzMtZDQzMDFhY2QwOTQ0&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=11"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Crowd Source Testing, Mozilla Community Style</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Matt Evans, Mozilla</span><br /><a href="http://www.youtube.com/watch?v=-MkyZG2Wa_E&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=13"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkNzQ3MjQ5NDMtYjZiZi00MTUyLWIwZWUtNTI4Njc3NGE0ZDYw&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=12"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/selected-talks"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Lightning Talks/Interactive Session</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">GTAC Attendees</span><br /><a href="http://www.youtube.com/watch?v=N6DSAO9E7DM&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=14"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8xNDdkd3MzcXRjMw&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=13"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a><span style="color: rgb(0, 0, 255); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; background-color: transparent;"></span><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Closing Keynote - Turning Quality on its Head<br /></span><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">James Whittaker, Engineering Director, Google Inc.</span><br /><a href="http://www.youtube.com/watch?v=cqwXUTjcabs&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=16"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0B4fT-BFGDnQkMDE5OTk0ZmUtODQ4Ni00NTM3LTlkMGEtNjg1MTdiMzM5Nzg5&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=14"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides </span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">  </span><a href="http://www.gtac.biz/keynote-speakers"><span style="color: rgb(85, 26, 139); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">abstract</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Closing Panel Discussion</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">GTAC Attendees</span><br /><a href="http://www.youtube.com/watch?v=EfNSt-aYbDI&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=17"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><br /><span class="Apple-style-span"><span style="color: rgb(0, 0, 0); font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: transparent; "></span></span><br /><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Closing Remarks</span><br /><span style="color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Sujay Sahni, Google Inc. &amp; GTAC Committee Chair</span><br /><a href="http://www.youtube.com/watch?v=Mn__dBqzsR4&amp;feature=BF&amp;list=PL1242F05D3EA83AB1&amp;index=18"><span style="color: rgb(0, 0, 255); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">video</span></a><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">   </span><a href="https://docs.google.com/leaf?id=0AYfT-BFGDnQkZDVzcmhiNF8yMDVkbTU3Y2Jndg&amp;sort=name&amp;layout=list&amp;pid=0B4fT-BFGDnQkYzVlMWY4M2EtYjRkYi00MDQ5LTg5ODUtNGQ4ZWU5N2NlMTRl&amp;cindex=15"><span style="color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">slides</span></a></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2039822248564013493?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-5-videos-slides-abstracts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Sizes</title>
		<link>https://googledata.org/google-testing/test-sizes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=test-sizes</link>
		<comments>https://googledata.org/google-testing/test-sizes/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 19:09:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Simon StewartWhat do you call a test that tests your application through its UI? An end-to-end test? A functional test? A system test? A selenium test? I’ve heard all them, and more. I reckon you have too. Tests running against less of the stack? ...]]></description>
				<content:encoded><![CDATA[<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">by Simon Stewart</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">What do you call a test that tests your application through its UI? An end-to-end test? A functional test? A system test? A selenium test? I’ve heard all them, and more. I reckon you have too. Tests running against less of the stack? The same equally frustrating inconsistency. Just what, exactly, is an integration test? A unit test? How do we name these things?</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Gah!</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">It can be hard to persuade your own team to settle on a shared understanding of what each name actually means. The challenge increases when you encounter people from another team or project who are using different terms than you. More (less?) amusingly, you and that other team may be using the same term for different test types.  “Oh! </span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: italic; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">That</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> kind of integration test?” Two teams separated by a common jargon.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Double gah!</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">The problem with naming test types is that the names tend to rely on a shared understanding of what a particular phrase means. That leaves plenty of room for fuzzy definitions and confusion. There has to be a better way. Personally, I like what we do here at Google and I thought I’d share that with you.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Googlers like to make decisions based on data, rather than just relying on gut instinct or something that can’t be measured and assessed. Over time we’ve come to agree on a set of data-driven naming conventions for our tests. We call them “Small”, “Medium” and “Large” tests. They differ like so:</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; font-family: 'Times New Roman'; font-size: medium; "><table id="internal-source-marker_0.4822195773012936" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-collapse: collapse; "><tbody><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Feature</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Small</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Medium</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Large</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span></td></tr><tr style="height: 32px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Network access</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span><span style="font-size: 11pt; font-family: Arial; color: rgb(217, 234, 211); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 204, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">localhost only</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Database</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">File system access</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Use external systems</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 204, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Discouraged</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Multiple threads</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Sleep statements</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">System properties</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(255, 102, 102); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">No</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; background-color: rgb(153, 255, 153); padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Yes</span></td></tr><tr style="height: 0px; "><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Time limit (seconds)</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">60</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">300</span></td><td style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(170, 170, 170); border-right-color: rgb(170, 170, 170); border-bottom-color: rgb(170, 170, 170); border-left-color: rgb(170, 170, 170); vertical-align: top; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">900+</span></td></tr></tbody></table></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; font-family: 'Times New Roman'; font-size: medium; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br /></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; font-family: 'Times New Roman'; font-size: medium; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Going into the pros and cons of each type of test is a whole other blog entry, but it should be obvious that each type of test fulfills a specific role. It should also be obvious that this doesn’t cover every possible type of test that might be run, but it certainly covers most of the major types that a project will run.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">A Small test equates neatly to a unit test, a Large test to an end-to-end or system test and a Medium test to tests that ensure that two tiers in an application can communicate properly (often called an integration test).</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">The major advantage that these test definitions have is that it’s possible to get the tests to police these limits. For example, in Java it’s easy to install a </span><a href="http://download.oracle.com/javase/6/docs/api/java/lang/SecurityManager.html"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">security manager</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> for use with a test suite (perhaps using </span><a href="http://kentbeck.github.com/junit/javadoc/latest/org/junit/BeforeClass.html"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">@BeforeClass</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">) that is configured for a particular test size and disallows certain activities. Because we use a simple Java annotation to indicate the size of the test (with no annotation meaning it’s a Small test as that’s the common case), it’s a breeze to collect all the tests of a particular size into a test suite. </span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">We place other constraints, which are harder to define, around the tests. These include a requirement that tests can be run in any order (they frequently are!) which in turn means that tests need high isolation --- you can’t rely on some other test leaving data behind. That’s sometimes inconvenient, but it makes it significantly easier to run our tests in parallel. The end result: we can build test suites easily, and run them consistently and as as fast as possible.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Not “gah!” at all.</span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8292548377246160078?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/test-sizes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keynote at QCon SFO</title>
		<link>https://googledata.org/google-testing/keynote-at-qcon-sfo/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keynote-at-qcon-sfo</link>
		<comments>https://googledata.org/google-testing/keynote-at-qcon-sfo/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 23:09:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Patrick CopelandFYI...I'll be giving a keynote at QCon in SFO next week. Fortunately, or unfortunately as the case my be, the conference is sold out. But they will post a video of the talk following the conference. If you are interested here's the a...]]></description>
				<content:encoded><![CDATA[by Patrick Copeland<br /><br />FYI...I'll be giving a keynote at QCon in SFO next week. Fortunately, or unfortunately as the case my be, the conference is sold out. But they will post a video of the talk following the conference. If you are interested here's the abstract and a pointer to their site (http://qconsf.com/): <br /><br />There are many paths to innovation.  At one extreme, we have large companies who create research labs, staff them with world-class Ph.Ds, and set them working for years to solve extremely complex technical problems.  At the other extreme, we have the proverbial "two entrepreneurs in the garage" working on a shoe-string budget.  Between these two extremes, we have all sorts of combinations of organizational structure, team size, budgets and time horizons.  <br /><br />History shows that world-changing innovation is possible through all of these paths.  But history also shows that, as companies grow in size and reputation, they almost inevitably become more conservative and risk-averse when it comes to considering, and investing in, new ideas and disruptive technology – often with disastrous results.<br /><br />He will describe how Google's core beliefs, culture, organization and infrastructure have successfully encouraged and enabled innovation throughout its growth.  He will conclude by presenting and discussing a practical manifesto to stimulate and leverage innovation in any organization.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-989806543529297125?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/keynote-at-qcon-sfo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our Culture</title>
		<link>https://googledata.org/google-testing/our-culture/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=our-culture</link>
		<comments>https://googledata.org/google-testing/our-culture/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 04:07:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/a0Vjs-7Wz0Q?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/a0Vjs-7Wz0Q?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1842388444338140771?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/our-culture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our Impact</title>
		<link>https://googledata.org/google-testing/our-impact/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=our-impact</link>
		<comments>https://googledata.org/google-testing/our-impact/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 04:06:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/3M7jYbFbOIA?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/3M7jYbFbOIA?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1512463277536970556?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/our-impact/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s not QA</title>
		<link>https://googledata.org/google-testing/its-not-qa/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=its-not-qa</link>
		<comments>https://googledata.org/google-testing/its-not-qa/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 04:05:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/jI4iSG39b6Y?fs=1&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/jI4iSG39b6Y?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-6020156786297590731?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/its-not-qa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update! GTAC 2010 Keynote Speakers</title>
		<link>https://googledata.org/google-testing/update-gtac-2010-keynote-speakers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-gtac-2010-keynote-speakers</link>
		<comments>https://googledata.org/google-testing/update-gtac-2010-keynote-speakers/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 15:37:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[We are thrilled to announce that GTAC 2010 keynotes are finalized.  We are very fortunate to have three world-renowned software testing icons: Robert Binder, Dr. Jeff Offutt and Dr. James Whittaker. Robert, Jeff and James bring to GTAC a powerful combi...]]></description>
				<content:encoded><![CDATA[<div><span class="Apple-style-span"  style="font-size:medium;"><span class="Apple-style-span"  style="font-family:arial;">We are thrilled to announce that <a href="http://www.gtac.biz/">GTAC 2010</a> keynotes are finalized.  We are very fortunate to <span class="Apple-style-span" style="font-size: medium;">have three world-renowned software testing icons: Robert Binder, Dr. Jeff Offutt and Dr. James Whittaker. Robert, Jeff and James bring to GTAC a powerful combination of practical and theoretical experience to help us address key aspect of this year's theme: Test to Testability. Robert will kick-off Day 1 with a keynote on the critical role of testability. On Day 2, Jeff will share his experiences on Automatic Test Generation from source code and about a technique he invented, Bypass Testing, for black-box testing of web applications. James will close the conference with a keynote focusing on the Test(ing) challenges and how to get ahead of them. More details on the specifics of their talk coming soon!</span></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Here are brief bios of our esteemed speakers: </span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: medium;">Robert Binder</span></b></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Robert V. Binder is a software entrepreneur and technologist with over 34 years of systems engineering experience. His 1994 analysis of software testability </span><a href="http://portal.acm.org/citation.cfm?id=184077"><span class="Apple-style-span" style="font-size: medium;">http://portal.acm.org/citation.cfm?id=184077</span></a><span class="Apple-style-span" style="font-size: medium;"> has had a continuing influence on research and practice in this area. As principal of System Verification Associates, he leads teams that deliver advanced IT assurance solutions. He was recently awarded a U.S. Patent for a unique </span></span><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">approach to model-based testing of mobile systems. He is a member of the Editorial Board of Software Testing, Verification, and Review and internationally recognized as the author of the definitive Testing Object-Oriented Systems: Models, Patterns, and Tools. Robert holds an MS in </span></span><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Electrical Engineering and Computer Science from the University of Illinois at Chicago and a MBA from the University of Chicago. He is an IEEE Senior Member.</span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: medium;">Dr. Jeff Offutt</span></b></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Dr. Jeff Offutt is Professor of Software Engineering at George Mason University. He has invented numerous test strategies, published over 120 refereed research papers, and is co-author of the textbook Introduction to Software Testing. He is editor-in-chief of Wiley's journal of Software Testing, Verification and Reliability; steering committee chair for the IEEE International Conference on Software Testing, Verification, and Validation; and program chair for ICST 2009. He has consulted with numerous companies on software testing, usability, and software intellectual property issues. Offutt is on the web at </span><a href="http://www.cs.gmu.edu/~offutt/"><span class="Apple-style-span" style="font-size: medium;">http://www.cs.gmu.edu/~offutt/</span></a></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: medium;">Dr. James Whittaker</span></b></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Dr. Whittaker is currently the Engineering Director over engineering tools and testing for Google's Seattle and Kirkland offices. He holds a PhD in computer science from the University of Tennessee and is the author or coauthor of four acclaimed textbooks. How to Break Software,  How to Break Software Security (with Hugh Thompson) and How to Break Web Software (with Mike Andrews). His latest is Exploratory Software Testing: Tips, Tricks, Tours and Techniques to Guide Test Design and he's authored over fifty peer-reviewed papers on software development and computer security. He holds patents on various inventions in software testing and defensive security applications and has attracted millions in funding, sponsorship, and license agreements while a professor at Florida Tech. He has also served as a testing and security consultant for dozens of companies and spent 3 years as an architect at Microsoft.</span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: medium;">Reminder: Call for proposals</span></b></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">If you would like to present at this year’s GTAC please remember to submit your proposal by the July 9th deadline. Please visit </span><a href="http://www.gtac.biz/call-for-proposals"><span class="Apple-style-span" style="font-size: medium;">http://www.gtac.biz/call-for-proposals</span></a><span class="Apple-style-span" style="font-size: medium;"> for details.</span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: medium;">Sujay Sahni for the GTAC 2010 Committee</span></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-3053033791350588369?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/update-gtac-2010-keynote-speakers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC: Call for Attendance &amp; Proposals</title>
		<link>https://googledata.org/google-testing/gtac-call-for-attendance-proposals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-call-for-attendance-proposals</link>
		<comments>https://googledata.org/google-testing/gtac-call-for-attendance-proposals/#comments</comments>
		<pubDate>Mon, 17 May 2010 04:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Google Test Automation Conference (GTAC) 2010Call for Attendance &#38; ProposalsWe are happy to announce that the application process is now open for Attendance and Proposals for the Fifth Google Test Automation Conference (GTAC), to be held in Hyderab...]]></description>
				<content:encoded><![CDATA[<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-color: transparent; font-family: Times; font-size: medium; "><h3 id="internal-source-marker_0.3391415625810623" style="text-align: center; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Google Test Automation Conference (GTAC) 2010</span></h3><p style="text-align: center; margin-top: 0pt; margin-bottom: 0pt; "><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Call for Attendance &amp; Proposals</span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span></p><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">We are happy to announce that the application process is now open for Attendance and Proposals for the Fifth Google Test Automation Conference (</span><a href="http://www.google.com/url?q=http://www.gtac.biz/&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHw6mWTz5v6_u0lpIBa9WxGnspwCg"><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">GTAC</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">), to be held in Hyderabad, India on October 28 - 29th.</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">As in previous years, GTAC is an </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">invitation only</span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> conference where we enable sharing of great ideas and active participation to challenge and refine our thoughts and experiences. As such the the application process expects you to share your ideas and insights that you would bring to the conference and how these would further the discussion about this year’s theme of</span><a href="http://www.google.com/url?q=http://www.gtac.biz/&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHw6mWTz5v6_u0lpIBa9WxGnspwCg"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">Test to Testability</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">. This information will help the committee select a balanced audience of seasoned practitioners, students and academics. </span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Also this year, we are introducing a </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">participant-driven</span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> format that will give the power to the attendees to select and voice their opinion on the speakers and the content! To make these changes, we are opening up proposals and attendance applications simultaneously. Once the initial set of participants are finalized, we will conduct online viewing and voting by the participants for presentations. </span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">How to apply</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">For Attendance: Please visit </span><a href="http://www.google.com/url?q=http://www.gtac.biz/call-for-attendance&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFZ1LmsJkYCgGkdl_y7vzc0VdvihA"><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/call-for-attendance</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">For Proposals (to present): Please visit </span><a href="http://www.google.com/url?q=http://www.gtac.biz/call-for-proposals&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGxoWSo7-KBZCOKfxzCZfx3T_hVYA"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/call-for-proposals</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Deadline</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">The due date for both categories of applications is </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">July 9th, 2010</span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">. </span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Registration Fees</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">There are no registration fees. Please check the FAQ page for more information.</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Further information</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">General website:</span><a href="http://www.google.com/url?q=http://www.gtac.biz/&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHw6mWTz5v6_u0lpIBa9WxGnspwCg"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/</span></a><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Call for proposals:</span><a href="http://www.google.com/url?q=http://www.gtac.biz/call-for-proposals&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGxoWSo7-KBZCOKfxzCZfx3T_hVYA"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/call-for-proposals</span></a><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Call for attendance:</span><a href="http://www.google.com/url?q=http://www.gtac.biz/call-for-attendance&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFZ1LmsJkYCgGkdl_y7vzc0VdvihA"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "> </span><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/call-for-attendance</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">FAQ: </span><a href="http://www.google.com/url?q=http://www.gtac.biz/faq&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNGRwa1uYfhz2d29TLIrOJR-V6xWtQ"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">http://www.gtac.biz/faq</span></a><a href="http://www.google.com/url?q=http://www.gtac.biz/call-for-attendance&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNFZ1LmsJkYCgGkdl_y7vzc0VdvihA"><span style="font-size: 10pt; font-family: Arial; color: rgb(42, 93, 176); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; "></span></a><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Questions: Email us at </span><a href="mailto:gtac-2010@google.com"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">gtac-2010@google.com</span></a><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">We look forward to your applications and a great GTAC! </span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Finally we would appreciate your help in helping us spread the word about this event.</span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Regards</span><span style="font-size: 10pt; font-family: Arial; color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "></span><br /><span style="font-size: 10pt; font-family: Arial; color: rgb(102, 102, 102); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Sujay Sahni </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">on behalf of the </span><a href="http://www.google.com/url?q=http://www.gtac.biz/Conference-Committees&amp;sa=D&amp;sntz=1&amp;usg=AFQjCNHrFXRmT8iHS0oXVue88W3EML__Dg"><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap; ">GTAC 2010 Committee</span></a></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-935430223157908718?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-call-for-attendance-proposals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Test Automation Conference 2010 &#8211; Hyderabad, India</title>
		<link>https://googledata.org/google-testing/google-test-automation-conference-2010-hyderabad-india/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-test-automation-conference-2010-hyderabad-india</link>
		<comments>https://googledata.org/google-testing/google-test-automation-conference-2010-hyderabad-india/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 03:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Thanks for all the enquiries about this year's GTAC event. We have been busy planning and are now ready to share the details. GTAC 2010 will be hosted by Google office in Hyderabad, India on October 28th &#38; 29th, 2010.As in previous years, the focus...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">Thanks for all the enquiries about this year's GTAC event. We have been busy planning and are now ready to share the details. GTAC 2010 will be hosted by </span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; "><a href="http://www.google.co.in/jobs/hyderabad.html"  style="color: rgb(42, 93, 176); ">Google office in Hyderabad, India</a></span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "> on </span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; ">October 28th &amp; 29th, 2010.</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">As in previous years, the focus of the conference will be on solving software engineering challenges using tools and automation. This year the conference theme is "</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; ">Test to Testability</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">". With this theme </span><span style="font-size: 10pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">our goal is to look beyond the challenges faced during testing and the complex products that are being developed today. We also want to highlight methodologies and tools that can be used to build testability into our products and to look at how developer tools can be a means towards effective and efficient testing. GTAC 2010 hopes to bring together a group that </span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">shares lessons learned and practical experiences regarding testing web apps, services, and systems.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">One of the strengths of the conference is that it's driven by a peer group and vocal participation. As in previous years, GTAC is an </span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; ">invitation only</span><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "> conference to share great ideas and to have your thoughts challenged and refined. When you apply, we will be asking you to share with us what ideas and insights you'll be bringing to the conference and how these can further the discussion. The application process for attending will be opening in mid-May 2010.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">Today we are also launching the official </span><a href="http://www.gtac.biz/"  style="color: rgb(42, 93, 176); "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; ">site</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "> for this event and will be updating it and this blog with relevant information in the coming weeks. The next announcement will be a call for attendance and proposals, so do watch these spaces. </span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">Please send suggestions, questions and recommendations to: </span><a href="mailto:gtac-2010@google.com"  style="color: rgb(42, 93, 176); "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 153); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: underline; vertical-align: baseline; ">gtac-2010@google.com</span></a><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "> or post your comments here to this blog.</span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">Looking forward to having a great set of participants and presenters to make this a fun and valuable learning event!</span><br /><span style="color:#888888;"><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; "></span><br /><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; ">Sujay Sahni on behalf of the GTAC 2010 Committees</span></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5797493451042794420?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/google-test-automation-conference-2010-hyderabad-india/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Innovation Factory (and how testing adapts)</title>
		<link>https://googledata.org/google-testing/googles-innovation-factory-and-how-testing-adapts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=googles-innovation-factory-and-how-testing-adapts</link>
		<comments>https://googledata.org/google-testing/googles-innovation-factory-and-how-testing-adapts/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 19:54:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Now that ICST 2010 has concluded, I'm going ahead and posting the keynote paper and the slides. Enjoy! Patrick CopelandLet me know if you have comments or questions.Here's a link to the paper. They are semi-complementary. ]]></description>
				<content:encoded><![CDATA[<div>Now that <a href="http://vps.it-sudparis.eu/icst2010/icst2010v4_fichiers/Page308.htm"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">ICST</span> 2010</a> has concluded, I'm going ahead and posting the keynote paper and the slides. Enjoy! </div><div>Patrick Copeland</div><div><br /></div><div>Let me know if you have comments or questions.</div><div><br /></div><div>Here's a <a href="https://docs.google.com/fileview?id=0B-ol_orZC-QgMzZkMDhmYTYtYjIxMC00MTA5LTk0YjUtOWU3YTAyYzAzZGJi&amp;hl=en">link</a> to the paper. They are semi-complementary. </div><br /><iframe src="http://docs.google.com/present/embed?id=dx5zxb8_7g6knqgxk&amp;interval=5&amp;size=m" frameborder="0" width="555" height="451"></iframe><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5046130483695152761?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/googles-innovation-factory-and-how-testing-adapts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google is hiring SETs</title>
		<link>https://googledata.org/google-testing/google-is-hiring-sets/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-is-hiring-sets</link>
		<comments>https://googledata.org/google-testing/google-is-hiring-sets/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 04:56:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Drop me a resume and a brief note if you're interested in joining Google as an SET. email: test.eng.hiring@gmail.com. Thanks -- Patrick CopelandWhen we hire people we look for folks with a "testing DNA." These are people who are great computer scientis...]]></description>
				<content:encoded><![CDATA[<div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">Drop me a resume and a brief note if you're interested in joining Google as an SET. email: test.eng.hiring@gmail.com. Thanks -- Patrick Copeland</span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">When we hire people we look for folks with a "testing DNA." These are people who are great computer scientists at their core, but also are very curious, love software, and are passionate about test engineering. People who have those characteristics tend to pursue challenges and continue to learn.﻿ Are you one of us? We have positions all over the US and the world.</span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: small;">What is a SET?</span></b></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">At Google, Software Engineers in Test (SET) develop test frameworks and build robust, scalable, and effective tests.  SETs spend a majority of their time coding in either C++, Java, or scripting in Python.  A SET is a software engineer, a core developer, who has a passion for test engineering.   </span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;"><br /></span></span></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: small;">How is testing done differently at Google?</span></b></span></div><div><ul><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">Literally within milliseconds of a code check-in, our build process will automatically select the appropriate tests to run based on dependency analysis, run those tests and report the results. </span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">By reducing the window of opportunity for bad code to go unnoticed, overall debugging and bug isolation time is radically reduced. The net result is that the engineering teams no longer sink hours into debugging build problems and test failures.</span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">Development teams write good tests because they care about the products, but also because they want more time to spend writing features and less on debugging.</span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">Testing teams focus on higher abstractions, like identifying latencies, system or customer focused testing, and enabling the process with tools.</span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">SETs avoid becoming codependents within this system and generally do not write unit tests or other activities that are best done by the developer.</span></span></li></ul></div><div><span class="Apple-style-span"  style="font-family:arial;"><b><span class="Apple-style-span" style="font-size: small;">More about SETs</span></b></span></div><div><ul><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">Our SET’s spend time developing code to prevent bugs. Google has a strong cultural emphasis on developers improving quality (i.e. unit tests, code reviews, design reviews, root cause analysis).  We want our engineers to spend their time innovating - not fixing bugs.</span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">SETs enable products to launch faster.  They have great influence over internal processes and how developers write code.    </span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">One of Google's less understood capabilities is our massive distributed computing environment. The testing groups exploit this infrastructure to do huge amounts of work very quickly and elegantly. </span></span></li><li><span class="Apple-style-span"  style="font-family:arial;"><span class="Apple-style-span" style="font-size: small;">For someone who wants to learn and grow as an engineer, the uninhibited access to the entire code base is a unique opportunity.</span></span></li></ul></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-7908330596400135061?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/google-is-hiring-sets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google @ ICST 2010</title>
		<link>https://googledata.org/google-testing/google-icst-2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-icst-2010</link>
		<comments>https://googledata.org/google-testing/google-icst-2010/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 22:50:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I'll be a presenting a paper at ICST 2010 in Paris April 6-10 about how Google tests and builds software. Here's a pointer to the program if you are interested. Also here's a link to the abstract of the talk itself. I'll publish the paper after the tal...]]></description>
				<content:encoded><![CDATA[I'll be a presenting a paper at ICST 2010 in Paris April 6-10 about how Google tests and builds software. Here's a <a href="https://docs.google.com/fileview?id=0B-ol_orZC-QgMjAzMGI4N2YtMjgwOC00YWUzLTk4ODItY2EwODQ0MjVmNTkx&amp;hl=en">pointer to the program</a> if you are interested. Also here's a <a href="http://vps.it-sudparis.eu/icst2010/icst2010v4_fichiers/Page488copeland.htm">link to the abstract</a> of the talk itself. I'll publish the paper after the talk here. Hopefully, I'll see some of you there!<div><br /><span class="byline-author">Posted by Patrick Copeland</span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5774504648297413591?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/google-icst-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Copeland</title>
		<link>https://googledata.org/google-testing/interview-with-copeland/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=interview-with-copeland</link>
		<comments>https://googledata.org/google-testing/interview-with-copeland/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 20:24:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I recently did an interview with Matt Johnston of uTest (a community based testing company) that talks about our philosophy and approach to testing at Google. Let me know what you think.  Part 1, Part 2, Part 3Posted by Patrick Copeland]]></description>
				<content:encoded><![CDATA[I recently did an interview with Matt Johnston of uTest (a community based testing company) that talks about our philosophy and approach to testing at Google. Let me know what you think.  <div><br /></div><div><a href="http://blog.utest.com/testing-the-limits-with-patrick-copeland-part-i/2010/02/">Part 1</a>, <a href="http://blog.utest.com/testing-the-limits-with-patrick-copeland-part-ii/2010/02/">Part 2</a>, <a href="http://blog.utest.com/testing-the-limits-with-patrick-copeland-part-iii/2010/02/">Part 3</a></div><div><br /><span class="byline-author">Posted by Patrick Copeland</span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-3494400310437022270?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/interview-with-copeland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>http://twitter.com/googletesting</title>
		<link>https://googledata.org/google-testing/httptwitter-comgoogletesting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=httptwitter-comgoogletesting</link>
		<comments>https://googledata.org/google-testing/httptwitter-comgoogletesting/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 23:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Google Testing Blog is now live on twitter. Follow us here: http://twitter.com/googletestingBy Patrick Copeland]]></description>
				<content:encoded><![CDATA[Google Testing Blog is now live on twitter. Follow us here: <a href="http://twitter.com/googletesting">http://twitter.com/googletesting</a><div><br /></div><div>By Patrick Copeland</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4423389607868514209?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/httptwitter-comgoogletesting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update! Speakers &amp; Talks for GTAC</title>
		<link>https://googledata.org/google-testing/update-speakers-talks-for-gtac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-speakers-talks-for-gtac</link>
		<comments>https://googledata.org/google-testing/update-speakers-talks-for-gtac/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 20:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[We are thrilled to announce the speakers and talks for the 4th Google Test Automation Conference (GTAC). Competition was fierce: we received over 100 submissions and have an acceptance rate of lower than 10%.Testing Applications on Mobile Devices (Doro...]]></description>
				<content:encoded><![CDATA[We are thrilled to announce the speakers and talks for the <a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" >4th Google Test Automation Conference (GTAC)</a>. Competition was fierce: we received over 100 submissions and have an acceptance rate of lower than 10%.<br /><ul><li>Testing Applications on Mobile Devices (Doron Reuveni, uTest)</li><li>JsTestDriver (Jeremie Lenfang-Engelmann, Misko Hevery, Google)</li><li>Fighting Layout Bugs (Michael Tamm, optivo GmbH)</li><li>Even better than the real thing - Lessons learned from testing GWT applications (Nicolas Wettstein, Google)</li><li>Selenium: to 2.0 and Beyond! (Simon Stewart, Google)</li><li>Automating Performance Test Data Collection and Reporting (David Burns, David Henderson, smartFOCUS DIGITAL)</li><li>Achieving Web Test Automation with a Mixed-Skills Team (Mark Micallef, BBC Future Media and Technology)</li><li>Score One for Quality! (Joshua Williams and Ross Smith, Microsoft)</li><li>Automatic workarounds for web applications (Antonio Carzaniga, Alessandra Gorla, Nicolò Perino, Mauro Pezzè, University of Lugano )</li><li>Precondition Satisfaction by Smart Object Selection in Random Testing (Yi Wei, Serge Gebhardt, ETH Zurich)</li></ul>For further information on the conference please visit its wepage at <a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" >http://www.gtac.biz</a>.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8508162176213086350?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/update-speakers-talks-for-gtac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Call for Attendance: Google Test Automation Conference (GTAC) 2009</title>
		<link>https://googledata.org/google-testing/call-for-attendance-google-test-automation-conference-gtac-2009/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=call-for-attendance-google-test-automation-conference-gtac-2009</link>
		<comments>https://googledata.org/google-testing/call-for-attendance-google-test-automation-conference-gtac-2009/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 00:11:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Juergen Allgayer, Conference ChairTesting for the Web is the theme of the 4th Google Test Automation Conference (GTAC), to be held in Zurich, October 21-22. We are happy to announce that we are now accepting applications for attendance. The success ...]]></description>
				<content:encoded><![CDATA[<p><span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 16px 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; -webkit-text-size-adjust: auto; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;" ><span style="font-size:85%;">by Juergen Allgayer, Conference Chair</span></span></span></p><p><span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 16px 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; -webkit-text-size-adjust: auto; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;" ><span style="font-size:85%;">Testing for the Web is the theme of the 4th Google Test Automation Conference (</span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" ><span style="font-size:85%;">GTAC</span></a><span style="font-size:85%;">), to be held in Zurich, October 21-22.<span class="Apple-converted-space"> </span><br /><br />We are happy to announce that we are now accepting applications for attendance. The success of the conference depends on active participation of the attendees. Because the available spaces for the conference are limited, we ask each person to apply for attendance. Since we aim for a balanced audience of seasoned practitioners, students and academics, we ask the applicants to provide a brief background statement.<br /><br /><br /><b>How to apply</b><br />Please visit<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/call-for-attendance" ><span style="font-size:85%;">http://www.gtac.biz/call-for-<wbr>attendance</span></a><span style="font-size:85%;"><span class="Apple-converted-space"> </span>to apply for a attendance.<br /><br /></span></span></span><span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: 16px 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; -webkit-text-size-adjust: auto; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;" ><b><br /><span style="font-size:85%;">Deadline</span></b><span style="font-size:85%;"><br />Please submit your application until August 28, 2009 at the latest.<br /><br /></span><b><br /><span style="font-size:85%;">Registration Fees</span></b><span style="font-size:85%;"><br />There are no registration fees. We will send out detailed registration instructions to each invited applicant. We will provide breakfast and lunch. There will be a reception on the evening of October 21.<br /><br /></span><b><br /><span style="font-size:85%;">Cancellation</span></b><span style="font-size:85%;"><br />If you applied but can no longer attend the conference please notify us<br />immediately by sending an email to<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="mailto:gtac-2009-cfa@google.com" ><span style="font-size:85%;">gtac-2009-cfa@google.com</span></a><span style="font-size:85%;"><span class="Apple-converted-space"> </span>so<br />someone from the waiting list can get the opportunity instead.<br /><br /><br /><b>Further information</b><br />General website:<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" ><span style="font-size:85%;">http://www.gtac.biz/</span></a><span style="font-size:85%;"><br />Call for proposals:<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/call-for-proposals" ><span style="font-size:85%;">http://www.gtac.biz/call-for-<wbr>proposals</span></a><span style="font-size:85%;"><br />Call for attendance:<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/call-for-attendance" ><span style="font-size:85%;">http://www.gtac.biz/call-for-<wbr>attendance</span></a><span style="font-size:85%;"><br />Accommodations:<span class="Apple-converted-space"> </span></span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/accomodations" ><span style="font-size:85%;">http://www.gtac.biz/<wbr>accomodations</span></a></span></span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2008207006708361742?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/call-for-attendance-google-test-automation-conference-gtac-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update! GTAC Keynote Speakers: Niklaus Wirth and Alberto di Meglio</title>
		<link>https://googledata.org/google-testing/update-gtac-keynote-speakers-niklaus-wirth-and-alberto-di-meglio/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-gtac-keynote-speakers-niklaus-wirth-and-alberto-di-meglio</link>
		<comments>https://googledata.org/google-testing/update-gtac-keynote-speakers-niklaus-wirth-and-alberto-di-meglio/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 23:22:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Juergen Allgayer, Conference ChairWe are thrilled to announce that Niklaus Wirth and Alberto di Meglio are this years keynote speakers at the 4th Google Test Automation Conference (GTAC).Niklaus WirthProf. Niklaus Wirth, is the designer of several p...]]></description>
				<content:encoded><![CDATA[<span style="font-family:arial;">by <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Juergen</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Allgayer</span>, Conference Chair</span><br /><span style="font-family:arial;"></span><br /><span style="font-family:arial;">We are thrilled to announce that <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Niklaus</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Wirth</span> and Alberto <span class="blsp-spelling-error" id="SPELLING_ERROR_4">di</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Meglio</span> are this years keynote speakers at the 4<span class="blsp-spelling-error" id="SPELLING_ERROR_6">th</span> Google Test Automation Conference (</span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" ><span style="font-family:arial;"><span class="blsp-spelling-error" id="SPELLING_ERROR_7">GTAC</span></span></a><span style="font-family:arial;">).</span><br /><span style="font-family:arial;"></span><br /><strong><span style="font-family:arial;"><span class="blsp-spelling-error" id="SPELLING_ERROR_8">Niklaus</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Wirth</span></span></strong><br /><span style="font-family:arial;">Prof. <span class="blsp-spelling-error" id="SPELLING_ERROR_10">Niklaus</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Wirth</span>, is the designer of several programing languages and operating systems, including Pascal and Oberon. He received many awards including the Turing award, is author of many books and articles such as "Program Development by Stepwise Refinement" and "Algorithms + Data Structures = Programs". Prof. <span class="blsp-spelling-error" id="SPELLING_ERROR_12">Niklaus</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_13">Wirth</span> served as professor at Stanford, University of Zurich, and <span class="blsp-spelling-error" id="SPELLING_ERROR_14">ETH</span> Zurich.</span><br /><span style="font-family:arial;"></span><br /><strong><span style="font-family:arial;">Alberto <span class="blsp-spelling-error" id="SPELLING_ERROR_15">di</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_16">Meglio</span></span></strong><br /><span style="font-family:arial;">In 2003, Dr. Alberto <span class="blsp-spelling-error" id="SPELLING_ERROR_17">di</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_18">Meglio</span> was appointed by <span class="blsp-spelling-error" id="SPELLING_ERROR_19">CERN</span> as Software Integration Manager in the <span class="blsp-spelling-error" id="SPELLING_ERROR_20">Middleware</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_21">Reengineering</span> Activity of the first Enabling Grids for E-science (<span class="blsp-spelling-error" id="SPELLING_ERROR_22">EGEE</span>) project. At the end of the <span class="blsp-spelling-error" id="SPELLING_ERROR_23">EGEE</span> project, thanks to the very successful results obtained with the integration and testing tools and procedures developed for the grid <span class="blsp-spelling-error" id="SPELLING_ERROR_24">middleware</span> developed by <span class="blsp-spelling-error" id="SPELLING_ERROR_25">EGEE</span>, Alberto set up Infrastructure for Testing, Integration and Configuration of Software, an international infrastructure co-funded by EC <span class="blsp-spelling-error" id="SPELLING_ERROR_26">FP</span>7 (European Commission: <span class="blsp-spelling-error" id="SPELLING_ERROR_27">CORDIS</span> - Seventh Framework Programme) for building and testing software on the grid, of which he is currently Project Director.</span><br /><span style="font-family:arial;"></span><br /><strong><span style="font-family:arial;">Reminder: Call for proposals</span></strong><br /><span style="font-family:arial;">If you would like to give a talk at <span class="blsp-spelling-error" id="SPELLING_ERROR_28">GTAC</span> please remember to submit your proposal until August 1 at the latest. Please visit </span><a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/call-for-proposals" ><span style="font-family:arial;">http://www.gtac.biz/call-for-proposals</span></a><span style="font-family:arial;"> for details.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4488802826080153097?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/update-gtac-keynote-speakers-niklaus-wirth-and-alberto-di-meglio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Stats</title>
		<link>https://googledata.org/google-testing/blog-stats/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-stats</link>
		<comments>https://googledata.org/google-testing/blog-stats/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 20:42:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Patrick CopelandWe get questions once in a while about our readership. Here's a brief summary of the last 30 days...Page view count: 34,140Time on each page: 2:52Most popular day to read: Tuesday's.Most traffic (top 5 in order): US, India, UK, Germa...]]></description>
				<content:encoded><![CDATA[<p><span style="font-family:arial;">by Patrick Copeland</span></p><p><span style="font-family:arial;">We get questions once in a while about our readership. Here's a brief summary of the <strong>last 30 days</strong>...</span></p><p><span style="font-family:arial;">P</span><span style="font-family:arial;">age view count: 34,140<br />Time on each page: 2:52<br />Most <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">popular</span> day to read: Tuesday's.<br />Most traffic (top 5 in order): US, India, UK, Germany, Canada<br />Number of <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">countries with readers</span>: 131</span></p><p><span style="font-family:arial;">Most popular posts...</span></p><ol><li><a href="http://googletesting.blogspot.com/2009/07/why-are-we-embarrassed-to-admit-that-we.html"><span style="font-family:arial;">/2009/07/why-are-we-embarrassed-to-admit-that-we</span></a><span style="font-family:arial;"> (2,227)</span></li><li><a href="http://googletesting.blogspot.com/2009/06/7-plagues-of-software-testing.html"><span style="font-family:arial;">/2009/06/7-plagues-of-software-testing</span></a><span style="font-family:arial;"> (2,151)</span></li><li><a href="http://googletesting.blogspot.com/2009/07/software-testing-categorization.html"><span style="font-family:arial;">/2009/07/software-testing-categorization</span></a><span style="font-family:arial;"> </span></li><li><a href="http://googletesting.blogspot.com/2009/07/by-shyam-seshadri-nowadays-when-i-talk.html"><span style="font-family:arial;">/2009/07/advantages-of-unit-testing</span></a><span style="font-family:arial;"> </span></li><li><a href="http://googletesting.blogspot.com/2009/06/by-james.html"><span style="font-family:arial;">/2009/06/plague-of-repetitiveness</span></a><span style="font-family:arial;"> </span></li><li><a href="http://googletesting.blogspot.com/2009/07/old-habits-die-hard.html"><span style="font-family:arial;">/2009/07/old-habits-die-hard</span></a><span style="font-family:arial;"> </span></li><li><a href="http://googletesting.blogspot.com/2009/07/separation-anxiety.html"><span style="font-family:arial;">/2009/07/separation-anxiety </span></a></li><li><a href="http://googletesting.blogspot.com/2009/06/gtac-call-for-proposals.html"><span style="font-family:arial;">/2009/06/<span class="blsp-spelling-error" id="SPELLING_ERROR_1"><span class="blsp-spelling-error" id="SPELLING_ERROR_1">gtac</span></span>-call-for-proposals</span></a><span style="font-family:arial;"> </span></li><li><a href="http://googletesting.blogspot.com/2009/07/plague-of-amnesia.html"><span style="font-family:arial;">/2009/07/plague-of-amnesia</span></a><span style="font-family:arial;"> </span></li></ol><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1937060308977825007?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/blog-stats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog Editor: Moderating Comments</title>
		<link>https://googledata.org/google-testing/blog-editor-moderating-comments/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blog-editor-moderating-comments</link>
		<comments>https://googledata.org/google-testing/blog-editor-moderating-comments/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 03:08:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Patrick CopelandYou might not know this but when we started this blog back in January 2007 we were the first at Google to allow readers to comment openly on our posts. We take pride in our goal to participate in the testing community.This openness i...]]></description>
				<content:encoded><![CDATA[by Patrick Copeland<br /><br />You might not know this but when we started this blog back in January 2007 we were the first at Google to allow readers to comment openly on our posts. We take pride in our goal to participate in the testing community.<br /><br />This openness is sometimes abused. Lately the volume of  comment spam has been on the raise. We have to spend a lot of time playing "whack-a-mole" cleaning it up. It's annoying to our readers and clutters the legitimate discussion.<br /><br />We've taken the step to moderate comments starting today and will delete spam before you see it. Comments that are clearly spam or are purely promotional in nature will be filtered. The only down side is that comments will have a slight latency getting posted. We will continue to encourage debate and won't censor conflicting or alternative ideas.<br /><br />Thanks for understanding. And keep up the rich discussion.<br /><span class="byline-author"></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-781150873688745739?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/blog-editor-moderating-comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update! Google Test Automation Conference: Website available</title>
		<link>https://googledata.org/google-testing/update-google-test-automation-conference-website-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-google-test-automation-conference-website-available</link>
		<comments>https://googledata.org/google-testing/update-google-test-automation-conference-website-available/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 15:57:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Juergen Allgayer, Conference ChairThe organization of the 4th Google Conference on Test Automation (GTAC 2009), held in Zurich October 21-22, is well underway and we are looking forward to an exciting event. We are pleased to announce the GTAC websi...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;font-size:13;"  ><div><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px">by <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Juergen</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Allgayer</span>, </span>Conference Chair</div><div><br /></div>The <span class="blsp-spelling-error" id="SPELLING_ERROR_2">organization</span> of the 4<span class="blsp-spelling-error" id="SPELLING_ERROR_3">th</span> Google Conference on Test Automation (<span class="blsp-spelling-error" id="SPELLING_ERROR_4">GTAC</span> 2009), held in Zurich October 21-22, is well underway and we are looking forward to an exciting event. We are pleased to announce the <span class="blsp-spelling-error" id="SPELLING_ERROR_5">GTAC</span> website and that presenters will be able to apply for sponsorship.<br /><br /><b>Sponsorship available</b><br />One presenter per accepted proposal will be able to apply for sponsorship from Google. For sponsored presenters Google will arrange and pay travel and lodging (within reason). Further details will be announced to speakers of accepted proposals.<br /><br /><b>Website on-line (<a style="COLOR: rgb(42,93,176)" href="http://www.gtac.biz/" >http://www.gtac.biz/</a>)</b><br />The conference website is now on-line with lots of information about the event, on how to submit proposals, about the venue, and much more.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4045810316807355024?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/update-google-test-automation-conference-website-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Old habits die hard</title>
		<link>https://googledata.org/google-testing/old-habits-die-hard/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=old-habits-die-hard</link>
		<comments>https://googledata.org/google-testing/old-habits-die-hard/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 20:53:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[by Stephen Ng and Noel YapOld habits die hard. Particularly when it comes to testing--once you get used to working in a project blanketed with lots of fast-running unit tests, it's hard to go back.So when some of us at Google learned that we weren't ab...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="font-family: arial; border-collapse: collapse; font-size: 13px; "><div><span style="border-collapse: collapse; ">by Stephen Ng and Noel Yap</span></div><div><span style="border-collapse: collapse; "><br /></span></div><div><div class="im"><div><span style="font-family: arial, sans-serif; border-collapse: collapse; ">Old habits die hard. Particularly when it comes to testing--once you get used to working in a project blanketed with lots of fast-running unit tests, it's hard to go back.</span><br /><span style="font-family:arial, sans-serif;"><span style="border-collapse: collapse; "><br /></span></span><span style="font-family: arial, sans-serif; border-collapse: collapse; ">So when some of us at Google learned that we weren't able to use our favorite mocking libraries when writing for our favorite mobile platform (Android, naturally), we decided to do something about it.</span><br /><span style="font-family:arial, sans-serif;"><span style="border-collapse: collapse; "><br /></span></span></div></div><span style="font-family: arial, sans-serif; border-collapse: collapse; ">As many of you already know (since you read this blog), mocking combined with dependency injection is a valuable technique for helping you write small, focused unit tests.  And those tests in turn can help you structure your code </span><span style="font-family: arial, sans-serif; border-collapse: collapse; ">so that it's loosely coupled, making it more readable and maintainable.</span><br /><span style="font-family:arial, sans-serif;"><span style="border-collapse: collapse; "><br /></span></span><span style="font-family: arial, sans-serif; border-collapse: collapse; ">With a bit of setup, this can be done in Android, too.  We've put together <a href="https://sites.google.com/site/androiddevtesting/"  style="color: rgb(42, 93, 176); ">a tutorial</a> describing our approach.  It's the first installment in what we hope will be a series of articles on android app development and testing, from the perspective of Googlers who are not actually on the Android team.  We'd love to hear whether you find it useful.</span></div></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5936140132071877979?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/old-habits-die-hard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC: Call for Proposals</title>
		<link>https://googledata.org/google-testing/gtac-call-for-proposals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-call-for-proposals</link>
		<comments>https://googledata.org/google-testing/gtac-call-for-proposals/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 15:51:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Juergen Allgayer - GTAC Conference Chair GTAC 2009: Testing for the webThe 4th Google Test Automation Conference brings together a selected set of industry practitioners around the topic of software testing and automation. This annual confere...]]></description>
				<content:encoded><![CDATA[<span class="byline-author"   style="font-family:arial;font-size:100%;">Posted by </span><span style="font-family:arial;font-size:100%;">Juergen Allgayer - GTAC Conference Chair</span> <span class="byline-author"   style="font-family:arial;font-size:100%;"><br /></span><h1 style="FONT-WEIGHT: normal;font-family:arial;" ><span style="font-size:100%;">GTAC 2009: Testing for the web</span></h1><p  style="font-family:arial;"><span style="font-size:100%;">The 4th <a id="d1z3" title="Test Automation Conference" href="http://www.youtube.com/results?search_query=GTAC+google" >Google Test Automation Conference</a> brings together a selected set of industry practitioners around the topic of software testing and automation. This annual conference provides a forum for presentations and connects professionals with each other. To increase outreach, presentations are published online for everybody to see.<br /></span></p><p  style="font-family:arial;"><span style="font-size:100%;">This years theme is <b>Testing for the Web</b>, topics may include:<br /></span></p><span style="font-family:arial;font-size:100%;"></span><ul  style="font-family:arial;"><li><span style="font-size:100%;">Testing the UI of modern web applications (HTML5, Ajax)</span></li><li><span style="font-size:100%;">Testing applications on mobile devices</span></li><li><span style="font-size:100%;">Testing in the cloud</span></li><li><span style="font-size:100%;">Web testing tools (Selenium, Webdriver and co)</span></li><li><span style="font-size:100%;">Testing distributed asynchronous applications</span></li><li><span style="font-size:100%;">Testing for web browser compatibility</span></li><li><span style="font-size:100%;">Testing large storage systems</span></li><li><span style="font-size:100%;">Load and performance testing</span></li><li><span style="font-size:100%;">Finding and reproducing failures that matter</span></li><li><span style="font-size:100%;">It seemed like a good idea (things you expected to work, but that didn't)<br /></span></li></ul><p  style="font-family:arial;"></p><p face="arial"><span style="font-size:100%;">Presentations are targeted at experienced engineers actively working on problems of quality, test automation and techniques, but also include students and academics. We encourage innovative ideas, controversial experiences, problems, and solutions that further the discussion of software engineering and testing. Presentations are 45 min in length and speakers should be prepared for an active question and answer session following their presentation. While ideas are good, ideas refined by experience are even more interesting to participants at GTAC.<br /></span></p><p face="arial"></p><p face="arial"></p><p style="FONT-FAMILY: arial"></p><p style="FONT-FAMILY: arial"></p><p style="FONT-FAMILY: arial"><span style="font-size:100%;">The conference is a two day event comprised of a single track of talks. Our philosophy is to engage a small set of active participants who all experience the same topics carrying the discussions into lightning talks, speaker Q&amp;A, and topical discussion groups. Each year we have worked to identify a location that has a unique profile of technology professionals. This year the conference will be held at the <a id="d3gi" title="Google office in Zurich, Switzerland" href="http://www.google.ch/support/jobs/bin/static.py?page=why-zrh.html">Google office in Zurich, Switzerland</a> on <b>October 21 and 22, 2009</b>.</span><span style="font-size:100%;"><br /><br /><br /><span style="FONT-WEIGHT: bold">Submission of Proposals</span></span><span style="font-size:100%;"><span style="FONT-WEIGHT: normal"><br />Please email a detailed and extended abstract (one page at most) to </span><a id="vopf" title="gtac-2009-cfp@google.com" style="FONT-WEIGHT: normal" href="mailto:gtac-2009-cfp@google.com">gtac-2009-cfp@google.com</a><span style="FONT-WEIGHT: normal">. Your submission must include the name of topic, author(s), affiliation, and an outline of the proposed talk. We strongly recommend you to also submit one or two highlight slides of the talk. Submit your proposal before </span>August 1, 2009<span style="FONT-WEIGHT: normal">. We will acknowledge reception within one business day. Where employer or disclosure authorization is needed, authors need to obtain it prior to submitting. The program committee will evaluate proposals based on quality and relevance. All submissions will be held confidentially prior to contacting the selected presenters.</span></span><br /><br /><span style="FONT-WEIGHT: bold">Notification of Acceptance</span><span style="FONT-WEIGHT: normal;font-size:100%;" ><br />Notification of acceptance will be sent out on or before August 8, 2009. Authors of accepted proposals will present at the conference and their talk will be made available to the public on YouTube.</span><span style="font-size:100%;"><br /><br /><span style="FONT-WEIGHT: bold">Copyright</span></span><br /><span style="font-size:100%;"><span style="FONT-WEIGHT: normal">GTAC requires authors to present at the conference and permit their presentation to be made available on YouTube.</span></span><br /><br /><span style="FONT-WEIGHT: bold">Attendees</span><span style="FONT-WEIGHT: normal;font-size:100%;" ><br />To ensure active participation and provide a variety of technical perspectives, we select applying attendees. Further information will be published via a call for participation at a later time.</span><br /><br /><span style="FONT-WEIGHT: bold">Important Dates</span><span style="FONT-WEIGHT: normal"><br />August 1 - Deadline for presentation proposals</span><span style="font-size:100%;"><span style="FONT-WEIGHT: normal"><br />August 8 - Notification of acceptance</span></span><span style="font-size:100%;"><span style="FONT-WEIGHT: normal"><br />October 21+22 - GTAC conference (Zurich, Switzerland)</span></span><span style="font-size:100%;"><br /><br /><span style="FONT-WEIGHT: bold">Questions</span></span><span style="font-size:100%;"><span style="FONT-WEIGHT: normal"><br />If you have questions regarding the submission process or potential topics please email us at: </span><a id="cy1." title="gtac-2009@google.com" style="FONT-WEIGHT: normal" href="mailto:gtac-2009@google.com">gtac-2009@google.com</a><br /><br />We will add more information to the <a id="t.ff" title="Google Testing Blog" href="http://googletesting.blogspot.com/">Google Testing Blog</a> as we get closer to the dates.</span></p><p style="FONT-FAMILY: arial"><span style="font-size:100%;"><br /></span></p><p style="FONT-FAMILY: arial"><span style="font-size:100%;"><br /></span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-6059093154154020417?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-call-for-proposals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Test Automation Conference 2009 &#8211; Zurich, Switzerland</title>
		<link>https://googledata.org/google-testing/google-test-automation-conference-2009-zurich-switzerland/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-test-automation-conference-2009-zurich-switzerland</link>
		<comments>https://googledata.org/google-testing/google-test-automation-conference-2009-zurich-switzerland/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 04:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[We have already received several inquiries about this year's GTAC - thanks for your enthusiasm, here's the news you've been waiting for - we will host the GTAC 2009 October 21 and 22 at the Google offices in Zurich, Switzerland.As with previous years, ...]]></description>
				<content:encoded><![CDATA[<span style="font-family:arial;font-size:100%;">W</span><span style="font-family:arial;font-size:100%;">e have already received several inquiries about this year's <span class="blsp-spelling-error" id="SPELLING_ERROR_0">GTAC</span> - thanks for your enthusiasm, here's the news you've been waiting for - we will host the <span class="blsp-spelling-error" id="SPELLING_ERROR_1">GTAC</span> 2009 </span><span class="Apple-style-span" style="COLOR: rgb(255,0,0);font-family:arial;font-size:100%;"  >October 21 and 22 </span><span style="font-family:arial;font-size:100%;">at the <a id="jl-8" title="Google offices in Zurich, Switzerland" href="http://www.google.ch/support/jobs/bin/static.py?page=why-zrh.html" >Google offices in Zurich, Switzerland</a></span><span style="font-family:arial;font-size:100%;">.<br /><br />As with previous years, the focus of the conference will be on solving software engineering challenges using tools and automation. This year will have a special focus on "Testing for the Web". We are looking forward to getting together to sharing lessons learned and practical experience testing web apps, services, and systems. We are also encouraging a discussion on effectively testing apps and services for mobile devices.<br /><br />We will have a call for proposals coming out very soon - watch this space!</span><span style="font-family:arial;font-size:100%;"><br /><br />One of the strengths of the conference is that it's driven by a peer group and vocal participation. As in previous years, <span class="blsp-spelling-error" id="SPELLING_ERROR_2">GTAC</span> is an invitation only conference to share great ideas and to have your thoughts challenged and refined. When you apply, we want you to tell us what ideas and questions you'll bring to the conference, and <span style="FONT-WEIGHT: bold">how you can further the discussion</span>. We will open the application process in late July 2009.</span><span style="font-family:arial;font-size:100%;"><br /><br />Please send suggestions, questions and recommendations to: <a id="ucw8" title="gtac-2009@google.com" href="mailto:gtac-2009@google.com">gtac-2009@google.com</a></span><span style="font-family:arial;font-size:100%;"> or post your comments here to this blog.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-281478993215888450?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/google-test-automation-conference-2009-zurich-switzerland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>James Whittaker joins Google</title>
		<link>https://googledata.org/google-testing/james-whittaker-joins-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=james-whittaker-joins-google</link>
		<comments>https://googledata.org/google-testing/james-whittaker-joins-google/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 22:34:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[By Patrick CopelandI'm excited to announce that James Whittaker has joined us as our newest Test Director at Google. James comes to us most recently from Microsoft. He has spent his career focusing on testing, building high quality products, and design...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;font-size:13;"  ><div>By Patrick Copeland</div><div><br /></div><div>I'm excited to announce that James Whittaker has joined us as our newest Test Director at Google. <br /></div></span><div><span class="Apple-style-span" style="BORDER-COLLAPSE: collapse;font-family:arial;font-size:13;"  ><div><br /></div><div>James comes to us most recently from Microsoft. He has spent his career focusing on testing, building high quality products, and designing tools and process at the industrial scale. In the not so distant past, he was a professor of computer science at Florida Tech where he taught an entire software testing curriculum and issued computer science degrees with a minor in testing (something we need more schools to do). Following that , he started a consulting practice that spanned 33 countries. Apparently, fashion is not high on his list as he he has collected soccer jerseys from many of these countries and wears those during major tournaments. At Microsoft he wrote a <a style="COLOR: rgb(42,93,176)" href="http://blogs.msdn.com/james_whittaker/" >popular blog,</a> and in the near future you can expect him to start <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">contributing</span> here. </div><div><br /></div><div>He has trained thousands of testers worldwide. He's also written set of books in the <span style="FONT-STYLE: italic"><a style="COLOR: rgb(42,93,176)" href="http://search.barnesandnoble.com/How-to-Break-Software/James-A-Whittaker/e/9780201796193" >How to Break Software</a> </span>series. They have won awards and achieved best seller status. His most recent book is on exploratory testing is coming out this summer. It is not a stretch to say that he is one of the most recognizable names in the industry and has had a deep impact on the field of testing. If you have a chance, strike up a conversation with James about the future of testing. His vision for what we'll be doing and how our profession will change is interesting, compelling and not just a little bit scary.</div><div><br /></div><div>Join me in welcoming James to Google!</div></span></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4236649122107332594?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/james-whittaker-joins-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beyond Testing: Becoming Part of the Innovation Machine</title>
		<link>https://googledata.org/google-testing/beyond-testing-becoming-part-of-the-innovation-machine/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=beyond-testing-becoming-part-of-the-innovation-machine</link>
		<comments>https://googledata.org/google-testing/beyond-testing-becoming-part-of-the-innovation-machine/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 23:03:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[             As you may have noticed, we've taken a short hiatus from posting. But all is not lost...we have been building a group of robots that will automatically write witty testing articles for us. We are still tweaking our algorithms for verbosity...]]></description>
				<content:encoded><![CDATA[<td bgcolor="#dfecf4" width="2%"></td>             <td align="left" bgcolor="#dfecf4" valign="top" width="80%"><span class="GreyText"><span class="Apple-style-span" style="font-family: 'Times New Roman'; "><div style="margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; font: normal normal normal small/normal arial; "><span class="Apple-style-span" style="font-family: Georgia; font-size: 16px; ">As you may have noticed, we've taken a short hiatus from posting. But all is not lost...we have been building a group of robots that will automatically write witty testing articles for us. We are still tweaking our algorithms for verbosity, humor, and technical detail. Once we are done, the posting will continue. In the mean time, we are sending one of our cyborgs to do a keynote at <a href="http://www.sqe.com/StareaSt/Keynotes/Default.aspx">Star East 2009.</a> Here's the topic of the keynote if you are interested...</span></div></span><blockquote>Testing, once a marginalized function at Google, is now an integral part of Google’s innovation machine. Patrick Copeland describes how this vital transformation took place. As he was analyzing how to be more efficient and better align his testing team with the needs of the company, Patrick realized they had to move beyond “just testing” and become a force for change. His approach was based on five powerful principles: (1) Building feature factories rather than products, (2) Embedding testing at the grass roots level, (3) Solving problems of scale with technology, (4) Automating at the right level of abstraction, (5) Only doing what the team can do well. Learn how Google test teams used these principles to shift from a “service group” composed predominantly of exploratory testers to an “engineering group” with technical skills. Their focus became “delivering innovation” rather than “testing product.” Learn how Patrick led a cultural shift where product teams saw testing and continuous improvement, not as alien concepts driven by someone else, but as a tool for them to meet their own goals of delivering features quickly and with fewer problems. Discover how you can incorporate the lessons of Google to make your test team a vital force for change.</blockquote></span></td><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4797867827188004307?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/beyond-testing-becoming-part-of-the-innovation-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC Videos and Slides Available</title>
		<link>https://googledata.org/google-testing/gtac-videos-and-slides-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-videos-and-slides-available</link>
		<comments>https://googledata.org/google-testing/gtac-videos-and-slides-available/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 17:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Lydia Ash, GTAC Conference ChairThe Google Test Automation Conference 2008 was a smashing success, and in no small part due to all of our presenters and participants. A wonderful thank you from all of us at Google to everyone that participate...]]></description>
				<content:encoded><![CDATA[<span class="Apple-style-span" style="border-collapse: collapse; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:arial;font-size:100%;"  >Posted by Lydia Ash, <span class="blsp-spelling-error" id="SPELLING_ERROR_0">GTAC</span> Conference Chair</span><span style=";font-family:arial;font-size:100%;"  ><br /></span><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:arial;font-size:100%;"  ><br />The <span style="font-weight: bold;">Google Test Automation Conference 2008</span> was a smashing success, and in no small part due to all of our presenters and participants. A wonderful thank you from all of us at Google to everyone that participated! The tone of the conference really struck me as I watched how everyone came together around various topics. I don't think we would have had trouble keeping the conversations going if there was an entire day dedicated to the moderated discussions.<span class="Apple-converted-space"><br /><br /></span>We were able to get the slide decks from our presenters. These are listed below with their video link.<br />We will be evaluating what location the next <span class="blsp-spelling-error" id="SPELLING_ERROR_2">GTAC</span> should be held, and your comments will help shape the next conference. Building on the successes in the past, next year should be even better! Stay tuned for a Save the Date notice sometime in the spring.<br /><br />Opening Remarks - Lydia Ash<br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=l5QmHXcNk4g"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=l5<span class="blsp-spelling-error" id="SPELLING_ERROR_3">QmHXcNk</span>4g</a><br /><br />The Future of Testing - James A. Whittaker<br />Video coming soon...<br /><br />Advances in Automated Software Testing Technologies - <span class="blsp-spelling-error" id="SPELLING_ERROR_4">Elfriede</span> Dustin and Marcus <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Borch</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=HEpSdSyU03I"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_6">HEpSdSyU</span>03I</a><br /><br />Boosting Your Testing Productivity with Groovy - Andres <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Almiray</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=UvWTfVCWKJY"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_8">UvWTfVCWKJY</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://www.slideshare.net/aalmiray/gtac-boosting-your-testing-productivity-with-groovy/"  style="color: rgb(42, 93, 176);">http://www.slideshare.net/<wbr><span class="blsp-spelling-error" id="SPELLING_ERROR_9">aalmiray</span>/<span class="blsp-spelling-error" id="SPELLING_ERROR_10">gtac</span>-boosting-your-<wbr>testing-productivity-with-<wbr>groovy/</a><br /><br />Taming the Beast: How to Test an AJAX Application - Markus <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Clermont</span> and John Thomas<br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=5jjrTBFZWgk"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=5<span class="blsp-spelling-error" id="SPELLING_ERROR_12">jjrTBFZWgk</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_62gccsc9gg"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_13">dczwht</span>9g_<wbr>62<span class="blsp-spelling-error" id="SPELLING_ERROR_14">gccsc</span>9<span class="blsp-spelling-error" id="SPELLING_ERROR_15">gg</span></a><br /><br />The New <span class="blsp-spelling-error" id="SPELLING_ERROR_16">Genomics</span>: Software Development at Petabyte Scale - Matt Wood<br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=A64WKH9gNI8"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=A64<span class="blsp-spelling-error" id="SPELLING_ERROR_17">WKH</span>9<span class="blsp-spelling-error" id="SPELLING_ERROR_18">gNI</span>8</a><br />Slides part 1:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_3318qqfb6f5"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_19">dczwht</span>9g_<wbr>3318<span class="blsp-spelling-error" id="SPELLING_ERROR_20">qqfb</span>6f5</a><br />Slides part 2:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_393d7zg4xcm"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_21">dczwht</span>9g_<wbr>393d7<span class="blsp-spelling-error" id="SPELLING_ERROR_22">zg</span>4<span class="blsp-spelling-error" id="SPELLING_ERROR_23">xcm</span></a><br /><br />Using Cloud Computing to Automate Full-Scale System Tests - Marc-<span class="blsp-spelling-error" id="SPELLING_ERROR_24">Elian</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_25">Bégin</span> and Charles <span class="blsp-spelling-error" id="SPELLING_ERROR_26">Loomis</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=atyq-41Gnjc"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_27">atyq</span>-41<span class="blsp-spelling-error" id="SPELLING_ERROR_28">Gnjc</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_251gcv8cbfv"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_29">dczwht</span>9g_<wbr>251<span class="blsp-spelling-error" id="SPELLING_ERROR_30">gcv</span>8<span class="blsp-spelling-error" id="SPELLING_ERROR_31">cbfv</span></a><br /><br />Practicing Testability in the Real World - <span class="blsp-spelling-error" id="SPELLING_ERROR_32">Vishal</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_33">Chowdhary</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=hL829wNaF78"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_34">hL</span>829<span class="blsp-spelling-error" id="SPELLING_ERROR_35">wNaF</span>78</a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_0hgd2w5rz"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_36">dczwht</span>9g_<wbr>0<span class="blsp-spelling-error" id="SPELLING_ERROR_37">hgd</span>2w5<span class="blsp-spelling-error" id="SPELLING_ERROR_38">rz</span></a><br /><br />Context-Driven Test Automation: How to Build the System you Really Need - Pete Schneider<br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=N9sm_zcpUEw"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=N9<span class="blsp-spelling-error" id="SPELLING_ERROR_39">sm</span>_<span class="blsp-spelling-error" id="SPELLING_ERROR_40">zcpUEw</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_236ccxj32fd"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_41">dczwht</span>9g_<wbr>236<span class="blsp-spelling-error" id="SPELLING_ERROR_42">ccxj</span>32<span class="blsp-spelling-error" id="SPELLING_ERROR_43">fd</span></a><br /><br />Automated Model-Based Testing of Web Applications - <span class="blsp-spelling-error" id="SPELLING_ERROR_44">Atif</span> M. <span class="blsp-spelling-error" id="SPELLING_ERROR_45">Memon</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_46">Oluwaseun</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_47">Akinmade</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=6LdsIVvxISU"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=6<span class="blsp-spelling-error" id="SPELLING_ERROR_48">LdsIVvxISU</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://www.cs.umd.edu/%7Eatif/GTAC08/"  style="color: rgb(42, 93, 176);">http://www.cs.umd.edu/~atif/<wbr><span class="blsp-spelling-error" id="SPELLING_ERROR_49">GTAC</span>08/</a><br /><br />The Value of Small Tests - Christopher <span class="blsp-spelling-error" id="SPELLING_ERROR_50">Semturs</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=MpG2i_6nkUg"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_51">MpG</span>2i_6<span class="blsp-spelling-error" id="SPELLING_ERROR_52">nkUg</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dckk962d_332cxtcsmhg"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_53">dckk</span>962d_<wbr>332<span class="blsp-spelling-error" id="SPELLING_ERROR_54">cxtcsmhg</span></a><br /><br /><span class="blsp-spelling-error" id="SPELLING_ERROR_55">JInjector</span>: A Coverage and End-To-End Testing Framework for J2ME and RIM - Julian <span class="blsp-spelling-error" id="SPELLING_ERROR_56">Harty</span>, Olivier <span class="blsp-spelling-error" id="SPELLING_ERROR_57">Gaillard</span>, and Michele <span class="blsp-spelling-error" id="SPELLING_ERROR_58">Sama</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=B2v5jQ9NLVg"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=B2v5<span class="blsp-spelling-error" id="SPELLING_ERROR_59">jQ</span>9<span class="blsp-spelling-error" id="SPELLING_ERROR_60">NLVg</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_82d7w8bqd9"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_61">dczwht</span>9g_<wbr>82d7w8<span class="blsp-spelling-error" id="SPELLING_ERROR_62">bqd</span>9</a><br /><br />Atom Publishing Protocol: Testing your Server Implementation - David <span class="blsp-spelling-error" id="SPELLING_ERROR_63">Calavera</span><br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=uRmWTfT91uQ"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_64">uRmWTfT</span>91<span class="blsp-spelling-error" id="SPELLING_ERROR_65">uQ</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://thinkincode.net/gtac_atomPub_testing_your_server_implementation.pdf"  style="color: rgb(42, 93, 176);">http://thinkincode.net/gtac_<wbr><span class="blsp-spelling-error" id="SPELLING_ERROR_66">atomPub</span>_testing_your_server_<wbr>implementation.<span class="blsp-spelling-error" id="SPELLING_ERROR_67">pdf</span></a><br /><br />Simple Tools to Fight the Bigger Quality Battle: Continuous Integration Using Batch Files<span class="Apple-converted-space"> </span><br />and Task Scheduler - <span class="blsp-spelling-error" id="SPELLING_ERROR_68">Komal</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_69">Joshi</span> and Patrick Martin<br />Video:<span class="Apple-converted-space"> </span><a href="http://www.youtube.com/watch?v=wgP7ejMBCCU"  style="color: rgb(42, 93, 176);">http://www.youtube.com/watch?<wbr>v=<span class="blsp-spelling-error" id="SPELLING_ERROR_70">wgP</span>7<span class="blsp-spelling-error" id="SPELLING_ERROR_71">ejMBCCU</span></a><br />Slides:<span class="Apple-converted-space"> </span><a href="http://docs.google.com/Presentation?id=dczwht9g_141czcvc7md"  style="color: rgb(42, 93, 176);">http://docs.google.com/<wbr>Presentation?id=<span class="blsp-spelling-error" id="SPELLING_ERROR_72">dczwht</span>9g_<wbr>141<span class="blsp-spelling-error" id="SPELLING_ERROR_73">czcvc</span>7<span class="blsp-spelling-error" id="SPELLING_ERROR_74">md</span></a></span><span class="byline-author"></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8988808149913770468?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-videos-and-slides-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Online Machine Learning Testing == Extreme Testing</title>
		<link>https://googledata.org/google-testing/online-machine-learning-testing-extreme-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=online-machine-learning-testing-extreme-testing</link>
		<comments>https://googledata.org/google-testing/online-machine-learning-testing-extreme-testing/#comments</comments>
		<pubDate>Tue, 25 Nov 2008 05:32:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Alek Icev, Test Engineering ManagerAs you may know our core vision is to build "The perfect search engine that would understand exactly what you mean and give back exactly what you want.". In order to do that we learn from our data, we learn ...]]></description>
				<content:encoded><![CDATA[<span style="font-family:arial;">Posted by Alek Icev, Test Engineering Manager</span><br /><br /><div class="O"  style="font-family:arial;"><span style="font-size:100%;">As you may know our core vision is to build "The perfect search engine that would understand exactly what you mean and give back exactly what you want.". In order to do that we learn from our data, we learn from the past  and we love Machine Learning. Everyday we are trying to answer the following questions. </span></div>  <ul  style="font-family:arial;"><li><span style="font-size:100%;">Is this email spam? </span></li><li><span style="font-size:100%;">Is this search result relevant?</span></li><li><span style="font-size:100%;">What product category does that query belong to? </span></li><li><span style="font-size:100%;">What is the ad that users are most likely to click on for the query </span><span style="font-size:100%;">“flowers”? </span></li><li><span style="font-size:100%;">Is this click fraudulent? </span></li><li><span style="font-size:100%;">Is this ad likely to result in a purchase (not merely a click)? </span></li><li><span style="font-size:100%;">Is this image pornographic? </span></li><li><span style="font-size:100%;">Does this page contain malware? </span><span style="font-size:100%;">–</span><span style="font-size:100%;">Should this query bring up a maps onebox?</span></li></ul>              <div class="O1"  style="font-family:arial;"><span style="font-size:100%;">Solving many problems require Machine Learning techniques. On all of them we can build prediction models that will learn from the past and try to give the most precise answers to our users. We use variety of Machine Learning algorithms at Google and we are experimenting with numerous old and new advancements in this field in order to find the most accurate, fast and reliable solution for the different problems that we are attacking. Of course one the biggest challenges that we are facing in the Test Engineering community is how are we going to test these algorithms. The amount of the data that Google generates goes beyond all of the known boundaries of environments where the current Machine Learning Solutions were being crafted and tested. We want to open discussion around the ideas how to test different online machine algorithms. From time to time we will present an algorithm and some ideas how to test it and solicit the feedback from the wider audience i.e. try to build a wisdom of the crowds over the testing ideas.<br /><br /></span></div><div class="O1"  style="font-family:arial;"><span style="font-size:100%;">So let's look at the Stochastic Gradient Descent Algorithm</span></div><div class="O1"  style="font-family:arial;"> <p class="MsoNormal"><span style="font-size:100%;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_H9N4rCvZQuQ/SSuPH43Fw6I/AAAAAAAAwZg/eD3MeVQW1mY/s1600-h/1.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 252px; height: 45px;" src="http://2.bp.blogspot.com/_H9N4rCvZQuQ/SSuPH43Fw6I/AAAAAAAAwZg/eD3MeVQW1mY/s400/1.JPG" alt="" id="BLOGGER_PHOTO_ID_5272465154452603810" border="0" /></a></span></p>    <p class="MsoNormal"><span style=";font-size:100%;color:black;"  >Where X is the set of input values of X<sub>i</sub><span class="apple-converted-space"> </span>,W is set of  the importance factors(weights) of every value </span>X<sub>i</sub><span style=";font-size:100%;color:black;"  ><span style="color:black;">.  A positive weight means that that risk factor increases the probability of the outcome, while a negative weight means that that risk factor</span><span style="color:black;"> decreases the probability of that outcome.</span><span style="color:black;"> t is the target output value, η is the learning rate(the role of the learning rate is to control the level to which the weights are modified at every iteration and f(z) is the output generated by the function that maps large input domain to a small set of output values in this case. The function f(z) in this case is the logistic function:</span></span></p><p> </p></div><dl  style="margin-top: 0.2em; margin-bottom: 0.5em; text-align: center;font-family:arial;"><dd style="margin-left: 2em; margin-bottom: 0.1em;"><span style="font-size:100%;"><img class="tex" alt="f(z)=\frac{1}{1+e^{-z}}" src="http://upload.wikimedia.org/math/2/c/9/2c9aab00ccf9f653e975960ae951d14f.png" style="border-style: none; vertical-align: middle;" /></span></dd></dl><p  style="text-align: center;font-family:arial;" class="MsoNormal"><span style="font-size:100%;">z = x</span><span style="vertical-align: sub;font-size:100%;" >0</span><span style="font-size:100%;">w</span><span style="vertical-align: sub;font-size:100%;" >0 </span><span style="font-size:100%;">+ x</span><span style="vertical-align: sub;font-size:100%;" >1</span><span style="font-size:100%;">w</span><span style="vertical-align: sub;font-size:100%;" >1 </span><span style="font-size:100%;">+ x</span><span style="vertical-align: sub;font-size:100%;" >2</span><span style="font-size:100%;">w</span><span style="vertical-align: sub;font-size:100%;" >2 </span><span style="font-size:100%;">+ ... + x</span><span style="vertical-align: sub;font-size:100%;" >k</span><span style="font-size:100%;">w</span><span style="vertical-align: sub;font-size:100%;" >k </span></p>  <p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;">The logistic function has nice characteristics since it can take any input, and basically squash it to 0 or 1. Ideal for predicting probabilities on events that are dependent on multiple factors(</span><span style=";font-size:100%;color:black;"  >X<sub>i</sub></span><span style="font-size:100%;">) each with different importance weights(</span><span style=";font-size:100%;color:black;"  >W<sub>i). </sub></span><span style="font-size:100%;">The Stochastic Gradient Descent provides  fast convergence to find the optimal minimums of the error(E) that the function is making on the prediction as well as if there are multiple local minimums the algorithms guarantees converging to the global minimum of the prediction error. So let’s go back now into the real online world where we want to give answers (predictions) to our users in milliseconds  and ask the question how are we going to design automated  tests for the Stochastic Gradient Descent Algorithm embedded into a live online prediction system. The environment is pretty agile and dynamic, the code is being changed every hour, you want your tests to run on 24/7 basis, you want to detect errors upstream in the development process, but you don’t want to block the development process with tests that are running days, on the other side you want to release new features fast, but the release process has to be error prone(imagine the world with google being down for 5 mins, that is a global catastrophe, isn’t it?! </span></p>  <p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;">So let’s look at some of the test strategies:</span></p>  <p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;">Should we try to train the model(set of the importance factors) and test the model with the subset of the training data? What if this takes far more than hours, maybe days to do that? Should we try  to reduce the set of importance factors (X<sub>i</sub></span><span style="font-size:100%;">) and get the convergence(E->0) on the reduced model?<br /></span></p><p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;">Should we try to reduce the training data set(the variety of set of values for X as an input to the algorithm) and keep the original model and get the convergence by any price? Should we be happy with reducing both the model size and the training set? Are we going to worry for over-fitting in the test environment? Given the original data is online data and evolves fast, are we going to be satisfied with fixed data test set or change the input test data frequently? What are the triggers that will make you do so? What else should we do?</span></p><p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;">Drop us a note, all ideas are more than welcome.</span></p><p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;"><br /></span></p><p class="MsoNormal"  style="font-family:arial;"><span style="font-size:100%;"><br /><sub></sub></span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2267352810725979352?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/online-machine-learning-testing-extreme-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>Partial Automation: Keeping humans in the loop</title>
		<link>https://googledata.org/google-testing/partial-automation-keeping-humans-in-the-loop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=partial-automation-keeping-humans-in-the-loop</link>
		<comments>https://googledata.org/google-testing/partial-automation-keeping-humans-in-the-loop/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 04:45:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Patricia Legaspi, Test Engineering ManagerOne of the challenges of automation is achieving complete automation. Ideally, complete or total automation would not require any human intervention or verification yet this is a difficult level to ac...]]></description>
				<content:encoded><![CDATA[<span style="font-size:100%;"><span style="font-family: arial;">Posted by Patricia </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_0">Legaspi</span><span style="font-family: arial;">, Test Engineering Manager</span><br /><br /><span style="font-family: arial;">One of the challenges of automation is achieving complete automation. Ideally, complete or total automation would not require any human intervention or verification yet this is a difficult level to achieve. Investing Engineering time to completely automate tests is expensive and, many times, has diminishing returns. Rather than trying to achieve complete automation, investing in ways to make the most out of the automated test and the human time is time better spent.</span><br /><br /><span style="font-weight: bold; font-family: arial;">Effective test report</span><br /><span style="font-family: arial;">Consider an automated </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_1">UI</span><span style="font-family: arial;"> test... Routinely, automated </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_2">UI</span><span style="font-family: arial;"> tests result in false negatives due to timing issues, the complexity of the steps taken, and other factors. These have to be investigated which can be time consuming. A thorough report can be created for automated </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_3">UI</span><span style="font-family: arial;"> tests to present log information, error reports, screen shots of the state of the application when the test failed, and an easy way to re-run the test in question. A human can make use of the information provided and effectively investigate the possible issue. If we can reduce the amount of work that someone has to do to investigate a test failure, the </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_4">UI</span><span style="font-family: arial;"> tests become more valuable and the human plays a much more important role as a "verifier." Had the report not provided any information for the failed test, the human would have spent, in some cases, hours investigating the issue rather than continuing to automate or run exploratory tests which would be of more value. Is there a way to maximize what people do well, while also maximizing the use of automation?</span><br /><br /><span style="font-weight: bold; font-family: arial;">Applying human intelligence</span><br /><span style="font-family: arial;">What about tests that require a human eye? There are many arguments about tests that require a human make a judgment about the appearance of rendered </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_5">UI</span><span style="font-family: arial;"> objects. Machines are great at running tests that return in a firm pass or fail but for tests that require opinion or judgment, the human has an advantage. We've been experimenting with image comparison tests. Screen shots of a golden version of the application under test are compared to screen shots of the current release candidate to verify that the application continues to render properly and that the </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_6">UI</span> "looks good". Although image comparison techniques can determine if the screen shots are different, they cannot help determine if the difference is "important". The human comes back into the picture to complement the automated test. To make effective use of a person's time, the test results should be organized and well presented. For image comparison tests, a report which shows the golden and release candidate screen shots side-by-side with clearly highlighted differences or allows you to replace the golden screen shot is key. A tester can quickly navigate the reported differences and determine if they are actual failures or acceptable differences. Frequently, an application's <span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_7">UI</span><span style="font-family: arial;"> will change which will result in expected image differences. If the differences are expected changes, the tester should be able to replace the golden with the new image with the click of a button for future comparison.</span><br /><br /><span style="font-family: arial;">Aside from test automation, efficiency can also be improved by streamlining the various components of the process. This includes test environment setup, test data retrieval, and test execution. Release cycles tighten and so should the testing processes. Automating the environment setup can be a major time saver and allow for added time to run in depth tests. Creating continuous builds to run automated tests ahead of time and preparing environments overnight results in added testing time.</span><br /><br /><span style="font-family: arial;">Automated tests are rarely bullet proof, they are prone to errors and false failures. In some cases, creating an infrastructure to make test analysis easy for humans, is much more effective than trying to engineer tests to automatically "understand" the </span><span style="font-family: arial;" class="blsp-spelling-error" id="SPELLING_ERROR_8">UI</span><span style="font-family: arial;">. We coined this, "Partial Automation." We found that by having a person in the loop dramatically reduces the time spent trying to over engineer the automated tests. Obviously, there are trade-offs to this approach and one size doesn't fit all. We believe that automation does not always need to mean complete automation; we automate as much as you can and consider how human judgment can be used efficiently.</span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5942035404419278421?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/partial-automation-keeping-humans-in-the-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Engineering at Google</title>
		<link>https://googledata.org/google-testing/test-engineering-at-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=test-engineering-at-google</link>
		<comments>https://googledata.org/google-testing/test-engineering-at-google/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 03:31:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[By Roshan Sembacuttiaratchy, Software Engineer in Test, Google Zurich, SwitzerlandWhen I tell people that I'm a Test Engineer at Google, I get a confused look from them and questions as to what I actually do.   Do I sit in front of a keyboard clicking ...]]></description>
				<content:encoded><![CDATA[By <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Roshan</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Sembacuttiaratchy</span>, Software Engineer in Test, Google Zurich, Switzerland<br /><br />When I tell people that I'm a Test Engineer at Google, I get a confused look from them and questions as to what I actually do.   Do I sit in front of a keyboard clicking every button and link on screen?  Do I watch over the infinite number of monkeys, checking to make sure they produce Shakespeare's work while clicking said links?  Or do we create <a title="better and smarter pigeons" href="http://www.google.com/technology/pigeonrank.html" id="nc:b">better and smarter pigeons</a>?  Well, it's actually a bit of everything, but not quite in the way you might think at first. <br /><br />The people working in Test Engineering are software developers with a passion for testing and <a title="test automation" href="http://googletesting.blogspot.com/2007/10/automating-tests-vs-test-automation.html" id="rudr">test automation</a>.  Whereas most software engineers at Google are working on developing products, Test Engineering's objective is to help improve the quality of the projects we're involved in.  We work integrated with the project team, developing test frameworks and setting up <a title="test systems" href="http://googletesting.blogspot.com/2008/01/testing-systems-with-large-and-complex.html" id="yzy-">test systems</a>.  One of our key mantras is automation, so our first task whenever we're assigned to a new project is to evaluate the current state of test automation, identify what we could do to improve the results obtained, reduce the total run time, and make the best use of available resources.  <a title="Load and performance testing" href="http://googletesting.blogspot.com/2007/10/performance-testing.html" id="r98t">Load and performance testing</a> is another important task we perform, along with analysis of the results.  We're also not afraid to get our hands dirty by diving deep into the project's code to identify what re-factoring might be useful to help test the system better, creating and introducing <a title="stubs, fakes and mocks" href="http://googletesting.blogspot.com/2008/06/tott-friends-you-can-depend-on.html" id="qjb3">stubs, fakes and mocks</a>  as necessary.  As you might guess, we're big fans of <a title="Test Driven Design" href="http://googletesting.blogspot.com/2008/09/test-first-is-fun_08.html" id="b45t">Test Driven Design</a>, <a title="Continuous Integration" href="http://googletesting.blogspot.com/2007/09/but-it-works-on-my-machine.html" id="bttd">Continuous Integration</a> and other agile techniques and play the role of evangelists, spreading the word on new tools, techniques and best practices. <br /><br />Individual project assignments tend to be limited in duration, as we're a relatively small group of people in Test Engineering, helping support a much larger group of software developers.  So once we've completed our tasks for one project, we move on to the next, working with a different team of people and a different set of problems, changing projects every few months. <br /><br />That pretty much describes what I do, and how our team in Zurich works.  So to answer the questions posed initially, I write software which performs the task of clicking every button and every link, and which then <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"></span>verifies the result of these actions. I run this on a few hundred machines to mimic virtual monkeys, and hand it over to the development team so that they can use it to check that their product is working, even after I've left their project.  And if it produces <a title="the work of Shakespeare" href="http://books.google.com/googlebooks/shakespeare/" id="q.90">the works of Shakespeare</a>, that's just an added bonus! :-)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-9088560803997516756?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/test-engineering-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presubmit And Performance</title>
		<link>https://googledata.org/google-testing/presubmit-and-performance/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=presubmit-and-performance</link>
		<comments>https://googledata.org/google-testing/presubmit-and-performance/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 22:49:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Marc Kaplan, Test Engineering ManagerWhen looking at whether to check a new change in, there are several testing-related questions that can be asked, which at least include:1. Does the new functionality work?2. Did this change break existing ...]]></description>
				<content:encoded><![CDATA[Posted by Marc Kaplan, Test Engineering Manager<br /><br /><span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:arial;font-size:100%;">When looking at whether to check a new change in, there are several testing-related questions that can be asked, which at least include:<br />1. Does the new functionality work?<br />2. Did this change break existing functionality?<br />3. What is the performance impact of this change?<br /><br />We can either answer these questions before we check things in, or after. We found that we can save a lot of time and effort in trying to do detective work and track bad changes down if we do this before check in to the depot. In most teams developers kick off the tests before they check anything in, but in case somebody forgets, or doesn't run all of the relevant tests, a more automated system was desired. So we have what we call<span class="Apple-converted-space"> </span><i>presubmit systems</i><span class="Apple-converted-space"> </span>at Google to run all of the relevant tests in an automated fashion pre-checkin, without the developer doing anything<span class="Apple-converted-space"> </span><i>before</i><span class="Apple-converted-space"> </span>the code is actually checked in. The idea behind this is that once the code is finished being written there are minutes or hours before it's checked in while it's being reviewed via the Google code review process (more info on that at<span class="Apple-converted-space"> </span><a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=3&amp;url=http%3A%2F%2Fvideo.google.com%2Fvideoplay%3Fdocid%3D-8502904076440714866&amp;ei=fazSSMrGLonYsAOS-fzuBw&amp;usg=AFQjCNEp_CaSowONUfpU9pC6vO1vArLBWg&amp;sig2=h9qTXoOjA1d-U82ZWK19Yw"  style="color: rgb(42, 93, 176);">Guido's Tech Talk on Mondrian</a>). So we have taken advantage of this time by running tests via the presubmit system that finds all of the tests that are relevant to the change, runs the tests, and reports the results.<span class="Apple-converted-space"> </span><br /><br />Most of the work around presubmit at Google has been looking at functionality (question 1, and 2 above), however in the GFS Team where we are making a lot of performance-related changes we wondered whether a performance presubmit system would be possible. So recently we developed such a system and have begun to start using it. Basically a hook was added to the code review process such that once a developer sends out a change for review, and automated performance test is started via the<span class="Apple-converted-space"> </span><a href="http://googletesting.blogspot.com/2008/05/performance-testing-of-distributed-file.html"  style="color: rgb(42, 93, 176);">GFS Performance Testing Tool</a><span class="Apple-converted-space"> </span>that we previously described on another Testing Blog post. Once two runs of the performance test are finished, they are compared against a known-good baseline that gets automatically created at the beginning of each week, and a comparison graph is generated and e-mailed to the user submitting the CL. So now we know, prior to checking some code in if it has some unexpected hit to performance. Additionally, now when a developer wants to make a change they think will improve performance they don't need to do anything other than a normal code review which will trigger an automatic performance test to see if they got the performance bump they were hoping for.<br /><br />Example of a performance presubmit report:<br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_H9N4rCvZQuQ/SNLbRM714yI/AAAAAAAAwAc/TpV8jh5cT_g/s1600-h/statfs_Throughput.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_H9N4rCvZQuQ/SNLbRM714yI/AAAAAAAAwAc/TpV8jh5cT_g/s400/statfs_Throughput.png" alt="" id="BLOGGER_PHOTO_ID_5247497604416529186" border="0" /></a><br /><span class="Apple-style-span"   style="border-collapse: collapse; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:arial;font-size:100%;">I've seen many companies and projects where performance testing is cumbersome and not run very often until near release date. As you might expect, this is very problematic because once you find a performance bug you have to go back through all of the changes and try to narrow it down, and many times it's simply not that easy. Doing the performance testing early, and often helps narrow things down, but we've found that it's even better to make sure that these performance regressions never creep into the code with pre-check in performance testing. Certainly you should still do a final performance test once this code is frozen, but with the presubmit performance testing system in place you are essentially certain that the performance will be as good as you expect it to be.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2525775816586687475?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/presubmit-and-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="" length="" type="" />
		</item>
		<item>
		<title>The Google Maps API Open Source Their Selenium Test Suite</title>
		<link>https://googledata.org/google-testing/the-google-maps-api-open-source-their-selenium-test-suite/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-google-maps-api-open-source-their-selenium-test-suite</link>
		<comments>https://googledata.org/google-testing/the-google-maps-api-open-source-their-selenium-test-suite/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 04:20:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The Google Maps API is one of our most popular developer products here at Google, and is also one of the trickiest to test because of its visual nature and diverse uses. It has to go through the standard backend and JsUnit testing, but then also throug...]]></description>
				<content:encoded><![CDATA[The Google Maps API is one of our most popular developer products here at Google, and is also one of the trickiest to test because of its visual nature and diverse uses. It has to go through the standard backend and JsUnit testing, but then also through a suite of Selenium tests to make sure that DOM elements are positioned correctly, mouse events are triggered correctly, and even tests to address random bugs like <a href="http://code.google.com/p/gmaps-api-issues/issues/detail?id=517" >Issue 517</a>, where IE errored out when an implicitly closed base tag was used in the developer's HTML. And to top it off, all those tests must pass in every one of the API's supported browsers.<br /><br />So, we decided to open source our selenium test suite so that developers could see the kind of integration tests we're currently running, and could even contribute their own tests that test specific functionality or an order of operations used on their site. What better way to make sure your site works with our API than contribute a test to make sure of it?<br /><br />You can read more about the suite on <a href="http://googlegeodevelopers.blogspot.com/2008/08/do-you-speak-selenese-contribute-to-our.html" >our blog</a>, peruse through our tests, and if you're a Maps API developer yourself, send us a test or two!<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1597407821578015431?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/the-google-maps-api-open-source-their-selenium-test-suite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC Attendance Application deadline Aug15</title>
		<link>https://googledata.org/google-testing/gtac-attendance-application-deadline-aug15/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-attendance-application-deadline-aug15</link>
		<comments>https://googledata.org/google-testing/gtac-attendance-application-deadline-aug15/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 20:29:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Lydia Ash, GTAC Conference Chair - 2008A brief reminder that there are only two weeks left to submit applications for this year's Google Test Automation Conference. The application deadline is August 15th, after which the selection process wi...]]></description>
				<content:encoded><![CDATA[Posted by Lydia Ash, GTAC Conference Chair - 2008<br /><br />A brief reminder that there are only two weeks left to submit applications for this year's Google Test Automation Conference. The application deadline is August 15th, after which the selection process will begin.<br /><br />The Call For Attendance application is available on the Google website here. <a href="http://services.google.com/events/gtac2008" >http://services.google.com/<wbr>events/gtac2008</a><br /><br />See you in October!<br /><span class="byline-author"></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2846624168431387796?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-attendance-application-deadline-aug15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI and GWT&#8230; How do you test?</title>
		<link>https://googledata.org/google-testing/yui-and-gwt-how-do-you-test/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=yui-and-gwt-how-do-you-test</link>
		<comments>https://googledata.org/google-testing/yui-and-gwt-how-do-you-test/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 18:24:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Patrick Copeland, Engineering Productivity DirectorA smart person once said that, "all computer science problems can be solved by introducing another abstraction layer." From a testing perspective, every new abstraction layer also introduces ...]]></description>
				<content:encoded><![CDATA[<span class="byline-author">Posted by Patrick Copeland, Engineering Productivity Director<br /><br />A smart person once said that, "all computer science problems can be solved by introducing another abstraction layer." From a testing perspective, every new abstraction layer also introduces every problem in computer science.<br /><br />Frank Cohen, of PushToTest, wrote a blog post recently that focuses on the Google Web Tool Kit and puts the challange of dealing new abstration layers into a brief historical perspective.<br /><br /><a href="http://tinyurl.com/6r34jf">http://tinyurl.com/6r34jf</a><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-9107537524752361033?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/yui-and-gwt-how-do-you-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Call for Attendance: GTAC 2008</title>
		<link>https://googledata.org/google-testing/call-for-attendance-gtac-2008/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=call-for-attendance-gtac-2008</link>
		<comments>https://googledata.org/google-testing/call-for-attendance-gtac-2008/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 00:04:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Lydia Ash, Test Engineering Manager Call for AttendanceGoogle Test Automation Conference 2008Seattle, WAOctober 23 - 24Google's Test Automation Conference is built on our participants each bringing their experience, ideas, and insight to the ...]]></description>
				<content:encoded><![CDATA[<span class="byline-author">Posted by Lydia Ash, Test Engineering Manager </span><br /><br /><span style="font-weight: bold;">Call for Attendance</span><span style="font-weight: bold;"><br />Google Test Automation Conference 2008</span><span style="font-weight: bold;"><br />Seattle, WA</span><span style="font-weight: bold;"><br />October 23 - 24</span><br /><br />Google's Test Automation Conference is built on our participants each bringing their experience, ideas, and insight to the discussions we host. Our participants are all experienced industry professionals working as software development engineers or software testing engineers. For the limited number of spaces available in each year's conference, we ask each applicant to share what they would bring to the discussions as an active participant in the conference.<br /><br />To apply for a participant space at the GTAC 2008 conference, you can apply:<br /><div style="text-align: center;"><a href="http://services.google.com/events/gtac2008">http://services.google.com/events/gtac2008</a><br /><br /></div><span style="font-weight: bold;">Timeline</span><br /><ul><li>Deadline for applying as a participant: August 15</li><li>Notification of acceptance: August 29</li><li>Wait list callbacks: October 3</li><li>GTAC 2008 Conference: October 23 and 24</li></ul><br /><span style="font-weight: bold;">Scheduled Presentations</span><br /><ul><li>Atom Publishing Protocol, Testing a Server Implementation by David Calavera</li><li>JInjector: a Coverage and End-To-End Testing Framework for J2ME and RIM by Julian Harty, Olivier Gaillard, and Michael Sama</li><li>Advances in Automated Software Testing Technologies by Elfriede Dustin</li><li>Taming the Beast: How to test an AJAX Application by Markus Clermont and John Thomas</li><li>Automated Model-Based Testing of Web Applications by Oluwaseun Akinmade and Prof. Atif M Memon</li><li>Boosting Your Testing Productivity with Groovy by Andres Almiray</li><li>Practicing Testability in the Real World by Vishal Chowdhary</li><li>The New Genomics: Software Development at Petabyte Scale by Matt Wood</li><li>The Value of Small Tests by Christopher Semturs</li><li>Deployment and Test Automation: Extending the Notion of 'Done' to 'System Tested on a Production Deployment' by Marc-Elian Begin</li></ul><span style="font-weight: bold;">No Registration Fees</span><br />The GTAC conference has no registration fees. Once invitations have been sent to participate, full registration instructions will be sent to each invitee. Breakfast and lunch will be provided each day of the conference, as well as a reception the evening of October 23.<br /><br /><span style="font-weight: bold;">Cancellation</span><br />If you register as a participant and will not be able to attend, please send email immediately to <a href="mailto:gtac@google.com">gtac@google.com</a> to allow a wait list person the opportunity to participate in that slot.<br /><br /><span style="font-weight: bold;">Hotel Accommodations</span><br /><a href="http://www.starwoodhotels.com/whotels/property/overview/index.html?propertyID=1154">W Seattle</a>    (Conference Venue)<br />1112 Fourth Avenue<br />Seattle, WA 98101<br />(206) 264-6000<br /><br />Other Hotels in the Area<br />Hotel Vintage Park<br />1100 5th Ave<br />Seattle, WA<br />(206) 624-8000<br /><br />Madison Renaissance Hotel<br />515 Madison St<br />Seattle, WA<br />(206) 583-0300<br /><br />Hotel Monaco<br />1101 4th Avenue<br />Seattle, WA<br />(206) 621-1770<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-602767139745848618?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/call-for-attendance-gtac-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Think About the &quot;new&quot; Operator with Respect to Unit Testing</title>
		<link>https://googledata.org/google-testing/how-to-think-about-the-new-operator-with-respect-to-unit-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-think-about-the-new-operator-with-respect-to-unit-testing</link>
		<comments>https://googledata.org/google-testing/how-to-think-about-the-new-operator-with-respect-to-unit-testing/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 01:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[By Miško HeveryUnit Testing as the name implies asks you to test a Class (Unit) in isolation.If your code mixes Object Construction with Logic you will never be able to achieve isolation.In order to unit-test you need to separate object graph construc...]]></description>
				<content:encoded><![CDATA[By <a href="http://www.testabilityexplorer.org/about">Miško Hevery</a><br><br /><ul><br /><li>Unit Testing as the name implies asks you to test a Class (Unit) in isolation.</li><br /><li>If your code mixes Object Construction with Logic you will never be able to achieve isolation.</li><br /><li>In order to unit-test you need to separate object graph construction from the application logic into two different classes</li><br /><li>The end goal is to have either: classes with logic OR classes with "<span style="font-family: courier new,monospace;">new</span>" operators.</li><br /></ul><br /><br><br />Unit-Testing as the name implies is testing of a Unit (most likely a Class) in isolation. Suppose you have a class <span style="font-family: courier new,monospace;">House</span>. In your <span style="font-family: courier new,monospace;">JUnit</span> test-case you simply instantiate the class <span style="font-family: courier new,monospace;">House</span>, set it to a particular state, call the method you want to test&nbsp; and then assert that the class' final state is what you would expect. Simple stuff really...<br><br /><br><br /><span style="font-family: courier new,monospace;">class House {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked;</span><br style="font-family: courier new,monospace;"><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked() {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; return isLocked;</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean lock() {</span><span style="font-family: courier new,monospace;"><br><br />&nbsp;&nbsp;&nbsp; isLocked = true;<br><br />&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br /><br><br />If you look at House closely you will realize that this class is a leaf of your application. By leaf I mean that it is the end of the dependency graph, it does not reference any other classes. As such all leafs of any code base are easy to tests, because the dependency graph ends with the leaf. But testing classes which are not leafs can be a problem because we may not be able to instantiate the class in isolation.<br><br /><br><br /><span style="font-family: courier new,monospace;">class House {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private final Kitchen kitchen = new Kitchen();</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked;</span><br style="font-family: courier new,monospace;"><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked() {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; return isLocked;</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean lock() {</span><span style="font-family: courier new,monospace;"><br><br />&nbsp;&nbsp;&nbsp; kitchen.lock();<br><br />&nbsp;&nbsp;&nbsp; isLocked = true;<br><br />&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br /><br><br />In this updated version of <span style="font-family: courier new,monospace;">House </span>it is not possible to instantiate <span style="font-family: courier new,monospace;">House</span> without the <span style="font-family: courier new,monospace;">Kitchen</span>. The reason for this is that the <span style="font-family: courier new,monospace;">new</span> operator of <span style="font-family: courier new,monospace;">Kitchen</span> is embedded within the <span style="font-family: courier new,monospace;">House</span> logic and there is nothing we can do in a test to prevent the <span style="font-family: courier new,monospace;">Kitchen</span> from getting instantiated. We say that we are mixing the <i>concern of application instantiation</i> with <i>concern of application logic</i>. In order to achieve true unit testing we need to instantiate <i>real</i> <span style="font-family: courier new,monospace;">House</span> with a <i>fake</i> <span style="font-family: courier new,monospace;">Kitchen</span> so that we can unit-test the <span style="font-family: courier new,monospace;">House</span> in isolation. <br style="font-family: courier new,monospace;"><br /><br><br /><span style="font-family: courier new,monospace;">class House {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; private final Kitchen kitchen;<br><br /></span><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked;</span><br style="font-family: courier new,monospace;"><br /><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp; public House(Kitchen kitchen) {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; this.kitchen = kitchen;</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><br style="font-family: courier new,monospace;"><br /><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean isLocked() {</span><br style="font-family: courier new,monospace;"><br /><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; return isLocked;</span><br style="font-family: courier new,monospace;"><br /><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br><br /><br /><br style="font-family: courier new,monospace;"><br /><br /><span style="font-family: courier new,monospace;">&nbsp; private boolean lock() {</span><span style="font-family: courier new,monospace;"><br><br />&nbsp;&nbsp;&nbsp; kitchen.lock();<br><br />&nbsp;&nbsp;&nbsp; isLocked = true;<br><br />&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><br /><span style="font-family: courier new,monospace;">}</span><br><br /><br><br />Notice how we have removed the <span style="font-family: courier new,monospace;">new</span> operator from the application logic. This makes testing easy. To test we simply <span style="font-family: courier new,monospace;">new</span>-up a real <span style="font-family: courier new,monospace;">House</span> and use a mocking framework to create a fake <span style="font-family: courier new,monospace;">Kitchen</span>. This way we can still test <span style="font-family: courier new,monospace;">House</span> in isolation even if it is not a leaf of an application graph. <br><br /><br><br />But where have the <span style="font-family: courier new,monospace;">new</span> operators gone? Well, we need a factory object which is responsible for instantiating the whole object graph of the application. An example of what such an object may look like is below. Notice how all of the <span style="font-family: courier new,monospace;">new</span> operators from your applications migrate here.<br><br /><br><br /><br><br /><span style="font-family: courier new,monospace;">class ApplicationBuilder {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; House build() {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; return new House(</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Kitchen(new Sink(), new Dishwasher(), new Refrigerator())</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br /><br><br />As a result your main method simply asks the <span style="font-family: courier new,monospace;">ApplicationBuilder</span> to construct the object graph for you application and then fires of the application by calling a method which does work.<br><br /><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">class Main {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; public static void(String...args) {</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; House house = new ApplicationBuilder().build();</span><br><br /><span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; house.lock();</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">&nbsp; }</span><br style="font-family: courier new,monospace;"><br /><span style="font-family: courier new,monospace;">}</span><br style="font-family: courier new,monospace;"><br /><br><br />Asking for your dependencies instead of constructing them withing the application logic is called "Dependency Injection" and is nothing new in the unit-testing world. But the reason why Dependency Injection is so important is that within unit-tests you want to test a small subset of your application. The requirement is that you can construct that small subset of the application independently of the whole system. If you mix application logic with graph construction (the <span style="font-family: courier new,monospace;">new</span> operator) unit-testing becomes impossible for anything but the leaf nodes in your application. Without Dependency Injection the only kind of testing you can do is scenario-testing, where you instantiate the whole application and than pretend to be the user in some automated way.<br><br /><br><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-9081839922903151980?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/how-to-think-about-the-new-operator-with-respect-to-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test Engineering Class Project at UC-Irivine</title>
		<link>https://googledata.org/google-testing/test-engineering-class-project-at-uc-irivine/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=test-engineering-class-project-at-uc-irivine</link>
		<comments>https://googledata.org/google-testing/test-engineering-class-project-at-uc-irivine/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 20:40:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by George Pirocanac, Test Engineering ManagerFor the past nine months it has been my pleasure to work with a group of undergrad students from UC-Irvine as part of their senior class project. The course was run by professor Hadar Ziv and teaching...]]></description>
				<content:encoded><![CDATA[<span class="byline-author"></span><span id="egxw"  style="font-size:100%;">Posted by George Pirocanac, Test Engineering Manager<br /></span><br />For the past nine months it has been my pleasure to work with a group of undergrad students from UC-Irvine as part of their senior class project. The course was run by professor Hadar Ziv and teaching assistant Sameer Patil. It focused on providing students industry experience by working with customers (in this case us) to formulate product requirements and deliver working software. Jason Robbins from the Google Irvine office was the lead for another project and several other local companies also participated.<br /><br />Our team members included Michelle Alvaraz, Jason Dramby, Peter Lee and Gabriela Marcu. It was the only project dealing directly with test engineering and one of our goals was specifically to create a plan and framework for testing the Google Mashup Editor (GME) tag language.<br /><br />For those unfamiliar with the GME, it is a framework for developing simple web applications and mashups using a custom set of XML tags, Javascript, CSS and HTML. More information about the GME can be found <a title="GME documentation"  href="http://code.google.com/gme/" id="mh2.">here</a>.<br /><br />The first three months of the class were spent learning about the the GME and performing exploratory testing. The team became very familiar with the editor and created several mashups (You can try one of them <a title="sample mashup"  href="http://digikitchen2.googlemashups.com/" id="ytlv">here.</a>). They also created a traditional test plan which focused on testing the tag language. Later they executed this test plan by compiling and running their sample mashups on a variety of browsers.<br /><br />After a couple of iterations of this test plan they quickly encountered some of the typical challenges associated with the traditional approach - namely human resource oversubscription in test execution and insufficient coverage.<br /><br />We addressed with the first issue through automation and the team learned to automate their manual tests of the mashups with <a title="Selenium"  href="http://www.openqa.org/selenium/" id="e9ra">Selenium</a>. They first used Selenium IDE to learn the basic Selenium commands and concepts such as locators. Afterwards they used the "Export Test As..." feature in IDE to create Python tests that would be run under a local server with Selenium-RC. The latter got them to a point where they could execute the existing test plan<br />automatically on three different platforms (Windows, Linux, MacOS).<br /><br />Expanding coverage was less straightforward. The traditional approach would be to use the existing resources to write more tests. We, however, decided to create a framework that would itself generate more tests. This dovetailed nicely with the classroom material which was product-centric and focused on gathering customer requirements, creating a design document and delivering the software. In our case, the group's product was to be a <i id="da2_">GME Test Suite Creator</i>.<br /><br />As a starting point we looked at the following simple Python script which creates a simple cross product on lists of strings:<span id="x3ry" style="font-family: Courier New;"><br /><br />#!/usr/bin/python</span><span id="x3ry0" style="font-family: Courier New;"><br /><br />def cross(args):</span><span id="x3ry1" style="font-family: Courier New;"><br />  ans = [[]]</span><span id="x3ry2" style="font-family: Courier New;"><br />  for arg in args:</span><span id="x3ry3" style="font-family: Courier New;"><br />     ans = [x+[y] for x in ans for y in arg]</span><span id="x3ry4" style="font-family: Courier New;"><br />  return ans</span><br /><br /><span id="x3ry5" style="font-family: Courier New;">def pprint(lists):</span><span id="x3ry6" style="font-family: Courier New;"><br />  for list in lists:</span><span id="x3ry7" style="font-family: Courier New;"><br />    a = ''</span><span id="x3ry8" style="font-family: Courier New;"><br />    for s in list:</span><span id="x3ry9" style="font-family: Courier New;"><br />       a = a + s</span><span id="x3ry10" style="font-family: Courier New;"><br />    print a</span><span id="x3ry12" style="font-family: Courier New;"><br /><br />tags = [ ['<'],</span><span id="x3ry14" style="font-family: Courier New;"><br />         ['gm:page '],</span><span id="x3ry16" style="font-family: Courier New;"><br />         ['', 'authenticate=true', 'authenticate=false',<br />          'authenticate=invalid'],</span><span id="x3ry18" style="font-family: Courier New;"><br />       ['/>'] ]</span><span id="x3ry21" style="font-family: Courier New;"><br /> <br />lists = cross(tags)</span><span id="x3ry23" style="font-family: Courier New;"><br />pprint(lists)</span><br /><br />Running the script yields the following combination of tags:<span id="gqx9" style="font-family: Courier New;"><br /></span><br />&lt; <span id="gqx9" style="font-family: Courier New;">gm:page /</span>&gt;<span id="gqx90" style="font-family: Courier New;"><br /></span>&lt; <span id="gqx9" style="font-family: Courier New;"></span><span id="gqx90" style="font-family: Courier New;">gm:page authenticate=true</span><span id="gqx9" style="font-family: Courier New;">/</span>&gt;<span id="gqx90" style="font-family: Courier New;"></span><span id="gqx91" style="font-family: Courier New;"><br /></span>&lt; <span id="gqx9" style="font-family: Courier New;"></span><span id="gqx91" style="font-family: Courier New;">gm:page authenticate=false</span><span id="gqx9" style="font-family: Courier New;">/</span>&gt;<span id="gqx90" style="font-family: Courier New;"></span><span id="gqx92" style="font-family: Courier New;"><br /></span>&lt; <span id="gqx92" style="font-family: Courier New;">gm:page authenticate=invalid</span><span id="gqx9" style="font-family: Courier New;">/</span>&gt;<span id="gqx90" style="font-family: Courier New;"><br /></span><br /><br />Each one could be used in a mashup that used the page tag. Likewise, the other tags from the GME tag language could be expanded with various combinations of valid and invalid attributes. These tag combinations could then be individually inserted into <i id="sz8:">skeleton</i> mashups producing a large number of both positive and negative tests which would be performed under Selenium-RC.<br /><br />This was the basic idea of the <i id="bebb">GME Test Suite Creator</i> and the team implemented a GUI to facilitate the three steps in creating and running a testsuite:<br /><br /><div id="bulp0" style="margin-left: 40px;"><ul id="fg1-"><li id="fg1-0">Code Generation - The selection of tags and creation of tests.</li></ul></div><div id="fg1-1" style="margin-left: 40px;"><ul id="fg1-2"><li id="fg1-3">Code Preview - The examination and execution of created tests</li></ul></div><div id="fg1-4" style="margin-left: 40px;"><ul id="fg1-5"><li id="fg1-6">Test Reporting - The examination of test results.</li></ul></div><br />The figure below shows the Code Generation tab of the <i id="vto8">GME Test Suite Creator.</i> It displays a hierarchical view of the tabs and allows the user to select which tags to include in the sample tests. The sample test is generated from a <i id="yr4r">skeleton </i>test modeled after the documentation example scraped from the code.google.com website. This was a nice idea which added testing of the documentation to the process.<br /><br /><div id="p_9m" style="padding: 1em 0pt; text-align: left;"><img id="w.qq" style="width: 613px; height: 465px;" src="https://docs.google.com/a/google.com/File?id=chbtmb2v_60hrsvk3gc_b" /></div>An interesting problem that these types of automatic test generation frameworks can encounter is the combinatorial explosion of generated tests. For example, if each tag attribute can have 8 possible values and a sample mashup contains 10 tags, enumerating each combination would take roughly 1 billion (8<sup id="aip2">10</sup> = 2<sup id="aip20">30</sup>) tests! To address this, the team created an Options dialog box that would allow the user to specify different test suite sizes in addition to the test suite name and type. A further refinement, allowing the user to select which set of specific values to use for tag attributes would have been implemented if the team had more time.<br /><div id="i8gb" style="padding: 1em 0pt; text-align: left;"><img id="mip9" style="width: 192px; height: 264px;" src="https://docs.google.com/a/google.com/File?id=chbtmb2v_64wtg679fs_b" /></div><br />The next figure shows the Code Preview tab of the <i id="kck1">GME Test Suite Creator. </i>It shows the list of tests created under a given test suite and allows the user to manage and execute the test suite.<br /><div id="errr" style="padding: 1em 0pt; text-align: left;"><img id="tr1h" style="width: 574px; height: 439px;" src="https://docs.google.com/a/google.com/File?id=chbtmb2v_65fswffchr_b" /></div><br />Finally, the Test Report Tab shows the results of the tests executed under Selenium-RC.<br /><br /><div id="taso" style="padding: 1em 0pt; text-align: left;"><img id="hupi" style="width: 611px; height: 469px;" src="https://docs.google.com/a/google.com/File?id=chbtmb2v_62czwfhgc2_b" /></div><i id="zwf_">GME Test Suite Creator </i>was itself written in Python and hosted on Windows, Linux and MacOS.<br />The team presented and demonstrated the <i id="zwf_0">GME Test Suite Creator</i> to faculty and other student/industry teams as part of the UC-Irvine ICS Student Show Case. Over the next few weeks I will be kicking the tires and evaluating the battle worthiness of the <i id="z.p1">GME Test Suite Creator</i> delivery which included source code and a complete set of documentation.<br /><br />I certainly had a wonderful time interacting with the team and participating in this program!<br /><br /><div id="ubqj" style="padding: 1em 0pt; text-align: left;"><img id="x:l6" style="width: 432px; height: 290px;" src="https://docs.google.com/a/google.com/File?id=chbtmb2v_63crvhfvcq_b" /></div>The GME Test Suite Creator Team (from left to right: Gabriela Marcu, Peter Lee, <br />Michelle Alvarez, Jason Dramby and George Pirocanac)<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1564984214103146003?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/test-engineering-class-project-at-uc-irivine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Productivity Games – Using Games to Improve Quality</title>
		<link>https://googledata.org/google-testing/productivity-games-%e2%80%93-using-games-to-improve-quality/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=productivity-games-%25e2%2580%2593-using-games-to-improve-quality</link>
		<comments>https://googledata.org/google-testing/productivity-games-%e2%80%93-using-games-to-improve-quality/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 01:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Editor's note (Pat Copeland, Engineering Productivity Director, Google): On occasion we ask a special guest to post on an interesting topic. Ross has some really interesting ideas about how to use games to influence behavior. I'm a big fan. Enjoy!Ross ...]]></description>
				<content:encoded><![CDATA[Editor's note (Pat Copeland, Engineering Productivity Director, Google): On occasion we ask a special guest to post on an interesting topic. Ross has some really interesting ideas about how to use games to influence behavior. I'm a big fan. Enjoy!<br /><br /><br />Ross Smith, Director of Test, Microsoft Windows Core Security<br /><i><br />“Quality takes you out of yourself, makes you aware of the world around you.” [1]<br /></i><br /><br /><p class="MsoNormal">The “Gamer Generation” is here. <span style="font-size:0;"></span>According to the <a href="http://www.washingtonpost.com/wp-dyn/content/article/2006/05/07/AR2006050700172.html">Washington Post</a>, in 2006 at least 40% of Americans play video games on a computer or a console. The largest demographic is 18-34 year-<span class="blsp-spelling-error" id="SPELLING_ERROR_0">olds</span>, many of whom are working as our friends and peers as software developers and testers. <span style="font-size:0;"></span>There is a great book, <a href="http://books.google.com/books?id=uxz6UU_AW3cC">Got Game</a>, which describes the impact of games on the workforce of today and in the future.</p><p class="MsoNormal">Many businesses are wondering these days how to use simple concepts popular in video games and apply them to work.</p><p class="MsoNormal">It’s happening already. From a construction site with a sign posted with “days since last accident” to the car dealer with <span class="blsp-spelling-error" id="SPELLING_ERROR_1">salespersons</span> leader board scrawled out in chalk. Simple competition helps work get done in all kinds of industries. The success of sales contests is a great example of how well competition works.</p><p class="MsoNormal"><i>“In every job that must be done, there is an element of fun. You find the fun and—SNAP—the job’s a game!” —Mary Poppins</i></p><p class="MsoNormal">A company called <a href="http://www.seriosity.com/products.html"><span class="blsp-spelling-error" id="SPELLING_ERROR_2">Seriosity</span></a> has made interesting use of video game concepts at work with their application of virtual currency to email. To help with information overload from an overflowing inbox, email senders can “spend” virtual currency (<span class="blsp-spelling-error" id="SPELLING_ERROR_3">Serios</span>) to help prioritize their messages. Spending to denote the importance of a message is not a whole lot different than buying new golf clubs with virtual money earned in a Tiger Woods game, buying new tires in a car racing game – or using gamer points to upgrade your armor in an <span class="blsp-spelling-error" id="SPELLING_ERROR_4">RPG</span> (Role-playing Game). Wired Magazine had a <a href="http://www.wired.com/wired/archive/14.04/learn.html">great article</a> on the use of WOW as a leadership training game. Playing games at work is more than just a quick game of online Hearts with one finger on the “<a href="http://en.wikipedia.org/wiki/Boss_key">boss key</a>”. Games at work can have real impact.</p><p class="MsoNormal">With other industries using productivity games, what about software development?<span style="font-size:0;"> </span>How can productivity games help testers improve the quality of the products they test?<span style="font-size:0;"> </span>One of the more famous test techniques is the bug bash. Teams pick a certain date, and everyone bangs on a certain area of the product to find bugs. At the end, prizes are awarded while everyone enjoys pizza and drinks. That sounds a lot like game, doesn't it?<span style="font-size:0;"> </span>It’s also a perfect example of a simple productivity game.</p><p class="MsoNormal">As the world of software gets more complex and the test matrix grows, there is no shortage of opportunities for testers to do more testing. Quality is always “improved”, it’s never completed, fixed or finished. Therefore, testers must choose from a variety of techniques and activities to pursue tasks with the highest return and value. In 1990, <a href="http://nobelprize.org/nobel_prizes/economics/laureates/1990/index.html">Harry <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Markowitz</span></a> won the Nobel Prize for his work on <a href="http://cowles.econ.yale.edu/P/cm/m16/m16-all.pdf">Portfolio Selection</a> (that he began in the 1950’s). The theory, familiar in financial markets and mutual funds, is that a portfolio of diverse assets with varying risk and returns actually reduces risk in time uncertain conditions. Testers can benefit from the work on portfolio selection by varying the techniques they use to find defects. However, some techniques are more expensive, more difficult, or less attractive than others. Some teams, in some situations, can rely on the altruism and volunteer efforts – <a href="http://en.wikipedia.org/wiki/Organizational_citizenship_behavior">organizational citizenship behaviors</a> – of their members to take on the more difficult tasks. However, that doesn't always work, and other incentives may be required. That’s where productivity games can help.</p><p class="MsoNormal">When a project needs a bit of a push towards a certain behavior, building a game around it can help.<span style="font-size:0;"> </span>For example, if a test team wants to improve the usage of unit tests by developers, encourage the team to “<a href="http://en.wikipedia.org/wiki/Eating_one">eat their own <span class="blsp-spelling-error" id="SPELLING_ERROR_6">dogfood</span></a>” or run automated tests on personal machines overnight, then creating a game will help people’s motivation can motivate people to participate in those activities. </p><p class="MsoNormal">Productivity games differ from traditional games in a few distinct ways. The goal of a productivity game is to attract players. <b>These games don’t need winners as much as they need players. </b>In many cases, productivity games don’t even need prizes. Productivity games can be simple. There’s no need to invest in expensive graphics or 3-D modeling – people play the game to compete around a work activity, not because of the appeal of the user interface. A simple leader board might be all that’s needed. </p><p class="MsoNormal">Using games at work is a powerful and effective method to influence change in organizational behavior, and therefore requires care in the design and use. It is possible to overdo the use of games to a point where they are counter-productive or ineffective. Successful game design is best achieved through experience and experimentation, and the goal should be to keep things interesting enough to always attract players. A game where one player leaps out to an insurmountable lead is not effective, because that will discourage others from playing. When a team wants to encourage testers to invest in fault injection techniques, setting up a leader board with bug totals found via fault injection techniques will attract attention of other testers, often just by word-of-mouth. You should encourage team-wide competition, smack talk, and public embarrassment as a means to draw attention. Games should be short in duration.<span style="font-size:0;"> </span>Many testers remember the Dilbert “I’m gonna write me a new minivan” from 11/13/95. This is what results from a poorly designed productivity game.</p><p class="MsoNormal">Productivity games are great at motivating people to do things and change behavior. And as Uncle Ben said to <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Spiderman</span>, “With great power comes great responsibility”. It’s critical to have specific goals for the games, and to understand the impact before deploying a game – it’s pretty likely that people will play, at least initially, and the impact may not be what you intended. Keep the duration of games short in order to be able to adjust. And finally, keep the games focused on volunteer or “extra” activities. A game designed around an individual’s job or portions of everyone’s regular job can introduce unusual feelings when it comes to rewards and performance evaluation. It’s easier to steer clear of that than to try to figure out the right balance.</p><p class="MsoNormal"><span class="blsp-spelling-error" id="SPELLING_ERROR_8">Shigeru</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Miyamoto</span>, who designed Super Mario Bros., talks about games as “miniature gardens”, metaphorically representing the cultural values, humanity, and challenges of everyday life the way a miniature garden might represent a real one. </p><p class="MsoNormal"><i>The whole idea, for me, is about the exploration of a <span class="blsp-spelling-error" id="SPELLING_ERROR_10">hakoniwa</span>, a miniature garden. It's like a garden in a box, where if you look at it from different angles, you can see different plants and arrangements. And you have that sense of surprise and exploration. There's always things you can find. </i>[2]<br /></p><p class="MsoNormal">Games are a lot like testing.<span style="font-size:0;"> </span>Software quality assurance and testing efforts represent a proxy for real users in much the same way that games are a proxy for the real world. The challenges that Mario faces with fire-breathing dragons and knife throwing turtles are balanced by the allure of coins and princesses.<span style="font-size:0;"> </span>A testing organization has a good idea of the tools available in their portfolio to improve quality and eliminate those “fire-breathing dragons” for their customers. Productivity games allow teams to offer coins and position rewards around their equivalents of <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Markowitz</span>’s “diverse assets” at their disposal, in the form of defect detection and removal techniques, to improve quality. </p><p class="MsoNormal"><span style="font-size:0;"></span>For the players, productivity games offer people the ability to learn, solve problems, and earn a reward. They offer a way to challenge players to compete, to explore and discover, and to establish a surrogate identity or status via a leader board. There are many fundamental motivations to play a game. “<i>If you build it, they will come [3]." </i>A good productivity game designer can build a game around “work that needs to be done that no one wants to do” – and like the lone teenager who plays Halo for weeks on end, people will take on that work. Experiment and explore – the results can be surprising.</p><p class="MsoNormal">I’d be interested in any <a href="mailto:rosss@defectprevention.org?subject=Comments%20on%20Productivity%20Games">comments about Productivity Games</a> that you might have.</p><p class="MsoNormal" style="MARGIN-BOTTOM: 0pt">Thanks,</p><p class="MsoNormal" style="MARGIN-BOTTOM: 0pt">Ross Smith</p><p class="MsoNormal" style="MARGIN-BOTTOM: 0pt"><a href="http://www.defectprevention.org/">http://www.defectprevention.org/</a> </p><p class="MsoNormal"><b><?xml:namespace prefix = o /><o:p></o:p></b></p><p class="MsoNormal"><o:p></o:p></p><p class="MsoNormal"><b>Interesting Links: <span style="TEXT-DECORATION: underline"></span></b></p><p><a href="http://news.bbc.co.uk/2/hi/technology/7030234.stm" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>When Work becomes a Game</u></span></a></p><p><a href="http://seriousgames.org/index2.html" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Serious Games Initiative</u></span></a></p><p><a href="http://www.e-learningguru.com/books/gotgame.pdf" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Got Game - How the Gamer Generation is Reshaping Business Forever</u></span></a><span style="font-family:Calibri;font-size:100%;"> </span></p><p><a href="http://www.defectprevention.org/book.aspx" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Chapter 5 – Productivity Games - The Practical Guide to Defect Prevention</u></span></a></p><p><a href="http://www.defectprevention.org/downloads/bug+hunter.pdf" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>2008 Serious Games Summit presentation</u></span></a></p><p><a href="http://www.gamasutra.com/education/theses/20030901/gingold_01.shtml" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Miniature Gardens and Magic Crayons: Games, Spaces, &amp; Worlds</u></span></a></p><p><a href="http://harvardbusinessonline.hbsp.harvard.edu/hbsp/hbr/articles/article.jsp?ml_subscriber=true&amp;ml_action=get-article&amp;&amp;articleID=R0805C&amp;pageNumber=1" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>HBR Leadership’s Online Labs</u></span></a></p><p><a href="http://www.npr.org/templates/story/story.php?storyId=91573868" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>NPR: Software lets users assign value to email</u></span></a></p><p><a href="http://www.edery.org/" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Game Tycoon blog</u></span></a><span style="font-family:Calibri;font-size:100%;"> (How Video Games are transforming the Business World) </span></p><p><a href="http://productivitygames.blogspot.com/" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>Productivity Games Blog</u></span></a></p><a href="http://www.levityeffect.com/" ><span style="font-family:Calibri;font-size:100%;color:#0000ff;"><u>The Levity Effect</u></span></a><br /><br /><p class="MsoNormal"><b><span style="TEXT-DECORATION: underline"></span></b><span style="LINE-HEIGHT: 115%;font-size:85%;" ></span></p><p class="MsoNormal"><span style="LINE-HEIGHT: 115%;font-size:85%;" >Special thanks to Joshua Williams for his help with this post.<o:p></o:p></span><br /></p><hr align="left" width="33%"  style="font-size:78;"><br /><div id="edn1"><p class="MsoEndnoteText">[1] Robert <span class="blsp-spelling-error" id="SPELLING_ERROR_13">Pirsig</span>, Zen and the Art of Motorcycle Maintenance<br />[2] Wired Magazine Interview <a title="" href="http://www.blogger.com/post-create.g?blogID=15045980#_ednref3" name="_edn3">http://blog.wired.com/games/2007/12/interview-super.html<br /></a>[3] Field of Dreams, 1989</p></div><div id="edn2"></div><div id="edn3"></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-660789245724190864?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/productivity-games-%e2%80%93-using-games-to-improve-quality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taming the Beast (a.k.a. how to test AJAX applications) : Part 1</title>
		<link>https://googledata.org/google-testing/taming-the-beast-a-k-a-how-to-test-ajax-applications-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=taming-the-beast-a-k-a-how-to-test-ajax-applications-part-1</link>
		<comments>https://googledata.org/google-testing/taming-the-beast-a-k-a-how-to-test-ajax-applications-part-1/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 04:55:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Markus Clermont, John Thomas          This is the first in a two part blog series titled 'Taming the Beast: How to test AJAX applications". In this part we discuss some philosophies around web application testing and how it should be done the...]]></description>
				<content:encoded><![CDATA[Posted by Markus Clermont, John Thomas          <br /><br />This is the first in a two part blog series titled 'Taming the Beast: How to test AJAX applications". In this part we discuss some philosophies around web application testing and how it should be done the 'right' way. In part 2, we walk through a real example of designing a test strategy for an AJAX application by going 'beyond the GUI.'<br /><br /><b id="v8mx1">Background<br /></b>Typically we address the problem of testing an AJAX application through a plethora of big end-to-end tests and (hopefully) high unit-test coverage. Here we outline the main problems with this approach and demonstrate an effective testing strategy for a sample GWT-based application which goes beyond "testing just through the GUI."<br /><br /><b id="ho:b">Problems with GUI-only testing</b><br /><div id="ji6d">In general testing through the GUI:<br /><ul id="hyz_1"><li id="hyz_2">is expensive (takes long to write the tests and execution is resource-intensive)<br /></li><li id="hyz_3">gives limited insight into the system</li><li id="hyz_4">often take only the 'happy paths' into account</li><li id="hyz_5">combines multiple aspects in a single test<br /></li><li id="hyz_7">is slow and brittle</li><li id="hyz_7">needs a lot of maintenance<br /></li><li id="hyz_7">is hard to debug</li></ul><br />And while unit tests don't suffer from many of these problems, they alone are not sufficient mainly because they:<br /><ul id="ji6d2"><li id="ji6d3">give little insight how the components interact with each other</li><li id="ji6d4">don't give confidence that the business logic and functionality of the system meets the requirements</li></ul></div><br /><b id="xup3">Solution</b><br />Although there is no 'one size fits all' solution, there are some basic principles we can use to solve the testing problem for web applications:<br /><div id="weg5"  style="font-size:0.9em;"><ul id="j9-b"><li id="j9-b2"><span id="j9-b3"  style="font-size:100%;">Invest in integration tests (identify the smallest sub-system)</span></li><li id="j9-b6"><span id="j9-b7"  style="font-size:100%;">Separation of Concerns (don't do the set-up through the interface you are testing)</span></li><li id="j9-b10"><span id="j9-b11"  style="font-size:100%;">Test each interface separately (mock out everything that you are not testing)</span></li><li id="j9-b14"><span id="j9-b15"  style="font-size:100%;">Consider dependencies in production (figure out how dependencies can fail, and test that)<br /></span></li><li id="j9-b18"><span id="j9-b19"  style="font-size:100%;">Use a mix of strategies and tools. There is no silver bullet.</span></li><li id="j9-b20"><span id="j9-b21"  style="font-size:100%;"><b id="weg518">And no... you cannot scrap all of your end-to-end tests</b></span></li></ul></div><br /><b id="xup3">A recipe for testing goodness</b><br />Using the principles above we can build up a recipe for testing web applications. In the second part of our blog we will walk through each of these steps for a real web application.<br /><ol id="i1ex1"><li id="i1ex2">Explore the system's functionality</li><li id="i1ex3">Identify the system's architecture</li><li id="i1ex4">Identify the interfaces between components</li><li id="i1ex4">Identify dependencies and fault conditions</li><li id="i1ex4">For each function:</li></ol><ul style="margin-left: 40px;"><li>Identify the participating components</li><li>Identify potential problems</li><li>Test in isolation for problems</li><li>Create a 'happy path' test</li></ul><br /><b id="ikfc">End note: value of a test</b><br />A question commonly asked by developers when writing tests is, "is this really worth my time?" The short answer is "always!". Since fixing a bug is way more expensive than preventing it in the first place, writing good tests is always worth the time.<br /><br />While there are many different classifications of tests, the most common way of classifying them is based on their size and the areas of a product they test. Each test answers specific questions about the product:<br /><ul id="ge75"><li id="ge750">Unit test: is the method fulfilling its contract?</li><li id="ge751">Small integration test: Can two classes interact with each other?</li><li id="ge752"> Medium integration test: Is a class interacting properly with all its dependencies? Does it anticipate and handle errors correctly? Are the needed functions exposed on an API/GUI?</li><li id="ge752"> Sub-system test: Can two sub-systems interact with each other? Does one of them anticipate all errors of the other and does it deal with them appropriately?<br /></li><li id="ge752">System test: Does the entire system behave as expected?<br /></li></ul>Keeping this questions in mind, testing at various levels allows us to write more focused and meaningful tests. Remember that effective tests are those that provide quick <i id="m.5_">and</i> useful feedback, i.e. quickly identify issues and pin point the exact location of the issue.<br /><br />In the next episode we will walk through the recipe proposed above using a real web application.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2632154988414933193?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/taming-the-beast-a-k-a-how-to-test-ajax-applications-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 days left for GTAC Proposals!</title>
		<link>https://googledata.org/google-testing/3-days-left-for-gtac-proposals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=3-days-left-for-gtac-proposals</link>
		<comments>https://googledata.org/google-testing/3-days-left-for-gtac-proposals/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 03:44:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[A brief reminder that there are only three days left to submit proposals for this year's Google Test Automation Conference. The proposal deadline is June 6th, after which the selection process will begin.The Call For Proposals announcement is available...]]></description>
				<content:encoded><![CDATA[A brief reminder that there are only three days left to submit proposals for this year's Google Test Automation Conference. The proposal deadline is June 6th, after which the selection process will begin.<br /><br />The Call For Proposals announcement is available at the Google Testing Blog <a href="http://googletesting.blogspot.com/2008/04/gtac-call-for-proposals.html">here</a>.<a href="http://googletesting.blogspot.com/2008/04/gtac-call-for-proposals.html" ></a><br /><br />See you in October!<br /><span style="color:#888888;">Lydia Ash<br />GTAC Conference Chair - 2008</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-958832703938991511?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/3-days-left-for-gtac-proposals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Testing of Distributed File Systems at Google</title>
		<link>https://googledata.org/google-testing/performance-testing-of-distributed-file-systems-at-google/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=performance-testing-of-distributed-file-systems-at-google</link>
		<comments>https://googledata.org/google-testing/performance-testing-of-distributed-file-systems-at-google/#comments</comments>
		<pubDate>Sat, 31 May 2008 16:23:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Rajat Jain and Marc Kaplan, Infrastructure Test Engineering Google is unique in that we develop most of our software infrastructure from scratch inside the company. Distributed filesystems are no exception, and we have several here at Google ...]]></description>
				<content:encoded><![CDATA[<span class="byline-author"></span><div style="text-align: left;"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><b id="eolb1"><i id="lqfm0">Posted by Rajat Jain and Marc Kaplan, Infrastructure Test Engineering </i></b></span><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"></span></div><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><br />Google is unique in that we develop most of our software infrastructure from scratch inside the company. Distributed filesystems are no exception, and we have several here at Google that all serve different purposes. One such filesystem is the<span class="Apple-converted-space"> </span><a id="eolb4" href="http://labs.google.com/papers/gfs.html">Google File System</a><span class="Apple-converted-space"> </span>(GFS) which is used to store almost all data at Google. Although, GFS is the ultimate endpoint for much of the data at Google, there are many other distributed file systems built on top of GFS for a variety of purposes (see<span class="Apple-converted-space"> </span><a title="Bigtable" href="http://labs.google.com/papers/bigtable.html" id="xfih">Bigtable</a>, for example -- but several others also exist) with developers constantly trying to improve performance to meet the ever-increasing demands of serving data at Google. The challenge to the teams testing performance of these filesystems is that running performance tests, analyzing the results, and repeating over and over is very time consuming. Also, since each filesystem is different, we  have traditionally had different performance testing tools for the different filesystems, which made it difficult to compare performance between the filesystems, and led to a lot of unnecessary maintenance work on the tools.<br /><br />In order to streamline testing of these filesystems, we wanted to create a new framework that is capable of easily performance testing the filesystems at Google. The goals of this system were as follows:<br /><ul id="eolb6" style="margin-top: 0px; margin-bottom: 0px;"><li id="eolb7" style="margin-top: 0px; margin-bottom: 0px;"><b id="j-6t">Generic:</b><span class="Apple-converted-space"> </span>The testing framework should be generic enough to test any type of file-system inside Google. In having a generic framework, it will be easier to compare the performance of different filesystems across many operations.</li><li id="eolb7" style="margin-top: 0px; margin-bottom: 0px;"><b id="j-6t0">Ease of use:<span class="Apple-converted-space"> </span></b>The framework should be easy enough to use so that software developers can design and run their own tests without any help from the test team.<br /></li><li id="eolb9" style="margin-top: 0px; margin-bottom: 0px;"><b id="j-6t1">Scalable:</b><span class="Apple-converted-space"> </span>Testing can be done at various scales depending on the scalability of the FS. The framework can issue any number of operations simultaneously. So, for a testing a Linux file system, we might only issue 1000 parallel requests, while for the Google File System, we might want to issue requests at a much larger scale.</li><li id="eolb10" style="margin-top: 0px; margin-bottom: 0px;"><b id="j-6t2">Extensible:</b></li><ul id="gj1q" style="margin-top: 0px; margin-bottom: 0px;"><li id="eolb10" style="margin-top: 0px; margin-bottom: 0px;">Firstly, it should be easy to add a new kind of<span class="Apple-converted-space"> </span><i id="o0-d0">operation</i><span class="Apple-converted-space"> </span>in the framework, if its developed in future (For example,<span class="Apple-converted-space"> </span><i id="o0-d1">RecordAppend</i><span class="Apple-converted-space"> </span>operation in GFS).<br /></li></ul><ul id="gj1q0" style="margin-top: 0px; margin-bottom: 0px;"><li id="eolb12" style="margin-top: 0px; margin-bottom: 0px;">Also, the framework should allow the user to easily generate complex types of load<i id="xnbf0">scenarios</i><span class="Apple-converted-space"> </span>on the server. For example, we might want to have a scenario in which we issue File<span class="Apple-converted-space"> </span><i id="z3.:0">Create</i><span class="Apple-converted-space"> </span>operations simultaneously with<span class="Apple-converted-space"> </span><i id="cqbz0">Read</i>,<span class="Apple-converted-space"> </span><i id="auk2">Write</i>, and<span class="Apple-converted-space"> </span><i id="auk20">Delete</i><span class="Apple-converted-space"> </span>operations. Thus, we want a good mix of operations but not in a randomized way, so that we can have benchmark results.<br /></li></ul><li id="eolb13" style="margin-top: 0px; margin-bottom: 0px;"><b id="auk21">Unified testing:</b><span class="Apple-converted-space"> </span>The framework should be stand-alone or independent<span class="Apple-converted-space"> </span><i id="sc_50">ie</i><span class="Apple-converted-space"> </span>it should be a one-stop solution to setup, run the tests and monitor the results.</li></ul><br />We developed a framework which allows us to achieve all the above mentioned goals. We used the Google's generic<span class="Apple-converted-space"> </span><span id="hnr:0" style="font-family: 'Courier New';">File</span><span class="Apple-converted-space"> </span>API for writing the framework, since every file system can be tested just by changing the<span class="Apple-converted-space"> </span><i id="hz040">file namespace</i><span class="Apple-converted-space"> </span>in which the testing data will be generated (e.x. /gfs vs. /bigtable). Following Google's standard, we developed a<span class="Apple-converted-space"> </span><i id="uexb0">Driver</i><span class="Apple-converted-space"> </span>+<span class="Apple-converted-space"> </span><i id="uexb1">Worker</i><span class="Apple-converted-space"> </span>system. The<span class="Apple-converted-space"> </span><i id="uexb2">Driver</i><span class="Apple-converted-space"> </span>co-ordinates the overall test, by reading configuration files to set up the test, automatically launching different number of workers depending on the load, monitoring the health of workers, collecting performance data from each worker and calculating the overall performance. The<i id="b15j0">Worker</i><span class="Apple-converted-space"> </span>class is the one which loads the file systems with appropriate operations. A worker is an abstract class and a new child class can be created for each file operation, which gives us the flexibility to add any operation we want in the future. A separate<span class="Apple-converted-space"> </span><i id="e-t.0">Worker</i><span class="Apple-converted-space"> </span>instance is launched on a different machine depending on the load that we want to generate. It is simple to run more or less workers on remote machines simply by changing the config file.<br /><br /><span id="yutr0" style="color: rgb(0, 0, 0);" >The test is divided into various phases. In a phase, we can run a single operation N number of times (with a given concurrency) and collect performance data. So, we can run a create phase followed by a write phase followed by a read phase. We can also have multiple sub-phases inside a phase, which gives us the ability to generate many different simultaneous operations on the system. For example, in a phase, we might add three subphases create, write and delete, which will issue all the different kinds of operations simultaneously on remote client machines against the distributed filesystem.<br /><br />It is instructive to look at an example config file for an idea of how the load is specified against this filesystem:<br /><br /><span id="l:wy0" style="color: rgb(61, 133, 198);"># Example of create</span><br /><span id="l:wy2" style="color: rgb(61, 133, 198);">phase {</span><br /><span id="l:wy4" style="color: rgb(61, 133, 198);">  label: "create"</span><br /><span id="l:wy6" style="color: rgb(61, 133, 198);">  shards: 200</span><br /><span id="l:wy8" style="color: rgb(61, 133, 198);">  create {</span><br /><span id="l:wy10" style="color: rgb(61, 133, 198);">    file_prefix: "metadata_perf"</span><br /><span id="l:wy13" style="color: rgb(61, 133, 198);">  }</span><br /><span id="l:wy16" style="color: rgb(61, 133, 198);">  count: 100</span><br /><span id="l:wy18" style="color: rgb(61, 133, 198);">}</span><br /><br /><span id="bor50"  style="color:#000000;">So in the example above, we launch 200 shards (which all run of different client machines) that all do creates of files with a prefix of metadata_perf, and suffixes based upon the index of the worker shard. In practice, the user of the performance test passes a flag into the performance test binary that specifies a base path to use: i.e. /gfs/cell1/perftest_path, and the resulting files will be /gfs/cell1/perftest_path/worker.i/metadata_perf.j, for i=1 until i=#shards, and j=1, until j=count.</span><br /><br /><span id="l:wy21" style="color: rgb(61, 133, 198);"># Example of using subphases</span><br /><span id="l:wy23" style="color: rgb(61, 133, 198);">phase {</span><br /><span id="l:wy25" style="color: rgb(61, 133, 198);">  label: "subphase_test"</span><br /><span id="l:wy27" style="color: rgb(61, 133, 198);">  subphase {</span><br /><span id="l:wy29" style="color: rgb(61, 133, 198);">    shards: 200</span><br /><span id="l:wy31" style="color: rgb(61, 133, 198);">    label: "stat_subphase"</span><br /><span id="l:wy33" style="color: rgb(61, 133, 198);">    stat {</span><br /><span id="l:wy35" style="color: rgb(61, 133, 198);">      file_prefix: "metadata_perf"</span><br /><span id="l:wy37" style="color: rgb(61, 133, 198);">   <span class="Apple-converted-space"> </span></span><span id="l:wy39" style="color: rgb(61, 133, 198);">}</span><br /><span id="l:wy43" style="color: rgb(61, 133, 198);">    count: 100</span><br /><span id="l:wy45" style="color: rgb(61, 133, 198);">  }</span><br /><span id="l:wy47" style="color: rgb(61, 133, 198);">  subphase {</span><br /><span id="l:wy49" style="color: rgb(61, 133, 198);">    shards: 200</span><br /><span id="l:wy51" style="color: rgb(61, 133, 198);">    label: "open_subphase"</span><br /><span id="l:wy53" style="color: rgb(61, 133, 198);">    open {</span><br /><span id="l:wy55" style="color: rgb(61, 133, 198);">      file_prefix: "metadata_perf"</span><br /><span id="l:wy57" style="color: rgb(61, 133, 198);">    }</span><br /><span id="l:wy61" style="color: rgb(61, 133, 198);">    count: 100</span><br /><span id="l:wy63" style="color: rgb(61, 133, 198);">  }</span><br /><span id="l:wy65" style="color: rgb(61, 133, 198);">}</span><br /><br />In the example above, we simultaneously do stats and opens of the files that were initially created in the create phase. Different workers execute these, and then report their results to the driver.<br /><br />On conclusion of the test, the driver prints a performance test results report that details the aggregate results of all of the clients, in terms of MB/s for data intensive ops, ops/s for metadata intensive ops, and latency measures of central tendency and dispersion.<br /></span><br />In conclusion, Google's generic<span class="Apple-converted-space"> </span><span id="ey1o0" style="font-family: 'Courier New';">File</span><span class="Apple-converted-space"> </span>API, use of Driver &amp; Workers and<span class="Apple-converted-space"> </span><span id="xkqi0" style="color: rgb(0, 0, 0);" >the concept of phases</span>have been very useful in the development of the performance testing framework and hence making performance testing easier. Almost as important, the fact that this is a simple script-driven method of testing complex distributed filesystems has resulted in an ease of use that has given both developers and testers, the ability to quickly experiment and iterate, resulting in faster code development and better performance overall.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2800658145359865745?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/performance-testing-of-distributed-file-systems-at-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intro to Ad Quality Test Challenges</title>
		<link>https://googledata.org/google-testing/intro-to-ad-quality-test-challenges/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=intro-to-ad-quality-test-challenges</link>
		<comments>https://googledata.org/google-testing/intro-to-ad-quality-test-challenges/#comments</comments>
		<pubDate>Sun, 25 May 2008 03:37:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Alek Icev Ads Quality Test Engineering ManagerI'd like to take a second and introduce you to the team testing the ads ranking algorithms. We'd like to think that we had a hand in the webs shift to a "content meritocracy". As you know the Google search ...]]></description>
				<content:encoded><![CDATA[<span class="byline-author">Alek Icev Ads Quality Test Engineering Manager<br /><br />I'd like to take a second and introduce you to the team testing the ads ranking algorithms. We'd like to think that we had a hand in the webs shift to a "content meritocracy". As you know the Google search results are unbiased by human editors, and we don't allow buying a spot at the top of the results list. This idea builds trust with users and allows the community to decide what's important.<br /><br />Recently, we started applying the same concept to the online advertising. We asked ourselves how to bring the same level of "content meritocracy" to the online advertising where everybody pays to have ads being displayed on Google and on our partner sites. In other words, we needed to change a system that was predominately driven by human influence into one that build its merit based on feedback from the community. The idea was that we would penalize the ranking of paid ads in several circumstances: few users were clicking on a particular ads, an ad's landing page was not relevant, or if users don't like an ad's content.  We want to provide our users with absolutely the most relevant ads for their click. In order to make our vision a reality we are building one of the largest online and real time machine learning labs in the world. We learn from everything: clicks, queries, ads, landing pages, conversions... hundreds of signals.<br /><br />The Google Ad Prediction System brought new challenges to Test Engineering. The problem is that we needed to build the abstraction layers and metrics systems that allow us to understand if the system is organically getting better or regressing. Put another way, we started off lacking the decision tree or a perceptron that a bank or credit card company have embedded into their risk analysis, or the neural net that's behind all broken speech recognition, or the latest tweaks on expectation-maximization algorithms needed to predict the protein transcription in the cells. The amount and versatility of the data that Google Ad Prediction models learn is immense. The amount of time needed to make the prediction is counted in milliseconds. The amount of computing resources, ads databases and infrastructure needed to serve predictions on every ad that is showing today is beyond imagination. Our challenge is to train and test learning models, that span clusters of servers and databases, simulate ads traffic and having everything compiled and running from the latest code changes submitted to the huge source depot. And the icing on the cake is to run that on 24/7 schedule.<br /><br />On top of all of the technical challenges, we are also challenging the industry definition of "testing" and are believers in automated tests that are incorporated upstream into the development process and run on continuous basis. Ads Quality Test Engineering Group at Google, works on a bleeding edge testing infrastructure to test, simulate and train Google Ads Prediction systems in real time.<br /><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-1807437612826603243?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/intro-to-ad-quality-test-challenges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exploratory Testing on Chat</title>
		<link>https://googledata.org/google-testing/exploratory-testing-on-chat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=exploratory-testing-on-chat</link>
		<comments>https://googledata.org/google-testing/exploratory-testing-on-chat/#comments</comments>
		<pubDate>Wed, 21 May 2008 00:30:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Joel Hynoski, Test Manager, Chat ClientsTesting Google Talk is challenging -- we have multiple client implementations, between the Google Talk client, the Google Talk Gadget, and Gmail chat, while also managing new features and development. W...]]></description>
				<content:encoded><![CDATA[<span class="byline-author">Posted by Joel Hynoski, Test Manager, Chat Clients</span><br /><p class="MsoNormal">Testing Google Talk is challenging -- we have multiple client implementations, between the Google Talk client, the Google Talk Gadget, and Gmail chat, while also managing new features and development. We rely heavily on automation. Yet there's still a need to do manual testing before the release of the product to the public.<br /><br />We've found that one of the best ways to unearth interesting bugs in the product is to use Exploratory Testing (<a href="http://www.satisfice.com/articles/et-article.pdf" >http://www.satisfice.com<wbr>/articles/et-article.pdf</a>) The trouble with ET is that while there appears to be a genetic disposition to be naturally good at exploring the product effectively, it's very easy to miss great swathes of the product when one follows their intuition through the product rather than focusing on coverage metrics. And speaking of coverage, how do we measure how well a team is doing finding bugs and getting coverage over the functional use cases for the product? All of the things that we rely on to measure the quality of the product, boundary and edge cases being covered? Plus, if not everyone is proficient at ET, how do we solve the overhead of having an experienced team member looking over people's shoulders to make sure they are executing well?<br /><br />To do this, we start with the definition of a <b>Test Strategy</b>. This is where we outline the approach we are taking to the testing of the product as a whole. It's not super-detailed -- instead it mentions the overarching areas that need to be tested, whether automation can be used to test the area, and what role manual testing needs to play. This information lets developers and PMs know what we think we need to test for the product, and allows them to add unit tests etc to cover more ground.<br /><br />Some basic test case definition go into the <b>Test Plan</b>. The aim of the test plan (and any test artifacts generated) is not to specify a set of actions to be followed in a rote manner, but instead a rough guide that encourages creative exploration. The test plan also acts as the virtual test expert, providing some framework under which exploratory testing can be executed effectively by the team. The plan decomposes the application into different areas of responsibility, that are doled out to members of the team in sessions that are one-working-day or less duration. By guiding people's thinking, we can cover the basics, fuzzy cases, and avoids a free-for-all, duplication, and missed areas.<br /><br />Finally we get a <b>status report</b> from the testers every day, that describes the testing that was performed that day, any bugs raised, and blocking issues identified. The reports acts as an execution of the "contract" and gives traceability, and the ability to tweak exploratory testing that has gone off track from where we've determined we need to concentrate efforts. We can use these status reports along with bug statistics to gauge the effectiveness of the test sessions.<br /><br />This is approach is fairly simple, but sometimes simple works best. Using this method has allowed us to make the best use of test engineers and maximized the effectiveness of each test pass. It's proven itself to be a fruitful approach and balances the need for reporting and accountability with the agility of exploratory testing.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-2215416487122195898?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/exploratory-testing-on-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GTAC 2008 in Seattle</title>
		<link>https://googledata.org/google-testing/gtac-2008-in-seattle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtac-2008-in-seattle</link>
		<comments>https://googledata.org/google-testing/gtac-2008-in-seattle/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 16:36:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Before the end of our last Google Test Automation Conference in August 2007, we were already getting questions from participants and blog readers wondering about the next conference. Now we can tell you when and where that will happen (drum roll please...]]></description>
				<content:encoded><![CDATA[Before the end of our last <a href="http://youtube.com/results?search_query=GTAC+google">Google Test Automation Conference</a> in August 2007, we were already getting questions from participants and blog readers wondering about the next conference. Now we can tell you when and where that will happen (drum roll please)... the 2008 Test Automation Conference will be held <span style="color: rgb(255, 0, 0);">October 23 and 24 in Seattle</span>. More details will be coming shortly...<br /><br />As with previous years, the focus of the conference will be solving software engineering challenges using tools and automation, with special focus on <span class="blsp-spelling-error" id="SPELLING_ERROR_0">SaaS</span>. Engineers in the testing world are frequently so busy shipping software that they do not take the time to share the technical details of the work they are doing, the approaches that are working, and the lessons they have learned. There will be a call for proposals in late April.<br /><br />As has been the precedent in previous years, our conference is for active and vocal participation, not quiet attendance. <span class="blsp-spelling-error" id="SPELLING_ERROR_1">GTAC</span> is a place to share great ideas and to get challenged. As we have done previously, attendants will apply by proposing what they will bring to the conference and how they can further the discussions. Applications for attendance will be opened in late June.<br /><br />We are hard at work developing the conference. Please send suggestions, questions and recommendations to: <a href="mailto:gtac@google.com" >gtac@google.com</a> or post your comments here to the blog.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8797924969745988223?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/gtac-2008-in-seattle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watching movies to find localization bugs</title>
		<link>https://googledata.org/google-testing/watching-movies-to-find-localization-bugs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=watching-movies-to-find-localization-bugs</link>
		<comments>https://googledata.org/google-testing/watching-movies-to-find-localization-bugs/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 04:46:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[By Sharon Zhou, Kirkland Client Test LeadIn December, Google Pack shipped 10 new languages in 10 new countries/regions including China Pack. This was in addition to the 30 languages Pack was all ready available in. Localization testing for these 10 lan...]]></description>
				<content:encoded><![CDATA[<span style="font-size:100%;"><span style="font-family:arial;">By Sharon Zhou, Kirkland Client Test Lead<br /><br />In December, Google Pack shipped 10 new languages in 10 new countries/regions including China Pack. This was in addition to the 30 languages Pack was all ready available in. Localization testing for these 10 languages is not trivial. The testing needs to be done very quickly by experts in the language who may not have seen the application before. Localization testing (LQA) can also be costly since it requires multiple external vendors, and the LQA schedule is highly sensitive to changes in the product schedule.<br /><br />The process that has been followed so far has been to have each product documented by an engineer detailing the workflow to navigate to each area of the UI, the appropriate inputs to be entered at each step, and what should be expected. The documentation time is considerable, and changes with product changes. The vendors must each consume this documentation and become functional at using the product in order to navigate through the product. There are also challenges to get vendors the appropriate permissions to access our unreleased products, and to download them at the site where they work.<br /><br />To minimize the test cost, the Pack test team has implemented a significant amount of automation across the entire product driving the UI. One feature of the automation harness is the ability to record movies. For the new 10 languages, the Pack team tried a new process of using the automation to drive the UI, recording movies of the product UI, and sending these movies to our vendors along with a top level test plan. To evaluate the new approach, we also asked them to fill out a survey to have a quantitative concept of how much time we can save, and hence how much cost we can reduce.<br /><br />The survey results come back very positive and encouraging. We received valuable feedback on what vendors need to conduct a fast and efficient test pass. Overall, this experiment saved the vendors an estimated 25% of their time overall. It was just as effective as the previous process, but was much simpler for them to complete. Our next steps will be to drive more of the UI. If the automation can touch every page, link and dialog, it can replace the traditional LQA testing method of installing and running build as people perform functional testing. </span></span><span style="font-weight: bold;font-size:85%;" ><span style="font-family:arial;"><br /></span></span><span class="q" id="q_1176a09afa7c8f8b_7"></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-544463935198990925?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/watching-movies-to-find-localization-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cost-Benefit Analysis of a Test</title>
		<link>https://googledata.org/google-testing/cost-benefit-analysis-of-a-test/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cost-benefit-analysis-of-a-test</link>
		<comments>https://googledata.org/google-testing/cost-benefit-analysis-of-a-test/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 00:55:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Antoine PicardWe have become test hoarders. Our focus on test-driven development, developer testing and other testing practices has allowed us to accumulate a large collection of tests of various types and sizes. Although this is valiant and ...]]></description>
				<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family:Arial;">Posted by Antoine <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Picard</span></span><br /><br /><span style="font-family:Arial;">We have become test hoarders. Our focus on test-driven development, developer testing and other testing practices has allowed us to accumulate a large collection of tests of various types and sizes. Although this is valiant and beneficial, it is too easy to forget that each test, whether a unit test or a manual test has a cost as well. This cost should be balanced against the benefits of the test when deciding whether a test should be deleted or whether it should be written in the first place.<br /><br />Let's start with the benefits of a test. It is all too easy to think that the benefits of a test are to increase coverage or to satisfy an artificial policy set by the Test Certified program. Not so. Although it is difficult to measure for an individual test, its benefits are the number of bugs that it kept from reaching production.</span></p><p class="MsoNormal"><span style="font-family:Arial;"><br />There are side benefits to well-tested code as well such as enforcing good design practices such as decomposition, encapsulation, etc. but these are secondary to avoiding bugs.<br /><br />Short examples of highly-beneficial tests are hard to come by, however counter-examples abound. The following examples have been <span class="blsp-spelling-error" id="SPELLING_ERROR_1">anonymized</span> but were found at various time in our code tree. Take this test:<br /><br /></span><span style="font-family:Courier;">def <span class="blsp-spelling-error" id="SPELLING_ERROR_2">testMyModule</span>(self):<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_3">mymodule</span>.main()</span><span style="font-family:Arial;"><br /><br />Although it probably creates a lot of coverage in <span class="blsp-spelling-error" id="SPELLING_ERROR_4">mymodule</span>, this test will only fail if main throws an exception. Certainly this is a useful condition to detect but it is wasteful to consume the time of a full run of <span class="blsp-spelling-error" id="SPELLING_ERROR_5">mymodule</span> without verifying its output. Let's look at another low-value test:<br /><br /></span><span style="font-family:Courier;">def <span class="blsp-spelling-error" id="SPELLING_ERROR_6">testFooInitialization</span>(self):<br />try:<br />foo = Foo()<br />self.assertEquals(foo.name, 'foo')<br />self.assertEquals(foo.bar, '<span class="blsp-spelling-error" id="SPELLING_ERROR_7">bak</span>')<br />except:<br />pass</span><span style="font-family:Arial;"><br /><br />This one probably hits the bottom of the value scale for a test. Although it exercises <span class="blsp-spelling-error" id="SPELLING_ERROR_8">Foo's</span> constructor, catching all exceptions means that the test will never fail. It creates coverage but never catches any bugs.<br /><br />A fellow bottom-dweller of the value scale is the test that doesn't get fixed. This can be a broken test in a continuous build or a manual test that generates a bug that stays open: either way it's a waste of time. If it's an automated test, it is worth deleting and was probably not worth writing in the first place. If it's a manual test, it's probably a sign that <span class="blsp-spelling-error" id="SPELLING_ERROR_9">QA</span> is not testing what the PM cares about. Some even apply the broken-window principle to these tests saying that tests that don't get fixed give the impression that testing is not valuable. </span><o:p></o:p></p>  <p><span style="font-family:Arial;">Our final specimen is slightly higher value but still not very high. Consider the function Bar:<br /><br /></span><span style=";font-family:&quot;;" >def Bar():<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_10">SlowBarHelper</span>1()<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_11">SlowBarHelper</span>2()<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_12">SlowBarHelper</span>3()</span><o:p></o:p></p>  <p><span style="font-family:Arial;">We could employ stubs or mocks to write a quick unit test of Bar but all we could assert is that the three helpers got called in the right order. Hardly a very insightful test. In non-compiled languages, this kind of test does serve as a substitute syntax-checker but provides little value beyond that.<br /><br />Let's now turn our attention to the dark side of testing: its cost. The budget of a whole testing team is easy to understand but what about the cost of an individual test?<br /><br />The first such cost is the one-time cost creating the test. Whether it is the time it takes to write down the steps to reproduce a manual test or the time it takes to code an automated test it is mostly dependent on the testability of the system or the code. Keeping this cost down is an essential part of test-driven development: think about your tests before you start coding.<br /><br />While the creation of a test has a significant cost, it can be dwarfed by the incremental cost of running it. This is the most common objection to manual testing since the salary of the tester must be paid with every run of the test but it applies to automated tests too. An automated test uses a machine while it's running, that machine and it's maintenance both have a cost. If a test requires specialized hardware to run, those costs go up. Similarly, adding a test that takes 20 minutes to run will consume 20 minutes of the time of each engineer that tries to run it, every time s/he tries to run it! If it's a test that's run before each check-in the cost of that test will go up rapidly. It could be worth the engineering time to reduce its run time to a more reasonable level.<br /><br />There is one more incremental cost to a test: the cost of its failure. Whenever a test fails, time is spent to diagnose the failure. The reduction of this cost is the reason behind two key principles of good testing:<br />- don't write flaky tests: flaky tests waste time by making us investigate failures that are not really there<br />- write self-diagnosing tests: a test should make it clear what went wrong when it fails to allow us to rapidly move towards a fix<br /><br />The 'economics' of testing can be used to analyze various testing methodologies. For example, true unit tests (small, isolated tests) take one approach to this problem: they minimize the repeated costs (by being cheap to run and easy to diagnose) while incurring a slightly higher creation cost (have to mock/stub, <span class="blsp-spelling-error" id="SPELLING_ERROR_13">refactor</span>, ...) and slightly lesser benefits (confidence about a small pieces of the system as opposed to the overall system). By contrast, regression tests tend to incur a greater cost (since most regression tests are large tests) but attempt to maximize their benefits by targeting areas of previous failures under the assumption that those are most likely to have bugs in the future.<br /><br />So think about both the benefits and the costs of each test that you write. Weigh the one-time costs against the repeated costs that you and your team will incur and make sure that you get the benefits that you want at the least possible cost.<o:p></o:p></span></p>  <p><span style="font-family:Arial;"><span style="font-size:85%;"><span style="font-size:100%;"></span><br /><br /></span></span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-247407698209844142?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/cost-benefit-analysis-of-a-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE Article</title>
		<link>https://googledata.org/google-testing/ieee-article/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ieee-article</link>
		<comments>https://googledata.org/google-testing/ieee-article/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 17:24:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Patrick Copeland, Engineering Productivity DirectorArticle covering some of Google's Test culture. In the article, there's some focus on the ideas of "incremental testing" and how practices are changing in the software as a service world. Eve...]]></description>
				<content:encoded><![CDATA[<span class="byline-author">Posted by Patrick Copeland, Engineering Productivity Director</span><br /><br />Article covering some of Google's Test culture. In the article, there's some focus on the ideas of "incremental testing" and how practices are changing in the software as a service world. Even with all of our drive to find better approaches, one thing to note is that we still believe in the fundamentals of testing. Here's a <a href="http://ieeexplore.ieee.org/iel5/52/4455615/04455640.pdf?isNumber=">direct link</a> (they use a bunch of indirection to get to the PDF. So if you can't get it directly, here's the <a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?isnumber=4455615&amp;arnumber=4455640">top level link</a>).<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-7759804169139625171?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/ieee-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing the Google Testing Blog &#8211; German Version!</title>
		<link>https://googledata.org/google-testing/announcing-the-google-testing-blog-german-version/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=announcing-the-google-testing-blog-german-version</link>
		<comments>https://googledata.org/google-testing/announcing-the-google-testing-blog-german-version/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 15:19:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Christopher Semturs, Software Engineer in Test, Zurich      For those German-speaking folks among our readers of this English Google Testing Blog we have exciting news: We have just launched the German Testing Blog!This is a tribute to the fa...]]></description>
				<content:encoded><![CDATA[Posted by Christopher Semturs, Software Engineer in Test, Zurich   <br /><p class="MsoNormal">   For those German-speaking folks among our readers of this English Google Testing Blog we have exciting news: We have just launched the <a title="German Testing Blog" href="http://googletesting-de.blogspot.com/" id="vw_h">German Testing Blog</a>!</p><p class="MsoNormal">This is a tribute to the fact that the German-speaking software test community is one of the biggest non-english audiences of this blog. The german blog will contain a mix of German versions of postings from this blog as well as unique postings about regional-specific issues from Europe. Some of our biggest engineering offices outside of US are in Europe, e.g. in Switzerland and the UK.<br /></p><p class="MsoNormal">So German speakers around the world check out this <a title="new resource" href="http://googletesting-de.blogspot.com/" id="bdav">new resource</a> for interesting discussions about software test, performance test, load test, and how to create rock-solid software.<br /><br /></p><br />                                                                                                      <a href="http://www.blogger.com/email-post.g?blogID=32069983&amp;postID=117391488414315031" title="Email Post">             </a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8309319212028415804?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/announcing-the-google-testing-blog-german-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Primer in Testing Mobile Phone Applications</title>
		<link>https://googledata.org/google-testing/a-primer-in-testing-mobile-phone-applications/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-primer-in-testing-mobile-phone-applications</link>
		<comments>https://googledata.org/google-testing/a-primer-in-testing-mobile-phone-applications/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 04:01:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Check out a short article by our very own Julian Harty on stickyminds.com. Here's the summary...It took eighteen months for Julian Harty to overcome the various challenges of testing mobile wireless applications. In turn, he has learned some valuable l...]]></description>
				<content:encoded><![CDATA[Check out a short article by our very own Julian <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Harty</span> on <span class="blsp-spelling-error" id="SPELLING_ERROR_1">stickyminds</span>.com. Here's the summary...<br /><blockquote>It took eighteen months for Julian <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Harty</span> to overcome the various challenges of testing mobile wireless applications. In turn, he has learned some valuable lessons that he wants to share with you in this week's column.</blockquote>Here's the post: <a href="http://www.stickyminds.com/r.asp?F=W13215" >http://www.stickyminds.com/r<wbr>.asp?F=W13215</a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8950558572705524892?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/a-primer-in-testing-mobile-phone-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TotT: Avoiding friend Twister in C++</title>
		<link>https://googledata.org/google-testing/tott-avoiding-friend-twister-in-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tott-avoiding-friend-twister-in-c</link>
		<comments>https://googledata.org/google-testing/tott-avoiding-friend-twister-in-c/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 00:47:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[(resuming our testing on the toilet posts...)In a previous episode, we extracted methods to simplify testing in Python. But if these extracted methods make the most sense as private class members, how can you write your production code so it doesn't de...]]></description>
				<content:encoded><![CDATA[<p>(resuming our testing on the toilet posts...)<br /></p><p>In a <a href="http://googletesting.blogspot.com/2007/06/tott-extracting-methods-to-simplify.html">previous episode</a>, we <b><span style="color: rgb(128, 0, 0);">extracted methods to simplify testing</span></b> in Python. But if these extracted methods make the most sense as private class members, how can you write your production code so it doesn't depend on your test code? In Python this is easy; but in C++, testing private members requires more <b> <code><span style="color: rgb(128, 0, 0);">friend</span></code></b> contortions than a game of Twister®.  </p> <blockquote style="background: rgb(230, 245, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: small;"> <pre><br />// my_package/dashboard.h<br /><b>class</b> Dashboard {<br /> <b>private:</b><br />  scoped_ptr&lt;Database&gt; database_;  // instantiated in constructor<br /><br />  // Declaration of functions GetResults(), GetResultsFromCache(),<br />  // GetResultsFromDatabase(), CountPassFail()<br /><br />  <b>friend</b> class DashboardTest; // one friend declaration per test<br />                              // fixture<br />};<br /><br /></pre> </blockquote> <p> You can apply the <b><span style="color: rgb(128, 0, 0);">Extract Class</span></b> and <b><span style="color: rgb(128, 0, 0);">Extract Interface</span></b> refactorings to create a new <b><span style="color: rgb(128, 0, 0);">helper class</span></b> containing the implementation.  Forward declare the new interface in the <b><code>.h</code></b> of the original class, and have the original class hold a pointer to the interface. (This is similar to the Pimpl idiom.) You can distinguish between the public API and the implementation details by separating the headers into different subdirectories (<b><code>/my_package/public/</code></b> and <b><code>/my_package/</code></b> in this example): </p> <blockquote style="background: rgb(230, 245, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-size: small;"> <pre><br />// my_package/public/dashboard.h<br /><b>class</b> ResultsLog;  // extracted helper interface<br /><b>class</b> Dashboard {<br /> <b>public:</b><br />  <b>explicit</b> Dashboard(ResultsLog* results) : results_(results) { }<br /> <b>private:</b><br />  scoped_ptr&lt;ResultsLog&gt; results_;<br />};<br /><br />// my_package/results_log.h<br /><b>class</b> ResultsLog {<br /> <b>public:</b><br />  // Declaration of functions GetResults(),<br />  // GetResultsFromCache(),<br />  // GetResultsFromDatabase(), CountPassFail()<br />};<br /><br />// my_package/live_results_log.h<br /><b>class</b> LiveResultsLog <b>: public</b> ResultsLog {<br /> <b>public:</b><br />  <b>explicit</b> LiveResultsLog(Database* database)<br />      : database_(database) { }<br />};<br /><br /></pre> </blockquote> <p> Now you can test <b><code>LiveResultsLog</code></b> without resorting to <b><code>friend</code></b> declarations.  This also enables you to inject <b><code>MockResultsLog</code></b> instance when testing the <b><code>Dashboard</code></b> class. The functionality is still private to the original class, and the use of a helper class results in smaller classes with better-defined responsibilities. </p><p>Remember to download <a href="http://code.google.com/testing/TotT-2007-10-30.pdf">this episode</a> of Testing on the Toilet and post it in your office.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-7547529411853240034?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/tott-avoiding-friend-twister-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Follow up: Call for posts&#8230;</title>
		<link>https://googledata.org/google-testing/follow-up-call-for-posts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=follow-up-call-for-posts</link>
		<comments>https://googledata.org/google-testing/follow-up-call-for-posts/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 18:46:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Looks like there some strong support for having the community post on this blog. Great! Please send submissions to testengteam at gmail.com. In the subject line please prefix with "blogme:" to aid in spam filtering. See the 3 basic rules in the previou...]]></description>
				<content:encoded><![CDATA[Looks like there some strong support for having the community post on this blog. Great! Please send submissions to <b>testengteam at gmail.com</b>. In the subject line please prefix with "blogme:" to aid in spam filtering. See the 3 basic rules in the previous post. Looking forward to opening up to your great ideas.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-7500823176930058199?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/follow-up-call-for-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Call for posts&#8230;</title>
		<link>https://googledata.org/google-testing/call-for-posts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=call-for-posts</link>
		<comments>https://googledata.org/google-testing/call-for-posts/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 01:35:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Patrick Copeland, Test Engineering DirectorI’d like to offer the readers a chance to post their ideas on this blog.To keep this simple I only have 3 rules:no commercial postings or links to commercial sites,post need to be interesting and p...]]></description>
				<content:encoded><![CDATA[<p class="MsoNormal">Posted by Patrick Copeland, Test Engineering Director<br /></p><p class="MsoNormal">I’d like to offer the readers a chance to post their ideas on this blog.<br /><br />To keep this simple I only have 3 rules:<br /></p><ol><li>no commercial postings or links to commercial sites,<br /></li><li>post need to be interesting and practical ideas relating to testing, and<br /></li><li>posts need to be proof read and reviewed on your end before submitting.<br /></li></ol><p class="MsoNormal">I’ll read the potential posts and make a decision within 1-2 weeks about posting it. Remember that this is a popular blog, the content is public, and your name will be on the posts. Make sure you don’t reveal proprietary information. If you are interested please post a comment to this entry. If enough people are interested, I’ll post later with an email address for the submissions. </p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8301149598325164128?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/call-for-posts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automating tests vs. test-automation</title>
		<link>https://googledata.org/google-testing/automating-tests-vs-test-automation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automating-tests-vs-test-automation</link>
		<comments>https://googledata.org/google-testing/automating-tests-vs-test-automation/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 16:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Markus Clermont, Test Engineering Manager, ZurichIn the last couple of years the practice of testing has undergone more than superficial changes. We have turned our art into engineering, introduced process-models, come up with best-practices,...]]></description>
				<content:encoded><![CDATA[<span style="font-size:100%;"><span style="font-size: 100%; color: rgb(0, 0, 0); font-family: arial;">Posted by </span><span email="markusclermont@google.com" class="EP8xU" style="color: rgb(0, 0, 0); font-family: arial;">Markus <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Clermont</span></span><span style="font-size: 100%; color: rgb(0, 0, 0); font-family: arial;">, Test Engineering Manager, Zurich</span><br /><br /><span style="font-family: arial;">In the last couple of years the practice of testing has undergone more than superficial changes. We have turned our art into engineering, introduced process-models, come up with best-practices, and developed tools to support our daily work and make each test engineer more productive. Some tools target test execution. They aim to automate the repetitive steps that a tester would take to exercise functions through the user interface of a system in order to verify its functionality. I am sure you have all seen tools like Selenium, <span class="blsp-spelling-error" id="SPELLING_ERROR_1">WebDriver</span>, Eggplant or other proprietary solutions, and that you learned to love them.</span><br /><br /><span style="font-family: arial;">On the downside, we observe problems when we employ these tools:</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">Scripting your manual tests this way takes far longer than just executing them manually.</span></li><li><span style="font-size:100%;">The <span class="blsp-spelling-error" id="SPELLING_ERROR_2">UI</span> is one of the least stable interfaces of any system, so we can start automating quite late in the development phase.</span></li><li><span style="font-size:100%;">Maintenance of the tests takes a significant amount of time.</span></li><li><span style="font-size:100%;">Execution is slow, and sometimes cumbersome.</span></li><li><span style="font-size:100%;">Tests become flaky.</span></li><li><span style="font-size:100%;">Tests break for the wrong reasons.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">Of course, we can argue that none of these problems is particularly bad, and the advantages of automation still outweigh the cost. This might well be true. We learned to accept some of these problems as 'the price of automation', whereas others are met by some common-sense workarounds:</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">It takes long to automate a test—Well, let's automate only tests that are important, and will be executed again and again in regression testing.</span></li><li><span style="font-size:100%;">Execution might be slow, but it is still faster than manual testing.</span></li><li><span style="font-size:100%;">Tests cannot break for the wrong reason—When they break we found a bug.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">In the rest of this post I'd like to summarize some experiences I had when I tried to overcome these problems, not by working around them, but by eliminating their causes.</span><br /><br /><span style="font-family: arial;">Most of these problems are rooted in the fact that we are just automating manual tests. By doing so we are not taking into account whether the added computational power, access to different interfaces, and faster execution speed should make us change the way we test systems.</span><br /><br /><span style="font-family: arial;">Considering the fact that a system exposes different interfaces to the environment—e.g., the user-interface, an interface between front-end and back-end, an interface to a data-store, and interfaces to other systems—it is obvious that we need to look at each and every interface and test it. More than that we should not only take each interface into account but also avoid testing the functionality in too many different places.</span><br /><br /><span style="font-family: arial;">Let me introduce the example of a store-administration system which allows you to add items to the store, see the current inventory, and remove items. One straightforward manual test case for adding an item would be to go to the 'Add' dialogue, enter a new item with quantity 1, and then go to the 'Display' dialogue to check that it is there. To automate this test case you would instrument exactly all the steps through the user-interface.</span><br /><br /><span style="font-family: arial;">Probably most of the problems I listed above will apply. One way to avoid them in the first place would have been to figure out how this system looks inside.</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">Is there a database? If so, the verification should probably not be performed against the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">UI</span> but against the database.</span></li><li><span style="font-size:100%;">Do we need to interface with a supplier? If so, how should this interaction look?</span></li><li><span style="font-size:100%;">Is the same functionality available via an <span class="blsp-spelling-error" id="SPELLING_ERROR_4">API</span>? If so, it should be tested through the <span class="blsp-spelling-error" id="SPELLING_ERROR_5">API</span>, and the <span class="blsp-spelling-error" id="SPELLING_ERROR_6">UI</span> should just be checked to interact with the <span class="blsp-spelling-error" id="SPELLING_ERROR_7">API</span> correctly.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">This will probably yield a higher number of tests, some of them being much 'smaller' in their resource requirements and executing far faster than the full end-to-end tests. Applying these simple questions will allow us to:</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">write many more tests through the <span class="blsp-spelling-error" id="SPELLING_ERROR_8">API</span>, e.g., to cover many boundary conditions,</span></li><li><span style="font-size:100%;">execute multiple threads of tests on the same machine, giving us a chance to spot race-conditions,</span></li><li><span style="font-size:100%;">start earlier with testing the system, as we can test each interface when it becomes 'quasi-stable',</span></li><li><span style="font-size:100%;">makes maintenance of tests and debugging easier, as the tests break closer to the source of the problem,</span></li><li><span style="font-size:100%;">require fewer machine resources, and still execute in reasonable time.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">I am not advocating the total absence of <span class="blsp-spelling-error" id="SPELLING_ERROR_9">UI</span> tests here. The user interface is just another interface, and so it deserves attention too. However I do think that we are currently focusing most of our testing-efforts on the <span class="blsp-spelling-error" id="SPELLING_ERROR_10">UI</span>. The common attitude, that the <span class="blsp-spelling-error" id="SPELLING_ERROR_11">UI</span> deserves most attention because it is what the user sees, is flawed. Even a perfect <span class="blsp-spelling-error" id="SPELLING_ERROR_12">UI</span> will not satisfy a user if the underlying functionality is corrupt.</span><br /><br /><span style="font-family: arial;">Neither should we abandon our end-to-end tests. They are valuable and no system can be considered tested without them. Again, the question we need to ask ourselves is the ratio between full end-to-end tests and smaller integration tests.</span><br /><br /><span style="font-family: arial;">Unfortunately, there is no free lunch. In order to change the style of test-automation we will also need to change our approach to testing. Successful test-automation needs to:</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">start early in the development cycle,</span></li><li><span style="font-size:100%;">take the internal structure of the system into account,</span></li><li><span style="font-size:100%;">have a feedback loop to developers to influence the system-design.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">Some of these points require quite a change in the way we approach testing. They are only achievable if we work as a single team with our developers. It is crucial that there is an absolute free flow of information between the different roles in this team.</span><br /><br /><span style="font-family: arial;">In previous projects we were able to achieve this by</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">removing any spatial separation between the test engineers and the development engineers. Sitting on the next desk is probably the best way to promote information exchange,</span></li><li><span style="font-size:100%;">using the same tools and methods as the developers,</span></li><li><span style="font-size:100%;">getting involved into daily stand-ups and design-discussions.</span></li></ul><span style="font-size:100%;"><span style="font-family: arial;">This helps not only in getting involved really early (there are projects where test development starts at the same time as development), but it is also a great way to give continuous feedback. Some of the items in the list call for very development-oriented test engineers, as it is easier for them to be recognized as a peer by the development teams.</span><br /><br /><span style="font-family: arial;">To summarize, I figured out that a successful automation project needs:</span><br /></span><ul style="font-family: arial;"><li><span style="font-size:100%;">to take the internal details and exposed interface of the system under test into account,</span></li><li><span style="font-size:100%;">to have many fast tests for each interface (including the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">UI</span>),</span></li><li><span style="font-size:100%;">to verify the functionality at the lowest possible level,<br /></span></li><li><span style="font-size:100%;">to have a set of end-to-end tests,</span></li><li><span style="font-size:100%;">to start at the same time as development,</span></li><li><span style="font-size:100%;">to overcome traditional boundaries between development and testing (spatial, organizational and process boundaries), and<br /></span></li><li><span style="font-size:100%;">to use the same tools as the development team.</span></li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8050317982710955159?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/automating-tests-vs-test-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overview of Infrastructure Testing</title>
		<link>https://googledata.org/google-testing/overview-of-infrastructure-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=overview-of-infrastructure-testing</link>
		<comments>https://googledata.org/google-testing/overview-of-infrastructure-testing/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 05:37:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Marc Kaplan, Test Engineering LeadAt Google, we have infrastructure that is shared between many projects. This infrastructure creates a situation where we have a many dependencies in terms of build requirements, but also in terms of test requ...]]></description>
				<content:encoded><![CDATA[<span style="font-size: 100%;"><span style="font-family: arial;">Posted by Marc Kaplan, Test Engineering Lead</span></span><br /><br /><span style="font-family: arial;font-size:100%;" >At Google, we have infrastructure that is shared between many projects. This infrastructure creates a situation where we have a many dependencies in terms of build requirements, but also in terms of test requirements. We've found that we actually need two approaches to deal with these requirements depending on whether we are looking to run larger system tests or smaller unittests, both of which ultimately need to be executed to improve quality.<br /><br />For unittests, we are typically interested in only the module or function that is under test at the time, and we don't care as much about downstream dependencies, except insofar as they relate to the module under test. So we will typically write test mocks to mock out the downstream components that we aren't interested in actually running that simulate their behaviors and failure modes. Of course, this can only be done after understanding how the downstream module works and interfaces with our module.<br /><br />As an example of mocking out a downstream component in <a href="http://labs.google.com/papers/bigtable.html" >Bigtable</a>, we want to simulate the failure of <a href="http://labs.google.com/papers/chubby.html" >Chubby </a>, our external lockservice, so we we write a Chubby test mock that simulates the various ways that Chubby can interact with Bigtable. We then use this for the Bigtable unittests so that they a) run faster, b) reduce external dependencies and c) enable us to simulate various failure and retry conditions in the Bigtable Chubby related code.<br /><br />There are also cases where we want to simulate components that are actually upstream to the component under test. In these cases we write what is called a test driver. This is very similar to a mock, except that instead of being called by our module (downstream) it calls our module (upstream). For example, if Bigtable component has some <a href="http://labs.google.com/papers/mapreduce.html" >Mapreduce</a> specific handling, we might want to write a test driver to simulate these Mapreduce-specific interfaces so we don't have to run the full Mapreduce framework inside our unittest framework. The benefits are all the same as those of using test mocks. In fact, in many cases it may be desirable to use both drivers and mocks, or perhaps multiple of each.<br /><br />In system tests where we're more interested in the true system behaviors and timings, or in other cases where we can't write a driver or mocks we might turn to fault injection. Typically, this involves either completely failing certain components sporadically in system tests, or injecting particular faults via a fault injection layer that we write. Looking back to Bigtable again, since Bigtable uses <a href="http://labs.google.com/papers/gfs.html" >GFS</a> when we run system tests, we are running fault injection for GFS by failing actual masters and chunkservers sporadically, and seeing how Bigtable reacts under load to verify that when we deploy new versions of Bigtable that they it will work given the frequent rate of hardware failures. Another approach that we're currently work on is actually simulating the GFS behavior via a fault injection library so we can reduce the need to use private GFS cells which will result in better use of resources.<br /><br />Overall, the use of Test Drivers, Test Mocks, and Fault Injection allows developers and test engineers at Google to test components more accurately, quickly, and above all helps improve quality.</span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5892096707317531881?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/overview-of-infrastructure-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Google Mashup Editor Class</title>
		<link>https://googledata.org/google-testing/testing-google-mashup-editor-class/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-google-mashup-editor-class</link>
		<comments>https://googledata.org/google-testing/testing-google-mashup-editor-class/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 10:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Patrick Copeland, Test Engineering DirectorWanted to let you know about a partnership Google Test Engineering is doing with the University of California, Irvine. We've teamed up with Professor Hadar Ziv to sponsor a course that focuses on pre...]]></description>
				<content:encoded><![CDATA[<span style="font-size:100%;"><span style="font-family:arial;">Posted by Patrick Copeland, Test Engineering Director<br /><br /></span></span><span style="font-size:100%;"><span style="font-family:arial;">Wanted to let you know about a partnership Google Test Engineering is doing with the University of California, Irvine. We've teamed up with Professor Hadar Ziv to sponsor a course that focuses on preparing students for industry (code.google.com and several other companies are also participating). Naturally, our project focuses on testing. George Pirocanac is heading up this work and recently went down to Irvine to talk about how they will test our mash-up editor. Here's the basic project outline if you are curious.</span><span style="font-weight: bold;font-family:arial;" ><br /><br />Class Project Plan: Testing Google's Mash-up Editor</span><span style="font-weight: bold;font-family:arial;" ><br /><br />Overall Class Goal</span><span style="font-family:arial;">: To understand the basic software functional testing concepts through the experience of a case study of testing the Google Mash-up Editor and to provide meaningful feedback to Google about the effectiveness and usability of the tool.</span><span style="font-weight: bold;font-family:arial;" ><br /><br />Phase I - Gaining Domain expertise and Exploratory Testing</span><span style="font-family:arial;"> (four months)</span><br /><span style="font-family:arial;">Goals: Be able to explain what a mash-up is and why it is becoming important in today's internet. Be able to code a simple mash-up using a javascript api. Be able to code that same mash-up using Google Mash-up Editor tags. Be able to outline the basic features of the Google Mash-up editor. Be able to identify the essential elements of a functional test plan. Create a functional test plan outline for the Google Mash-up editor.</span><span style="font-weight: bold;font-family:arial;" ><br /><br />Phase II - Test Plan Execution over time</span><span style="font-family:arial;"> (Keeping in step with development) (three months)</span><br /><span style="font-family:arial;">Goals: Be able to identify the major challenges in executing a test plan during the life of a software project. Be able to identify testing technologies for dealing with these challenges. Be able to identify the effectiveness of a testing approach. Execute the test plan and provide feedback to Google.</span><span style="font-weight: bold;font-family:arial;" ><br /><br />Phase III - Usability &amp; Competing Technologies Survey</span><span style="font-family:arial;"> (two months)</span><br /><span style="font-family:arial;">Goals: Be able to identify the essential elements of a usability study. Apply the topic of usability to programming. Compare and contrast the GME with three other industry mash-up editors.</span></span><span style=";font-family:arial;font-size:85%;"  ><span style="font-size:10;"></span></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-5574267107512317494?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/testing-google-mashup-editor-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance Testing</title>
		<link>https://googledata.org/google-testing/performance-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=performance-testing</link>
		<comments>https://googledata.org/google-testing/performance-testing/#comments</comments>
		<pubDate>Tue, 09 Oct 2007 03:45:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Goranka Bjedov, Senior Test EngineerThis post is my best shot at explaining what I do, why I do it, and why I think it is the right thing to do. Performance testing is a category of testing that seems to evoke strong feelings in people: feeli...]]></description>
				<content:encoded><![CDATA[<p class="MsoPlainText">Posted by <span style=""><span class="blsp-spelling-error" id="SPELLING_ERROR_0">Goranka</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Bjedov</span>, Senior Test Engineer</span><br /><br />This post is my best shot at explaining what I do, why I do it, and why I think it is the right thing to do. Performance testing is a category of testing that seems to evoke strong feelings in people: feelings of fear (Oh, my God, I have no idea what to do because performance testing is so hard!), feelings of inadequacy (We bought this tool that does every aspect of performance testing, we paid so much for it, and we are not getting anything done!), feelings of confusion (So, what the heck am I supposed to be doing again?), and I don't think this is necessary.<br /><br />Think of performance testing as another tool in your testing arsenal - something you will do when you need to. It explores several system qualities, that can be simplified to:<br /></p><ul><li> Speed - does the system respond quickly enough</li><li> Capacity - is the infrastructure sized adequately</li><li> Scalability - can the system grow to handle future volumes</li><li> Stability - does the system behave correctly under load</li></ul><p class="MsoPlainText"> So, I do performance testing of a service when risk analysis indicates that failing in any of the above categories would be more costly to the company than performing the tests. (Which, if your name is Google and you care about your brand, happens with any service you launch.) Note that I am talking about services - I work almost exclusively with servers and spend no time worrying about client-side rendering/processing issues. While those are becoming increasingly more important, and have always been more complex than my work, I consider those to be a part of functionality tests, and they are designed, created and executed by functional testing teams.<br /><br />Another interesting thing about performance testing is that you will never be able to be 100% "right" or 100% "done. Accept it, deal with it, and move on. Any system in existence today will depend on thousands of different parameters, and if I spent the time analyzing each one of them, understanding the relationships between each two or each three, graphing their impact curves, trying to non-<span class="blsp-spelling-error" id="SPELLING_ERROR_2">dimensionalize</span> them, I would still be testing my first service two years later. The thought of doing anything less filled me with horror (They cannot seriously expect me to provide meaningful performance results in less than a year, can they?) but I have since learned that I can provide at least 90% of meaningful information to my customers by applying only 10% of my total effort and time. And, 90% is more than enough for vast majority of problems.<br /><br />So, here is what I really do - I create benchmarks. If I am lucky and have fantastic information about current usage patterns of a particular product (which I usually do), I will make sure this benchmark covers most operations that are top resource hogs (either per single use or cumulative). I'll run this benchmark with different loads (number of virtual users) against a loosely controlled system (it would be nice to have 100 machines all to myself for every service we have, which I can use once a day or once a week, but that would be expensive and unrealistic) and investigate its behavior. Which transactions are taking the most time? Which transactions seem to get progressively worse with increasing load? Which transactions seem unstable (I cannot explain their behavior)? I call this exploratory performance testing, and I'll repeat my tests until I am convinced I am observing real system behavior. While I am doing this, I make sure I am not getting biased by investigating the code. If I have questions, I ask programmers, but I know they are biased, and I will avoid getting biased myself!<br /><br />Once I have my graphs (think, interesting transaction latencies and throughput vs. load here) I meet with the development team and discuss the findings. Usually, there is one or two things they know and have been working on, and a few more they were unaware of. Sometimes, they look over my benchmark and suggest changes (could you make the ratio 80:20, and not 50:50?) After this meeting, we create our final benchmark, I modify the performance testing scripts, and now this benchmark will run as often as possible, but hopefully at least once a night. And, here is the biggest value of this effort: if there is a code change that has impacted performance in an unacceptable way, you will find out about it the next day. Not a week or a month later (How many of us remember what we did in the last month? So, why expect our developers to do so?)<br /><br />Here is why I think this is the right thing to do: I have seen more bad code developed as a result of premature performance optimizations - before the team even thought they had a problem! Please don't do that. Develop your service in a clean, maintainable and extensible manner. Let me test it, and keep regression testing it. If we find we have a problem in a particular area, we can then address that problem easily - because our code is not obfuscated with performance optimization that have improved code paths that execute once a month by 5%.<br /><br />I can usually do this in two - four weeks depending on the complexity of the project. Occasionally, we will find an issue that cannot be explained or understood with performance tests. At that point in time, we look under the hood. This is where performance profiling and performance modeling come in. And, both of those are considerably more complex than performance testing. Both great tools, but should be used only when the easy tool fails.<br /><br />Tools, tools, tools... So, what do we use? I gave a presentation at <a href="http://video.google.com/videoplay?docid=-6891978643577501895">Google Test Automation Conference in <st1:city st="on"><st1:place st="on">London</st1:place></st1:city></a> on exactly this topic. I use open source tools. I discuss the reasons why in the presentation. In general, even if you have decided to go one of the other two routes (vendor tools or develop your own) check out what is available. You may find out that you will get a lot of information about your service using <span class="blsp-spelling-error" id="SPELLING_ERROR_3">JMeter</span> and spending some time playing around with it. Sure, you can also spend $500K and get similar information or you can spend two years developing "the next best performance testing tool ever," but before you are certain free is not good enough, why would you want to?<br /><br />Final word: monitor your services during performance tests. If you do not have service related monitoring developed and set up to be used during live operations, you do not need performance testing. If the risks of your service failing are not important enough that you would want to know about it *before* it happens, then you should not be wasting time or money on performance testing. I am incredibly lucky in this area - Google infrastructure is developed by a bunch of people who, if they had a meeting where the topic would be "How to make <span class="blsp-spelling-error" id="SPELLING_ERROR_4">Goranka's</span> life easy?", could not have done better. I love them - they make my job trivial. At a minimum, I monitor CPU, memory and I/O usage. I cannot see a case when you would want to do less, but you may want to do a lot more on occasion.<br /></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-4301977735229036878?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/performance-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Post Release: Closing the loop</title>
		<link>https://googledata.org/google-testing/post-release-closing-the-loop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=post-release-closing-the-loop</link>
		<comments>https://googledata.org/google-testing/post-release-closing-the-loop/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 23:58:00 +0000</pubDate>
		<dc:creator><![CDATA[Patrick Copeland]]></dc:creator>
				<category><![CDATA[Google Testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Posted by Michael Bachman, Test Engineering ManagerA testing organization's job is not done with the release of a product.  As the software development cycle does not end with the release of the product but has an extension into the post-release diagno...]]></description>
				<content:encoded><![CDATA[<span style="font-size:100%;">Posted by Michael Bachman<span class="HcCDpe"><span class="blsp-spelling-error" id="SPELLING_ERROR_0"></span></span>, Test Engineering Manager</span><br /><br />A testing organization's job is not done with the release of a product.  As the software development cycle does not end with the release of the product but has an extension into the post-release diagnostics and evaluation. Learning from post-release metrics like product performance, defects, and behavior after it is in production (or in the field) provides valuable input into how to adjust future testing and development techniques. Measuring product defect trends and performance, and analyzing those results, can identify holes in test coverage, prevent bugs, plug gaps in the release cycle or product life cycle, and determine if the pre-release test environment was adequately representative of key customer scenarios.<br /><br />Here are a few metrics that can help jump-start this effort<br /><br />Pre- versus post-production defect ratio: This metric measures the ratio of total number of defects found before production divided by the overall number of defects in the product (including the post-release issues). This lets a team measure how many defects are being caught before release. This effort supplements the age old valuable practice of partnering with Product Support to measure incidents/defect rate. The goal is not and should not be to indulge in the blame game of "A defect found after release is test's "fault," " but as a means to find ways to make the product release cycle better. The thing to focus on is to identify what were the causes for the issue -   gaps in the release cycle, communication mishaps between product, development, and testing, inadequate test environments, or the overall testability of a product. There may not be a perfect metric, but obvious ones might be: time to resolutions (how long it takes to react to a broken issue), cost to the customer, or cost to customer support. The main point is to agree on a cross-organizational metric, track it, do the root cause analysis, and make the time to change.<br /><br />Breakdown of defects by component or functional area: In conjunction with monitoring which defects are found in production, categorizing them by functional area and component provides the necessary information to highlight trends and, more specifically, problematic areas. When a problematic component is identified, the test team can fill holes in test coverage, unit test coverage, product usability issues or the life cycle managing that functional area. Also, trending defects by component over time has additional advantages like - this data provides a better sense of the quality of particular components as they age, also provides the information of how effective the changes(if any) that were introduced in the engineering practices resulting in better quality and finally measure of introduction of new functionality caused any de-stabilizing effects to the system. This metric will allow product teams in making informed decisions regarding the product. Potential outcomes are resources allocation changes, feature deprecation or redesign of the features.<br /><br />Performance measurements (CPU usage, memory consumption, disk load, database load, latency, etc.): Without going into the various load and performance (L&amp;P) measurements one can monitor within a product (since that can be a whole separate article in itself :) ) the product teams should ensure they have mechanisms to measure key and product relevant metrics can be collected. In order to gauge the effectiveness of the test environments these measurements need to obtained both in the test labs and production environments. Identifying these mismatches allows test organizations to correct any topology issues early and before any subsequent releases (or similar releases).<br /><br />Furthermore analysis of these could expose multiple causes of why the product behavior was different in production than in test labs. Some examples (like we have found at Google) of these issues are : different machine hardware, load mismatch on the system, localized tests not measuring round-trip latency, the number of concurrent users hitting the product simultaneously (your testing team compared to the potential millions of users in production). It is important to remember that, the most important point here to measure and monitor the performance of the product as well as determine the adequacy of the test environment. When a performance issue is found in production, ask yourself "could we have caught that in the test environment?"<br /><br />Are users or your monitoring systems finding the defects? Having reliable monitoring and debugging systems, logs, and notifications are key in reacting immediately to large defects in production, as well as potentially finding the defect before your users do. Some of the best practices of engineering teams (and those followed at Google) are real-time notifications of exceptions, load, and performance, pager alerts when systems are unavailable, as well as robust logs to help developers and testing debug the system state before and after a crash. There are many open source and commercial solutions to these pieces rather than building in-house solutions. The bulk of the effort in setting up reliable monitoring typically lies in development, but it is key for test teams to assist in identifying the need and also ensure they are utilized in their test environments. This not only allows the testing organization to test the functionality of the monitoring tools, but also alerts testing of defects that might have slipped through and are not directly visible on a front-end.<br /><br />So, what does this get you? A solid picture of the product's quality and performance trend over time.  Measuring lets testing tweak their coverage and environments, as well as analyze how the team works together. Reacting to the findings helps open communication channels between development, production, and testing, and lets them join together to debug and reproduce defects and eventually reduce defects. Every part of the larger team can watch defect trends; help prioritize resources and features, and better increase unit test, system test, and performance test coverage. Getting to a robust, real-time defect, performance, monitoring framework takes effort from all teams, but, in the end, everyone can reap the benefit, especially, and most important, your users.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15045980-8426718412343348033?l=googletesting.blogspot.com' alt='' /></div>]]></content:encoded>
			<wfw:commentRss>https://googledata.org/google-testing/post-release-closing-the-loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
