There are at least two kinds of tests: unit tests and integration tests. Unit tests test individual pieces of your code (functions, modules) in sufficient isolation, to demonstrate that the implementation works as you expect. Integration tests explore the project as a whole (as far as possible), to show that the individual pieces work together to provide the desired behavior.
Start with Test::Tutorial, then my Introduction to Test::More. You might also like a longer and slightly modified version of Test::Tutorial, and the Testing Evangelism article. A very detailed example can be found in the Test::MockObject discussion.