Today the FX engine went into UAT. Well, the nearest thing we have to UAT; a user looked at it… 3 bugs, differences between the new code and the current production version. All slipped through our test coverage. :(
I had actually expected more problems. Two of these new bugs look like they’re related, which is good. The third is an easy fix which could be viewed as an unwanted feature… What I found most disturbing about the two bugs was being shaken out of the safe, controlled, world of test first refactoring into bug fixing a piece of code that had insufficient test coverage.
So, family members having PCs that you feel obliged to look after for them. That’s some form of punishment for something, right?
Although the other developers on the refactoring project agree that the code needs to be made better sometimes they don’t seem to bother to make changes in a way that improves things…
This week a major new piece of functionality was completed. I helped with merging the branch back onto main and started to sort out the release; then I realised none of the test harnesses compiled anymore…
The developer responsible for the new functionality had changed an interface and then failed to update the tests to test the change.
The rates engine was now easy to test but the interaction between the engine and the user wasn’t. This was unfortunate as the interaction is reasonably complex. We hadn’t built and tests for any of the GUI code yet, last week we fixed that…
The rates engine interacts with the user via two grid controls, a master and optional detail display and a cluster of buttons. As the live data changes the grids update.
We first saw Catherine Purves’ work at a Hoxton art show, both of us loved the colour and texture of the pieces. We saw more of her work whilst visiting other local art shows but none of the pieces were quite right for the spaces that we had. Eventually we decided to commission her to produce something to our specifications of size and colour.
More pictures on the flat web site.
By Friday our FX test harness was pretty much complete. We had coverage for all the nasty special cases that had caused us problems in the last few weeks. They were the hard things to write tests for so we wrote those tests first. If we can these these things we can test pretty much all of the FX engine’s functionality. Now we just need to add back the functionality we removed when we were chainsawing the FX code out of the GUI code.
We’re approaching the end of this phase of the poker game project. The client has started reporting lots of little things that don’t quite work how he’d like them to. Some are bugs, most are feature requests, either way there’s suddenly more of them than I’m comfortable managing with lists on paper and email trails. I decided that I needed a proper way to track these things.
I looked at Bugzilla but it looked like I had to invest thinking time in it; I looked at FogBUGZ and it didn’t.
I was working for my poker game client yesterday. This project now seems to be firmly test first. What was interesting with yesterday’s work was how the tests drove the design and how when I finally came to integrate the tested code into the main body of code the required design changes weren’t an issue as I had a whole load of tests to support the changes.
I was adding some code to manage the pot during play.
Today we wrote some complicated FX business logic tests. Things like making sure that the FX library can calculate a EURUSDCAD 1M rate - it can; or a USDCAD ON rate - it can’t and nobody had spotted the fact that it was out because it’s way down in the 0.00001’s of the rate.
It has taken us around a week to get here. The initial code was a tightly coupled mess.
So, it’s been 35c here in London for the last week and, strangely, my thoughts have turned to snow… We’re off to Saas Fee in September and I’m starting to do the ‘check the resort web cam daily’ thing. Having never skiied in Europe this early in the season it’s a bit nerve wracking. Still, Saas Fee has a good glacier and they are used to this kind of thing; so, finger’s crossed.