Posts Tagged ‘Agile’

The Future of Testing

November 18th, 2010 by The Sauce Labs Team

It’s gratifying to have one’s story mirrored by people like Elisabeth Hendrickson and Chris McMahon, but you’ve got to wonder if we’re all not just drinking the same koolaid. We think there’s more to this than sugar, water and artificial coloring. We think there’s a fundamental change in software development going on.

We welcome your comments after you read this post or add your voice to the habanero chorus by taking our new Selenium Survey. We’ll give you a bottle of Sauce Labs Hot Sauce for your time.

The question we pose to you: What’s the future of testing?

If you are a QA director or programmer who writes tests and follows Sauce Labs, you probably know agile development is exploding. You also most likely agree that Selenium is the lead technology in test automation programming and that automated testing is transforming software development. These ideas should, in our view, be obvious to development teams who are running hundreds or thousands of Selenium scripts in their deployment process, and perhaps with our browsers in the cloud.

This shift doesn’t seem to be an opinion or a hunch. Here’s a bit of evidence that the movement is gaining momentum.

On October 20th, Elisabeth Hendrickson from Quality Tree Software wrote a blog post questioning whether the rise in agile is affecting the QA job market in terms of skills and qualifications. She found it did – and that a trend is emerging.

On October 29th, Chris McMahon wrote another blog post, referencing Elisabeth Hendrickson and our very own Jason Huggins, in which Chris posited that we were seeing a “general across-the-board increase in demand for technical skills in traditional UI-based software testing”.

We couldn’t agree more. Agile development and continuous integration is changing the job landscape for testing professionals, and the technical skills being increasingly demanded is Selenium because the traditional definition of a QA skill-set just doesn’t work if teams want to be agile.

What of “Traditional” QA?

“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,” wrote McMahon. “And the agile whole-team approach to software development makes dedicated, siloed traditional Q&A test departments irrelevant.”

Wow. Do you think that QA departments are irrelevant?

Well, instead of traditional QA departments, we are finding that Quality Directors now know Selenium or Watir, among other technologies. They make sure that their development team uses modern testing practices, and developers write user interface acceptance tests with Selenium for features they have developed. As teams roll out features and fixes, they re-run tests against their applications at blazing speeds, get feedback, make fixes, re-run tests – and soon the new feature is deployed, failure free across all browsers. In other words, the trend we have seen amongst our customers concurs with McMahon.

Automated cross browser testing with Selenium: highly sought?

Growing evidence indicates the answer is yes, Selenium experience is a highly sought after skill.

Elizabeth Hendrickson set out to quantify the demand for programming skills for a small sample of tester job postings. They found that out of the 187 jobs sampled, 112 indicated that programming was required and 39 jobs indicated that programming was desired. In other words, a whopping 80% of test jobs in her sample required or desired programming skills.

Hendrickson’s research then considered test automation technologies. Out of their sample, 27 job ads explicitly said that they require knowledge of test automation tools and an additional 50 ads stated that test automation tool knowledge is a nice to have. We imagine many more actually required automation.

Hendrickson’s study makes a case for Selenium being the leader with the counts of jobs specifying an automation technology:

  • Selenium, including Selenium RC (31)
  • QTP (19)
  • XUnit frameworks such as JUnit, NUnit, TestNG, etc. (14)
  • LoadRunner (11)
  • JMeter (7)
  • Winrunner (7)
  • SilkTest (6)
  • SilkPerformer (4)
  • Visual Studio/TFS (4)
  • Watir or Watin (4)
  • Eggplant (2)
  • Fitnesse (2)

The present (and future) of testing is automated.

We’ve blogged about Selenium job trends already, so we were not surprised by Hendrickson’s report of Selenium skills seemed the most commonly required test automation technology.

Don’t believe us? Just check the QTP vs Selenium Job posting trends from Indeed.com below. Based on these trends, we’re going out on a pretty solid limb and predicting that openings for Selenium jobs will overtake QTP jobs within the next two years.

So, if you’re QA tester serious about a career in Quality and you don’t know a programming language like Java, Ruby, Python, and now JavaScript, learn one. However, you should be adept in automation technologies. We suggest, for obvious reasons, you learn Selenium.

And if you are a QA tester who already knows Selenium who hasn’t tried sending your tests to our browsers in the cloud? We’re always happy to hear yourfeedback on our service after you try it.

We welcome your comments!

Share

The Motley Fool Makes a Wise Investment in Sauce Labs Technology

November 10th, 2010 by The Sauce Labs Team

