How’s your year going? Ours has been crazy-busy. That means we haven’t blogged as much as we’d like over the last month, but nonetheless we’ve got some important and hard-learned lessons to share with you. We’ve just gone through a period of intense deadlines and some long weekends at AgilityFeat, but we made it to the other side successfully. This month our commandos share some tips for the next time your teams are under the gun.

  • Improving our Sprint Zero process
  • 4 ways Perfection is killing you
  • 7 tips for when the going gets tough

The AgilityFeat team on the beach in Tamarindo, Costa Rica

The AgilityFeat team on the beach in Tamarindo, Costa Rica


Improving our Sprint Zero process

How do you balance agility with getting a project off on the right foot? Agile teams don’t favor long requirements or design cycles at the beginning of a project, because they tend to waste too much time. On the other hand, as contractors to our clients, we also want to make sure we really understand what our clients want from us before we go too far down any particular path. So while our team gathered in Tamarindo in January, we revised our Sprint Zero process for starting new projects. Read more about how we’re kicking off our projects.


4 ways perfection is killing you

We all want perfect code and processes and the best looking site out there. But in reality these desires also have to be balanced with running a profitable business. The two sets of desires are not mutually exclusive, however, we still have to be careful not to let our desires for perfection derail us from business success. Here are 4 ways you may be holding yourself back.


7 tips for when the going gets tough

As I said above, we recently successfully made it through a very busy and challenging month. It reaffirmed a lot of things we already knew, and created some new lessons for us in managing teams and creating successful projects in the most efficient way. These 7 tips are guaranteed to help you too successfully navigate the waters of troubled projects.


Coming soon…
Have you ever seen the tv show Shark Tank or been part of a startup incubator or business plan competition? We’re starting up an internal incubator for our team’s many great ideas (or at least we assume they’re great ideas and we intend to test that assumption!). Do you have any advice for us? Send me a note at Arin@AgilityFeat.com or call me at +1.434.996.5226. I’d love to hear your experiences.

Hasta el proximo “Startup News” mis amigos … Viva la Startup!

This is what angry customers might look like. Don't make them angry.Whether you are a bleeding edge startup or a large corporation running agile teams, here are four ways that you may be abusing agile concepts and letting perfection kill your chances of success.

Product Owner Perfection

In an agile team, the Product Owner (PO) is the “voice of the customer” to the development team.  They play an incredibly important role in the success of the project.  The PO will end up writing most of the user stories that describe the features the team will work on next, and equally important, the PO sets the priority of what to work on next.

Implicit in this prioritization duty is that the PO is also the person who says “go” and approves the deployment of new functionality to production.  So what happens when your product owner keeps saying “just do this one more thing and then we’ll deploy”? 

For a startup, this sort of “all or nothing” attitude will not just kill your project, it will destroy your business.  It will take you so long to satisfy that perfectionist Product Owner that you will end up missing your window of opportunity with customers.  Somebody else is going to build a less perfect version of your idea first, and they will win the customers before you even have a chance.

For a large company, Product Owner perfectionism is still bad.  It means that your schedules are going to slip, major initiatives will not be completed on time, and your agile team is going to look a lot like a very slow waterfall team.

Developer Perfection

Good developers are an essential part of a successful project, and so it’s easy to go overboard and hero-worship their technical prowess.  But sometimes that desire to be the best developer out there can kill your project.

Developers (in general) are very creative folk who take immense pride in their work.  The best ones also really enjoy playing around with the latest technologies and trying new things.  But even if you’re a non-technical leader, you can’t give them free reign or they will have so much fun building shiny objects that they will never get the project done on time.  I’m a developer by training … trust me on this.

Even if you can’t debate the details of technical decisions being made, you need to set clear boundaries for the team to work within.  If there is a fixed date you must have the functionality done by, communicate that from day one.  Make it clear that meeting that date is the most important thing, and you are willing to compromise on anything but that date.  The same is true for other project constraints such as budget or feature sets.  You can’t have everything, so pick one constraint at the beginning, and make it clear to the development team that is the constraint that must be met above all else.

