Regression Testing is performed when there is a change in the Code developed or environment change or Build procedures change or Application Framework change.
Regression Testing is done to validate that modifications to anything in Code is NOT effecting the developed Application. So we think of all possible scenarios that can effect the developed application. It is
Usually done after the functional testing gets completed.