- Collaborate when creating acceptance tests. Developers and testers should be encouraged to work together.
- Create separate FitNesse fixtures for setting up test data, exercising the SUT, and making assertions on the result.
- Names are important. The readability of your test cases will improve.
- Write unit tests for your fixtures. Their design will benefit.
- Keep your tests independent. Intra test dependencies will lead to tears.
- Use dependency injection. Decoupled fixtures can be reused more easily.
- Document your fixtures. This will help you write clear test cases.
- Think carefully about logging. Debugging will be less painful.
måndag 12 oktober 2009
FitNesse revisited
torsdag 10 september 2009
Pythagoras moment
torsdag 3 september 2009
Retrospective serendipity
If we hadn’t run out of time at our latest retrospective then I wouldn’t have discovered SurveyMonkey.com.
We usually end our retros by dot voting on a list of suggested improvements. This time the retro had been particularly fruitful – lots of interesting discussions and a dozen improvement suggestions. And then our time ran out.
With various team members already heading off to their next meetings I rashly promised to send out an internet based survey so that we could at least prioritize our improvements list before the afternoon’s planning session.
And then I started to wonder if I’d promised too much. With no time to do an in depth market analysis and after a quick google I selected SurveyMonkey. A choice I wasn't going to regret. 15 minutes later the survey was sent out and in the following planning meeting we had a nicely prioritized list of suggested improvements.
It worked so well that I think we’ll do it this way again – even if we don’t run out of time in our retrospective.
tisdag 1 september 2009
Scrumming for Britain
As a scrum master I sometimes find it useful to compare what I do with coaching a sports team. Recently I was given the opportunity to put this theory into practice when I was invited to coach a national team at the World Orienteering Championships.
One of the most important jobs of a scrum master is to ensure that the day to day work of the team runs smoothly. Above all a happy team is a productive team. Likewise a happy team of athletes will get better results. So this was one of my main targets when going into the World Championships – shield the runner’s from any external problems and create a positive atmosphere.
You might think that a coach would spend most of his time telling the athletes what to do. But for a team of experienced international athletes there’s not an awful lot new to tell them. In fact I found myself working more like a facilitator – stimulating discussions, and encouraging the athletes to come up with their own solutions for handling the race situations. Very scrum masterish!
Of course there are differences too. Running a major championship is more comparable to releasing a system rather than working in scrum sprints. Though this is just what the athletes do in the run up to a major race. Using short, medium and long term goals they work incrementally towards the big release date.
So how did it go? No medals this time but some successes as well as a few disappointments. Now I hope there will be a chance to do a retrospective with the team – I’m sure that would help them get better results next time. And help me to do a better job, if I’m asked to help again.
onsdag 29 juli 2009
Fitnesse refactored
- setup the test data
- exercise the code to be tested
- perform assertions on the result
tisdag 9 juni 2009
Service Registry Manifesto
- clarity and conciseness over detail and completeness
- flexibility and expandability over specification and planned structure
- integration with existing sources over creation of new content
- encouragement of use over contractual restrictions
måndag 1 juni 2009
Sniffing out success
In a previous life I was an elite orienteer. When I was racing to the limits of my ability one of the key success factors was reacting to mistakes and correcting them before they caused time loss. A bit like fixing code smells really. Nipping small mistakes in the bud before they grow into major time wasters.
As an orienteer I learned early in my career that the key to perfecting this skill is training, training and training. I'm convinced this is also true for the programmer. Mastering the skill of sniffing out code smells and cleaning them up comes only with practice - lots of it.
And just like the very best athletes, you should never be really satisfied. Skills need to be maintained with constant training, and there's always always room for improvement.
torsdag 9 april 2009
Pain Threshold
<target name="_execute_maven">
<echo>mvn ${line}</echo>
<exec executable="${mvn}" dir="${execute.basedir}">
<!-- save the log to a property too -->
<redirector outputproperty="test.out"
alwayslog="true" />
<env key="JAVA_HOME" path="${java.home}" />
<env key="MAVEN_OPTS" value="${mvn_opts}" />
<arg line="${line}" />
</exec>
<condition property="fail.status">
<!-- search property for failure text -->
<or>
<contains string="${test.out}"
substring="BUILD FAILURE" />
<contains string="${test.out}"
substring="BUILD ERROR" />
</or>
</condition>
<fail if="fail.status" />
</target>
tisdag 31 mars 2009
Design Last
torsdag 12 mars 2009
Notepad Revival
onsdag 4 mars 2009
Building Bridges
- focusing on delivering value to the customer
- eliminating activities that don't deliver customer value
- creating cross functional teams with customers and suppliers working in partnership
- empowering and encouraging workers to improve their own processes.