A test case is composed of two things: an input that you would expect your program to handle, and the expected output for that input.
Test cases help prove that your program behaves as it should. It is best if you write your test cases before you run them through your program, although some test case outputs (like those for most labs you have done so far) can easily be verified as correct after the fact. It may not be so easy to eyeball if the answer is correct later on.
You should invent test cases that will put pressure on all different parts of your program. Questions you might ask yourself about your program as you think of test cases:
The overall question is:
You cannot try all possible test cases, but you can pick a few important ones that illustrate the possible places that your code could fail. When working on labs, create enough test cases to illustrate that your program handles each of the lab requirements (and then some).