I recently had to test a number of changes to a .net web service
which had no test automation, no regression tests, and no specification apart
from the service contract and a subversion change log. In addition to this, there
was also no indication as to when the last release of the service was so I had
no idea from the change log which changes were live and which required testing.
Fortunately I had access to the live binaries which meant
that I was able to decompile them using Red Gates Reflector, and drill into
individual methods. This gave me the ability to cross reference whether the changes
listed in the change log were actually live or not.
It took about an hour to analyse the decompiled code, but this
reduced the potential test time from approximately four days down to less than one.
It also gave a reassurance that no untested code would be released.
A decompiler is a great tool that gives you further insight
into the code you are testing. Red Gate’s .Net Reflector, is one the most
common for .net which I use a lot. For Java there are many plugins available
for most common IDEs, I’m currently playing with the “Java Decompiler Project”.