If you’re project has no constraints (yeah right), then make one up.  You need to give the developers those guardrails.

Scrummaster Perfection

Are you agile enough?  I mean, are you truly Agile?  If you hear this a lot from your newly minted and Certified Scrummaster, then you are at risk of Scrummaster Perfection.

It doesn’t have to be agile methods like Scrum or Kanban, or even the Scrummaster as the culprit.  Perhaps we should just call this Process Perfection instead.

Any process should be judged by the results it produces.  Not the process results (aka documents and meeting rituals), but the actual value delivered to customers.  Are customers happier with us than they used to be?  Are they getting more value from us than in the past, and are we delivering that value more efficiently?  Than our process is working.  That’s all that matters.

It just so happens that agile methods tend to do the best job of delivering more customer delight more efficiently.  That’s why agile is popular.  But they can be abused and if you spend all your time worrying about adhering to some agile book you read, then you will not deliver much customer delight.

Please remind your Scrummaster and team that agile methods are not meant to be prescriptive – they are a set of guidelines and principles.  You can (and should) constantly change your process in order to better serve your customers.  As long as you are still adhering to the basic tenets of the agile manifesto, you can declare yourself agile.

From your customers’ perspective, they don’t even need to know you’re agile.  They don’t give a rip.  You should just be doing a better job for them than you used to.

Quality Perfection

I’ve already complained about perfectionism from our product owners, developers, and scrummasters, so who’s left for me to alienate?  I know, let’s pick on testers for a moment!

I am all for testing, both manual and automated.  I am also all for high quality software.  I hate it when a bug keeps me from doing something important on another company’s web site, so why should I accept anything less on my own?

The thing is … all bugs are not created equal. If I can’t accomplish core web site functionality on the most commonly used browsers, then yes, that bug has to be dealt with quickly and should be caught before it’s deployed to production.

But should bugs in older browsers keep you from deploying software now?  It depends on your customer base, but probably not.  You can probably live without a fully functional site in IE 8.  Or you can change the code for that browser to be simpler and not have as rich functionality.

If the bug is in an obscure part of your administration console that very few users notice, then maybe it doesn’t need to be dealt with right now.

The point is, many testers have a problem with perfectionism.  I find this to be particularly true with testers in large companies because in the past they were judged by the wrong metrics.

A tester should not be judged by how many bugs escaped the test environment and made it to production.  A tester should be judged the same way as the whole team – are we making our customers happy by getting them the right features at the right time with an appropriate level of quality?

Unless you’re building safety-critical systems, you don’t need to deliver perfect quality.   You only need to deliver just enough quality, focused on the right areas.

Is your perfectionism holding you back?

What is keeping you from deploying that code today?  What is keeping you from making that deadline next week?  It may just be endemic perfectionism in one or more parts of your team.  Go find that person right now and reset expectations with them before it’s too late.  You can still save that project if you act now!

Who’s ever heard of a telecom lean startup? That’s sort of what Twilio is, and it’s a pretty cool company and interesting case study.

When I attended the LeanStartup.co conference in San Francisco recently, one of the parts I was most excited about was the tour of area companies. The first tour that I did was at Twilio, and it was very interesting from a lean startup and an agile engineering perspective.

What exactly is Twilio?

Screen Shot 2012-12-26 at 1.17.26 PMTwilio.com tells you that they “bring voice and messaging to your mobile applications.” They have built a great API that developers can use to quickly and easily provision new phone numbers, and build in voice and text messaging automation to your applications. That’s even cooler than it may sound, and if you setup a trial account with them then Twilio will quickly give you a new phone number and guide you through a short tutorial. In less than 15 minutes, I had setup a customer voice mail message on my new phone number, send myself text messages from that number, and setup auto return text messages from that phone number. All of this was done using extremely simple code that they gave me.

