Testing traditionally can be conducted in three styles
Black-Box testing
Try to choose "smart" tests based on the requirements, without looking at the code.
White-Box testing
Try to choose "smart" tests based on the structure of the code, with minimal reference to the requirements.
Random testing
Try to use directed random selection to choose tests that are "representative" of how the program will be used.