Hello all,
I just want to throw this out here as an idea I have and wanted some input
and/or direction.
I am currently working as a software developer and we have run into an issue
with our automated testing. The tests are currently taking 2+ hours to run
on a single machine, and many of the tests are client-based through the
actual application.
We have started by breaking up the tests into groups that can then be run on
different machines, but the management is clumsy at best (set-up still takes
the same amount of time as on one machine, but of course once we get going,
the actual tests run in 1/5 of the time). The setup required to run the
full test suite can range from 10 minutes to 1/2 hr (database, xdoclet,
deploy, BEA Weblogic startup).
My thoughts were to tackle this in 2 phases:
Phase 1: The test scripts are served by an individual machine via a test
queue that any developer can create. The queue machine would take a
request, then pass on the next test in the queue. This would load balance
the tests, and make it much more scalable across several different machines.
In and of itself, not to large a prospect.
Phase 2: The queue machine will take as part of it's request the results of
a CVS diff command, pulling out the changed files. Queue gets set up as in
Phase 1, but the tests on the queue are only the tests that touch the
dependency tree of the modified files.
The problem with Phase 2 is that I would have to create a dependency tree,
which I think could be done via the imports of the changed files. It would
have to recursively go both up and down the tree (ie. and files used by the
modified files and their children, as well as any files that use the
modified files as well as their ancestors). This just screams compiler to
me, and short of re-inventing the wheel, I am looking for suggestion as to
whether or not there is anything (preferably open-source) that would have a
starting point for the creation of this dependency tree. If I can get a
jump on the dependencies, the actual serving of the tests is trivial.
I don't know if this is the appropriate place for this question as well, and
will gladly move it to anywhere it is deemed more appropriate, but it has
been a while since I've been in the groups.
Anyone who has a suggestion or can point me in the direction of a forum, it
would be much appreciated.
----
Michael Melvin, BMath
ma****@alumni.uwaterloo.ca