Selenium – A Jason Huggins Testing Tale

PerfectoTopAd

Selenium – A Jason Huggins Testing Tale

After attending this year’s SauceCon, I was able to cross one item off my bucket list. (No, it wasn’t seeing the Golden Gate Bridge; as great as that was.) It was to finally get a chance to interview Jason Huggins, the creator of Selenium, SauceLabs, and Tapster Robotics.

Jason was gracious enough to sit with me for almost an hour to discuss all things test automation. (FYI: If you want more automation awesomeness to make sure to check out the AutomationGuild 2018 conference. I'm going to try to get Jason to participate somehow :)

What made Jason Huggins create an automation testing tool that changed testing history?

Here’s a small sample of the automation awesomeness Jason shared regarding the reasons why he created Selenium. (Note to self: Don’t conduct interviews in a lobby that has music blaring in the background.)

[00:00:00] Joe: Can You just tell us like why you created Selenium. What was your thought process. Did you ever think you'd get as big as it actually got. [5.1]

[00:00:05] Jason: Right. I mean so it's it's it's how much time you have. Right. So I have no short stories. So when we saw the tech lead on this project and Jim Evans at the SauceCon this week gave the couple a version of it. It's mostly mostly correct but it came down to I was a tech lead on a project. So we had 10 or so people working. We're working on an internal time expense tool and the mandate for this was had to be fast because it's if you're a consulting firm really your only internal system that you care about is that is the billing system. So you can get paid. And at the time the company is out that ThoughtWorks they were expanding globally. It used to be Chicago then we're expanding in England and India whatever so all of a sudden the latency that was find that local area network in Chicago also has a huge problem. People from London were connecting to the Chicago system so the current system was like super slow so fast fast fast. That sets the context for why are details I did later. [1:03.5]

[00:01:09] So this is actually 2003 2004. Still it actually kind of like the dot.com the nuclear winter. Right. So there wasn't a lot of budget to do really anything but we had basically people threatening mutiny in London and India just over latency too like Chicago. So that's kind of that's that's the scene. [18.4]

[00:01:28] So yes. 2003 2004. Let's do this web thing that's been around for a while. So the previous app was a Lotus Notes app. Now we're going to do a web app right. Very specific thing. But when you actually get fast forward to Selenium. We wanted to in a timesheets kind of context when you have this web form and we want to have if you had more than 10 items in your expense report we wanted to add a row. The State of the art and web app would be like send that whole thing to the server. The server will do all the rendering adding rows to the HTML tables and send it back. But I knew with like a couple hundred consultants that's going to be high latency it's not going to be fast . [38.1]

[00:02:07] So I had this idea wait a second Actually if you go into this javascript thing where you can modify the web page in like add you can change the page however you want and you can avoid a trip to the server. Awesome. The downside is that at the time javascript was super flaky and inconsistent between all the different browsers. So we had very strong discussions amongst the other engineers where it's like you shouldn't use your javascript. Using javascript is career limiting move it is a bad idea and you're a bad person and you should feel bad using javascript. This is like 2003 or 2004. So we actually I let them win the argument for a month or re-architect. So everything when the server came back in and it of course was slow so I said NO screw it. [42.4]

[00:02:50] So they put in the code to add to dynamically add a roll to your expenses report. And but then as if for that to be it we had called the sine wave of quality. What happened was it was working in an IE one week and then someone would change something all of a sudden it would not be working in Firefox. This is actually pre-Firefox with what it says like Firefox 9. Mozilla is a browser. So be there. You'll be working in Firefox but they were accidentally break in IE. [30.2]

[00:03:20] Of course they didn't test it because their personal browsers was Mozilla or whatever. So every other week it was like working in one of those browsers so it's like that was annoying. That was like requirement #1 OK I want to I can't get them to test all the browsers all the time. Every time they touch something so I want it to test two browsers. It was also doing as things were breaking that were working yesterday so I want something as kind of like a regression kind of a check before they push. It has one rule of like there has to be at least one functional test for whatever you do before you put in production. [30.8]

[00:03:52] Anyway so I wanted to have a test. So and it was frustrating. [4.4]

[00:03:56] And in that context of the state of the art whether it was open source or commercial tools because everyone considered Javascript the horrible bad idea the open source tools you can only ever do like regular expressions on like the HTTP response like the text my mechanise a very popular tool in all it was do assertions on the text response it didn't assume you'd be doing a assertions on the browser the rendered page. [22.1]

[00:04:19] And the commercial tools would cause you know Microsoft have like 95 percent market share. Why would you test any other browser? I had other conversations like that saying that why would you care about your browser whether it's pointless. A bunch of hippies care about that stuff. Oh and that Apple thing? Apples dead. I mean again this is the world back then. But we were like trendsetting consulting company so we had everyone had Mac books and everyone was using Mozilla [34.9]

[00:04:54] So I didn't want to create a testing tool. And we sought out other open source tools the closest was JSUnit it was a browser rendering stuff except it was very unit test focused not functional test like it didn't know how to go from page to page to page or just on one page. Also there was another one. HTMLUnit was a java project and kind of it was a headless browser had a kind of javascript thing but it wasn't real browsers so you couldn't tell if that matched a real browser experience right. [37.4]

[00:05:32] So again like the requirement was two browsers like one test drive two browsers and assuming you're going to be interacting with javascript app and doing an assertions like after javascript did something interesting. So there was really nothing. So I actually took a break from the project I was leading and it started a side project we kind of you know found a conference room and just like disappeared for a month. [23.5]

[00:05:56] Me and two other workers Paul Gross and Tina Wang the three of us working on a month for like a month on this first thing. And then we had it and it ends the people came by. I actually thought we were going to be famous for this time expense app we were making it was super super cool. It has a whole other story where we like evaluated all the time expense things that were out there, of course, like you know big surprise free consulting firm we to review all the packages apps and we came with the expert decision that we're going to write a custom package ourselves. And I really thought that the time expense thing was going to be interesting or people came up to me after like after we. [41.8]

[00:06:39] Gotten it up and running we had the IE tests and the Mozilla Firefox test it was actually fun to watch — turn on the monitor see it go. I hadn't like really seen that no kind of. It's kind of fun. It's really fun. It does sometimes when I'm in like it would be running on the computers my office and I would forget that it's at the top of the hour. I would kind of like a poor man's poor persons CI system just like you link it to a batch file scheduled it at the top of the hour and sometimes I forget it's kind of like big Ben you blasting. All of a sudden I'de hear this clicking from the computer monitor would be off. But IE sends when you click after too long a story but people come in and ask me about our testing tool. [40.5]

[00:07:19] I wanted to talk and pivot to time expense because that was super cool but this was just one part of it. So I think you hear the question. [8.6]

[00:07:29] I think I realized it was a thing when I got when I kept on getting more questions about it I think were completely unsolicited. I started getting invitations to talk about it at other places like other consultants at ThoughtWorks. And people were telling their clients about it. [16.9]

[00:07:46] That was actually one of the things that made it easy it was easier to open source it. To get it to our clients some of them had really weird procurement policies. So it was easier to open source download it as it goes to negotiate some kind of agreement. [12.5]

[00:07:59] So once that was kind of out there people would start using it. And so are having questions and then it just kind of took on a life. [6.6]

[00:08:06] So super long story but it came from a very technical thing. I didn't want to create a testing tool. I didn't know at the time. that there was a testing industry. There were books there were like an entire career and I was just like this annoying problem where javascript was like bumming me out. [23.4]

[8:29.6]

1 comment
Greg Paskal - August 10, 2017

Jason,
Thanks for sharing some of the history of Selenium. I appreciate all the hard work that has gone into this tool and am hopeful there is still more to come. Looking forward to meeting you somewhere down the road to talk more about Selenium and its future.

All the best,
Greg

Reply
Click here to add a comment

Leave a comment: