Posted by andy in : Agile, Teams, Testing on March 25, 2008I enjoyed reading Keith Braithwaite’s post on tests and gauges. I like the way Keith uses the the metaphor of gauges in metalwork to describe Fit style tests:
You don’t work anything out from a gauge. What you do is apply it to see if the workpiece is within tolerance or not. And then you trim off, or build a bit up, or bend it a bit more, or whatever, a re-apply the gauge. And repeat.
I agree with Keith. The fit tests I write are business facing and for the benefit of the business customer.
On a recent project our customer got so enthusiastic about our fit tests he got extremely upset when I implemented a story without a fit test. He refused to let the system go live until we had the fit test in place.
The story in question was very technical and involved sending a particular xml message to an external system. We just could not work out what a fit test would look like for this type of requirement. Placing the expected xml message, with all it’s gory detail, in the fit test would not have been helpful as this is a technical artefact and of no interest to the business. We could not work out what to do. The customer was not around to discuss this so I just went ahead and implemented the story (very naughty!).
What the Customer wanted was to be sure that we were sending the correct product information in the xml message. To resolve the issue, I suggested that we have a Fit test that shows how the product attributes get mapped onto the xml message using xpath; although I still thought this was too technical for a business user.
We gave the Customer a couple of links to explain what xpath was so he could explore if this was a good solution for him. To my amazement, he was delighted with xpath (I now know who to turn to when I have an problem with xpath) and filled in the fit test.
The interesting bit for me (and why I’m posting it on the blog) is that as soon as he knew what the message looked like and how it was structured, he realised that it did not really support the business - we were sending information that was outside our scope of our work and should have been supplied by another system. He was also skeptical about the speed the external team could add new products due to the complex nature of the xml.
Most agile people tell this story to think we have the “perfect customer”!
Add to del.icio.us ,
Digg this , 5 Comments »
Posted by andy in : Agile, Testing on January 24, 2008I though it was worth sharing some experience we are having speeding up our very slow build from 1 hour plus to around 10 minutes.
In the past we have spent a lot of time exploring why our tests are slow and have never really come up with a good solution. We’re continually extending the test suite, so any savings we make don’t last that long.
The unit tests are quick (~40 seconds), but it’s the acceptance tests that start up and run the application that are painfully slow.
We decided to group the acceptance tests into small logically grouped test suites that can run in 10 minutes or less. Then we added build agents (each running on a separate machine), so we can run as many of these small test suites in parallel as we can.
Every time the build gets too slow we break them down into smaller chunks and add another build agent. Hardware is cheap so it’s easy to sale this solution.
So far this is working really well.
Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile, Testing on June 8, 2007I have just discovered an old post by Jim Shore (http://www.jamesshore.com/Blog/How-I-Use-Fit.html) about how he started out using FIT. He started out by switching from a unit test driven approach to a more story driven development approach.
I encountered a big problem with this approach, though: I stopped doing good TDD. “Storytest-driven development” blurred the line between Fit and unit tests. The “STDD” cycle largely replaced the TDD cycle and, as a result, I had far fewer unit tests than normal.
That was a problem because Fit examples are not unit tests. Fit examples are just that: examples of a business rule in action, from a business perspective. In TDD, I write tests for every line of code that can possibly break. In my Fit examples, I try to talk about every possible business case. That’s a bigger net than TDD, and without TDD, my code wasn’t well tested.
I had the exact same experience. I also found that the design suffered due to the lack of tests (it did not force me to refactor as often as I should) and it had a detrimental impact on my productivity. Story tests are larger in scope and take longer to run. Unit tests provide a much faster feedback loop when you break something.
I wish I had read this before I started using FIT.
Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile, Software, Teams on May 31, 2007As a follow up to my post on pair programming based interviews, I noticed this on a recent job advert:
In chess it is possible to place eight queens on a board so that no one queen can be taken by any other. Write a program to determine all such possible arrangements for all eight. I am not looking for a Chess Games Developer. I am looking for Java Developers who have the OOA and OOD skills to solve this problem….
Which one would you prefer (to receive if going for an interview, or to use to find a good candidate to work in your team)? A test that’s abstract and has nothing to do with the work involved, or one that that involves doing the job you are interviewing for?
I wonder if they have run this test on all of their existing staff to see if their is any useful correlation.
Add to del.icio.us ,
Digg this , 1 Comment »
Posted by andy in : Agile, Teams on May 6, 2007I noticed an interesting discussion on the IXP mailing list about pair programming with developers during an interview. I was surprised by the number of people who thought it was a bad idea.
I have done a lot interviewing for various companies and one of the best ways to find out the beliefs and values of a software developer is to look at their code. The best way to know what someone is like to work with is to work with them! This is why I really like pair programming interviews. It’s one of the best interview techniques I know.
Another nice feature of a pair-programming interview is the continual conversation you have with the candidate. It provides you with ample opportunities to ask sensible questions about the code you are writing. This gives the candidate a better understanding of why you are asking the question. There’s nothing worse than crazy interview questions that make no sense!
There are certain things you have to be aware of. You have to be very good at putting people at ease. You need to explain why you are running the interview like this. Some people get very nervous at an interview. You have to treat it as if you are pairing with a colleague. If people get stuck, you should help them out.
An interview is a two way process . The candidate also gets a much more realistic idea of what it would be like being in the team. They see what it’s like working with the team and experience the development environment first hand.
Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile, Design, Software, Testing on March 27, 2007 Nat Pryce, Romilly Cocking and I have just run a session on Test Driven Development using the new (so new, it has only just been released) JMock 2.0 library at SPA2007.
We got a lot of positive feedback, so I thought I would share the slides and some example code that we developed for the session.
Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile, Coaching, Learning, Teams, books on February 1, 2007Jennitta Andrea has published a wonderful experience report in http://www.stickyminds.com/BetterSoftware called The Case of the Missing Fingerprint.
Well worth reading. Nice work.
Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile, Testing on December 8, 2006The best part of XPDay is talking to people about what they do. I managed to catch Joe Walnes and Dan North’s talk on Awesome Acceptance Testing.
For as long as I can remember, Chris Matts and Dan North have been saying A user story’s behaviour is simply its acceptance criteria. If the system fulfils all the acceptance criteria, it’s behaving correctly; otherwise, it isn’t.
What I had missed is their really nice acceptance criteria template.
Given some initial context,
When an event occurs,
then ensure some outcomes.
For example
Given Joe has a current account with a balance of £1 and an overdraft limit of £100,
When Joe withdraws £50.00,
then the balance will be £49.00.
This is so expressive and so wonderfully simple that anyone in the business can write them. Thanks to Joe for showing me this.
Add to del.icio.us ,
Digg this , 4 Comments »
Posted by andy in : Agile, Humour, Teams on December 6, 2006The team I’m working width decided to organise their Christmas party and sent out the following email invite.

This apparently innocent email triggered the following amusing sponsored links!

Add to del.icio.us ,
Digg this , No Comments »
Posted by andy in : Agile on December 4, 2006I recently had the opportunity to help Rachel Davies run a class on User Stories (I was more the unglamorous assistant). The class produced some wonderful examples that we wanted to share. Rachel has blogged them. These are some of my favourites.
As a boy I want a big garden that can house a kennel so that my mum can buy me a dog.
As a teenage daughter, I would like my own bathroom so I don’t have to share with my younger brother (Kevin).
As Grandma, I want big windows to watch what is happening in the neighbourhood so that I can gossip.
As a dog, I want to live close to the park so I can go for walks and sticks to play with would be nice.
Fantastic.
Add to del.icio.us ,
Digg this , No Comments »