Tuesday, April 5, 2011

Selenium Conference, Day 2

So here we are once again, after a fun night of celebrating with the kickoff party at the Cigar Bar and Grill (great food, snacks, an open bar, and 300 of your closest geek friends, how could you possibly go wrong ;)?). The #tableoftrouble decided to go together and I walked us all through Chinatown to get to Jackson Square, and on the way we stopped by my favorite Sweet Shop in Chinatown, with every conceivable delicacy you could imagine (black candied ginger and spicy cuttlefish FTW).

From there, we spent some time schmoozing with the attendees, and I was able to get a few interviews, including a really cool one with Patrick Wilson-Welsh, where he turned the tables on me and started interviewing *me* :). I had fun talking with Bret Pettichord, and there's a picture floating around out there of the "Testers with Hats" :). Elizabeth Hendrickson came out to hang with us for a bit, and a bunch of us went for late Mexican food down near Yerba Buena gardens (good food, great conversation, had to be rolled out of the restaurant, really sleepy but very happy). My thanks to Dawn Cannan, Marlena Compton, Bret Pettichord, Andy Tinkham, Elizabeth Hendrickson, John Medlong and Patrick Wilson-Welsh for a great evening.

Tuesday morning fired up with the introductory keynote from Jason Huggins, and an explanation for where Selenium came from, how it got its name, what it was meant to do and how the state of technology keeps having Selenium up its game to keep up and move ahead. One of my favorite quotes from the talk was the idea that "elephants aren't meant to dance, but if you can make an elephant dance, that's really cool!" What was also noteworthy of Jason's keynote was the fact that he did the whole thing without a single slide. Every word was to be heard by everyone without support, and he did a masterful job of that. Also, while it's well known, it was quite fun to reiterate that "Selenium is the cure for Mercury poisoning" (LOL!).


Dave Hunt and Andy Smith followed up with an engaging demo of a game with a flying helicopter, and automating the game. The intent is to show that Selenium can automate Canvas application (canvas being a new tag in the HTML 5 specification). To see an example of a Canvas application, check out http://pirateslovedaisies.com/. The approach for testing canvas applications w/ the Selenium suite is to create Testing Requirements, write Auto Hooks, consider Visual Feedback, Work Together & Create Tests. Sounds like good advice all the way across the board.


The next talk focused on Selenium and Cucumber. One of the main points of this talk was that, if you are a lone tester, you have two choices, you can do manual testing, or you can do automated testing. You cannot do both,or at least you can't do both well; it's too much for one person to handle. For solid automation to take place, it needs to be a dedicated function and role. From here, the talk veered into Cucumber and how, after the automation framework is in place, it can go a long way towards documenting and describing tests in language that real people understand. Some controversy was raised with the comments that the testers should do testing in the language the application was written. On the surface I agree, but I also see that the tests may require unique aspects that the development language won't specifically cover.


Following on just before lunch was a much anticipated and what promised to be an entertaining talk, and Adam Goucher did not disappoint. In short, the talk was titled "YOU'RE DOING IT WRONG!" and was dedicated to all of the steps that contribute to brittle, unmaintainable, and unmanageable tests. For those who want to have some fun, I encourage you to do a search on twitter for @adamgoucher and #yourdoingitwrong, you'll find a lot of good practices and ideas.

As if Adam Goucher/Man of Steel wasn't busy enough, he followed on after lunch with another talk, this time focusing on the creation and maintaining and overall desirability of Selenium IDE plug ins. In this talk, Adam let slip an interesting irony alert... while Adam is the maintainer of the Selenium IDE project, and does a lions share of development on it, he's actively engaged in encouraging people to actually not use it. He'd much prefer that tests be exported out to a real programming language and leverage Selenium-RC or WebDriver going forward. However, since Selenium IDE is still used, the goal is to make the experience as painless as possible for those who are using it. To this end, and to help encourage more robust and less error prone IDE development, Adam actively encourages the development of plug-ins and the benefits that come with the plug-in approach. Also, for those wondering, the development for the Firefox 4 plug-in isn't lagging, it's broken. They are not ignoring you, they just have some things that have to be fixed before it can be released. So now you know :).

Dante Briones presented a talk directed to going "Beyond Page Objects" and making a case for developing Page Components. I have to admit I felt that this talk spent a little too much time focusing on saving keystrokes inside of IntelliJ as opposed to focusing on the main idea of the talk, which is creating smaller and more dynamic page components. Why would we care about that? Because today's pages are not at all the monolithic static pages of yesteryear, there's a lot of small elements that we interact with, so being able to focus on the components is a good idea and interesting. For the record, I am not anti-IDE, although I much prefer using vim when I write what code I do write. I find that relying too much on the IDE adds too many layers of abstraction, and cause me to be a user of an app rather than a writer of code. Anyway, just my opinion on that little segue, overall I think the ideas of being able to target and utilize smaller elements of the page to be of value. 

