Tuesday, October 30, 2012

Test data for BDD

My team has been running into issues with our functional tests.  Two things seem to be at the core of it:
  1. Running a single test takes enough time to disrupt the flow
  2. Setting up test data for them has been painful
Out of these the second has been the major concern.  We've got some ideas for speeding up the running of the tests, but haven't started using them throughout the team (like using grails interactive mode).

For test data the team has decided to go with a static database.  I have some concerns with this approach because I'm used to building up the test data and I've had issues with sharing test data leading to pollution between the tests.

An advantage we have with our application is that a majority of the data stored in it is generated during normal processing.  So, in theory, once we've got a set of data we can work with it in isolation.

A disadvantage, is that it takes a bit before we've generated all of the data for the full set.  So we can't quickly generate our data.  The real issue here is when we update our data model.  In general we've been willing to wait the days that it might take for all accounts to be updated.  Running tests against a static database means that we'd need to be able to generate the test data for it or wait for the released code to process it and copy it over to the static system.

Though maybe we could cut a path in between the static and live by limiting how much data we pull in and only working on the subset.  This means we'd generate the data each time before running tests against it and expect to reset it for the next time or at least refresh it.

I'm still leery of not exploring edge cases, but maybe that's not the place for functional tests.  Should we just let them thread through things to make sure everything is communicating, but rely on integration and unit tests to explore all of the variations and make sure they are covered?  Seems plausible - though I think I should do more reading on BDD and the various disciplines around that.

Monday, October 22, 2012

First iteration under XP

Unfortunately, I went on vacation the last day of the iteration, missing the demo and retrospective.  From my perspective we stubbed our toes a bit.

We focused on our most recent app that had been developed using BDD.  It was the teams first shot at it, so there were definitely rough edges to our practice of it.

We're struggling a little with defining what our tester should be doing.  Our current focus is helping with developing acceptance tests and doing some exploratory testing.  This felt awkward during the first week because our tester didn't have access to our git repository and was sick/working from home at the beginning of the sprint.  So we didn't communicate or share the acceptance tests we had already developed.  I hope getting access to the git repo will help some of this.  Regardless, we need to take time to discuss them.

Another painful spot was a story that ended up bring much larger than expected.  What made this painful was we recognized that there was more work and discussed it as developers, but neglected to create a task to expose it.  So when we ran into some trouble we ended up splitting the story at the last minute.

Finally, we had some difficulties working through the automation of our acceptance tests.  Between learning how to write the tests and learning the tools (cucumber and geb) we stumbled a couple times.

While I enjoyed Florida, I was a little sad to not be with the team as they start the second week of this.

Sunday, October 7, 2012

Transitioning to XP


My team at work is in the process of reading The Art of Agile Development by James Shore and Shane Warden.  I gather initially it was brought to the team as a way to learn how to improve our writing of stories. We've decided to go further with it and try to rethink our development process.

We have seven developers that maintain several applications, with generally two or three of them getting focused attention (more than just fixing bugs) at any given time. These apps vary greatly in how much automated testing had been done for them and how much technical debt they've pulled up.

Our first step/attempt is going to involve one person trying to do any necessary maintenance work for all but one of the apps. Everyone else will be doing a release on the remaining one.

Some concerns we've got:
  • How quickly can we minimize the maintenance role? Cause it's no fun being the only one on the outside.
  • We don't have a coach. The book seems good, but experience is better.
  • We've still got a bunch to learn/internalize.  From TDD to visible charts to retrospectives.  While it makes sense it's not second nature so we'll have to be mindful - not the worst thing to have to be. :)
  • We can't just focus on one app and switching between them will be necessary to continue to deliver value for each of them.
  • We've got a customer identified for our first product, but the other apps aren't as clear cut for who could serve that role.
I'm certain will have more concerns and challenges as we go along, but hopefully we'll keep moving forward.

Tuesday, February 7, 2012

Another day of games

I took the drive down Woburn, MA for Unity Games 18, to get another day of games in.  This time a couple friends went down with me.  We played through a number of games that I wanted to try out as well as some extra ones.  Here's my take on the games we played:

Kingdom Builder - This game has very simple, deceptive (at least for me) mechanics.  The part that kept tripping me up was that when placing new pieces they had to be next to your currently played pieces if that was possible - otherwise you could place them anywhere.  My brain had a hard time keeping track of this when switching terrain.  To be sure the rules were clear - it was just my brain fog.  We all felt this was a solid game and it is definitely going on my wish list.

Discworld Ankh-Morpork - Based on the Discworld books by Terry Pratchett - one of the guys I went with knows the books and was curious, so we gave it a whirl.  Each player takes a character that has a different victory goal (though all the goals aren't unique) and you go about trying to make that happen.  The trick is that the goals are kept secret so while you're going for yours you need to try keeping other goals from coming about.  Easy game to learn that was enjoyable, but not one that I'm wanting to own.  (Though the guy who knows the books liked it so it might still end up at game nights, which I won't complain about. :))

Eminent Domain - A deck building game that was very enjoyable.  It had a completely different feel from Dominion, other than building up a deck of cards.  The theme was nice in that you were exploring planets (that stay in the place in front of you) and colonizing or using military to conquer them.  You deck consists of role cards, that are more effective the more you have at a time, and technology improvements that you get through the Research role (which can help with Roles as well).  This was a very enjoyable and definitely one on my wish list.

Santiago de Cuba - Initially I was thrown off by the randomness of how the board was setup, but after thinking about it for a bit I realized the changing of the Cubans and the Buildings makes for interesting combinations that need to be accounted for in each game.  The main play has you driving a car around to stop in front of the shop for a Cuban or the port to load up the ship with goods.  However, you can move the car extra (for some money) to get what you want, or (maybe more importantly) to go past something someone else really wants.  Another for the wish list!

Wiz-War - This game got a big-ole thumbs down from all of us.  The build quality was nice, but the rules were annoyingly complex for a game that was essentially all about beating up the other players and/or stealing their treasure.  It would be good for slap stick game if it wasn't so painful to start up.  Apparently, it's a remake of a game that was notorious for bad rules.  For my money I'd rather play Dungeon Twister - though I haven't played that with the 3/4 player expansion.

Princes of Florence - The first thing that struck me about this game was the font used for things, which really threw me off at first. For some reason I found it distracting, even though I felt it was appropriate for the theme. Once I got past that, however, I was able to enjoy this auction game - though in this play I initial severely misjudged what my friends wanted while I was trying to up the bid only to increase what they paid for things. I enjoyed the balance of things and would definitely pick up this classic.

Africa - I consider myself a fan of Reiner Knizia's game designs, but this one left me pretty board. You have some limited options available and for the most part you felt you were at the mercy of the tiles you flipped up. There were ways to work with what you got, but it felt too luck heavy and didn't make any of us really want to play it again.

Medici - Another, more respected, Knizia game with an auctioning mechanic. This revolves around the very simple mechanic of players taking turns proposing a set of 1 - 3 items to be shipped of different values. Players get one chance to bid on each set and if they win they spend money and put them in the 5 spaces on their ship. More money is acquired by having the 1st and 2nd most point totals on their ship or the most items shipped per good. So you're constantly balancing how much it is worth to go for any given offer. I'd love to play this and while not at the top of my wish list, I still hope to get it. I'd also like to play it with more people.

I was going to try out Troyes, but I saw it in their silent auction along with Masters of Venice and since the money goes to charity I figured what the heck and bid it up.  Not that I knew anything about the second game, but now I'm looking forward to pulling them out at a future game night.

Glad I was able to make it down for another Unity Games and hopefully I'll be able to snatch up the games I tried out sooner than later. :)