That's what I get paid for.

The first thing I would do is come up with a set of Test Cases. I just use a spread sheet to enter my test cases into. I use these columns:

Code:
ID | Pre-condition setup | Test Steps | Expected Results | Pass/Fail
Give each test a unique ID (not required, but useful for organizing hundreds of test cases), list any steps you need to do before you run the tests in the Pre-condition Setup, put the explicit steps required in the Test Steps, put what should happen in Expected Results, and when you run the tests you can put a P or F in the Pass/Fail column. Only put one test per row, don't try to do too much in a single test; and don't make the test steps or expected results ambiguous in the slightest bit, otherwise it might affect the reproducibility of the test later.

Once you have a good set of manual tests you can run, you can try adding automated tests. Try looking into a framework like cppunit to organize your automated tests. These usually test individual functions or classes by passing valid & invalid values to them, as well as doing bounds checking (i.e. pass the minimumum, maximum, min - 1 & max + 1 values to see if they are handled properly), pass null pointers, empty strings...