Of note, I also want to say that there are a number of talks being given in the Track B session (Adam's talk about "You're Doing It Wrong" being a shining example, so if you notice I'm not talking about many of those, well, I can't be in two places at the same time :) ).

As an almost cosmically comical juxtaposition, Dealing With Test Results with Mikeal Rogers went for ultra simplicity. His presentation was made in TextMate...  no, seriously, the entire presentation was done in TextMate... he even made large line breaks as though they were slide separations. Of course, that's no the point of his talk, but I found it amusing to see the comparison of the two talks side by side. Mikhael gets to the point quickly; use CouchDB and query it. We can use html and JavaScript to query the data that's entered into the database. the key takeaway is that, to deal with test results, we need to store the results, and then we need to query for the details. Which database is irrelevant, just make sure it get in there! Also, for the record, Mikhael gets my vote for the most freewheeling talk/presentation/demo... the dude's got style :)!

The group of Watir and Selenium contributors and maintainers took the stage to discuss the details about various burning topics of controversy, such as:

  • Is Grid necessary ("YES")
  • Why are there both selenium-webdriver and watir-webdriver (both are considered to be at different layers, and both handle different API's. Why two gems instead of one? Small gems with clear purposes are easier to maintain, and easier to scope). 
  • Will there be support for load testing (No, not the target or focus of Selenium, in fact Jason said "No, No, a thousand times no!"). 
  • What's the value for having a headless implementation of something like HTMLunit (it's really fast, for one!). 
  • Should tests depend on data generated/established by other tests ("NO!"). 
  • Are they considering moving to github ("NO!", lots of binary artifacts make that really hard). 
  • How about running their own git server ("Discuss over beer later!"). 
  • What are some useful things you can do with an on the fly profile (Client side profiling, creating HAR files, using custom extensions, etc. Benefits are that you don't have to copy multiple profile files to run tests like in Selenium 1). 
  • Will there be user extensions in Selenium 2.0? ("NO!", more to the point, they have a very low usage percentage, and there are other ways to do it that are better and more easily maintainable). 
  • NO really, will there be user extensions in Selenium 2.0? ("How many people use user extensions in Se 1? Um, 6... out of 250. Will it be in Se 2? YeeeeeeeNO"). 
  • Can we inject headers in Selenium 2? If not, why? ("Selenium 1 add headers, but then cannot remove them. Selenium is a browser automation framework, it is not a "monkeying around with the web" tool. Out of scope."). 
  • Will there be tools to automate mobile apps? ("There are some that focus on the WebDriver APIs to allow users to drive native applications" They have a proof of concept for Android already." Otherwise, use Selenium 2). 
  • Watir vs Selenium? ("Different markets, it's a taste thing for many, plenty of room for both"). 
  • What's the level of browser support in Selenium 2? ("Selenium does not support all browsers equally. Opera in WebDriver has excellent support because Opera rolled their own browser support. Chrome is getting better, focus on standardization of browser support".). 
  • Can Selenium deal with Client Side certificates ("Custom profile helps deal with this"). 
Overall a great discussion.
Tuesday's Closing Keynote with Patrick Lightbody was titled "Selenium: Seven Years in the Making". Patrick talked about when he first got involved in Selenium. From an email quote: "too bad this didn't exist when we were setting up the test environment at Spoke". Selenium started as a small project, but with the advent of Selenium IDE, it really picked up considerably. It's exciting to see how each of the parts came into being, and how webDriver and Selenium 2.0 has been incubating for nearly three years. It really helps to put into perspective the level of work and commitment that it has taken to make this an ongoing concern. With the possibility of overtaking QTP in the marketplace, the Open Source Ecosystem that contributes to and drives Selenium is very healthy and thriving (thinhk Capybara, Webrat, Watir, HTMLUnit) as well as corporate interests like SauceLabs, Twist, PushToTest, dynaTrace, etc.). While there have been many great successes, there's a lot that they still want to do:
  • Better searchability for documentation 
  • better answers and solutions for issues
  • making it easier for contributors to build the system and give back to the project.
  • Also, the fate of selenium IDE is not as clear cut as some would say. 
Patrick is encouraging everyone to participate in the process of helping define what Selenium IDE is and can be. So how do we get involved then?
  1. Answer questions on selenium users list. 
  2. Join the Selenium Mailing list. 
  3. Join the IRC chat. 
  4. Build the app. 
  5. Submit patches. 
  6. Improve documentation. 
  7. Educate your peers.  
  8. Help maintain our build system. 
There's a lot that all of us can do to make a quick and big difference. We may not all be able to do everything, but we can all do something! The Future? Selenium IDE is the driver for bringing on new users, it needs to be maintained and enhanced. Selenium WebDriver for direct automation, Grid replacing SeleniumRC and who knows what else? It looks like an exciting seven years could be in our future.
It's a shame that I have to bolt immediately afterwards, as I'd love to talk more with my fellow Selenium fans, but thanks to all of the support staff who help make this conference a success. Today was terrific, really looking forward to tomorrow and the bittersweet fact that this will be over tomorrow night! I've learned a great deal and hope to learn even more Wednesday. Also, if anyone would like to be interviewed, I'll be sticking around Wednesday after the conference and would love to talk to anyone that would like to be part of a future podcast. Just look for the bald guy in the Sinatra hat :).




Afternote: So one of the funniest outcomes of this conference is that "we've become a hashtag!". Simon Stewart posted this morning that he hoped "the #tableoftrouble" would keep providing color commentary, and we of course said we would. What's funny is that we have been referred to as #tableoftrouble ever since. I've always aspired to do something worthy of being hash-tagged, so thank you all, we're enjoying the experience, too.

No comments: