I agree testing is an important part of Refactoring. http://www.softpanorama.org/Bookshelf/testing.shtml This testing related web site does recommend the Refactoring book though. "Refactoring--improving the design of existing code" by Martin Fowler. I think it is the first click on the left at the top of this forum.
Testing is so important that some Extreme Programming authors consider it a prerequisite for refactoring. If you can't test that your software performs the same after your refactoring as before, then refactoring can become too risky and too expensive to take on. In theory, each refactoring is designed to have no effect on the overall function of the software, but in practice the process of refactoring can cause behavioural changes. For systems (like Java) which currently have little or no automated support for refactoring, there is always the chance that the programmer might type something wrong, edit the wrong file, delete some code by mistake, whatever. There is also the possibility that a refactoring might excercise a bit of code which has never been fully tested, or is poorly named or misunderstood. So to enable carefree use of refactoring, a good and fairly comprehensive regression test harness (or at absolute minimum a good set of test cases) is extremely useful. The one-two punch of automatic regression testing and rigorous refactoring (rather than just tikering) is capable of delivering real development and maintenance benefits, and potentially more than the sum of its parts.