Friday, February 15, 2008

Continuous Integration an Load Performance Testing

Interesting post on Dr Dobbs about Continuous Integration and Performance Testing. Worth checking it out but here's a taster:

A continuous integration process requires (paraphrased from Fowler's paper):
  • A single code repository. (I use Subversion, but you could use others like CVS, Perforce, and so on.)
  • Automated build process with self-testing. (I use Apache Ant, you could use Maven.)
  • Daily code commits.
  • Continuous integration server that can build, integrate, and test the entire application quickly.
  • Ability to test in a clone of production environment.
  • Ability to broadcast overall build status.
  • Ability to automatically deploy and broadcast availability of builds.

Continuous integration processes go beyond simply ensuring that the automating build compiles cleanly. To declare a build to be successful, it must pass basic functional tests. So we do need a somewhat mature development process, where teams all work from the same code repository, write a test case for the functionality they develop, build and test their functionality locally, refactor, and verify—only then committing their changes (frequently, at least daily) to the source code repository.

The continuous integration server includes functionality that detects that code has changed, checks out the code, and then builds and tests the entire application in a clean environment, eliminating the vagaries of individual developer's environments. If the build or tests fail, developers are notified immediately, when they are most able to easily and quickly fix the problem they introduced.

load and stress testing