Chess TDD 61: Testing an Actual Game
Editorial Note: I was featured on another podcast this week, this one hosted by Pete Shearer. Click here to give it a listen. It mostly centers around the expert beginner concept and what it means in the software world. I had fun recording it, so hopefully you’ll have fun listening.
This post is one where, in earnest, I start testing an actual game. I don’t get as far as I might like, but the concept is there. By the end of the episode, I have acceptance tests covering all initial white moves and positions, so that’s a good start. And, with the test constructs I created, it won’t take long to be able to say the same about the black pieces.
I also learned that building out all moves for an entire chess game would be quite an intense task if done manually. So, I’d be faced with the choice between recording a lot of grunt work and implementing a sophisticated game parsing scheme, which I’d now consider out of scope. As a result, I’ll probably try to pick some other, representative scenarios and go through those so that we can wrap the series.
What I accomplish in this clip:
- Get re-situated after a hiatus and clean up/reorganize old cards.
- A few odds and ends, and laying the groundwork for the broader acceptance testing.
Here are some lessons to take away:
- No matter where they occur, try to avoid doing redundant things when you’re programming.
- If, during the course of your work, you ever find yourself bored or on “auto-pilot,” that’s a smell. You’re probably working harder instead of smarter. When you find yourself bored, ask yourself how you might automated or abstract what you’re doing.
- When you’re writing acceptance tests, it’s important to keep them readable by humans.
- A seldom-considered benefit to pairing or having someone review your coding is that you’ll be less inclined to do a lot of laborious, obtuse work.
- Asserting things in control flow scopes can be a problem — if you’re at iteration 6 out of 8 in a while loop when things fail, it’s pretty hard to tell that when you’re running the whole test suite.