<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20165167</id><updated>2013-05-19T12:11:55.405-06:00</updated><title type='text'>Chris McMahon's Blog</title><subtitle type='html'>Software testing, scripting, agile development, things in general...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default?start-index=26&amp;max-results=25'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>148</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20165167.post-4119612710938194033</id><published>2013-04-02T12:07:00.001-06:00</published><updated>2013-04-02T12:07:23.282-06:00</updated><title type='text'>Weekend Testing - Wikipedia Test Event Apr 6</title><content type='html'>Wikipedia is improving the new user experience.&lt;br /&gt;&lt;br /&gt;Wikipedia is developing a new way to create accounts on Wikipedia and a new experience for new users when logging in.&lt;br /&gt;&lt;br /&gt;Weekend Testing Americas has an online test event on the first Saturday of every month 10AM-1PM Pacific time (17:00-20:00 UTC).&lt;br /&gt;&lt;br /&gt;&amp;nbsp;On April 6 WTA will be &lt;a href="http://weekendtesting.com/archives/2883"&gt;testing account creation, login, and the new user experience for Wikipedia&lt;/a&gt; . &lt;a href="http://justinrohrman.com/blog/?p=192"&gt;Justin Rohrman&lt;/a&gt; will facilitate.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;If you'd like to join this Saturday:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Send a message on Skype to weekendtestersamericas&amp;nbsp;&lt;/li&gt;&lt;li&gt;Join #wikimedia-dev on freenode on IRC&amp;nbsp;&lt;/li&gt;&lt;li&gt;Read over the &lt;a href="http://www.mediawiki.org/wiki/QA/WTA_ACUX_Test_Plan_Apr_6"&gt;Test Plan&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Test!&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;(If you can't attend the Weekend Testing session but you are interested in QA for Wikipedia, we have &lt;a href="http://www.mediawiki.org/wiki/QA/Weekly_goals"&gt;public QA events&lt;/a&gt; ranging from bug triage to Cucumber development every week.)   </content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/4119612710938194033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=4119612710938194033' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4119612710938194033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4119612710938194033'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2013/04/weekend-testing-wikipedia-test-event.html' title='Weekend Testing - Wikipedia Test Event Apr 6'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-2084037863182969134</id><published>2013-03-26T18:22:00.000-06:00</published><updated>2013-03-26T18:37:32.819-06:00</updated><title type='text'>Who I am and where I am, March 2013</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am the &lt;a href="http://www.mediawiki.org/wiki/User:Cmcmahon" target="_blank"&gt;QA Lead&lt;/a&gt; for the&amp;nbsp;&lt;a href="https://www.wikimedia.org/"&gt;Wikimedia Foundation&lt;/a&gt;&amp;nbsp; I test &lt;a href="http://www.wikipedia.org/" target="_blank"&gt;Wikipedia&lt;/a&gt;. &amp;nbsp;My one year anniversary was in January. &amp;nbsp;I do exploratory testing and I do browser test automation with my colleague&amp;nbsp;&lt;a href="http://filipin.eu/" target="_blank"&gt;Željko Filipin&lt;/a&gt;. &amp;nbsp;I have a strong interest right now in community testing of all kinds.&lt;br /&gt;&lt;br /&gt;I'll be talking about testing Wikipedia at some conferences soon:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://developers.google.com/google-test-automation-conference/" target="_blank"&gt;GTAC&lt;/a&gt; April 23-24, NYC&lt;br /&gt;&lt;a href="http://chrismcmahonsblog.blogspot.com/2012/05/testing-summit-at-telerik.html" target="_blank"&gt;Telerik&lt;/a&gt; Test Summit May 3-4, Austin TX&lt;br /&gt;&lt;a href="http://www.mediawiki.org/wiki/Amsterdam_Hackathon_2013" target="_blank"&gt;Wikimedia Hackathon&lt;/a&gt; May 24-26, Amsterdam&lt;br /&gt;&lt;a href="http://agile2013.agilealliance.org/" target="_blank"&gt;Agile2013&lt;/a&gt;&amp;nbsp;(pending acceptance) Aug 4-10, Nashville TN&lt;br /&gt;&lt;br /&gt;I used to write about software a lot:&amp;nbsp;&lt;a href="http://searchsoftwarequality.techtarget.com/search/query?q=chris+mcmahon" target="_blank"&gt;SearchSoftwareQuality.com&lt;/a&gt;&amp;nbsp; (warning: registration wall),&amp;nbsp;&lt;a href="http://www.stickyminds.com/sitewide.asp?function=search&amp;amp;kind=simplesite&amp;amp;tt=SRCHBOX&amp;amp;tth=Y&amp;amp;freetext=chris+mcmahon&amp;amp;submit.x=10&amp;amp;submit.y=7" target="_blank"&gt;StickyMinds.com&lt;/a&gt;&amp;nbsp; and a couple of articles&amp;nbsp;&lt;a href="http://pragprog.com/magazines/2010-11/writing-and-performing" target="_blank"&gt;for&lt;/a&gt;&amp;nbsp;&lt;a href="http://pragprog.com/magazines/2011-01/rediscovering-qa" target="_blank"&gt;PragPub&lt;/a&gt;. &amp;nbsp; I wrote a chapter for&amp;nbsp;&lt;a href="http://shop.oreilly.com/product/9780596159825.do%20" target="_blank"&gt;Beautiful Testing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For many years I have been telecommuting from Durango CO where I created and hosted the &lt;a href="http://chrismcmahonsblog.blogspot.com/2010/12/writing-about-testing-first-responders.html" target="_blank"&gt;Writing About Testing peer conference&lt;/a&gt;. &amp;nbsp;WAT is unlikely to happen again.&lt;br /&gt;&lt;br /&gt;I am on my way out of Durango, but I will continue to telecommute. &amp;nbsp;In the coming months you might also find me near:&lt;br /&gt;&lt;br /&gt;Santa Barbara CA&lt;br /&gt;Tucson AZ&lt;br /&gt;San Francisco CA&lt;br /&gt;Southern Utah&lt;br /&gt;Ithaca NY&lt;br /&gt;Boulder CO&lt;br /&gt;Dulce NM&lt;br /&gt;&lt;br /&gt;I'm&amp;nbsp;&lt;a href="https://twitter.com/chris_mcmahon" target="_blank"&gt;@chris_mcmahon&lt;/a&gt;&amp;nbsp;on Twitter, christopher.mcmahon on all the Google services, chrs_mcmhn on Skype, although I rarely use Skype. &amp;nbsp;I am on a lot of &lt;a href="http://www.mediawiki.org/wiki/IRC" target="_blank"&gt;Wikimedia IRC channels&lt;/a&gt; every day. &amp;nbsp;I am not on LinkedIn or Facebook.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/2084037863182969134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=2084037863182969134' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/2084037863182969134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/2084037863182969134'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2013/03/who-i-am-and-where-i-am-march-2013.html' title='Who I am and where I am, March 2013'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-1434716963954075171</id><published>2013-01-26T13:11:00.000-07:00</published><updated>2013-01-28T11:54:48.530-07:00</updated><title type='text'>A community test event: mojibake and meaning</title><content type='html'>&lt;br /&gt;&lt;br /&gt;UPDATE 28 January the &lt;a href="https://blog.wikimedia.org/2013/01/28/help-us-test-and-investigate-visualeditor/" target="_blank"&gt;official announcement on the WMF blog&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;The Wikimedia Foundation is developing new editing software for Wikipedia.&amp;nbsp; For the first time in history we intend to have a native rich text WYSIWYG editor for the Mediawiki engine that does not require users to know wiki markup syntax in order to create and edit articles on Wikipedia.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Right now the Foundation needs help testing this editor, and we invite you to participate. &lt;br /&gt;&lt;br /&gt;We have a suite of automated tests for the editor that is capable of checking the contents of existing articles, loading them into VisualEditor, saving the article, and checking that no information has been lost in the round-trip saving operation.&amp;nbsp; We are confident that the editor is robust enough to load and save any given content on the English Wikipedia.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;What is not clear is whether VisualEditor is robust enough to preserve information after that information has been altered:&amp;nbsp; additions, changes, deletions, other manipulations of the content of Wikipedia pages may or may not cause unintentional alterations to the contents of pages upon saving.&amp;nbsp; We just don't know.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Of particular interest is manipulation involving non-Latin characters.&amp;nbsp; Various language scripts and other aspects of the greater Unicode character set should be handled correctly by the VisualEditor, and we want to find out if that is true.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;This sort of testing of course is best done by real human beings.&amp;nbsp; Ultimately this is a test not only that VisualEditor preserves altered text correctly, but that VisualEditor preserves *meaning* correctly. &lt;br /&gt;&lt;br /&gt;This testing should be of interest not only to those who will eventually want to edit Wikipedia in their native language, but also to those interested in accessibility, internationalization and localization, maintainability and scalability as well.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For the week starting 28 January 2013, the Foundation is providing extraordinary support for people testing non-Latin character handling in VisualEditor.&amp;nbsp; We will be available on IRC, on mail lists, on social media, etc. fielding questions and facilitating discussion of the behavior of VisualEditor handling of non-Latin characters.&amp;nbsp; It would be a fine thing if you could help us test VisualEditor. &lt;br /&gt;&lt;br /&gt;We have created &lt;a href="https://www.mediawiki.org/wiki/VisualEditor/Testing_Non-Latin_Characters_Input_and_Behavior" target="_blank"&gt;a test plan for the VisualEditor test event&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;We plan to have more community test events in the future every month for Wikimedia Foundation development projects.&amp;nbsp; Coming up are sessions for "Echo", our new notification system for editors of Wikipedia, improvements to our Article Feedback system for critiquing Wikipedia articles, and more.&amp;nbsp; If you are interested in doing exploratory testing for Wikipedia, we encourage you to join our new &lt;a href="https://www.mediawiki.org/wiki/Groups/Proposals/Features_testing" target="_blank"&gt;Features Testing Group&lt;/a&gt;, the central repository for information about these ongoing testing exercises.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/1434716963954075171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=1434716963954075171' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1434716963954075171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1434716963954075171'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2013/01/a-community-test-event-mojibake-and.html' title='A community test event: mojibake and meaning'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6343810306031336716</id><published>2012-12-16T13:47:00.000-07:00</published><updated>2012-12-16T14:06:24.921-07:00</updated><title type='text'>Open browser test automation at WMF</title><content type='html'>&lt;br /&gt;Almost a year ago I started working as &lt;a href="https://www.mediawiki.org/wiki/User:Cmcmahon" target="_blank"&gt;QA Lead&lt;/a&gt; for the &lt;a href="https://wikimediafoundation.org/wiki/Home" target="_blank"&gt;Wikimedia Foundation&lt;/a&gt;.&amp;nbsp; Among other things, I had a mandate to create an automated browser testing practice at WMF.&lt;br /&gt;&lt;br /&gt;From the start I wanted this project to be a world class, completely open, reference implementation of such a project, using the best and most modern tools and practices I could find.&amp;nbsp; I wanted this to be a project that anyone could read, anyone could run, and to which anyone could contribute.&amp;nbsp; I wanted this to be an industry standard implementation of a well-designed, well-implemented, working browser test automation project.&lt;br /&gt;&lt;br /&gt;Around 2006 my career had veered off into a test automation approach that, while valid and useful in certain circumstances, would be inappropriate for the WMF project.&amp;nbsp; And in the years since 2006, the tools and practices that were immature at the time had grown into mature, stable, powerful projects of their own.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I set out to educate myself about the details of the cutting edge of browser test automation in every language.&amp;nbsp; I visited Austin TX twice and San Francisco several times in the past year to discuss approaches to the project in person with experts on the subject.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;WMF hired &lt;a href="https://twitter.com/zeljkofilipin/" target="_blank"&gt;Željko Filipin&lt;/a&gt; in October 2012 specifically for the browser test automation project, and just this week we opened the curtain and turned on the lights.&amp;nbsp; The WMF browser test automation project is in Ruby, using&lt;br /&gt;&lt;br /&gt;* page_object gem&lt;br /&gt;* watir-webdriver&lt;br /&gt;* selenium-webdriver&lt;br /&gt;* Cucumber&lt;br /&gt;* RSpec&lt;br /&gt;* rake&lt;br /&gt;* Jenkins integration&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.gossamer-threads.com/lists/wiki/wikitech/319419" target="_blank"&gt;initial announcement is here&lt;/a&gt;. &lt;br /&gt;A &lt;a href="https://www.mediawiki.org/wiki/QA/running_and_writing_browser_tests" target="_blank"&gt;first pass at technical documentation is here&lt;/a&gt;, including instructions to run the tests locally if you want to see them in action on your own machine. &lt;br /&gt;Some &lt;a href="https://www.mediawiki.org/wiki/Browser_testing/community_automated_browser_testing" target="_blank"&gt;community concerns are here&lt;/a&gt;. &lt;br /&gt;The main code base is &lt;a href="https://gerrit.wikimedia.org/r/#/q/status:merged+project:qa/browsertests,n,z" target="_blank"&gt;managed in gerrit&lt;/a&gt; but there is a more accessible &lt;a href="https://github.com/wikimedia/qa-browsertests" target="_blank"&gt;read-only mirror on github&lt;/a&gt;. &lt;br /&gt;Our Jenkins instance is running on the &lt;a href="http://www.cloudbees.com/" target="_blank"&gt;Cloudbees&lt;/a&gt; service&amp;nbsp; using &lt;a href="https://saucelabs.com/" target="_blank"&gt;Sauce Labs&lt;/a&gt;&amp;nbsp; hosts, and the current &lt;a href="https://wmf.ci.cloudbees.com/" target="_blank"&gt;test results are visible here&lt;/a&gt;. &lt;br /&gt;If you would like to follow the project or contribute to it yourself, we are starting a community group you can join.&amp;nbsp; Feel free to &lt;a href="https://www.mediawiki.org/wiki/Groups/Proposals/Browser_testing" target="_blank"&gt;add yourself to the page here&lt;/a&gt;&amp;nbsp; to follow the project or contribute to it. &lt;br /&gt;&lt;br /&gt;Many people helped me along the way to making this project what it is.&amp;nbsp; Hopefully I haven't left out anyone, feel free to remind me if I did! &lt;br /&gt;&lt;br /&gt;&lt;a href="https://twitter.com/@chzy" target="_blank"&gt;Jeff Morgan&lt;/a&gt; for creating the &lt;a href="https://github.com/cheezy/page-object" target="_blank"&gt;page-object gem&lt;/a&gt; and for answering tons of my questions&lt;br /&gt;&lt;a href="https://twitter.com/jarib" target="_blank"&gt;Jari Bakken&lt;/a&gt;, especially for &lt;a href="https://speakerdeck.com/jarib/automating-130-browser-platform-and-language-combinations-without-going-insane" target="_blank"&gt;this presentation about webdriver in Ruby&lt;/a&gt;. &lt;br /&gt;&lt;a href="https://twitter.com/bramhaghosh" target="_blank"&gt;Brahma Ghosh&lt;/a&gt;&lt;br /&gt;&lt;a href="https://twitter.com/charley_baker" target="_blank"&gt;Charley Baker&lt;/a&gt;&lt;br /&gt;&lt;a href="https://twitter.com/alisterscott" target="_blank"&gt;Alister Scott&lt;/a&gt; and his &lt;a href="http://watirmelon.com/" target="_blank"&gt;Watirmelon blog&lt;/a&gt;&lt;br /&gt;&lt;a href="https://twitter.com/marlenac" target="_blank"&gt;Marlena Compton&lt;/a&gt;&amp;nbsp; and &lt;a href="https://twitter.com/m8ttyb" target="_blank"&gt;Matt Brandt&lt;/a&gt;&amp;nbsp; for discussing their experience at &lt;a href="https://quality.mozilla.org/" target="_blank"&gt;Mozilla WebQA&lt;/a&gt; with me. &lt;br /&gt;&lt;a href="https://twitter.com/bpettichord" target="_blank"&gt;Bret Pettichord&lt;/a&gt; for hosting&amp;nbsp; the &lt;a href="http://watir.com/test-automation-bazaar/" target="_blank"&gt;Test Automation Bazaar&lt;/a&gt; &lt;br /&gt;&lt;a href="https://twitter.com/aJimHolmes" target="_blank"&gt;Jim Holmes&lt;/a&gt; of Telerik for hosting the &lt;a href="http://www.telerik.com/automated-testing-tools/blog/12-05-07/telerik-testing-summit-wrapup.aspx" target="_blank"&gt;Telerik Test Summit &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And especially Željko for actually building the actual project! (And for &lt;a href="http://kickurass.org/" target="_blank"&gt;kicking my ass&lt;/a&gt;&amp;nbsp; along the way, I still have a lot to learn.)</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6343810306031336716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6343810306031336716' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6343810306031336716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6343810306031336716'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/12/open-browser-test-automation-at-wmf.html' title='Open browser test automation at WMF'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6374855749113272519</id><published>2012-06-01T09:43:00.001-06:00</published><updated>2012-06-01T09:43:20.020-06:00</updated><title type='text'>Wikimedia Foundation hiring QA staff</title><content type='html'>The Wikimedia Foundation currently has two open positions for QA staff.&amp;nbsp; One is for a &lt;a href="http://hire.jobvite.com/Jobvite/Job.aspx?j=odKnWfw0&amp;amp;c=qSa9VfwQ" target="_blank"&gt;QA Engineer&lt;/a&gt; and the other for a &lt;a href="http://hire.jobvite.com/Jobvite/Job.aspx?j=oX4sWfw9&amp;amp;c=qSa9VfwQ" target="_blank"&gt;Volunteer QA Coordinator&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I want to point out what a unique opportunity this is. &lt;br /&gt;&lt;br /&gt;Before I was hired at WMF four months ago as "QA Lead", there had never been anyone working on the Wikipedias and related projects whose only focus was testing and quality.&amp;nbsp; There was no UI test automation, there was no program of community testing.&amp;nbsp;&amp;nbsp; Actually, there still isn't.&amp;nbsp; That's where these new staff come in.&amp;nbsp; No exaggeration:&amp;nbsp; this is an opportunity to create from scratch the quality and testing practices for one of the great achievements in human history.&amp;nbsp; But WMF only has about 100 staff, and only about half of those are technical.&amp;nbsp; At the moment, there are about 50 regular contributors to WMF software (and millions and millions of users!), so this QA staff will be outnumbered and outgunned.&amp;nbsp; So we need help, both from automation and from a community of people interested in testing.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;WMF has two priorities this year for QA and testing:&amp;nbsp; one is to implement some browser-level test automation.&amp;nbsp; The other is to involve both the testing community and the Wikipedia community in more testing activities.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As QA Lead, I figured it was my job to lay some groundwork for these activities.&amp;nbsp; So I did a lot of research on the current state of browser automation (I'd not been following recent developments there for some time) and built a &lt;a href="https://github.com/chrismcmahon/Page-Object-WMF-spike" target="_blank"&gt;demonstration and example&lt;/a&gt; of what I think the best available browser test "stack" should be.&amp;nbsp;&amp;nbsp; (Note: there is some bad code in there right now, for a purpose)&amp;nbsp; I think Ruby is the way to go for this, and &lt;a href="http://lists.wikimedia.org/pipermail/wikitech-l/2012-April/059816.html" target="_blank"&gt;this is my justification for that&lt;/a&gt;.&amp;nbsp; I am really looking forward to working with our new QA Engineer to expand these tests, bring in community contributions, hook it up to Jenkins, run it against our brand new test environment, etc. etc.&amp;nbsp; My little spike is only an example, and I look forward to having my mind changed about how it will ultimately be of use.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The other thing I've done is to begin having "test events" where WMF invites outside groups to help test some aspect of the Wikipedia software.&amp;nbsp; On May 5 2012 we teamed up with Weekend Testing to validate the new frequent deployment scheme when we began updating all the Wikipedia software every two weeks.&amp;nbsp; On &lt;a href="https://www.mediawiki.org/wiki/Article_feedback/Testing_June_2012" target="_blank"&gt;June 9 we'll be teaming up&lt;/a&gt; with &lt;a href="http://openhatch.org/"&gt;Openhatch.org&lt;/a&gt; for a "shakedown cruise" of the new Wikipedia Article Feedback system that will be rolled out to all of Wikipedia in just a few weeks.&amp;nbsp;&amp;nbsp; I'm looking forward to working with the new Volunteer QA Coordinator to expand community testing both in partnership with other organizations and within the Wikipedia community itself.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;As for me, to the extent that I am a "Lead", I tend to lead from behind.&amp;nbsp; I'll be working with new and evolving WMF projects to bring testing and quality work where it can be the most valuable.&amp;nbsp; I'll be working with the test automation communities to improve development practices through testing.&amp;nbsp; I'll be looking for cool stuff out in the world for Wikipedia to make use of.&amp;nbsp; It's a brilliant future.&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6374855749113272519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6374855749113272519' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6374855749113272519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6374855749113272519'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/06/wikimedia-foundation-hiring-qa-staff.html' title='Wikimedia Foundation hiring QA staff'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-8688994636341180993</id><published>2012-05-29T11:52:00.002-06:00</published><updated>2012-06-01T09:11:29.488-06:00</updated><title type='text'>Join the Wikipedia/OpenHatch.org test event 9 June</title><content type='html'>Wikipedia allows users to leave feedback on each article.&amp;nbsp; Experienced Wikipedians analyze this feedback in myriad different ways to improve the Wikipedia user experience and to improve the encyclopedia itself.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The Wikimedia Foundation has been creating a new Article Feedback system, and on Saturday 9 June from 10AM-noon Pacific time, WMF invites testers and anyone else interested to participate in a "shakedown cruise" to test a near-final version of the new Article Feedback system before the system is rolled out to all of Wikipedia.&lt;br /&gt;&lt;br /&gt;Following on May's successful test event with Weekend Testing Americas, WMF is teaming up with the Open Source fans at &lt;a href="http://openhatch.org/"&gt;OpenHatch.org&lt;/a&gt; for this event.&amp;nbsp; I am hoping that having experienced exploratory testers plus people interested in improving Wikipedia articles will be a killer combination of expertise and interest to shake out any final issues in this critical aspect of the Wikipedia experience. &lt;br /&gt;&lt;br /&gt;Note:&amp;nbsp; anyone who shows up on 9 June will have access to some of the Article Feedback features, but if you create an account on Wikipedia no later than 4 June and also make at least ten edits to Wikipedia, your account will be "autoconfirmed" and you will have access to many more Article Feedback features than a casual user would.&amp;nbsp; (Feel free to edit for instance the Wikipedia article on your home town, or an article on software testing, or dice games, or if you're shy, just update your User page and your Talk page a few times, those edits count toward the ten also.) &lt;br /&gt;&lt;br /&gt;This is the &lt;a href="https://www.mediawiki.org/wiki/Article_feedback/Testing_June_2012" target="_blank"&gt;announcement&lt;/a&gt; and there is an &lt;a href="https://docs.google.com/spreadsheet/viewform?formkey=dGh6MGtuUGxBS1Bhc3pyYWRENTdPb3c6MQ" target="_blank"&gt;optional sign up sheet&lt;/a&gt;. The &lt;a href="https://www.mediawiki.org/wiki/QA/Article_Feedback_Test_Plan" target="_blank"&gt;Article Feedback Test Plan&lt;/a&gt; has all the details &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/8688994636341180993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=8688994636341180993' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/8688994636341180993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/8688994636341180993'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/05/join-wikipediaopenhatchorg-test-event-9.html' title='Join the Wikipedia/OpenHatch.org test event 9 June'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-7972517732767021354</id><published>2012-05-14T20:40:00.002-06:00</published><updated>2012-05-14T20:40:19.900-06:00</updated><title type='text'>Testing (automation or whatever) 101: ask a good question.</title><content type='html'>I tried to do A, and I really don't understand the response I got, X.&amp;nbsp; Does this make sense? &lt;br /&gt;&lt;br /&gt;I know it should be possible to do A, but I tried it and X happened.&amp;nbsp; What sort of conditions would cause that? &lt;br /&gt;&lt;br /&gt;I tried to do A, and X, Y, and Z happened.&amp;nbsp; X makes sense, but I don't understand Y, what's going on here? &lt;br /&gt;&lt;br /&gt;It doesn't really matter whether you're asking about automation or any other kind of testing.&amp;nbsp; The tricky part is that before asking the question, you had better be pretty familiar with A, and you had better be able to report X, Y, and Z in a reasonable way.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I have a corollary, and I have a (counter) example. &lt;br /&gt;&lt;br /&gt;I have seen any number of people in the software world complain about testers who submit bad bug reports.&amp;nbsp; I'm sure it's true, I've seen the evidence, and it boggles my mind.&amp;nbsp; A good bug report will explain A and explain X, and a great bug report will phrase the issue in terms of a question.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Not long ago I got an email from someone asking about a little script I wrote some time ago.&amp;nbsp; He asked me to give it to him.&amp;nbsp; I have not replied. I was astonished.&amp;nbsp; For one thing, a cursory google search would turn up the 30 lines of code in question.&amp;nbsp; But even worse than that:&amp;nbsp; why don't you WRITE IT YOURSELF?&amp;nbsp; &lt;br /&gt;&lt;br /&gt;It's quite possible my script no longer works.&amp;nbsp; It's quite possible that there are better ways to accomplish what the script does than what I wrote.&amp;nbsp; But I absolutely refuse to copy'n'paste 30 lines of code in an email response. &lt;br /&gt;&lt;br /&gt;Eric Raymond (if you don't know that name, google it) wrote an essay a long time ago &lt;a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html" target="_blank"&gt;How To Ask Questions The Smart Way&lt;/a&gt;.&amp;nbsp; I'm guessing that many readers of my blog are not familiar with it.&amp;nbsp; This is a travesty.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;NB: the last time I pointed a software tester to Raymond's essay, I was accused of misanthropy and worse.&amp;nbsp; Testing might be dead.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/7972517732767021354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=7972517732767021354' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7972517732767021354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7972517732767021354'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/05/testing-automation-or-whatever-101-ask.html' title='Testing (automation or whatever) 101: ask a good question.'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-2376790782346707511</id><published>2012-05-06T21:01:00.001-06:00</published><updated>2012-05-06T21:01:53.378-06:00</updated><title type='text'>Testing Summit at Telerik</title><content type='html'>&lt;br /&gt;I attended the Test Summit peer conference this weekend at the invitation of &lt;a href="https://twitter.com/#%21/ajimholmes" target="_blank"&gt;Jim Holmes&lt;/a&gt; of &lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;It was outstanding, as such peer conferences tend to be, and I and others will be posting a lot of information as a result of what went on there.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;But I want to talk about the conference itself.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Software testing has a long history of peer conferences, starting (to the best of my knowledge) with the Los Altos Workshop on Software Testing (LAWST).&amp;nbsp; Bret Pettichord borrowed the LAWST format for his Austin Workshop on Test Automation (AWTA) in the mid-2000s, and I borrowed from AWST for my Writing About Testing (WAT) conferences in 2010 and 2011.&amp;nbsp;&amp;nbsp; I think other examples exist.&amp;nbsp; The format has gotten looser over the years.&amp;nbsp; LOTS looser, as we find that motivated participants are pretty good at self-organization. &lt;br /&gt;&lt;br /&gt;As far as I am aware, the Telerik Test Summit (TTS?) is the first such software testing peer conference created and sponsored by a commercial company.&amp;nbsp;&amp;nbsp; I think this is important, and I think TTS has important implications.&lt;br /&gt;&lt;br /&gt;As a general rule, I will not endorse or support commercial companies, even the ones I work for.&amp;nbsp; I don't even link from blog posts to my own writing for articles that are behind a registration-wall or pay-wall.&amp;nbsp; Now that I work for the Wikimedia Foundation, I have even more motivation to be as impartial as I possibly can.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;And yet I accepted the invitation from Telerik and Jim easily.&amp;nbsp; I'd like to explain that.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I knew everyone in the room at TTS, and many of the attendees are good friends.&amp;nbsp; I had never met Jim Holmes.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;But I knew his work.&amp;nbsp; Jim created the CodeMash conference, which is notable not only because of its radical growth in popularity over the last several years, but also because of its reputation for friendliness and hospitality.&amp;nbsp;&amp;nbsp; I'm not involved in CodeMash and I've never attended it, but I know a lot of people who have, and Jim has a stellar reputation among my friends and acquaintances.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I didn't go to TTS because Telerik invited me;&amp;nbsp; I went because Jim Holmes has an unimpeachable reputation for integrity and hospitality.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;We were not pitched. We were not marketed to. There were no Telerik tools being discussed in the room.&amp;nbsp; We were given a tour of the Telerik office in Austin;&amp;nbsp; some attendees chose to pair up with Telerik staff to see what they were working on, some did not.&amp;nbsp;&amp;nbsp; I consider this just hospitality.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;TTS should be a lesson to other companies.&amp;nbsp; Many of the best people working in software will give away their best ideas and even their best work freely. &amp;nbsp; But the moment such people suspect they are being used or co-opted for some purpose other than trying to move the cause forward, we will turn on you with a vengeance you can not imagine.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;So my advice to any companies who might want to sponsor their own peer conferences in the future:&amp;nbsp; first, get yourself a Jim Holmes; second, listen to what he has to say; then, do what he tells you.&amp;nbsp; That's probably harder than you imagine. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/2376790782346707511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=2376790782346707511' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/2376790782346707511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/2376790782346707511'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/05/testing-summit-at-telerik.html' title='Testing Summit at Telerik'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6276957744359530941</id><published>2012-05-01T12:32:00.000-06:00</published><updated>2012-05-02T15:51:38.547-06:00</updated><title type='text'>Weekend Testing for Wikipedia May  5</title><content type='html'>&lt;br /&gt;On Saturday May 5 at 10:00 AM Pacific Time the &lt;a href="http://weekendtesting.com/chapters/america" target="_blank"&gt;Weekend Testing Americas&lt;/a&gt; will be investigating the new release of Mediawiki on Wikimedia Foundation sites before WMF rolls out the new version to all of Wikipedia.&lt;br /&gt;&lt;br /&gt;I am really excited about this project, I do hope you will consider joining in.&lt;br /&gt;&lt;br /&gt;Details of how to join are on the &lt;a href="http://weekendtesting.com/discussions?vasthtmlaction=viewtopic&amp;amp;t=240.0" target="_blank"&gt;official Weekend Testing site&lt;/a&gt;.&amp;nbsp;&lt;a href="http://www.mkltesthead.com/2012/04/weekend-testing-on-march-5th-something.html" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;1. Add “weekendtestersamericas” to your Skype contacts if you haven’t already. &lt;br /&gt;2. Fifteen minutes prior to the start of the session, please message  “weekendtestingamericas” and ask to be added to the chat session. Once  we see you, we will add you to the session.&lt;br /&gt;&lt;br /&gt;The test plan is &lt;a href="https://www.mediawiki.org/wiki/QA/WTA_Test_Plan" target="_blank"&gt;here&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See you on Saturday!</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6276957744359530941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6276957744359530941' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6276957744359530941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6276957744359530941'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/05/weekend-testing-for-wikipedia-may-5.html' title='Weekend Testing for Wikipedia May  5'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-1876554066518493174</id><published>2012-03-26T19:55:00.001-06:00</published><updated>2012-03-26T19:55:47.139-06:00</updated><title type='text'>conf report: Test Automation Bazaar</title><content type='html'>I went to the Test Automation Bazaar because one of the (many) things I want to do at Wikimedia Foundation is to start a browser test automation project, open to the greater software testing community, in support of Wikipedia and related projects.&amp;nbsp; I have been out of the loop on this front (forgive the mixed metaphor) for some time, and I particularly wanted to learn about two things: &lt;br /&gt;&lt;br /&gt;* what an attractive, modern, well-designed browser test automation framework looks like&lt;br /&gt;* page objects and their use&lt;br /&gt;&lt;br /&gt;I got what I came for.&amp;nbsp; Particular thanks to&amp;nbsp; Brahma Ghosh and Jeff Morgan/Cheezy for the great discussion.&amp;nbsp; I am putting on the white belt for this project, but at the same time, I have years of valuable UI test design experience to bring to bear. &lt;br /&gt;&lt;br /&gt;But beyond that, TAB was full of friends, many of whom I had never met.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Kudos to Bret Pettichord for making it happen, I wish we'd had more time to chat, I've known Bret longer than anyone else there, through some weird times back in the day. Tiffany Fodor, whom I met once about three years ago, Rick Hower likewise.&amp;nbsp; Željko Filipin, Alister Scott, Marek Jastrzebski, whom I've known for years and never met in person.&amp;nbsp; And the amazing Jari Bakken, who I met for the first time in San Francisco a few weeks ago.&amp;nbsp; Charley Baker was sorely missed by many.&lt;br /&gt;&lt;br /&gt;The kindness and generosity of people in the Ruby community is just remarkable.&lt;br /&gt;&lt;br /&gt;And there was ukulele playing.&amp;nbsp; It was my fault.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/1876554066518493174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=1876554066518493174' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1876554066518493174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1876554066518493174'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/03/conf-report-test-automation-bazaar.html' title='conf report: Test Automation Bazaar'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-7290791872001634852</id><published>2012-02-26T13:17:00.000-07:00</published><updated>2012-02-26T21:42:01.064-07:00</updated><title type='text'>deja vu: code, culture, and QA</title><content type='html'>&lt;br /&gt;&lt;br /&gt;Some years ago I had the privilege of making some suggestions for Brian Marick's book &lt;a href="http://pragprog.com/book/bmsft/everyday-scripting-with-ruby" target="_blank"&gt;Everyday Scripting&lt;/a&gt; based on the &lt;a href="http://www.stickyminds.com/sitewide.asp?ObjectId=8071&amp;amp;Function=DETAILBROWSE&amp;amp;ObjectType=MAGAZINE&amp;amp;sqry=*Z%28SM%29*J%28MIXED%29*R%28relevance%29*K%28simplesite%29*F%28haystack+needle%29*&amp;amp;sidx=0&amp;amp;sopp=10&amp;amp;sitewide.asp?sid=1&amp;amp;sqry=*Z%28SM%29*J%28MIXED%29*R%28relevance%29*K%28simplesite%29*F%28haystack+needle%29*&amp;amp;sidx=0&amp;amp;sopp=10" target="_blank"&gt;first article I ever wrote&lt;/a&gt; for Better Software magazine.&amp;nbsp; That article appeared in 2004, and I just recently ran into a similar situation at work.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Wikipedia is localized for well over 100 languages.&amp;nbsp; I had only been working at Wikimedia Foundation a couple of weeks when I heard that discrepancies between the localized message files from version to version could cause problems when upgrading.&amp;nbsp; I didn't know what kind of problems, but since we're upgrading all the Wikipedia wikis to version 1.19, that sounded like sort of a big deal, so I followed up.&lt;br /&gt;&lt;br /&gt;It turns out that changes to the localization files are essentially undocumented, no tools exist to monitor such changes, and we simply did not know anything about discrepancies in those files.&amp;nbsp; So I decided it would be useful to look into that.&lt;br /&gt;&lt;br /&gt;You can find the Wikipedia localization files for version 1.19 &lt;a href="https://svn.wikimedia.org/viewvc/mediawiki/branches/REL1_19/phase3/languages/messages/" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp; and for version 1.18 &lt;a href="https://svn.wikimedia.org/viewvc/mediawiki/branches/REL1_18/phase3/languages/messages/" target="_blank"&gt;here&lt;/a&gt; if you want to follow along.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Since there are well over 100 files in each directory and each file has 1000s of lines, checking for discrepancies manually is impossible.&amp;nbsp; From one of the senior people on the Wikimedia dev staff I got a few examples of certain places in these files where discrepancies would cause big problems.&amp;nbsp; (See technical note at the end.)&amp;nbsp; Although I've cleaned the code up quite a bit (one-off scripts don't have to be DRY, right?) here's what I did to cite discrepancies for one of the examples: &lt;br /&gt;&lt;br /&gt;In a directory called 'mediawiki' I have one directory 'lang118' and another 'lang119'.&amp;nbsp; In those directories are all of the Messages*.php files for each version.&amp;nbsp; What I want to do is read each file in each version, identify the contents of the $namespaceNames array, and compare those contents for every file in each directory.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;path119 = 'mediawiki/lang119/'&lt;br /&gt;path118 = 'mediawiki/lang118/'&lt;br /&gt;&lt;br /&gt;r119namespaceNames_array = []&lt;br /&gt;r118namespaceNames_array = []&lt;br /&gt;&lt;br /&gt;def get_values ( path, array_name&amp;nbsp; ) &lt;br /&gt;&amp;nbsp; Dir.foreach(path) do |name|&lt;br /&gt;&amp;nbsp; unless File.directory?("#{path}#{name}")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; text = File.read("#{path}#{name}")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; text.scan(/namespaceNames.+?\)/m)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array_name &amp;lt;&amp;lt; name + $~.to_s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end #unless&lt;br /&gt;&amp;nbsp; end #do&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;get_values(path119, r119namespaceNames_array)&lt;br /&gt;get_values(path118, r118namespaceNames_array)&lt;br /&gt;&lt;br /&gt;mismatch = r119namespaceNames_array - r118namespaceNames_array&lt;br /&gt;disc= mismatch.length.to_s&lt;br /&gt;puts "number of files with discrepancies in $namespaceNames array is #{disc}"&lt;br /&gt;&lt;br /&gt;mismatch.each do |string|&lt;br /&gt;&amp;nbsp; file = string.split(".php")&lt;br /&gt;&amp;nbsp; puts file[0]&lt;br /&gt;end&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;This script runs from the directory above 'mediawiki'.&amp;nbsp; It defines the paths to where the localization files live, and defines two arrays to hold the values to be compared.&amp;nbsp; For each directory it calls the 'get_values' method, and puts the name of the file and the contents of the $namespaceNames array of that file into the appropriate array.&amp;nbsp; Subtracting one array from the other yields a set of all mismatches, and with that the script knows how many files have mismatches, and what the names of those files are.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Reading this script should be fairly straightforward for anyone who knows a little bit of Ruby.&amp;nbsp; Note a few things, though:&amp;nbsp; &lt;br /&gt;&lt;br /&gt;* 'unless' is equivalent to 'if not', and the script needs to not check directories, only files&lt;br /&gt;* File.read is the same as Perl's "slurp", it puts the entire contents of the file into the variable 'text'&lt;br /&gt;* the 'scan' method takes a regular expression for an argument.&amp;nbsp; Here the regular expression is saying "give me all the text that begins with the string 'namespaceNames' and ends with the string ')'.&amp;nbsp; I had forgotten that '.+' is 'greedy', and will match past the terminating string, so doing '.+?' prevents that, thanks Charley Baker for the reminder.&amp;nbsp; The 'm' at the end of the regex tells it to match multiple lines, which is necessary because each value of the $namespaceNames array is on a single line and I want to match all of them in one fell swoop.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The output from this script looks like &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;number of files with discrepancies in $namespaceNames array is 16&lt;br /&gt;MessagesEn_ca&lt;br /&gt;MessagesEn_rtl&lt;br /&gt;MessagesFrp&lt;br /&gt;MessagesIg&lt;br /&gt;MessagesMk&lt;br /&gt;MessagesMzn&lt;br /&gt;MessagesNb&lt;br /&gt;MessagesNds_nl&lt;br /&gt;MessagesNo&lt;br /&gt;MessagesOr&lt;br /&gt;MessagesOs&lt;br /&gt;MessagesQug&lt;br /&gt;MessagesSa&lt;br /&gt;MessagesSr_ec&lt;br /&gt;MessagesWar&lt;br /&gt;MessagesYue&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;At this point it made sense to just look at the problem files with my eyeballs and see what was in their $namespaceNames arrays.&amp;nbsp; With a little help from diff(), that's what I did.&amp;nbsp; I reported the discrepancies I found on a public mail list for Wikimedia tech issues. &lt;br /&gt;&lt;br /&gt;A couple of interesting things happened because of that.&amp;nbsp; Again, keep in mind that I am a total n00b with these systems.&amp;nbsp; While I have a little more information now, I had no idea of what the consequences of such discrepancies would be. &lt;br /&gt;&lt;br /&gt;I got an answer on the mail list from a senior Wikimedia dev person who analyzed the discrepancies I reported and said in effect "everything's fine, we are good to upgrade based on these examples".&amp;nbsp; And while there are several other areas in these localization files that could cause issues, my example demonstrates that the technical risk for upgrading to 1.19 seems low. &lt;br /&gt;&lt;br /&gt;But then some days later in a a conversation on IRC, a different senior Wikimedia dev person said in effect "whoa, whoa, whoa, if we release these changes without at least some review from the language communities affected, we are going to be in for big trouble". &lt;br /&gt;&lt;br /&gt;As I write this I do not know if the localization files for Wikipedia will be upgraded next week or not; that decision is not in my hands. However, I am immensely pleased that as a total n00b I was able to provide true concrete examples of the data in question to inform that decision. &lt;br /&gt;&lt;br /&gt;I decided to write about this for a number of reasons: &lt;br /&gt;&lt;br /&gt;To my mind, nothing in this story has anything to do with "testing".&amp;nbsp; For some time now I have been saying that "QA is not evil", and to me, this was an exercise in pure Software Quality Assurance.&amp;nbsp; Since my official title at Wikimedia is "QA Lead", this makes me happier than you would imagine. &lt;br /&gt;&lt;br /&gt;One of the great neglected areas of software projects is the state of the actual data in applications, be it held in files or databases or whatever.&amp;nbsp; One of the most important skills QA/testing people can bring to bear on a software project is the ability to isolate critical chunks of data from enormous data stores.&amp;nbsp; That was true when I wrote "Is Your Haystack Missing a Needle" in 2004, it was true when Brian published "Everyday Scripting" in 2007 and it remains true today.&amp;nbsp; If as a QA/testing person you don't know how to read a bunch of files and do regular expressions (and for that matter do SQL queries too), you owe it to yourself and to your projects to learn. (Frankly, I hadn't done this kind of thing in a long, long time, and it felt great to get back on that horse.)&lt;br /&gt;&lt;br /&gt;Finally, I wrote this because all of the data and all of the conversations we had were completely open and public.&amp;nbsp; I could give you a link to the email thread where I published the detailed discrepancies and got the reply, I could publish a link to the IRC log where people discussed the cultural risks of upgrading the localization files.&amp;nbsp; The only reason I don't is because they're not germane to the story.&amp;nbsp; I so enjoy working in an open culture. &lt;br /&gt;&lt;br /&gt;Technical notes: &lt;br /&gt;&lt;br /&gt;My original script checked for discrepancies among four arrays:&amp;nbsp; $namespaceNames, $namespaceAliases, $magicWords, and $specialPageAliases.&amp;nbsp; The $magicWords array was trickier, and I had to do this: &lt;br /&gt;&lt;br /&gt;text = File.read("#{@@path118}#{name}")&lt;br /&gt;text.scan(/magicWords.+?\);/m)&lt;br /&gt;if $~.to_s.length &amp;gt; 0&lt;br /&gt;array = $~.to_s&lt;br /&gt;array_no_space = array.gsub(/\s+/,"")&lt;br /&gt;@@nsn118magicWords_array &amp;lt;&amp;lt; name + array_no_space&lt;br /&gt;&lt;br /&gt;For one thing, $magicWords is an array-of-arrays, so I check for a terminating string of ');' instead of just ')'.&amp;nbsp; For another thing, some of the files didn't contain the $magicWords array.&amp;nbsp; For another thing, I found some random differences in whitespace between versions for many many files, so I eliminated all the whitespace in the strings in question by doing 'array.gsub(/\s+/,"")'.&amp;nbsp; The comparison only became valid once those things happened.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/7290791872001634852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=7290791872001634852' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7290791872001634852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7290791872001634852'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/02/deja-vu-code-culture-and-qa.html' title='deja vu: code, culture, and QA'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-4028307656326518546</id><published>2012-02-04T13:57:00.000-07:00</published><updated>2012-02-04T13:59:45.003-07:00</updated><title type='text'>Who I Am and Where I Am, early 2012</title><content type='html'>I've been pretty quiet in recent times, but that's going to change somewhat in 2012, so I thought I'd write this(*) to catch up.&lt;br /&gt;&lt;br /&gt;As of last week, I am the QA Lead for the &lt;a href="https://www.wikimedia.org/"&gt;Wikimedia Foundation&lt;/a&gt;.  My job there will be to create, codify, and execute the software testing and quality assurance regimes for the software that powers Wikipedia and its associated properties.&lt;br /&gt;&lt;br /&gt;I've worked some other interesting places, among them &lt;a href="http://www.thoughtworks.com/blogs/alumni%20" target="_blank"&gt;Thoughtworks &lt;/a&gt;and &lt;a href="https://www.socialtext.net/open/" target="_blank"&gt;Socialtext&lt;/a&gt;.  I like open source and wikis.  I have been a dedicated telecommuter/remote worker since 2006.  Depending on when you read this, I'm in either Santa Fe NM or Durango CO, or somewhere else.&lt;br /&gt;&lt;br /&gt;I have written about software a lot.  Most of my writing in recent times has been for &lt;a href="http://searchsoftwarequality.techtarget.com/search/query?q=chris+mcmahon" target="_blank"&gt;SearchSoftwareQuality.com&lt;/a&gt;&amp;nbsp; (warning: registration wall), but I've also written a lot for &lt;a href="http://www.stickyminds.com/sitewide.asp?function=search&amp;amp;kind=simplesite&amp;amp;tt=SRCHBOX&amp;amp;tth=Y&amp;amp;freetext=chris+mcmahon&amp;amp;submit.x=10&amp;amp;submit.y=7" target="_blank"&gt;StickyMinds.com&lt;/a&gt;&amp;nbsp; and a couple of articles &lt;a href="http://pragprog.com/magazines/2010-11/writing-and-performing" target="_blank"&gt;for&lt;/a&gt; &lt;a href="http://pragprog.com/magazines/2011-01/rediscovering-qa" target="_blank"&gt;PragPub&lt;/a&gt;. &amp;nbsp;  I wrote a chapter for &lt;a href="http://shop.oreilly.com/product/9780596159825.do%20" target="_blank"&gt;Beautiful Testing&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I created the Writing About Testing peer conference and associated mail list and wiki.  I like to think WAT has had some influence on the testing/QA field over the last couple of years. I've given presentations at a couple of Agile conferences, once at PNSQC, a couple of AWTAs, and some smaller peer conferences from time to time.  I attended two GTACs.&lt;br /&gt;&lt;br /&gt;I've been using browser automation tools (&lt;a href="http://seleniumhq.org/" target="_blank"&gt;Selenium&lt;/a&gt;&amp;nbsp; and &lt;a href="http://watir.com/%20" target="_blank"&gt;Watir&lt;/a&gt;) since they existed.  I know a lot about their history and something about how to use them well.  As a programmer I am slow and simple.  What programming I do is usually in Ruby.&lt;br /&gt;&lt;br /&gt;I play fretless electric bass guitar with a couple of jazz bands, but outside of the WAT conference I'm more well known for playing irreverent tunes on a cheap green ukulele at software conferences.&amp;nbsp; I'm a pretty good musician.&lt;br /&gt;&lt;br /&gt;I'm &lt;a href="https://twitter.com/#%21/chris_mcmahon" target="_blank"&gt;@chris_mcmahon&lt;/a&gt; on Twitter, christopher.mcmahon at gmail and gplus. I ignore LinkedIn and I don't have a Facebook page, don't try to reach me there.&lt;br /&gt;&lt;br /&gt;* props to &lt;a href="http://www.warrenellis.com/?p=13667" target="_blank"&gt;Warren Ellis&lt;/a&gt;, from whom I stole the idea of this post.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/4028307656326518546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=4028307656326518546' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4028307656326518546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4028307656326518546'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2012/02/who-i-am-and-where-i-am-early-2012.html' title='Who I Am and Where I Am, early 2012'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-3189483949425334186</id><published>2011-12-04T12:18:00.002-07:00</published><updated>2011-12-04T12:32:38.875-07:00</updated><title type='text'>Just Fix It</title><content type='html'>On the writing-about-testing mail list recently was a discussion of defect tracking.&amp;nbsp; Given a good enough code base and a mature dev team, I think defect tracking is mostly unnecessary, and it's worth talking about why that is.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Some time ago there was a popular meme in the agile testing community that goes "Just Fix It", but I haven't heard it mentioned in some time, and I think it's worth reviving the discussion.&amp;nbsp; The idea behind Just Fix It is to bypass the overhead of creating a defect report, having those defect reports go through some sort of triage process, and only then addressing the problems themselves represented by the defect reports.&amp;nbsp; You save a lot of time and overhead if you Just Fix It.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For some time now I have specialized in testing at the UI, a combination of functional testing and UX work.&amp;nbsp; In my experience, in a good code base, important defects found at the UI level are almost always what I think of as "last mile" issues, where the underlying code has changed in some way but the hook for that code into the UI has been mangled or overlooked.&amp;nbsp; These are cases where unit tests are almost certainly passing, but the app is broken anyway.&amp;nbsp; Some examples: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Explanatory text has disappeared or no longer describes function accurately.&lt;/li&gt;&lt;li&gt;&amp;nbsp;A widget that used to function no longer does.&amp;nbsp; For example, a Submit button no longer makes anything happen.&lt;/li&gt;&lt;li&gt;&amp;nbsp;A call to some underlying function is no longer correct.&amp;nbsp; For example, a Search function that used to return results no longer does. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;While a Just Fix It culture is not necessarily agile, examples of Just Fix It are easier to describe in a typical agile situation. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Small Team&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Many agile teams share a single space, making communication easy and instantaneous. In such a situation, a conversation like this might happen: &lt;br /&gt;&lt;br /&gt;Tester: "Hey, the froobnozzle stopped froobing, anyone know anything about that?"&lt;br /&gt;Dev: "Wow, I didn't realize my last commit would break the froob function, I'll Just Fix It."&lt;br /&gt;&lt;br /&gt;This is a canonical example of what Lisa Crispin calls the "whole team approach", where testers, devs, and everyone else is working on the same stories at the same time in the same place simultaneously.&lt;br /&gt;&lt;br /&gt;And if it's appropriate, there's no real reason a tester couldn't Just Fix It themselves. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Large Team&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;But some teams are too large for a conversation like this to be practical.&amp;nbsp; Assume a collocated team with a really big story board with dozens of story cards all being moved around a lot.&amp;nbsp; Say a tester finds an issue with the froobnozzle.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Tester: grabs a red sticky note and writes brief description of froobnozzle problem. Puts sticky note on froobnozzle story card&lt;br /&gt;...minutes later... &lt;br /&gt;Dev: whoa, a red card on my story, better Just Fix It.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Distributed Team&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Distributed teams tend to have really sophisticated issue-tracking systems in place, where stories are represented in software of some sort, where they can be assigned, have their status changed, etc. etc.&amp;nbsp; If a distributed team is small enough, a tester will know that Joe is working on the froobnozzle story, so: &lt;br /&gt;&lt;br /&gt;Tester to Joe on IM: "hi Joe, I think you might have just broken the froobnozzle."&lt;br /&gt;Joe the Dev:&amp;nbsp; "whoa, good catch, I'll Just Fix It."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Large Distributed Team&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;On a large distributed team, identifying who might be in a position to Just Fix It can be complicated.&amp;nbsp; One strategy is to read the commit logs upon identifying a defect to see who or what may have caused the problem.&amp;nbsp; Another strategy might be to review all the stories in play to discover who might be working on the froobnozzle this iteration.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;But sometimes these sorts of approaches are too complicated or take too much time.&amp;nbsp; One pattern I have seen on several occasions in large distributed teams is to designate a knowledgeable person on the dev staff, or possibly a Scrum Master type, to represent the whole dev team for questions about behavior or function.&amp;nbsp; I have seen this role called the Face, and the Ninja, and the Disturbed.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Tester:&amp;nbsp; "hi Face, I just discovered the that the froobnozzle got broken within the last day or so."&lt;br /&gt;Face: "whoa, let me check that for you"&lt;br /&gt;Face: "good catch, Joe broke that two commits ago, he's Just Fixing It"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Defect Found in Production&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A customer probably reported it.&amp;nbsp; The fix is deployed to production within minutes or maybe hours of the report.&amp;nbsp; (Again, a good code base allows this.)&lt;br /&gt;&lt;br /&gt;I worry that too often "root cause analysis" is a synonym for "blame".&amp;nbsp; Defects in production are almost certainly a process problem, and the place to address process problems are in retrospectives or similar conversations.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Besides, if your team is releasing so many defects to production that you have to track them, you have bigger problems.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Won't Fix&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;True story:&amp;nbsp; just this week I was refactoring some Selenium tests and discovered a bug.&amp;nbsp; This was in a part of the application that is not exposed to customers, it is only for internal users employed by my company.&amp;nbsp; The bug was that attempting to enter a duplicate record causes an unhandled exception and the user is presented with an ugly stack trace.&amp;nbsp; This was an old bug, and was not part of the work of the current iteration. &lt;br /&gt;&lt;br /&gt;I work on a large distributed team.&amp;nbsp; As I noted above, we have a sophisticated issue-tracking system in place.&amp;nbsp; All of the work we do is documented and tracked in this system.&amp;nbsp; We have no designated defect-tracking system, just a single monolithic sophisticated issue-tracking software application. &lt;br /&gt;&lt;br /&gt;Upon finding the bug, I had a conversation with the dev who knows about that part of the code.&amp;nbsp; We agreed that this was a no-harm-no-foul situation, no data corrupted, minimal inconvenience to the user, no customer exposure.&amp;nbsp; We agreed that Just Fixing It right this minute wasn't very important. &lt;br /&gt;&lt;br /&gt;So I created a new issue in the issue tracking system and assigned it to the dev who knows about that part of the code.&amp;nbsp; This issue has the same visibility and status as every other issue in the system.&amp;nbsp; My bug report issue will be treated the same as every other issue in the system, included in the backlog, and prioritized to be worked on with every other issue in the backlog.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I don't even really think of that particular issue as a defect.&amp;nbsp; It's just a description of the state of a part of the application, some work that we might choose to do at some point.&amp;nbsp; I'm sure we'll Just Fix It pretty soon.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/grabs&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/3189483949425334186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=3189483949425334186' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/3189483949425334186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/3189483949425334186'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2011/12/just-fix-it.html' title='Just Fix It'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6591007038967506382</id><published>2011-09-30T10:44:00.001-06:00</published><updated>2011-09-30T10:45:59.164-06:00</updated><title type='text'>a selenesse trick</title><content type='html'>&lt;a href="https://groups.google.com/group/selenesse-users"&gt;Selenesse&lt;/a&gt; is the &lt;a href="https://github.com/marisaseal/selenesse"&gt;mashup between Fitnesse and Selenium&lt;/a&gt; I helped work on some time ago.&amp;nbsp; I keep encountering this pattern in my selenesse tests, so I thought I'd share it...&lt;br /&gt;&lt;br /&gt;Every once in a while a test needs some sort of persistent quasi-random bit of data.&amp;nbsp; In the example below I'm adding a new unique "location" and then checking that my new location appears selected in a selectbox.&amp;nbsp;&amp;nbsp; This is also a neat trick for testing search, or anywhere else you need to add a bit of data to the system and then retrieve that exact bit of data from somewhere else in the system.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;| note | eval javascript inline FTW! |&lt;br /&gt;| type; | location_name | javascript{RN='TestLocation' + Math.floor(Math.random()*9999999999);while (String(RN).length &amp;lt; 14) { RN= RN+'0';}} |&lt;br /&gt;| note | instantiate a variable and assign the new value to it in a single line FTW! | &lt;br /&gt;&lt;div id=":2b5"&gt;| $LOCATION= | getValue | location_name |&lt;/div&gt;&lt;div id=":2b5"&gt;| note | click a thingie to add the new data to the system |&lt;br /&gt;| click | location_submit_button ||&lt;br /&gt;| waitForTextNotPresent | Adding ||&lt;br /&gt;| note | check that the newly added data appears as the selected entry in a selectbox FTW! |&lt;/div&gt;&lt;div id=":2b5"&gt;| check | getSelectedLabel | location_site_id | $LOCATION |&lt;/div&gt;&lt;div id=":2b5"&gt;&lt;/div&gt;&lt;div id=":2b5"&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6591007038967506382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6591007038967506382' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6591007038967506382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6591007038967506382'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2011/09/selenesse-trick.html' title='a selenesse trick'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6614211432386011436</id><published>2011-09-08T07:12:00.000-06:00</published><updated>2011-09-08T07:12:13.929-06:00</updated><title type='text'>more UI test design (once more from Alan Page)</title><content type='html'>Before it gets lost in history, I want to riff off Alan Page once again, &lt;a href="http://angryweasel.com/blog/?p=332"&gt;who made some excellent points&lt;/a&gt;.&amp;nbsp; But as someone who has been designing and creating GUI (browser) tests for a long time, I'd like to address some of those and also point out some bits of ROI that Alan missed.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Making UI tests not fragile is design work.&amp;nbsp; It requires an understanding of the architecture of the application.&amp;nbsp; In the case of a web app, the UI test designer is really required to understand things like how AJAX works, standards for identifying elements on pages, how the state of any particular page may or may not change, how user-visible messages are managed in the app, etc. etc.&amp;nbsp; Without this sort of deep understanding of software architecture, UI tests are bound to be fragile. &lt;br /&gt;&lt;br /&gt;I've said before that UI tests should be a shallow layer that tests only presentation, and that rarely tests logic, math, or any underlying manipulation of data.&amp;nbsp; If tests are designed in this way, then they will be robust and maintainable over the life of the app. &lt;br /&gt;&lt;br /&gt;UI test design is a skill.&amp;nbsp; Designing such tests is no harder or easier than any other activity that requires skill and understanding.&amp;nbsp; The tools with which I am familiar provide enough power to create reasonable, robust, maintainable tests. &lt;br /&gt;&lt;br /&gt;Finally, I think Alan is missing one aspect of automated UI tests that I find the most valuable of all.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;From green-screen mainframe systems to bleeding-edge web applications, in my experience every software system suffers from one particular sort of error that is always extremely difficult to see when testing manually:&amp;nbsp; when something goes missing.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;A search that used to return results no longer does.&amp;nbsp; A widget that used to be on the page no longer is.&amp;nbsp; A bit of text critical to the user's work goes missing.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Actions that cause errors are easy to find when testing manually, as are errors of presentation.&amp;nbsp; Elements and functions that used to exist but no longer do are difficult to find:&amp;nbsp; it is not easy for a human being to see the absence of a thing, but such errors stick out like sore thumbs in an automated UI test suite. &lt;br /&gt;&lt;br /&gt;In my experience, this is one of the most valuable aspects of automated UI testing, and one of the best reasons to invest in UI test automation.&amp;nbsp; The absence of a thing in the UI is simply not detectable with unit tests or with integration tests.&amp;nbsp; That critical bit of function that doesn't manage to cross the last interface to the UI is only detectable at the UI itself, and automated UI tests are very, very good at detecting errors where something has gone missing.&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6614211432386011436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6614211432386011436' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6614211432386011436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6614211432386011436'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2011/09/more-ui-test-design-once-more-from-alan.html' title='more UI test design (once more from Alan Page)'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-707502803058248208</id><published>2011-08-30T18:12:00.001-06:00</published><updated>2011-08-30T18:16:02.757-06:00</updated><title type='text'>Automated Test Design (riffing/ripping off Alan Page)</title><content type='html'>Alan just posted this: &lt;a href="http://angryweasel.com/blog/?p=325"&gt; http://angryweasel.com/blog/?p=325&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the nicest test example I've seen in a long time, and I think it bears a little more analysis. &lt;br /&gt;&lt;br /&gt;If I were in charge of the development of this app, I would make automated testing happen on 3 levels.  &lt;br /&gt;&lt;br /&gt;First, there would have to be some sort of test for generating a single random number.  Which seems easy enough, but at this level, you really have to understand exactly what a call to rand() (or whatever) on your particular OS is going to do.  I once wrote a script in Perl (praise Allah just a toy, not production code) that returned perfectly random numbers on OSX but returned exactly the same values every time on Windows.  You'd better test that your call to rand() really returns random numbers, regardless of the OS it is running on.&lt;br /&gt;&lt;br /&gt;At a higher level, you'd want to do exactly what Alan talks about in looping 100,000 times (although 100K seems like overkill to me).  This is what I think of as an "integration test".  You're going to have some method or possibly even an API call or REST endpoint like "generate_five_random_numbers_and_add_the_results".  You're going to want to exercise that wrapper enough to convince yourself that the numbers are right and that the math is right.&lt;br /&gt;&lt;br /&gt;For some time now I've been making my living writing automated UI/browser tests along with doing ET.  Here's my take on a UI test for Alan's app: &lt;br /&gt;&lt;br /&gt;Open the page&lt;br /&gt;Check that text "Total" exists. &lt;br /&gt;Check that the 6 textboxes exist. &lt;br /&gt;Click the Roll button. &lt;br /&gt;Check that the state of the page changes (however that happens). &lt;br /&gt;Check that there are values in each textbox (even this might be too fancy, depending on the app and the test framework). &lt;br /&gt;&lt;br /&gt;Also getting fancy, you could check that the 6 textboxes exist in the correct order.  (Selenium's "glob:" feature makes this pretty painless.) &lt;br /&gt;&lt;br /&gt;Doing math in UI tests isn't very smart.  Doing data comparison over multiple runs in UI tests isn't very smart.  Do that stuff at lower levels, where you can take advantage of programming power and speed.  UI tests are a shallow layer where you simply check that the user has all the stuff they need to get the job done.  </content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/707502803058248208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=707502803058248208' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/707502803058248208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/707502803058248208'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2011/08/automated-test-design-riffingripping.html' title='Automated Test Design (riffing/ripping off Alan Page)'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-1584312019277923808</id><published>2010-12-20T09:48:00.004-07:00</published><updated>2010-12-20T12:12:57.867-07:00</updated><title type='text'>where ideas come from</title><content type='html'>Today &lt;a href="http://stickyminds.com/"&gt;stickyminds&lt;/a&gt; published my article with expanded descriptions of the "10 Frontiers for Software Testing" that I suggested as starting points for those interested in attending the &lt;a href="http://chrismcmahonsblog.blogspot.com/2010/10/call-for-participation-second-writing.html"&gt;second Writing About Testing conference&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Since I announced the CFP for the first WAT conference in October 2009, I have published several dozen articles on software and software testing.&amp;nbsp; (I actually lost count: it is well over thirty but fewer than fifty individual pieces.)&lt;br /&gt;&lt;br /&gt;My friend &lt;a href="http://twitter.com/charley_baker"&gt;Charley Baker&lt;/a&gt; asked me recently where I get the ideas for so many articles.&amp;nbsp;&amp;nbsp; It is an interesting question, and worth answering: &lt;br /&gt;&lt;br /&gt;The most important source of ideas is simply everyday work.&amp;nbsp; As I go about doing my job, it happens fairly often that a situation crops up that I think would be of general interest to the community of software testers and developers.&amp;nbsp; So I write it down and I make it public.&amp;nbsp; Articles about bugs, bug reports, test design, architecture, workflow, telecommuting, frameworks, war stories all come from noticing the details of the everyday work. &lt;br /&gt;&lt;br /&gt;Here is the story of the very first software article I ever published:&amp;nbsp; I have been following &lt;a href="http://www.exampler.com/blog/"&gt;Brian Marick&lt;/a&gt;'s work for a long time now.&amp;nbsp; Brian used to be the editor of Better Software magazine, and he would occasionally solicit articles for the magazine on his blog.&amp;nbsp; In March 2004 Brian asked for submissions for a piece along the lines of "add(ing) a scripting language to her manual testing portfolio.".&amp;nbsp; In particular, I recall that Brian wanted an article suitable for beginners with an example of a testing problem that could only be solved by scripting a little program.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I had written book reviews before but I had never published a piece about software.&amp;nbsp; I had just encountered a situation at work that was a perfect example of what Brian wanted.&amp;nbsp; I was working for a company that was switching from shipping whole custom-built servers to shipping installation CDs for COTS hardware.&amp;nbsp; The installation CDs contained more than 4000 files.&amp;nbsp; The switch was a little bumpy, and at one point we very nearly shipped an installation CD missing 4 critical files of the 4000.&amp;nbsp;&amp;nbsp; I had been teaching myself Perl (so I was a beginner myself), and I wrote a little script in Perl to compare recursively the contents of large directories, so that it would be easy to see if some few files had gone missing.&amp;nbsp; I described what I had done, Brian published it in Better Software, and in one of the highlights of my career as a writer, that article (with me as a character!) became the basis of the first example in Brian's book &lt;a href="http://www.pragprog.com/titles/bmsft/everyday-scripting-with-ruby"&gt;Everyday Scripting with Ruby&lt;/a&gt;.&amp;nbsp; (Get the book:&amp;nbsp; it will make you a better coder, no matter your level of skill.)&amp;nbsp; The article was titled "Is Your Haystack Missing a Needle"&lt;br /&gt;&lt;br /&gt;Another source of ideas for software articles comes from having some Very Large Idea that evolves over a long time.&amp;nbsp; At Bret Pettichord's Austin Workshop on Test Automation in 2007, in a moment of inspiration, I gave a five-minute lightning talk demonstrating an example of using the artistic language of critical theory (in particular, New Criticism) to evaluate the quality of a piece of software.&amp;nbsp; The talk got an enthusiastic reaction from the people in the room, mixed with some skepticism as I recall.&amp;nbsp;&amp;nbsp; It struck me at the time as being an odd idea, but the more I considered it, the more it made sense.&amp;nbsp; I wrote a &lt;a href="http://chrismcmahonsblog.blogspot.com/2008/05/software-artists-index-of-links-to-all.html"&gt;long paper on the subject&lt;/a&gt; and submitted the paper to the CAST 2008 conference, but it was rejected.&amp;nbsp; I published it on my blog, and I still refer to it now and then.&amp;nbsp; My thinking on the subject has matured and expanded since then, so if you'd like to see the latest example, look at &lt;a href="http://pragprog.com/magazines/2010-11/writing-and-performing"&gt;PragPub magazine for November of this year&lt;/a&gt;.&amp;nbsp; In 2008 I was a lonely voice on the subject.&amp;nbsp; Today I have colleagues, it is &lt;a href="http://testsidestory.wordpress.com/2010/10/20/what-a-picture-can-tell-you-an-exercise/"&gt;nice to see&lt;/a&gt; &lt;a href="http://marlenacompton.com/?p=1991"&gt;others considerin&lt;/a&gt;g critical theory applied to software as well.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Finally, every once in a while, I manage to do something really unusual, something that will actually change peoples' minds about how they go about their work.&amp;nbsp; In 2006 I was working for Thoughtworks on an EAI project.&amp;nbsp; Our code base had great unit test coverage and integration test coverage, and as the QA guy, I was not finding defects in what we were creating.&amp;nbsp; But we had to interact with a legacy database, and we were often surprised by unusual or corrupt historical data.&amp;nbsp; I made it my business to expose as much of that bad data as I could.&amp;nbsp; I wrote a little Ruby script that would do quasi-random queries in the database, request the same data from the API we were building, and compare the results, running within an infinite loop.&amp;nbsp; I found a significant number of issues in this way, where the API we were building failed to handle data we never expected to find in the database.&amp;nbsp; To my knowledge, no one had ever published anything describing a situation like this.&lt;br /&gt;&lt;br /&gt;So I wrote a draft of an article on the subject and submitted it to Brian at Better Software.&amp;nbsp; Nearly all of my articles have been published with only minor editorial changes, but this draft was a hot mess.&amp;nbsp; Any reasonable editor would have rejected it outright.&amp;nbsp; What Brian did instead was to dissect the piece, pull out the essential concepts, and make diagrams showing what I had failed to describe well.&amp;nbsp; He sent me some diagrams, I made some corrections, he sent me some more diagrams.&amp;nbsp; Once the diagrams were correct, I re-wrote the piece from scratch as a description of Brian's diagrams.&amp;nbsp; I've always thought he should have had co-author credit for that piece. It was called "Old School Meets New Wave" and it had some really goofy artwork, a photo of a skinny punk kid with a pink mohawk overlaid on a black-and-white fifties dude with a fedora. &lt;br /&gt;&lt;br /&gt;It ended up being one of the best articles of my career.&amp;nbsp; Some time later a tester named &lt;a href="http://swtester.blogspot.com/"&gt;Paul Carvalho&lt;/a&gt; told me that he had created and gotten funded a testing effort at his company based on the concepts in that article.&amp;nbsp; Sometimes writing really can change the world.&amp;nbsp; It has happened to me a couple of times since then, but that article was the first time I knew I had made a difference to someone else by writing about software.&amp;nbsp; (Paul, if you read this, I hope I didn't garble your story, it was a long time ago we had that conversation.)&lt;br /&gt;&lt;br /&gt;From about 1998 until the middle of the decade, the field of software testing and software development experienced any number of radical shifts, with the increased value for the role of a tester because of Y2K testing, the rise of open source, the rise of the agile movement, the rise of dynamic programming languages, and more.&amp;nbsp; But by late 2009 my own sense was that the public discourse on software testing in particular had become stale and outdated.&amp;nbsp; I started the &lt;a href="http://groups.google.com/group/writing-about-testing"&gt;writing-about-testing mail list&lt;/a&gt; and the WAT conference in an attempt to encourage new voices and new ideas in the public discourse on software testing.&amp;nbsp; A little over a year later, I think we have had some influence.&amp;nbsp; Since the first WAT conference, &lt;a href="http://angryweasel.com/blog/?p=239"&gt;Alan Page&lt;/a&gt;, &lt;a href="http://www.softwaretestpro.com/Item/5024/The-frontiers-of-software-development/Software-Testing-Editorial"&gt;Matt Heusser&lt;/a&gt;, and others have begun calling for some examination of what the future of software testing holds.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;New ideas in our field come from three places.&amp;nbsp; They come from beginners who stumble upon some beautifully simple idea and are moved to tell the world about what they have done.&amp;nbsp;&amp;nbsp; They come from people who think about the work on a really grand scale over a long period of time and build a body of work to support that grand idea.&amp;nbsp; And they come from people who truly make a breakthrough of some sort and are moved to explain that breakthrough to everyone. &lt;br /&gt;&lt;br /&gt;So Charley, that is where my ideas come from.&lt;br /&gt;&lt;br /&gt;(UPDATED: fixed garbled links)</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/1584312019277923808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=1584312019277923808' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1584312019277923808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/1584312019277923808'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/12/where-ideas-come-from.html' title='where ideas come from'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-4096251680750794365</id><published>2010-12-10T12:33:00.006-07:00</published><updated>2011-01-06T12:46:38.434-07:00</updated><title type='text'>Writing About Testing participants</title><content type='html'>I took a poll of those interested so far in attending the second &lt;a href="http://chrismcmahonsblog.blogspot.com/2010/10/call-for-participation-second-writing.html"&gt;Writing About Testing&lt;/a&gt; peer conference May 13 and 14 and found that nine people are very seriously considering attending.&amp;nbsp; This is what they are thinking of discussing:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lisacrispin.com/"&gt;Lisa Crispin&lt;/a&gt; (CO)&amp;nbsp; new and emerging approaches since the publication of &lt;a href="http://lisacrispin.com/wordpress/agile-testing-book-is-now-out/"&gt;Agile Testing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://angryweasel.com/blog/"&gt;Alan Page&lt;/a&gt; (WA) a new approach to test design, also personas for tester career roles&lt;br /&gt;&lt;a href="http://marlenacompton.com/"&gt;Marlena Compton&lt;/a&gt;&amp;nbsp; (Australia) ongoing research in visualization of software project data&lt;br /&gt;&lt;a href="http://www.passionatetester.com/"&gt;Dawn Cannan&lt;/a&gt;&amp;nbsp; (NC) executable specifications within larger testing projects&lt;br /&gt;&lt;a href="http://bugchaser.wordpress.com/"&gt;Sylvia Killinen&lt;/a&gt; (CO) practicing software craftsmanship&lt;br /&gt;&lt;a href="http://twitter.com/eyatzeck"&gt;Elena Yatzeck&lt;/a&gt; (IL) implementing DSLs for use by non-programmers&lt;br /&gt;&lt;a href="http://testing.gershon.info/"&gt;Shmuel Gershon&lt;/a&gt; (Israel) diverse approaches to writing about testing using personas&lt;br /&gt;&lt;a href="http://twitter.com/charley_baker"&gt;Charley Baker&lt;/a&gt; (CO) large-scale, Enterprise automation systems, open source&lt;br /&gt;&lt;a href="http://www.burtconsultinginc.com/"&gt;Marisa Burt&lt;/a&gt; (CO) EAI in Enterprise systems&lt;br /&gt;&lt;br /&gt;UPDATED:&lt;br /&gt;&lt;a href="http://testsidestory.wordpress.com/"&gt;Zeger Van Hese&lt;/a&gt; (Belgium) critical theory, etc.&lt;br /&gt;&lt;a href="http://twitter.com/#%21/fcohen"&gt;Frank Cohen&lt;/a&gt; (CA) handling AJAX and Flex&lt;br /&gt;&lt;a href="http://www.shino.de/"&gt;Markus Gärtner&lt;/a&gt; (Germany) ATDD success stories, test estimation&lt;br /&gt;&lt;a href="http://www.stickyminds.com/"&gt;Joey McAllister&lt;/a&gt; (CO) stickyminds.com &lt;br /&gt;There is one spot open.&amp;nbsp; The (fairly arbitrary) deadline for submissions is January 1.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Anyone who would like to join the &lt;a href="http://groups.google.com/group/writing-about-testing"&gt;writing-about-testing mail list&lt;/a&gt; may submit a request.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/4096251680750794365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=4096251680750794365' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4096251680750794365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4096251680750794365'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/12/writing-about-testing-first-responders.html' title='Writing About Testing participants'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6857803394448409836</id><published>2010-11-30T15:36:00.000-07:00</published><updated>2010-11-30T15:36:26.431-07:00</updated><title type='text'>UI test smells: if() and for() and files</title><content type='html'>I read with interest Matt Archer's blog post entitled "&lt;a href="http://mattarcherblog.wordpress.com/2010/11/29/how-test-automation-with-selenium-or-watir-can-fail/"&gt;How test automation with Selenium or Watir can fail&lt;/a&gt;" &lt;br /&gt;&lt;br /&gt;He shows a couple of examples that, while perfectly valid, are poor sorts of tests to execute at the UI level.&amp;nbsp; Conveniently, Mr. Archer's tests are so well documented that it is possible to point to exactly to where the smells come in.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;The test in the first example describes a UI element that has only two possible states: either "two-man lift" or "one-man lift", depending on the weight of an item.&amp;nbsp; In a well-designed test for a well-designed UI, it should be possible for the test to validate that only those two states are available to the user of the UI, and then stop.&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;But Mr. Archer's test actually reaches out to the system under test in order to open a file whose contents may be variable or even arbitrary, iterates over the contents of the file, and attempts to check that the proper value is displayed in the UI based on the contents of the file.&amp;nbsp; Mr. Archer himself notes a number of problems with this approach, but he fails to note the biggest problem:&amp;nbsp; this test is expensive.&amp;nbsp; The contents of the file could be large, the contents of the file could be corrupt, and since each entry generates only one of two states in the UI, all but two checks made by this test will be unnecessary.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Mr. Archer goes on to note a number of ways that this test is fragile.&amp;nbsp; I suggest that the cases involving bad data in the source file are excellent charters for exploratory testing, but a poor idea for an automated test.&amp;nbsp; An automated UI test that simply checks that the two states are available without reference to any outside test data is perfectly adequate for this situation.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;In his second example, Mr. Archer once again iterates over a large number of source records in order to achieve very little.&amp;nbsp; Again, exercising the same UI elements 100 times using different source data is wasteful, since all the UI test should be doing is checking that the UI functions correctly.&amp;nbsp; However, there is an interesting twist in Mr. Archer's second example that he fails to notice.&amp;nbsp;&amp;nbsp; If Mr. Archer were to randomly pull a single source record from his list of 100 records for each run of the test, he would get the coverage that he seems to desire for his 100 records over the course of many hundreds of individual runs of the test.&amp;nbsp; I took a similar approach in a test harness I once built for an API test framework, and I described that work in the June 2006 issue of Better Software magazine, in a piece called "Old School Meets New Wave".&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Both of Mr. Archer's examples violate two well-known UI test design principles.&amp;nbsp; The first principle is called the "Testing Pyramid for Web Apps".&amp;nbsp;&amp;nbsp; As far as I can tell, this pyramid was invented simultaneously and independently by both Jason Huggins (inventor of Selenium) and by Mike Cohn.&amp;nbsp; (Jason's pyramid image is around the web, but I nabbed it &lt;a href="http://www.testing-software.org/Testing/index.html"&gt;from here&lt;/a&gt;.) &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ZmTWLw9SJ0A/TPV7blkBvGI/AAAAAAAAApU/CeBsC5bjto8/s1600/testing_pyramid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_ZmTWLw9SJ0A/TPV7blkBvGI/AAAAAAAAApU/CeBsC5bjto8/s320/testing_pyramid.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any test that reaches out to the file system or to a database is going to belong to the middle tier of business-logic functional tests.&amp;nbsp; And even then, most practitioners would probably use a mock rather than an actual file, depending on context.&amp;nbsp;&amp;nbsp; While it is not always possible for UI tests to avoid the business-logic tier completely, it should be the case that UI tests are in fact focused on testing *only* the UI.&amp;nbsp; Loops and conditionals in UI tests are an indication that something is being tested that is not just part of the UI.&amp;nbsp; Business logic tests should to the greatest extent possible be executed "behind the GUI".&amp;nbsp; From years of experience I can say with authority that UI tests that exercise business logic become both expensive to run and expensive to maintain, if they are maintainable at all. &lt;br /&gt;&lt;br /&gt;The other principle violated by these examples is that highest-level tests should never have loops or conditionals.&amp;nbsp; The well-known test harness Fitnesse does not allow loops or conditionals in its own UI.&amp;nbsp; Whatever loops or conditionals may be required by the tests represented in the Fitnesse UI must be coded as part of the fixture for each test.&amp;nbsp; For a detailed discussion of this design pattern, see this post by Gojko Adzic: "&lt;a href="http://gojko.net/2009/03/09/how-to-implement-loops-in-fitnesse-test-fixtures/"&gt;How to implement loops in Fitnesse test fixtures&lt;/a&gt;"&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6857803394448409836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6857803394448409836' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6857803394448409836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6857803394448409836'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/11/ui-test-smells-if-and-for-and-files.html' title='UI test smells: if() and for() and files'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZmTWLw9SJ0A/TPV7blkBvGI/AAAAAAAAApU/CeBsC5bjto8/s72-c/testing_pyramid.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-9133021421126618340</id><published>2010-11-21T09:43:00.000-07:00</published><updated>2010-11-21T09:43:36.853-07:00</updated><title type='text'>close reading/critical thinking</title><content type='html'>The last Weekend Testers (Australia/New Zealand) was brilliant. Let me urge you to read &lt;a href="http://marlenacompton.com/?p=1991"&gt;Marlena Compton's report&lt;/a&gt; and the &lt;a href="http://marlenacompton.com/wp-content/uploads/2010/11/WTANZ11-Close-Reading.html"&gt;transcript of the session&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This sort of practical implementation of critical theory is long overdue in the testing community, and the WTANZ crew did a great job of using a well-known theoretical tool to analyze and dissect some real problems in some real work.&lt;br /&gt;&lt;br /&gt;Compare what WTANZ did with Zeger Van Hese's recent &lt;a href="http://testsidestory.wordpress.com/2010/10/20/what-a-picture-can-tell-you-an-exercise/"&gt;demonstration&lt;/a&gt; of &lt;a href="http://testsidestory.wordpress.com/2010/10/19/a-pictorial-challenge-deconstruction-denotation-connotation/"&gt;deconstruction&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;This sort of work, bringing reputable and sophisticated critical theory to bear on actual testing and QA activity, is a field wide open, barely explored, and long overdue.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;May we see much more of it soon.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/9133021421126618340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=9133021421126618340' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/9133021421126618340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/9133021421126618340'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/11/close-readingcritical-thinking.html' title='close reading/critical thinking'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6949543556213513314</id><published>2010-11-16T19:08:00.000-07:00</published><updated>2010-11-16T19:08:18.363-07:00</updated><title type='text'>more on certs, more numbers</title><content type='html'>I noticed (thanks Twitterverse) that there was an &lt;a href="http://blog.utest.com/testing-the-limits-with-rex-black-part-i/2010/11/#more-9473"&gt;interview with Rex Black over on the UTest blog&lt;/a&gt;.&amp;nbsp; In that interview he reveals a very interesting number:&lt;br /&gt;&lt;br /&gt;"...the ISTQB has issued over 160,000 certifications in the last ten years."&lt;br /&gt;&lt;br /&gt;Using the numbers &lt;a href="http://chrismcmahonsblog.blogspot.com/2010/10/ignoring-certification-with-numbers.html"&gt;from my previous post&lt;/a&gt;:&amp;nbsp; if we assume that there are about 3,000,000 software testers in the world right now, and if we issued 160,000 certifications right now, that would mean about 5 certifications for every 100 software testers. &amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I would be willing to bet that there were about the same number of testers ten years ago:&amp;nbsp; Y2K was just over and the value of dedicated testers had been shown.&amp;nbsp;&amp;nbsp; But as &lt;a href="http://angryweasel.com/blog/?p=239"&gt;Alan Page&lt;/a&gt; and others have noted, there is a lot of turnover, a lot of churn, among those practicing software testing.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;So my numbers start to get a little sketchy here, I don't have anything to back them, so consider this a thought experiment:&amp;nbsp; as noted above, let's say that there were about 3 million testers a decade ago and there are still 3 million testers today.&amp;nbsp; Let's say half of today's testers have started since 2000.&amp;nbsp;&amp;nbsp; This gives us a field of 4.5 million testers who could have acquired a certification in the last decade.&amp;nbsp; This makes for about 3 certified testers for every 100 possible certifications.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I think it is an excellent bet that a significant fraction of those 160,000 certifications were issued in the UK, Australia, and New Zealand.&amp;nbsp;&amp;nbsp; Just to make it even, call it about 1/3, put 60,000 certs in those regions, leaving 100,000 for the rest of the world.&amp;nbsp; That brings us down to about 2 certs per 100 testers.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;But that still seems high to me.&amp;nbsp; I might have missed something.&amp;nbsp; Regardless, it still looks like a pretty small market, and I'd bet the market has been shrinking a lot with the rise of agile adoption and the economic downturn.&amp;nbsp;&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6949543556213513314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6949543556213513314' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6949543556213513314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6949543556213513314'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/11/more-on-certs-more-numbers.html' title='more on certs, more numbers'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-7472136120484678844</id><published>2010-11-11T18:01:00.003-07:00</published><updated>2010-11-11T18:25:59.129-07:00</updated><title type='text'>an object of interest</title><content type='html'>I bought this recently at a guerilla art show:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZmTWLw9SJ0A/TNySGnt3zJI/AAAAAAAAApA/xTb-_uHHeks/s1600/twas.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_ZmTWLw9SJ0A/TNySGnt3zJI/AAAAAAAAApA/xTb-_uHHeks/s320/twas.jpg" alt="" id="BLOGGER_PHOTO_ID_5538462284197121170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here it is hanging in my office:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZmTWLw9SJ0A/TNySfKFUi8I/AAAAAAAAApI/yWQE-AvqV9g/s1600/twasbrillig.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_ZmTWLw9SJ0A/TNySfKFUi8I/AAAAAAAAApI/yWQE-AvqV9g/s320/twasbrillig.jpg" alt="" id="BLOGGER_PHOTO_ID_5538462705739140034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The poster caught my eye because I've loved the Alice books all my life and I re-read them often.  I am especially fond of the Tenniel illustrations, and the one for Jabberwocky is a favorite.&lt;br /&gt;&lt;br /&gt;The poster also caught my eye because of the odd and interesting typeface.  The story behind that typeface is fascinating.  I asked the artist to send me that story in email so that I could have it written down:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The story is this:&lt;br /&gt;Just south of where I grew up (near Green Bay,  WI) is the Hamilton Wood Type Museum. A while back, I visited armed with  a few sheets of printmaking paper with the goal of printing some or all  of the Jabberwocky poem from some original wood type. During the course  of the 19th and 20th century Hamilton made wood type for advertisements  and headlines and circuses and had gone on to accumulate wood type from  other manufacturers who had given in to market pressures or the  eventual obsolescence of the letterpress industry. What remained when I  visited were cases and cases of cabinets full of uncategorized type..  roughly 1000 different type faces and sizes. I spent a  better part of a day just finding a type face I liked, using a rather  capricious method to determine "the one": the style of the lower case  'g'. I estimate the type to have been produced in the early 20th  century, probably for about 20 years, if that. It is an obscure, unnamed  type face. I set the type but realized that by choosing according to  lower case 'g', I had picked a case that only let me set 3 lines of  text. This was all that was left of this type in existence. So, I  printed the top three lines first on a large flat bed cylinder press  called a Vandercook 325G (incidentally I have the exact same model press  in my shop here), disassembled the text and composed the 4th line. When  I returned to Colorado, I replicated the illustration from Through the  Looking Glass and then added that to the print.&lt;br /&gt;That's the story.&lt;br /&gt;Enjoy&lt;br /&gt;Dan&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://testsidestory.wordpress.com/"&gt;Zeger Van Hese&lt;/a&gt; is a Belgian software tester who, like me, is interested in critical theory and what application critical theory might have to the work of creating software.  The other day he mentioned in passing a seminal work by Walter Benjamin, &lt;a href="http://www.marxists.org/reference/subject/philosophy/works/ge/benjamin.htm"&gt;The Work of Art in the Age of Mechanical Reproduction&lt;/a&gt;  that I had not read in many years. &lt;br /&gt;&lt;br /&gt;In the light of Benjamin's work, my poster is a strange object indeed.  While it was created in a process of mechanical reproduction, it was created only once.  The means to create it are lost in an anonymous bin in an obscure warehouse somewhere in Wisconsin.   And even if someone were dedicated enough to find that one particular bin, not even enough of this particular wood type exists to even print all four lines from Jabberwocky. &lt;br /&gt;&lt;br /&gt;My poster would have been a strange item even for 1936, when Benjamin wrote about mechanical reproduction.  But to have such a thing on my wall in 2010 is, for me, astonishing.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/7472136120484678844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=7472136120484678844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7472136120484678844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/7472136120484678844'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/11/object-of-interest.html' title='an object of interest'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZmTWLw9SJ0A/TNySGnt3zJI/AAAAAAAAApA/xTb-_uHHeks/s72-c/twas.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-8029250954083737852</id><published>2010-11-06T10:37:00.002-06:00</published><updated>2010-11-06T11:23:59.430-06:00</updated><title type='text'>XP, Scrum, Lean, and QA</title><content type='html'>Before I do this, two things up front:  for one thing, I am a crappy programmer.  I read code far better than I write it, and I read non-OO code better than I read OO code.  Also, I am writing as someone who knows a lot about Quality Assurance and testing, and very little about the hands-on day-to-day work of modern programming.  So here goes:&lt;br /&gt;&lt;br /&gt;As a QA guy, I know this:  long before Scrum and XP and the Agile Manifesto, people working in Computer Science and software development knew three things about software quality:  having an institutional process for code review always improves software quality; having automated unit tests (for some value of "unit") with code coverage improves software quality; and having frequent, fast builds in a useful feedback loop improves software quality.  Sorry, I don't have references handy, I read most of this stuff about a decade ago.  Maybe some heavy CS people could leave references in the comments.&lt;br /&gt;&lt;br /&gt;The XP practices simply institutionalize those three well-known practices, and for the time, dialed them up to 11.  Pair programming is just a very efficient way to accomplish code review.  TDD is just a very efficient way to accomplish unit test coverage.  CI is just a very efficient way to get a fast feedback loop for the build. &lt;br /&gt;&lt;br /&gt;There is nothing magical about these practices, and I have worked on agile teams that don't do pair programming but do awesome code review.  I have worked on agile teams whose microtest suite runs heavily to integration tests instead of traditional unit tests.  I have worked on agile teams with a dedicated build guy.  I started my career working in an incredibly well-designed COBOL code base.  No objects in sight.  Had I known then what I know now about test automation, I could have written an awesome unit/integration test framework for that system.  The XP practices themselves are not sacred.  The principles behind those practices are.&lt;br /&gt;&lt;br /&gt;But the XP practices themselves are just a small piece of having a successful agile team.  In musical terms, these are the equivalent of knowing scales and chords, just basic technical practices necessary to get along in the business.  Of course they are not necessary:  The Ramones and Tom Petty have only a basic grasp of the technical aspects of music, but they cranked out some monster hits.  Put any of those guys in a jazz jam session or a symphony orchestra and they would be completely lost.  There is some nasty software out in the world that makes a lot of money.&lt;br /&gt;&lt;br /&gt;I like Scrum, for a number of reasons.  For one thing, it has an aesthetic appeal.  The concepts of developing, then releasing, then retrospective speaks to me strongly, not least because they map closely to the ideas from the performing arts of practice, perform, rehearse. &lt;br /&gt;&lt;br /&gt;I also like Scrum because of its emphasis on human interaction rather than institutional process.  Scrum is lightweight by design, and leaves much room for people to act as people with other people.  Scrum favors mature, intelligent adults.&lt;br /&gt;&lt;br /&gt;Finally, I like Scrum because it is a process derived directly from the actual practice of creating software.  It is described in plain English and it relies on no special concepts.  It was crafted out of whole cloth by good developers in a tough spot. &lt;br /&gt;&lt;br /&gt;I dislike Lean/kanban for the same reasons.  As a mature adult, I resent having any of my activities identified as "waste".  I resent not having the end of an iteration to celebrate.  I resent being treated as a station in a production chain.&lt;br /&gt;&lt;br /&gt;Unlike Scrum, the Lean principles were not derived from the actual work of software development.  They came from automobile manufacturing, and were overlaid on software development in what I consider to be a poor fit.  Putting on my QA hat again, there are two other popular software development methodologies that came directly from manufacturing, and the state of those methodologies is instructive.   One of them is ISO9000.  The fatal flaw of ISO9000 is that once a process is in place, it becomes very difficult and expensive to change that process.  This is fine in manufacturing, but it is death to a reasonable software development process.  The other methodology from manufacturing is Six Sigma.   Six Sigma is very expensive, and while it might yield information valuable to managers, it provides no benefit to those actually doing the day-to-day work of software development.  I am not aware of any manufacturing processes shown conclusively to improve the hands-on work of software development.&lt;br /&gt;&lt;br /&gt;XP and Scrum are not nearly enough to guarantee a successful software project.  For a comparable situation, just because a band has a rehearsal schedule and some gigs does not guarantee that they will be international superstars.  Brian Marick at one point talked a lot about four principles that also increase the chance of a successful software project:  skill and discipline, ease and joy.  I won't explain those here, interested readers can find that work themselves. &lt;br /&gt;&lt;br /&gt;But beyond even skill, discipline, ease and joy, a successful software project requires that we as creators of the software reach out and interact with the world in a way that changes the lives of those who encounter our software.  It is an awesome power.  In some cases, we can make our users' lives a living hell.  But it's a lot more fun to make everyone happy.</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/8029250954083737852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=8029250954083737852' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/8029250954083737852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/8029250954083737852'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/11/xp-scrum-lean-and-qa.html' title='XP, Scrum, Lean, and QA'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-6108941294580131703</id><published>2010-10-29T10:47:00.004-06:00</published><updated>2010-11-08T14:57:05.779-07:00</updated><title type='text'>ignoring certification; with numbers</title><content type='html'>All of the questions about tester certification were answered many years ago.  They exist and they cannot be made to unexist.  The only remaining question on the subject is: how many tester certifications can be sold?  And the answer to that question doesn't matter to anybody except the people selling the certifications.&lt;br /&gt;&lt;br /&gt;A while ago on the writing-about-testing mail list we did a little exercise to come up with some back-of-the-napkin estimates about the number of software testers in the world.  We used US Department of Labor data and also some other public information about software employment worldwide.  We also had access to some privileged information about magazine subscriptions.  In addition, a number of us have done serious work in social networking, and we have some analytical tools from that work to help estimate.   Using all of that, we came up with a pretty consistent estimate that there are probably around 300,000 software testers in the US, and maybe 3 million in the whole world.&lt;br /&gt;&lt;br /&gt;That is a pretty small market in which to sell tester certifications.&lt;br /&gt;&lt;br /&gt;Elisabeth Hendrickson recently did a &lt;a href="http://testobsessed.com/2010/10/20/testers-code/"&gt;fascinating analysis of QA/testing job ads&lt;/a&gt;.   According to her data, it is a good bet that 80% of the people doing modern software testing work in the US have programming skills of one sort or another.&lt;br /&gt;&lt;br /&gt;Jason Huggins of Sauce Labs has been &lt;a href="http://saucelabs.com/blog/index.php/2010/09/selenium-jobs-explode/"&gt;tracking job ads that mention browser automation tools&lt;/a&gt;.   Jason notes a remarkable recent increase in the demand for Selenium skill.  You can &lt;a href="http://www.indeed.com/jobtrends?q=Selenium%2C+Rational+Robot%2C+Rational+Functional+Robot%2C+Rational+Functional+Tester%2C+watir%2C+QTP&amp;amp;l="&gt;see the trend for some popular automation tools at indeed.com&lt;/a&gt;. The QTP vs. Selenium trend in job ads is fascinating, but looking closely, this graph indicates a general across-the-board increase in demand for technical skills in traditional UI-based software testing.&lt;br /&gt;&lt;br /&gt;Finally, sorry I don't have a link handy, but I have seen a number of reports of a radical increase in the rate of adoption of agile practices among US companies of every size and description.  And the agile whole-team approach to software development makes dedicated, siloed traditional V&amp;amp;V test departments irrelevant.&lt;br /&gt;&lt;br /&gt;The existing tester certifications simply do not apply to this sort of work.  Certification is becoming more and more useless to US testers, and to their employers as well.&lt;br /&gt;&lt;br /&gt;I feel like I am pretty plugged in to the world-wide tester community and the world-wide agile community, and anecdotal evidence suggests that indeed, the market for tester certification in the US is very small.  Again, this is anecdotal evidence, but the hot spots for certification seem to be the UK and Australia/New Zealand, possibly areas of Southeast Asia, possibly areas of Eastern Europe.  Once more with the anecdotal evidence, but I would suggest that in political climates that favor a high degree of regulation of business practices, certification will be more popular.&lt;br /&gt;&lt;br /&gt;So if we eliminate from our worldwide tester population of 3 million the majority of US testers and a significant fraction of the rest of the world as potential buyers of a tester certification, that leaves a pretty tiny market for tester certification.&lt;br /&gt;&lt;br /&gt;I think we can say with some confidence that professional tester certification can safely be ignored by the vast majority of software testers.  That said, if you are required to get a certification, or if you just want to get a certification, go ahead and do it.  It won't hurt you, and at the very least, you'll learn how software was tested in 1996.&lt;br /&gt;&lt;br /&gt;I think we can also safely say that any supposed controversy surrounding tester certification is overblown and can also be ignored.&lt;br /&gt;&lt;br /&gt;Which suggests one more interesting question:  if the supposed controversy over certification really is as trivial as these statistics indicate, then why does so much of the testosphere spend so much time agonizing over it?&lt;br /&gt;&lt;br /&gt;I have a cynical answer to that, but I'll keep it to myself.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update: made the links nice</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/6108941294580131703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=6108941294580131703' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6108941294580131703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/6108941294580131703'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/10/ignoring-certification-with-numbers.html' title='ignoring certification; with numbers'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20165167.post-4105233629822033643</id><published>2010-10-25T16:16:00.002-06:00</published><updated>2010-10-25T16:25:44.524-06:00</updated><title type='text'>Call for Participation: Second Writing About Testing peer conference</title><content type='html'>&lt;h1 id="the_second_writing_about_testing_conference_frontiers_for_software_testing"&gt;The Second Writing About Testing Conference: Frontiers for Software Testing&lt;/h1&gt; &lt;p&gt; I am pleased to announce the call for papers for the Second Writing  About Testing Conference to be held May 13 and 14 2011 in Durango  Colorado.&lt;/p&gt; &lt;p&gt; For more information about the original conference and the Writing About Testing mail list please see:&lt;br /&gt;&lt;a target="_blank" title="(external link)" href="http://chrismcmahonsblog.blogspot.com/2010/02/writing-about-testing-listconf-update.html"&gt;http://chrismcmahonsblog.blogspot.com/2010/02/writing-about-testing-listconf-update.html&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" title="(external link)" href="http://chrismcmahonsblog.blogspot.com/2009/10/cfp-peer-conference-writing-about.html"&gt;http://chrismcmahonsblog.blogspot.com/2009/10/cfp-peer-conference-writing-about.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt; Writing About Testing is a peer conference for those interested in influencing the public  discourse on software testing and software development by writing and  speaking on those subjects. The discussion revolves around blogging,  giving presentations at conferences and user groups, and writing for  established media outlets, both for pay and for other reasons. There  will very likely be representatives from established media outlets  attending. Having software writers and publishers talking to each other  face to face is a unique aspect of WAT.&lt;/p&gt; &lt;p&gt; For the first WAT conference we asked only that participants be  interested and have had already written about software. The second WAT  will be a little different.&lt;/p&gt; &lt;p&gt; For the second WAT we ask that applicants propose a talk (informal is  fine, no slides required) of 30-45 minutes about some subject critical  to their work as a tester or developer, or designer or business analyst,  but which is not generally recognized as being part of such work. A  list of suggestions for such talks is below. The purpose of this is to  expand the practice of software beyond the current artificial boundaries  of recognized software activity.&lt;/p&gt; &lt;p&gt; To that end, presentations on these subjects are not welcome, unless the presentation has obviously unusual aspects:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;test heuristics/mnemonics&lt;/li&gt;&lt;li&gt;exploratory testing&lt;/li&gt;&lt;li&gt;classic test automation (record-and-play, automation pyramid, etc.  Information on unusual approaches to test automation is welcome.)&lt;/li&gt;&lt;li&gt;Scrum/Lean/Context-Driven/whatever. In general, anything involving capital letters is not welcome.&lt;/li&gt;&lt;li&gt;certification (for or against)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; In a nutshell: don't bore the other attendees with stuff that has been  discussed to death for years. This conference is to discuss frontiers.&lt;/p&gt; &lt;p&gt; Given that the presentations will be on unusual subjects, there will be a  minimal requirement for having published previous work. Any publicly  available source of writing, for instance a blog, would qualify an  attendee. Applicants with no publicly available writing at all will not  be considered. Attendees are encouraged to write with ambition and  daring after the conference ends.&lt;/p&gt; &lt;p&gt; Attendance will be limited to about fifteen people. There will be a  nominal fee of $50.00 per person to help cover room rental, and lunch  will be provided. A discounted rate at a convenient bed and breakfast  hotel is available.&lt;/p&gt; &lt;p&gt; Durango has a lot to offer visitors. Conference attendees may wish to  arrive early or stay late to take advantage of the nearby attractions:  beautiful mountains to the north and east, desert sandstone canyons to  the west and south. The steam train from Durango to Silverton and back  is a fantastic experience, as is soaking in the hot springs nearby.  Within a short drive are Mesa Verde National Park, Canyons of the  Ancients National Monument, Monument Valley and the Navajo Reservation,  Great Sand Dunes National Park, etc. Local opportunities for hiking,  biking, and boating abound.&lt;/p&gt; &lt;p&gt; There are direct flights to Durango from Denver and from Phoenix. Many  attendees will likely come from the Denver area, so carpooling from  there may be possible.&lt;/p&gt; &lt;p&gt; To submit a proposal, either send a message to me at christopher dot  mcmahon on gmail, or join the writing-about-testing mail list at &lt;a target="_blank" title="(external link)" href="http://groups.google.com/group/writing-about-testing"&gt;http://groups.google.com/group/writing-about-testing&lt;/a&gt; and submit your proposal there.&lt;/p&gt; &lt;p&gt; The deadline for submissions is Jan 1.&lt;br /&gt;Invitations to the conference to be sent Feb 1.&lt;br /&gt;The conference itself will be May 13/14.&lt;/p&gt; &lt;p&gt; Here are some possible frontier subjects for presentations:&lt;/p&gt; &lt;h4 id="system_administration"&gt;System Administration&lt;/h4&gt; &lt;p&gt; There is a surge of interest in recent times in a concept called  "DevOps". DevOps proposes an alliance among software developers and  system administrators in order to create the best possible production  environment experiences. Testers need to be a part of that conversation.&lt;/p&gt; &lt;h4 id="data_visualization"&gt;Data Visualization&lt;/h4&gt; &lt;p&gt; Not only our applications, but the whole world around us generates  incomprehensible amounts of data, and the only way to make sense of it  all is to render that data in a visual or tactile fashion. Testers need  to understand these technologies in the service of their work.&lt;/p&gt; &lt;h4 id="frameworks_mashups"&gt;Frameworks/Mashups&lt;/h4&gt; &lt;p&gt; Good test automation today happens at every level. A single framework  may exercise the user interface, call REST or SOAP APIs, and reach into a  database, all in the course of a single test suite. Myriad tools for  such testing exist, and knowing how to get such tools to talk to each  other for a particular purpose is becoming a critical skill for testers.&lt;/p&gt; &lt;h4 id="user_experience"&gt;User Experience&lt;/h4&gt; &lt;p&gt; Great strides have happened in user experience work in the last few  years, and there are exciting advances on the horizon. Testers have  largely ignored the conversation happening among user experience  experts.&lt;/p&gt; &lt;h4 id="web_design"&gt;Web Design&lt;/h4&gt; &lt;p&gt; New javascript libraries like jquery are making things possible in  browsers that were unimaginable just a few years ago. Flex, Flash, and  Adobe Air are making huge inroads into application UI design. HTML5 is  on the horizon and looming. Testers need to know what is happening in  this arena, and largely do not.&lt;/p&gt; &lt;h4 id="web_services_rest_soap"&gt;Web Services (REST/SOAP)&lt;/h4&gt; &lt;p&gt; Twitter, Facebook, and the bleeding edge of web applications are no  longer about the UI. Today it is all about the APIs, and the third party  applications that use those APIs to bring killer experiences to users.  Testers need to know how web services and APIs work.&lt;/p&gt; &lt;h4 id="environments_vms_cloud_computing"&gt;Environments/VMs/Cloud Computing&lt;/h4&gt; &lt;p&gt; Managing test environments has always been challenging. New cloud  computing services in some ways make such work more challenging, but the  reward is a vastly simplified process for provisioning test  environments. This work needs public exposure.&lt;/p&gt; &lt;h4 id="agile_methods"&gt;Agile Methods&lt;/h4&gt; &lt;p&gt; Agile methods work, but even today, no one knows exactly why. The  explanations we have are frequently facile and often abused. Testers  could be the ones to provide the well-considered explanations for the  effectiveness of agile methods.&lt;/p&gt; &lt;h4 id="process_work_quality_assurance"&gt;Process Work/Quality Assurance&lt;/h4&gt; &lt;p&gt; QA has a bad reputation in the testing community that it does not  deserve. I have said before on stickyminds.com and in Beautiful Testing  that QA is not evil, that it is work that still needs doing, and that  often testers are in a good position to provide quality assurance. Bring  back real discussion about Quality Assurance.&lt;/p&gt; &lt;h4 id="aesthetics_artistic_performance"&gt;Aesthetics/Artistic Performance&lt;/h4&gt; &lt;p&gt; There is a wealth of knowledge available from disciplines within the  Liberal Arts that apply directly to software development. Testers can  help bring that knowledge over to the world of software development.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrismcmahonsblog.blogspot.com/feeds/4105233629822033643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20165167&amp;postID=4105233629822033643' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4105233629822033643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20165167/posts/default/4105233629822033643'/><link rel='alternate' type='text/html' href='http://chrismcmahonsblog.blogspot.com/2010/10/call-for-participation-second-writing.html' title='Call for Participation: Second Writing About Testing peer conference'/><author><name>Chris McMahon</name><uri>http://www.blogger.com/profile/16339861008904941703</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>