1. Determine if it is working as it should
2. Test each sub-system separately before testing the whole system
3. Work through algorithms written in pseudocode or flowcharts with test data to see the result
4. Thoroughly test with different sets of test data
5. A set of test data includes all items required to work through a solution
6. Use test data that the program would normally work with, along with expected results