Don’t take it from us that teams who invest a little time in using Sauce OnDemand see a great ROI.

Dave Haeffner met Jason Huggins after a talk at Agile2009, and now the team at The Motley Fool has made it part of their development cycle to run tests on the browsers hosted by Sauce Labs.

What did Haeffner and his crew discover from sending tests to our browsers instead of their own?

Read The Motley Fool Case Study to find out how the Fool sped up testing 10X, slashed dev wait times and gained velocity with Sauce Labs.

Share

It Takes Time To Go Fast

October 12th, 2010 by Jason Huggins

Since I started my career in software development, I’ve witnessed many changes in how we release software.


My first job was as a technical consultant at a large ERP software vendor customizing their Student Administration package for a large state university. I worked on several things* on that project, and at one point, I was in charge of change management from the Dev to Test system environments. This was the process:

* On a weekly basis, email all the developers on the team, asking them for their finished code projects.
* Create a spreadsheet listing the complete set of projects to be migrated.
* Get various approvals from the team leads for the final migration list.
* Manually migrate each project from the Dev database to the Test database.
* Finally, let the testers know they’ve got new stuff to test.

Waterfall can best be described as a “walled-garden” methodology. Each function — development, test, and operations — mostly worked in silos. Interactions between teams only happened occasionally — weeks at best, months at worst. And even then, only a person with people skills, like me, handled the interaction between the teams.

This was the peak of waterfall software development. A complete code cycle from initial development to production only happened a few times a year. (“Once per quarter” was a pretty aggressive release goal for ERP projects in those days.) No one thought this was a “bad” process. Tedious, yes, but not terrible.


A few years later, I found myself working for a hip, boutique software consultancy in Chicago. I became the technical lead on an in-house project to replace the company’s time and expense system. This company was really into XP and Agile, so we “ate our own dog food,” and ran the project The Agile Way, the same way we ran our client projects. We had weekly iterations, and pushed to production about once a month. Initial project kick-off to first production users was about 3 months.

The big innovation I noticed with Agile was the distinct feeling that development no longer lived in a “walled garden” with regards to testing. The wall that traditionally existed between development and testing no longer existed. In fact, every developer wrote tests. We even wrote cross browser testing tools to make the task easier for the development team. And we used continuous integration to make sure our tests were run all the time.

We were good-to-above-average for a typical agile project. We only pushed to production once a month, but we were proud of ourselves. During this whole time, no one thought this was a bad process. In fact, general consensus was that it was good, bordering on great — especially compared to the Waterfall horror stories everyone knew of.


More recently, I co-founded a startup focused on solving software testing problems. As a small startup with a new Amazon EC2 account, cloud computing provided us direct and fast access for deploying code to production whenever we wanted.

With no more long cycles waiting for IT to procure machines, and no lengthy approval processes for dealing with production DBAs, I could hear another wall collapsing. We had obliterated the line between dev/test and operations. Some people call this “DevOps.” In my opinion, it should be called “DevTestOps,” because no sane person would push to production without running tests first!

At first, even though we now had little process friction to go from dev to test to production, we still did things the Agile Way. We coded features at a weekly or biweekly scale, and pushed to production once a week or every two weeks. This was still an improvement over my first Agile project, though.

With the walls down between development, test, and operations, we’ve started to optimize for speed. As we strive to improve our process, it helps to see pioneers show the way.

We now release at a much faster pace than a typical Agile project. Our internal goal is to *always* push to production at least once a day. We often do better than that. The faster you go, the more motivated you are to go even faster.

One benefit of fast release cycles is that it frees up time to tear down more walls in the development process. We have production metrics to watch user behavior in production — what they do and what they click on — that can inform what we work on next week. And we even have time to talk to the sales team for input on what to work on. Wherever we can, we destroy friction in our development process.

We’ve noticed that as our release cycle speeds up, so does our reliance on fast feedback systems. Our tests and our continuous integration system is the heartbeat of development. If the build is green, we deploy. If not, we have to wait. When you get used to pushing new code to production several times a day, it’s really painful to go back to the old way of doing it. After every process improvement, I look back at the old way we used to do things, and wonder what took us so long to get here.

Footnote:
* My first assignment was writing the program for the Admissions department that had a simple workflow. Input: GPA and ACT/SAT score. Output: a “personalized” (mail-merged) acceptance or rejection letter. I still remember thinking how a bug in my code would alter the course of someone’s life. If you didn’t get into Boise State University around 1999-2000, sorry about that!

Share