How to Save Time by Automating your Development Process
In some of my other posts I have talked about ways to speed up the process of delivering software. Below is a bullet point list of items I have been involved in over the past couple of years. From start to finish these steps have improved the quality of our development teams and our products.
Source Control – Team Foundation Server (TFS)
I hear a lot of people downing TFS. However I have had nothing but good experiences using it. Setting it up proved a pain (at least 2008) but with 2010 it has become much easier. It integrates well with Visual Studio 2010 which is my main IDE thus is the perfect choice.
Continuous Integration (CI)
Continuous Integration is the process of automating the build process from your source repository. There are a few good products on the market but my favorite is TeamCity by JetBrains. It is written in Java and seems to be the most flexible across many different languages and platforms. The best part is it is free for the Professional edition which for my personal development environment is great. There are a number of different build configurations and agents that are available. It is the “manager” of our whole build process.
CI includes
- Building Source Code
- Running Unit Tests
- Running Integration Tests
- Building the MSI installers
- Starting the data generation processes
- Other miscellaneous tasks
Installations
There are many ways to package software for installation. Some of the more common vendors such as InstallShield and Wise allow for automating the building of the installer packages (MSI’s) so this can be incorporated with the CI server above. Plus with the MSI’s you can script the installations with simple windows batch files.
Testing Environments (QA)
In one of my previous posts I wrote about automating VMware workstation. I have been doing this for over two years now and it works flawlessly.
http://tsells.wordpress.com/2009/09/20/how-to-save-time-automating-vmware-workstation/
As a developer – I still automate and install the build locally so I can be more effective when working with our Quality Assurance Team to assess any anomalies that may occur between a development and production (installed) environment.
Test Data
Test data is critical for developers and testers to be able to confirm the product is working as expected. There are many different ways of developing this. I personally have done this with SQL Scripts, 3rd party utilities, and now I am using a tool I built custom that builds databases for all supported database platforms.
Summary of Process
- Developer checks in code throughout the day
- Source Code is downloaded and rebuilt continuously
- Unit / Integration Tests Executed
- Daily Build Runs (full build to use for the steps below)
- MSI installs build
- MSI’s deployed to Server
- Data is generated
- QA Testing environments are reset
- Once the developer checks the code in – there are NO man hours involved to setup the environments to be ready for testing. When this was a manual process, it took at least 6 – 8 hours for the process to be completed by no less than 4 people.