Twilio’s guided tour of their features is probably the best I’ve ever seen. I got a quick sense of their capabilities in a very short tour, and I was impressed with how simple they made it look. They have taken an intimidating topic, broken through the learning curve barrier, and got me hooked. Within ten minutes later I was asking their sales team if they have any phone numbers available in Central America since that is where I do a lot of business. I’ve got ideas brewing for how to use Twilio!

Cool office? Check.

2012-12-04_09-09-41_359Talk about Twilio has been trending in the development community for a while now, so I was excited to see their office and meet some folks. Their office feels like a startup. They have the obligatory indoor bike racks, big monitors, and open room feel.

The desks are all handmade by the team members out of doors and cheap lumber. They started out with a lean budget for office furniture and see no reason to change it. It actually looks good, and beats the used-door desk I had in college. The conference rooms are all named after famous technical people who have inspired them, like Steve Wozniak or Hedy Lamarr (an Austrian actress and scientist who invented frequency hopping).

We sat down at large tables (hand made of course) in the kitchen area. Joel Franusic (@jf) is a developer evangelist and gave us a great demo.  Then Kyle Conroy (@kyle_conroy) talked about engineering at Twilio.  Kyle is a former intern at Twilio who is now a developer there.

2012-12-04_09-57-30_437They gave us a great tour of the API, similar to what you’ll see on the website. Joel was getting our phone numbers from people on the tour, and sending us text messages from his console in seconds. It was an impressive taunting of the demo-gods, but it went flawlessly and Twilio has a lot of confidence in their API. It’s the keystone of their business.

Agile Engineering? Check.

How do you develop that much confidence in your software? I asked about agile engineering techniques like test automation, and how they use QA teams. Kyle’s answers were very interesting. Twilio has no QA department, and no testers. They preach code ownership and so the developers are responsible for all testing before it goes to production.

They do lots of automated testing, and those tests run regularly under Continuous Integration servers so that they know how stable the main branch of the code is. They have tried Cucumber, which is one of my favorite tools for automated acceptance testing. For them though, Cucumber was too verbose. They are mainly testing an API, and they felt that the “Given/When/Then” syntax was simply too cumbersome.

I can see where that would be the case. One of the big benefits I think of Cucumber is how it gives you “plain English” executable tests that you can show to your customers. However, in Twilio’s case, everyone understands the technical talk, because serving developers is everything to them. So the extra verbosity of Cucumber is not worth it.

The development process is automated at Twilio so that they can do frequent deployments whenever the developers have small changes ready.

Applying Lean Startup stuff? Yeah, pretty much.

Those of us on the tour also asked Kyle and Joel about their application of lean startup methodologies to their business model. Twilio didn’t start out applying those concepts, but they have done more of it over time.

They pointed out that they suffered some in the past because they had not applied lean startup methodologies or customer development. They spent a long time building a new product called Twilio Connect because they were sure they knew what developers wanted. After investing a lot of time, it was not received well when they launched it.

How long should your betas be? Although I’m not fond of the term beta, Twilio has found that they have to be careful about making too frequent changes to an API. Developers expect you to maintain reverse compatibility, and you can’t change the API all the time or you will break companies’ production code and alienate customers. It’s not as simple as a UI driven company where you have much more freedom to change the look and feel of your website, or make constant small tweaks to the user interface.

2012-12-04_09-04-52_718So Twilio has found that long beta cycles work well for them. This gives developers a long lead time to start testing with the new features. Twilio tries to communicate clearly that the code is not ready for prime time yet, and so they have the freedom to change the new API calls significantly during the beta period based on feedback from early adopters. This allows them to get very valuable feedback early on from developers, without jeopardizing the stability of the official API.

Once they have a solid understanding of what the development community wants in the new features, then they can publish them into the official production version of the API.

Metrics? Check and Double-check!

One final conversation that came up is very important to those of us interested in the application of metrics to lean startups. Twilio originally did a lot of funnel analysis to get more people signed up for the service. But they realized that they were over-optimizing the sign up process, and the use of their API and customer retention was bad. In other words, they were getting more people to sign up, but they were the wrong kind of people. Some people thought they were signing up for a consumer focused VOIP solution, not a development API.

