http://www.developer.com/java/ent/article.php/3623476/Functional-Test-Plans-The-Right-Way.htm
In this article, you will discover the role of the functional test plan in the context of the full development cycle. You will also be presented with a template for a functional test plan document. And finally, and most importantly, you will be presented with arguments supporting the use of the functional test plan as a critical step of the application development life cycle. First, examine the definition of the functional test plan. As my professional career takes me from organization to organization, I notice that different people define the function test plan in different ways. I will concentrate on the definition that I feel is more appropriate in the context of the testing life cycle of an application. The functional test plan is not testing the underlying implementation of the application components. It is testing the application from the customer's viewpoint. The functional test is concerned with how the application is meeting business requirements. When creating a functional test plan, one must realize that it should be geared towards a non-technical audience. Therefore, references to underlying programming languages must not be present in the final document. The Author of the functional test plan must be a person who has in-depth knowledge of the business requirements. It is preferable that application developers do not compose functional test plans. The reason behind such an approach is simple: The developer's interpretation of the requirements might differ from those of the person who initially created them. The developer will almost subconsciously create test cases that will meet the functional requirements. He or she will be tempted to look for the functionality based on the implementation rather than re-examining the functional specifications. It is very important that you begin creating the functional test plans as early as possible. The work on the test plans can start as soon as the functional specification documents are completed. The test cases can reveal flaws in the functional specs. They also can help application designers translate the functional specs into a more accurate application design. A functional test plan is a dynamic document. It must constantly reflect the always-changing business requirements. So, even when the document is completed, it will most likely need to change. Figure 1 Figure 1 depicts the participants and their interactions with the functional test plan. The Author creates and revises the test plan including test cases, expected results, and pre- and post-test setup. The Tester executes the test plan by performing actions listed in each test case and records actual results into a separate document that is the copy of the function test plan (more on that in the "Test Plan Execution" section) but with the actual results of the test. The Reviewer compares the actual results with the expected results and determines whether the test case passed or failed the functional requirements. It is a good practice to have separate test plans for each use-case of the application. For example, a login and a policy search use cases should be separated into two documents. The functional test plan consists of six distinct sections: For example, you can provide the following information in this section: Test Case 1. Create new user profile. As you can see, I provided a pre-test setup for Test Case 1. Note that the [] square brackets denote that this element will be used as a parameter in the test case described in the document. The information in the square brackets can be interpreted as follows: Object Reference Name represents one of the objects of the application. For example, User Profile or Policy Search Form would constitute an object. Object Parameter Value represents an element within the object. For example, username is an element of the User Profile object. When the Author creates a test case, he or she can refer to parameterized values like this: Please review a test case template below: As you can see, the Author of the test case does not populate the "Actual Results" and "Pass/Fail" columns. Furthermore, the Author must stay away from providing concrete test data for a test case. For example: Test Case 1. Remove [UserName: "A": --> username: "A"] from the LDAP Server. When all of the test cases are completed, the Tester can execute the test plan. The Tester must follow the steps of the "Pre-test Setup" of the test plan. After the pre-test setup is complete, the Tester should follow the steps of the "Required Input" section of each test case and record the results in the "Actual Results" section. The Tester should record any supporting information into the "Test Results" section of the document. The Tester should not attempt to compare expected and actual results. The newly created version of the test plan is saved as a new document that represents one test run of this particular test plan. This allows you to come back to this test plan execution without cluttering the master test plan with test results. It also allows you to come back to the previous executions of this even when the master test plan changes. Reviewing the test results should be a collaborative effort between the Business Clients and the Reviewer of the test results. The reviewer is responsible for comparing "actual" and "expected" results and determining whether the test case fails or passes business requirements. The test results are then reviewed by the business clients and resubmitted to the development team for bug fixes as necessary. Now that you have reviewed the role of the functional test plan, you clearly can see its importance in the context of the application development cycle. Aside from its main goal, which is to test whether an application meets business requirements, it promotes communication between technical and business areas and helps development teams better understand business requirement. Download Functional Test Plan template here: Functional_Test_Plan.doc (this is a Microsoft Word document). Aleksey Shevchenko has been working with object-oriented languages for over seven years. Aleksey has been implementing Enterprise IT solutions for Wall Street and the manufacturing and publishing industries.
Functional Test Plans: The Right Way!
July 31, 2006
Functional Test Plan Definition
"The functional test plan measures the quality of the functional components of the system."
Functional Test Plan Audience and Author
Timing
Functional Test Plan Life Cycle

Click here for a larger image.
Document Structure
Update Date
Update Description
Updated By
07.19.2006
Updated Test Case #7. Added extra step to check for user
Joe Smith
[UserName: "A": --> username: "A"]
[UserName: "A": --> first name: "John"]
[UserName: "A": --> last name: "Smith"]
[UserName: "A": --> access level: "read-only"]
[UserName: "A": --> password: "profile1"]
[Object Name: "Object Reference Name" -->
Object Parameter: "Object Parameter Value"]
[UserName: "A": --> username]
Test Case #
Required Input
Expected Results
Results
Pass/Fail
1
Navigate to the login screen
Login screen with release number A is loaded.
2
Enter user name "INVALIDUSER", password "INVALIDUSER", and click on login button
Error message:
"User name is not found"
3
Enter user name for user [UserName: "A":--> username] and password "test"
Error Message:
"Password for user [UserName: "A": --> username] is invalid"
4
Enter user name [UserName: "A": --> username] and password [UserName: "A": --> password]
The main page is loaded with a message:
"Welcome [UserName: "A": --> first name] [UserName: "A": --> last name]
Test Plan Execution
Reviewing Test Results
Conclusion
About the Author