Functional testing includes validating functionalities of any given program. Typically, functional testing involves black box testing. A tester identifies if a set of code is meeting any given criteria. Functionality is the only thing measured. Design and user experience are not considered during functional testing.
Even small changes or modifications to software can bring unexpected issues. Regression testing becomes very important to test whether existing functionality is impacted. Regression testing ensures every functionality is working properly after any update or modification happens.