Twilio had to tweak their metrics to focus on what really matters to them: use of their API. Lower sign up conversion rates are acceptable if it means that the people who do sign up are actually using the API more. Metrics matter a lot in lean startups, but make sure you are focused on the metrics that actually matter to your core business model.

Go check ‘em out…

Screen Shot 2012-12-26 at 1.24.27 PM

By the time I finished this blog post, their sales team had already got back in touch with me. That’s pretty great for the day after Christmas as I was writing this. While it turns out they don’t have phone coverage in Costa Rica yet like I hoped, there is still so much cool stuff to play with that I will have to make some more time for fun holiday hacking with Twilio. You should too!

Kent McDonald leads some volunteers from American Express who are helping write user stories and do product flows for Wishlisting.org

Get your green now before it’s too late!  Green Cucumber tests, that is. This is the last day of the Agile Dev Lab at the Agile 2012 conference, where we are working on the website wishlisting.org for charities to use for very specific fundraising needs.  Our beta client is AHIP, and you can donate online to them here:  http://wishlisting.org/list/AHIP

AHIP helps distressed families keep their homes in repair so that they are still able to live in them.  Unfortunately there’s a lot of people these days who have that need, and they have a waiting list of clients just in their region.  I’m very proud that the Agile Dev Lab has raised over $1000 for AHIP this week, and you can still buy raffle tickets until 5pm today!

Donate your time or funds to the Wishlisting.org project and you can help distressed families repair their homes! Donate online at wishlisting.org/list/AHIP

There’s also a lot of other ways you can help our Wishlisting.org project.  Come by and help write Cucumber tests or Ruby code, write user stories and acceptance criteria, or help test what we’ve done so far.  If you don’t know how to do any of that, don’t worry, we are happy to show you how!  You’ll learn something, teach us something, or just help out a great cause.

Look for us by the big quilt of Agile conference t-shirts that we are raffling off to raise money for AHIP!

The Agile-Tee Quilt being auctioned next to the Agile Dev Lab.

The Agile Dev Lab is open for business at Agile 2012 in Dallas Texas!  This week we will be here from 9am-5pm Tuesday – Thursday doing Acceptance Test Driven Development (ATDD) with Cucumber and Ruby to build the website wishlisting.org for use by non profits.  Look for us next to the big quilt in the central area of the conference, and come by to donate your time or a few dollars to a great cause.

The Wishlisting project being displayed on the big screen. Hey look, Continuous Integration!

Wishlisting.org will allow charities to list specific items that they or their clients need, and donors can contribute directly towards them. It is currently under development at conferences like Agile 2012 as an example of agile engineering techniques.  The efforts are being led by Arin Sime from AgilityFeat, Bob Payne from Lithespeed, and Kent McDonald from Beyond Requirements. but we welcome anyone to contribute so stop by!

All proceeds from donations made and the raffle tickets for the quilt will go to benefit AHIP. The Albemarle Housing Improvement Program helps keep families in their homes by raising money and volunteering time for families in need. AHIP’s mission is to ensure safe, affordable homes for our neighbors in need which strengthens families, neighborhoods and the greater community by improving the affordable housing stock. Even if you can’t stop by the lab, you can make a donation to AHIP here!

If you like what we’re doing, why not learn more about agile engineering, and in particular how it applies to startups and innovative development. You can join the AgilityFeat team in Costa Rica early next year at our Dare To Be Lean hands on workshop on the beach in Costa Rica. Sign up here for more information!

The wishlisting.org page for AHIP as it stands now.

June 4-5, 2012 Washington, DC

 

DETAILS/REGISTRATION

For information on other dates
blog.agilityfeat.com/atdd-kickstart/

AgilityFeat is proud to be partnering with Lithespeed on our ATDD Kickstart classes, and so we’re pleased to announce an upcoming course near Washington DC! This class is designed to take your team from zero to test automation using Cucumber in a hands-on activity filled two days.

