Unit testing is conducted by developers to test individual code components in isolation. System testing integrates components and tests interfaces using stubs. Non-functional testing includes load, stress, security and disaster recovery testing using automated scripts. Business process testing approaches testing from an end-to-end business process perspective to ensure integration across systems. User acceptance testing involves end users testing the system in a production-like environment before going live. Dress rehearsal testing mimics day-to-day operations in the production environment to validate the system is ready to go live.