Another format that's useful for testing (both integration testing and user acceptance tests) is a numbered list of statements where each statement is a single fact about what the software must do.

E.g.

1. The system must require the user to log in with a unique username and a password.

2. The system must supply an option to allow the user to change their password once they are logged in.

3. When changing a password, the user must supply their existing password as well as their new password.

...

 

Break it up into sections based on functional areas so it isn't too overwhelming.

In this format it's easy to do through the list and check off each item when testing.  It can also form the basis of the user's sign-off when the system is complete.

Herbie