A functional testing plan usually follows the below sequence:
Identify the Testing Goals
Functional testing goals are the features the software is expected to have based on the project requirements. Testing goals include validating that the application works as it was intended to, and that it handles errors and unexpected scenarios gracefully.
Create Test Scenarios
Develop a list of all possible (or at least all the most important) test scenarios for a given feature. Test scenarios describe the different ways the feature will be used. For instance, for a payment module, the test scenarios may include multiple currencies, handling invalid or expired card numbers, and generating a notification on successful transaction completion.
Create Test Data
Create test data that simulates normal use conditions based on the test scenarios you identified. You could enter test data manually (e.g. from an MS-Excel spreadsheet or a printout) or automatically via a script or test tool that reads and inputs the data from a database, flat file, XML, or spreadsheet. Each set of input data should also have associated data that describes the expected result that the input data should generate.
Design Test Cases
Create test cases based on the different desired outcomes for the test inputs. For example, if you enter an invalid credit card number, the application should display a meaningful error message.
Execute the Test Cases
Run the test cases through the application and compare actual outcomes against expected results. If actual and expected outputs are different, the feature has failed the test and a defect should be recorded.
Deliberate On, Track and Resolve Defects
Once a defect is identified, it should be recorded on a formal tracking system that’s accessible to the entire project team. The requisite changes should be made to the application and the test case executed again to confirm resolution before a defect is marked as closed.