Functional testing should be performed at various stages of the Software Development Life Cycle (SDLC). Initially, it can start at the unit testing level once individual modules are developed. It should be intensified during the integration phase as modules are combined and continue through system testing when the entire system is evaluated. Finally, it's crucial during acceptance testing to ensure the software meets business and user requirements before deployment.