We could get away with fewer. Since an officer has two serfs, one regent with a general who is an officer could have two different kinds of serfs, thus testing multiple cases of potatoes-of-serfs at once.
It is much easier to test each function separately, because it is easier to generate the test cases, and for larger examples, you need more test data to test all cases if you are only testing the main function.
With either answer, be sure to pick each serf's number of potatoes well. E.g., it's not very helpful if each serf generates 0 potatoes: you can't tell if you're adding all the numbers up properly. E.g., if you pick the numbers 1, 10, 100, ..., you'd be able to check not only whether your sum is correct, but if it isn't, you should be able to tell which number wasn't being added correctly.
In the real world, understanding all of the relevant test cases is very important for checking software products. This is part of the area of Quality Assurance, or QA.