When working with medium-large projects it’s quite common to create daily builds (nightly build). This practice is there in place for several years ago. But still we’ve projects fail to realize the importance of daily builds and smoke tests. Why daily build and smoke test is important in Software development?
It helps us to know something broken in main line (the common points where people checkin their work products). The integration risks can be reduced by daily builds. Especially when working with multiple teams/modules, it’s quite often that they update their interfaces. Daily build must ensure rebuild and relinking of dependent modules. A Good build must possess the following qualities
- Compile and link file, libraries and other components successfully
- Properly start and no big issues in operating it normally.
- Avoid showstopper bugs
- Pass the smoke test
Smoke tests must address the issues in the integration testing, end to end functionalities. The test is not required to be exhaustive but the basic and core functionalities must ensured to work well. Also the integration issues must be addressed during smoke tests. The right kind of tests must be selected according to the situation and latest changes happened in the product. Without smoke test, the daily build exercise is a waste of time.
Eliminate the feeling of low quality – When I work with my customer, he always used to say. “Keeping the quality of main line is very important. The functionalities must not be broken and degradation should never happen. Keep the problematic source code in development branch. Later fix and merge.” When see our product running without problem and consistently improving, it’s a good sign of development. Keeping something broken as latest is extreme danger. Breaking daily build is something should be considered as the top priority in any projects. Breaking nightly build causes problems for the other developers too. They must be waiting for the daily build to continue their work in the latest environment. The developer who caused breaking the build must stop his work and proceed to fix the issues caused in the mainline.
Fundamentally, developers must treat the daily builds as the heartbeat of the project ( Jim McCarthy, Dynamics of Software Development ). If there’s no heartbeat, the project is dead. Also keeping his work in high quality for long time and seeing it everyday improves the morale.
The effort for preparing the daily build must be minimal and automate as possible. The build platforms like, MSBuild, make, Apache Ant, Nant etc. Using IDE for daily build is a bad idea and extremely hard when dealing multiple projects and large number of source files.
PS: I used the term mainline, which used along with Rational Clearcase. There must be a different name you address it, I’m sure