Recall that in my pairing session with Chet, we realized that though we have a set of programmable Customer Acceptance Tests, they aren t testing end to end as well as they should. We can forget to handle a new keystroke in the GUI and the Customer Acceptance Tests will run. On the C3 project, we had a saying, sb end to end is further than you think, and this is an example of that.
So I also did a little research on how GUI programs can be made more testable. I came across Michael Feathers s article on the Humble Dialog Box, at www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf. The article is in C++, so it helped me along but also left me unsure about how to connect the ideas into our XML Notepad. I also chatted with Michael, and with Brian Button, who wrote a C# program along the lines of Michael s Humble Dialog Box notion.
I realized after a while that what I was trying to do was to get a sense of the future. Now as an XPer, I m not supposed to care about the future, at least not to the extent of putting the future into my code. So what s up with that?
I realized that since I don t have much experience building GUIs the .NET C# way, I was sensing things that were wrong with the code ” code smells as Beck and Fowler would have it ”but I didn t know what to do about those smells. I was feeling nervous, and the feeling was telling me that I needed to understand more about what might happen.
So I d offer that lesson to the reader, as well: when you re looking at part of the system that doesn t seem just right, trust that feeling. If you know what to do to improve it, do so the next time you re working in that area. And if you don t know what to do, take it as a signal that it s time to do some research, time to add a few things to your bag of tricks. Don t use those things, necessarily , in the real program, although you might well want to experiment. But do take the occasion to learn.