A regression in behavior means an undesirable behavior that was present and fixed once before, or a previous feature that worked before and is now broken. During the process of developing the fix, there should also be an automated test developed, that would fail before and pass after the fix is applied. This test then becomes a regression test. Such tests are almost always automated.
Regression testing is ideally triggered by a CI (Continuous Integration) system, in response to receiving changes to software under development in a revision control system. Its purpose is to determine whether a particular change has caused a regression in some part of the program. It usually is performed by running a set of the program’s automated test cases. Regression testing is important because changes and bugfixes may be prone to errors, and may re-introduce problems that did not exist in previous versions of the software.
Squish is a tool that is ideally suited to help automate regression tests against GUI software under development. The Squish command line tools and addons allow you to easily integrate Squish with your favorite CI system, such as Jenkins, so that your regression tests are run at the appropriate times, and failed tests will show up in a nicely formatted HTML page so you can clearly see precisely where and when the regression was introduced for a particular change set (not to mention, which developer is the guilty one!).