A regression test is a check you re-run after making a change, to confirm that something which already worked still works. The point is not to test the new feature, but to catch the case where fixing or adding one thing quietly breaks another.
Picture renovating one room in a house and then walking through every other room to make sure you did not knock out a light switch or block a door. That walk-through is the regression test. In software, each test case you wrote earlier becomes part of a growing safety net, and many of them are small unit tests bundled together. Run the whole set after a change and you know within minutes whether an old, fixed bug has crept back in.
Because the same checks run on every release, teams almost always automate them. Doing this by hand on a real product is slow, and the moment it feels tedious, someone skips it and a bug slips through.
A real example: you fix the discount code field on checkout, and a week later shipping costs stop calculating. The two features shared a price-rounding function, and your fix nudged it. Without a regression suite that change ships unnoticed until a customer complains. With one, the shipping test fails on the spot. This makes regression tests the quiet partner of refactoring, where you change code internally and need proof the behaviour stayed the same.
In practice the suite grows from your bug history. Every time a real defect is found and fixed, the team adds a test that would have caught it, so the same bug can never return unnoticed. Over a few years that becomes hundreds of small checks, and running them costs a few minutes of machine time rather than a day of someone clicking through the app by hand.
At TopDevs we build a regression suite as the product grows, so each new release ships without quietly undoing the last one.