When people talk about automated testing, 98% of the time they're thinking of "example-based testing". This is a testing methodology that goes something like this:
- Think of the way a component should behave
- Specify a set of inputs to the component
- Specify the expected output of the component, given these inputs
- Repeat these steps for every major "category" of inputs. (i.e. if an input is a number, you'd probably use a large number, a negative number, a small number, 1, and 0, and consider these covering all of your cases.)
Each input/output pair forms an example of the way the program should behave. A test suite written using this style forms an argument like this: "All inputs in the same category should act the same. I've specified examples of every category, and the categories I've specified cover all possible categories, so therefore my system is correct." I won't try to get into the upsides and downsides of this here.