Today we proceeded quite well with our test strategy. We figured out that we have to split our test strategy into two parts.
- Legacy code
- New code
Majority of our backlog work belongs to the first category. So we did some thinking and figured out that the majority of our testing effort and its automation must go to the version that will be around for longest. This meant that we won’t be automating anything for the version which will drop out of support after the next release. We might automate something for the middle version if the automated tests will work with the latest release with no or very little effort.
With legacy code we will of course focus mainly on integration testing and its automation since it does not make sense to introduce unit testing to source code that can be over 10 years old.
The new code part is another thing altogether. So far we have been using ClearCase as our VCS. Now we have a perfect opportunity (and management approval) to switch to modern DVCS (Mercurial). This enables us to bring in new tools like Maven within the same transformation. Thus, we are finally in a position where we can uilize the latest tools and best practices of agile methods (like TDD, which I brought recently to our unit, but that’s another story) and build a full continuous integration system.
We can finally have a system that can actually clone the repositories, build the software, run unit tests, create and deploy installation packages, run system and integration tests and report the results with one single click (or from a timed execution).
Of course achieving all this takes time and work but this realization alone feels very liberating. It’s like a breath of fresh air after years of smog. We can finally get rid of legacy in-house build systems! 21st century, here we come!