Wednesday, April 19, 2006

Implementing Daily Build and Smoke Test

One important aspect of Daily Build is the word Daily. Steve McConnel mentions two similar metaphors for a Daily Build in his article about Daily Build and Smoke Test:

On the one hand, Jim McCarthy [*] compares the Daily Build with the beat of a heart. Once the heart does not beat any more, the project has died. From another point of view, the Daily Build is an integral part of a functional software project in this context: A project without Daily Build is nonviable.

On the other hand, Michael Cusumano and Richard W. Selby [**] think of Daily Build as
a synchronization pulse. Code fragments of different programmers are allowed to come a little bit out of sync between two pulses but after the next sync pulse, all parts of the project must fit together again.

The next point to think about is a useful broken build management. It is very important to find a good balance between a too weak and a too strict contract. Such a contract should contain all the show stoppers that really break our project but exclude uncritical defects that only interrupt the software building process while being no threat to our projects healthiness.

Next issue to address is the need for a matching Smoke Test. The best Daily Build is worthless without a good designed and balanced Smoke Test. Such a Smoke Test must not include all features of the whole system (which would be very difficult to test) but should comprise the major parts of it. So if this test fails, we will know that we are in trouble.

Another important point is to let the development team know about the importance of not breaking the Daily Build. Most teams do so by introducing a penalty for that developer who is responsible for the clash, like a small fee. That programmer should then work on the problem until it is solved.

Goal of this strategy is to let a breaking build be the exception, not the rule.
Last but not least it is important to continue using Daily Build in stressful times, too. Especially in such situations, the effort for the build process can seem useless but it isn’t. Stressed developers make more mistakes, quality is decreasing -

Daily Build is then more necessary than ever.

* Steve McConnell. Daily build and smoke test. IEEE Software: Best Practices, 13(4), July 1996.
** Michael Cusumano and Richard W. Selby. Microsofts secrets. The Free Press, 1995.

No comments:

Shared Cache - .Net Caching made easy

All information about Shared Cache is available here: Its free and easy to use, we provide all sources at codeplex.

Facebook Badge