System testing is end to end testing performed to check if the software meets the specified requirements. It can be functional or non functional testing and is performed by developers and testers.
User Acceptance testing is functionality testing performed to check if the software meets the customer requirements. It is pure functional testing and is performed by independent set of testers and also the stakeholders, clients.