I've been reviewing a lot of test plans recently. As I review them, I've compiled this list of things I look for in a well written test plan document. Here's a brain dump of things I check for, in no particular order, of course, and it is by no means a complete list. That said, if you see a major omission, please chime in to let me know what you expect from or include in your test plans. These requirements may or may not work for you based on your development methodology, but it's what I look for :). I'm sure I'll think of several more points as soon as I publish this post!
I always like to see the testing strategy called out early in the test plan. In general, it's always best to vet your testing strategy with your team as early as possible in the product/feature cycle. This helps set the stage for future test planning discussions and most importantly, it gives your teammates an opportunity to call out any flaws in the strategy before you've done a bunch of tactical work such as creating individual test cases and developing test automation. Some key points I look for in this section are:
What known risks are you aware of? Some examples might be building on top of a new platform/framework that hasn't been fully tested yet, tight schedules, or relying on components delivered from external sources or other teams. Once you've called out the major risks, list what you are doing to mitigate the chances each one could impact your project? For example, do you have escalation paths identified in case you find bugs in those external components?
Ideally, this would be merged into a common team schedule so you can see dates from each discipline alongside each other. Dates/testing events listed should include dependencies (e.g. Test Plan Initial Draft Complete" probably depends on "Feature Architecture Spec Complete" and "End User Scenario Spec Complete" dates being hit). Sharepoint is a great place to keep a team calendar for feature development, and the test plan can simply contain a link to the current schedule.
Each test case listed should be written in such a way that someone who is only loosely familiar with the feature (and armed with the feature specifications) can execute the test cases. This is helpful for several reasons: churn among testers on the project, it facilitates hand-off to test vendors or servicing teams (if you're lucky enough to have one!), and most importantly, clarifying what is and isn't being tested by reducing ambiguity in the test plan.
Make sure you use the right cover sheet! (Did you get that memo?) :) Seriously though, if your team has a test plan template, by all means start with that! Chances are it's much more than a "TPS report". Templates give you a framework to help you think through your test planning process. You probably don't need to include each and every section in your final plan - just include the sections that are relevant to the feature/product you are testing.
There you go. I hope this helps you think through your own test planning process. Again, if you have suggestions for other important points to cover in a test plan, please leave comments to let me know!