In our public courses, your team will learn:

Day 1 (For business, testing and development)

  • Overview of Test Driven Development, ATDD, and BDD
  • Writing acceptance criteria in Gherkin
  • Automating website testing with Cucumber
  • Continuous Integration using Jenkins to make it all sing

Day 2 (More focused on the development and testing roles with lots of hands on exercises and practice)

  • Basics of the Ruby language
  • Implementing step definitions in Cucumber

We can also teach this as a private course on site at your company, and customize it to your specific needs. Other topics we have incorporated into private courses include JRuby, Rails, Selenium, and RESTful API testing.

Prerequisites

Dave working with developers in a course

Participants need to bring their own laptops. Virtual images will be distributed during the class to attendees so they can have a working environment quickly. These images will have open source copies of Cucumber and Ruby pre-installed on a Ubuntu Linux desktop. No experience with Ruby, Cucumber, or Linux is required prior to the course.

About the instructors

Dave Haeffner is an experienced automated tester, and formerly the Senior Quality Assurance Analyst at The Motley Fool; responsible for creating, implementing, and overseeing their automated web testing infrastructure. He was a speaker at Agile 2010, an organizer of the DC Selenium meetups, and is an active member in the Selenium and Ruby communities. Dave has worked with small startups and large government contractors to improve their quality practices.

Arin explaining ATDD

Arin Sime is an agile coach, developer, and the founder of AgilityFeat. He has worked with teams at small startups, large corporations, and government agencies. He has been a speaker at Agile 2009, Agile 2010, XP2011, as well as other regional conferences. He brings his diverse background of technical and management experience to bear when coaching teams through process and engineering challenges.

Arin and Dave both hold an M.S. in Management of I.T. from the University of Virginia’s McIntire School of Commerce.

To book a seat in the Washington DC class, please visit: Lithespeed’s ATDD Training Page

To book a private course or a customized course for your team, please contact Arin Sime at Arin@AgilityFeat.com or +1 434 996 5226.

Congratulations to Dave Haeffner for having his Agile 2012 submission “Selenium Users Anonymous” accepted!  Dave will be leading a “counseling” session for Selenium users at Agile 2012 in Dallas.  The conference is from August 13 – 17 2012 and you can get more information at agile2012.agilealliance.org.

Dave Haeffner speaking at Agile2012

Dave Haeffner is the Chief Quality Officer at AgilityFeat, and is responsible for our quality assurance related efforts such as the ATDD Kickstart course that we offer.  Dave was previously Senior Quality Assurance Analyst at the Motley Fool and has spoken on quality assurance at many user groups and previous conferences including Agile 2010.

Details on the session are below.  AgilityFeat will likely also schedule an ATDD class or two in the same area in August, so stay tuned to our ATDD Kickstart page!

Selenium Users Anonymous

Hi, my name is Dave, and I’m a recovering Selenium user.

I was like you once — new to Selenium, using the IDE for a quick fix. Oh sure, “Just this once. I’ll have plenty of time to change it later.” is what you’d say. But before you knew it — BAM! — you’re in so deep you don’t know how to get out. Trying to debug a large suite of brittle tests that constantly break only to find false positives after slow run times along with a nice helping of poor cross-browser coverage.

I’ve seen it a thousand times, and I’m here to tell you, it doesn’t have to be this way.

Here at Selenium Users Anonymous, we offer practical advice from those that have gone before you — showing you how to evolve your current Selenium nightmare into a bright automated testing future with our universal 12 step program.

Process/Mechanics
  • 00:00 – 00:02 – Hilarious intro
  • 00:02 – 00:10 – Gauge the room on level of Selenium experience & usage — Teasing out & capturing the pain points felt by the audience
  • 00:10 – 00:30 – Overview of Selenium evolutionary paths with examples of success and failure
  • 00:30 – 00:35 – Review of the pain points captured earlier and showing correlation and patterns based on the material just covered
  • 00:35 – 00:40 – Dramatic pause and hitting on the point that everyone goes through these same problems — encouraging the audience to turn to their neighbors and hug (this is a support group after all)
  • 00:40 – 00:50 – Overview of a process to follow (broken out into steps) that will help the audience realize where they are in their Selenium evolution, where they can go, and how they can get to greener pastures
  • 00:50 – 00:52 – Brief recap and closing remarks
  • 00:53 – 00:60 – Questions, Applause, and high-fiving (lots of high-fiving)

