Provide timed tests. When you give an exam that must be finished within a specific time limit, it will limit the student's ability to look for answers elsewhere on the Internet or in a textbook. While students could still try to cheat, they most likely will run out of time and not do well on the test.
Randomize tests for each student. While each student gets the same questions, they are provided in a different order for each student. This discourages students from sharing answers. This approach works particularly well for tests that are multiple choice.
Require short explanatory answers instead of multiple choice. To ensure that students have a grasp on the information, require them to provide a short answer that addresses the question. Each student's answer should be worded differently, so those plagiarizing another student's test will be easily detected.
Run essays through a computer program designed to detect plagiarizing. While you might be able to spot blatant plagiarizing, an Internet tool such as SafeAssign, Dustball or Plagiarism Detect will allow you to cut and paste samples of a student's work and run it through a checker to determine if the content appears elsewhere.