All of this done with a Presentation Zen style of slides to help illustrate key points.

Learning outcomes
  • The evolutionary paths that Selenium Automated Test Suites take
  • The Pros & Cons of each path
  • Learning how to tell which path you’re on
  • Steps to take today, tomorrow, and beyond that will help you get the most out of your Selenium usage, and, position you well for the future

Dave Haeffner and I are proud to announce a new workshop on Acceptance Test Driven Development using Cucumber and Ruby that we are offering in 2012.  The workshop will initially be taught as private courses to companies, so if you are interested in a quote, please contact me at Arin@AgilityFeat.com or 434.996.5226.

ATDD Kick-Start with Cucumber and Ruby

This two-day workshop will take participants through the entire life cycle of automating your acceptance tests using Cucumber and Ruby.  The workshop is designed for people who are new to test automation and new to the Ruby language.  This course serves as an excellent introduction to both concepts, and is suitable for testers and developers alike.  Each attendee will work in pairs on actual tests and code throughout the two days, so that learning is maximized through hands on practice.

Workshop Topics

  • Overview of Test Driven Development, ATDD, and BDD
  • Intro to Cucumber
  • Writing Gherkin Acceptance Criteria
  • Step Definition basics
  • Intro to Ruby
  • Writing your step definitions in Ruby
  • Using RSpec to test assumptions
  • Automating website testing
  • Using Rails to build our website
  • Testing things besides websites
  • Refactoring Cucumber tests
  • Continuous Integration basics
  • Review of TDD/BDD concepts
  • Overview of other BDD implementations

Prerequisites

Participants need to bring their own laptops.  VMWare virtual images will be distributed ahead of time to attendees so they can have a working environment quickly.  These images will have open source copies of Cucumber and Ruby pre-installed on a Ubuntu Linux desktop.  No experience with Ruby, Cucumber, or Linux is required prior to the course.

About your instructors

Arin Sime is an agile coach, developer, and the founder of AgilityFeat.  Based in Virginia, he has worked with teams at small startups, large corporations, and government agencies.  He has been a speaker at Agile 2009, Agile 2010, XP2011, as well as other regional conferences.  He brings his diverse background of technical and management experience to bear when coaching teams through process and engineering challenges.

Dave Haeffner is the founder of Arrgyle — a company focused on helping people realize and achieve their potential through effective technology use. Before starting Arrgyle he was the Senior Quality Assurance Analyst at The Motley Fool; responsible for creating, implementing, and overseeing their automated web testing infrastructure. He was a speaker at Agile 2010 and is an active member in the Selenium and Ruby communities.

Arin and Dave both hold an M.S. in Management of I.T. from the University of Virginia’s McIntire School of Commerce.

 

Developing software for the cloud can make test-driven development more complicated, but not impossible. In this article that I wrote for TechWell.com and StickyMinds.com, I offer advice for continuing good development practices in the face of challenges from cloud hosting and distributed computing.

To see the article, visit either site:

TechWell.com

or

StickyMinds.com

This article was published in Sogeti’s QANews on September 30, 2011. See their article here

Acceptance tests are a great way to improve collaboration between testers, developers, and customers. When all three parties agree ahead of time how to test the feature, it makes it more likely the developer will deliver working code.

Automating those acceptance tests is even better, because now the tester can easily execute all previous acceptance tests written and ensure that new features are not breaking previously existing code.

Brief introduction to ATDD

Acceptance Test Driven Development (ATDD) is a powerful way to write acceptance criteria for your agile project’s user stories.

Instead of just writing a list of requirements, you write acceptance criteria in a specific format. Your acceptance tests are written in simple formats, but they can be turned into executable code.

These acceptance tests are written before development is done, and so when the tests are executed the first time, they will all fail. This is a good thing!

The developer now knows exactly what they need to do to write the feature. They keep developing code until the acceptance tests pass, and then they are done.

Writing your “requirements” as executable code that the developer can use will improve communication between the customer, tester, and developer. Ideally all three parties will sit down together to write the acceptance tests, and then the developer can take it from there to implement the code.

Manual or Automated ATDD?

You could write your acceptance tests with the developer, and then have testers manually test them at the end of the project. In a loose sense this is still acceptance test driven development.

But you will get much more value out of it if you write the tests so they can be automated. Then testers can quickly execute all the acceptance tests written for the project (even beyond the current features being developed), and they will have confidence that the new development is not breaking old features.

Cucumber is a common framework for automating acceptance tests, and the tips in this article assume you are using it. Cucumber is implemented in Ruby, but you can use it to test virtually any system, regardless of whether your system is written in Ruby, Java, .NET, etc.

Cucumber also has multilingual support. So you can write your tests in English, Spanish, or many other languages.

Tip #1: Adopt the Given/When/Then format

The Cucumber testing framework uses a language called Gherkin for writing the acceptance tests. These tests follow this basic pattern:

Given [some precondition or starting state]

When [the user does something]

Then [something happens]

Using this format helps to make the test clear, and encourages you to properly describe the preconditions for the test, what initiates the test, and what the expected outcome is. This simple pattern makes it easy to visually scan a test and see what it does.
Tip #2: Group scenarios based on common backgrounds

In many of your tests, the “Given” clauses will be very similar. Gherkin allows you to save time by putting these common pre conditions in a “Background” section of the test file so that you are not writing duplicate code.

This also helps you determine when you can group scenarios together in the feature test. If a scenario does not fit the background pre conditions, then it should go somewhere else.

As an example, you might initially consider grouping together tests that deal with adding an item to a shopping cart. But on further consideration, you notice there are really two different set of features to consider: adding items to the cart when you are a logged in shopper, and when a new customer adds items to their cart. These could be considered two distinct sets of features since they have different pre-conditions.

Tip #3: Mock external dependencies

Automated tests need to be fast, otherwise you will not run them often enough. Teams may delay starting the automated tests if they take hours to run. The tester says “We’ll start it just as soon as a couple more developers check in their code…”

But this means you are delaying the rework of any bugs found, and that can slow down the whole project.

If your automated tests take too long, it’s may be due to an external dependency. Is the test making a call to another system? Can you “mock” that other system and replace it with fake code so that the test runs faster?

Frameworks like JMock and nMock make this possible, so that you can focus on testing your code instead of worrying about the external systems it depends on.

Tip #4: Example scenarios to build common terminology

The Cucumber framework is great, but it relies on “ubiquitous terminology.” You don’t want to write different pieces of test code for all of these statements:

Given that a user has logged in
Given that the user logs in
Given that the user is logged in

When you read these sentences as a human, it’s obvious they all mean the same thing. But the automated testing framework doesn’t understand that, and it expects you to implement three different pieces of test code for them.

Using common terminology across your team is important, so consider posting examples of common test steps on the team room wall or on a wiki. Then you can re-use other test code more easily.

Automating ATDD improves communication

Many teams want to speed up testing, increase automation, and improve communication between developers, testers, and customers. Automating your acceptance tests with Cucumber can definitely achieve all of these goals, and is worth the investment.

Following these tips will help you make the most of your automated ATDD adoption.

About the author

Arin Sime is owner of AgilityFeat, where he provides agile coaching and development services. Arin is a regular speaker at agile conferences and user groups, including the recent XP2011 conference in Madrid. Arin holds a Masters degree in Management of I.T. from the University of Virginia. You can reach him at Arin@AgilityFeat.com or on twitter @ArinSime.

Next Page »