There are multiple ways how one could do automatic or assisted automatic testing of rpcs:
- Use pairwise testing to generate input messages to test one call at a time. This technique can generate relevant test inputs from large input spaces A set of tools is listed e.g. here.
- Use random testing, e.g. in the style of the QuickCheck tool. This can generate tests for sequences of rpcs.
- Use model-based testing, which generates tests for sequences of RPCs based on a specification/model.
- Use concolic testing, which tests an implementation based on discovering execution paths through your program.
I don't know about anybody applying those techniques specifically for rpc/proto testing, so I think there are plenty of opportunities for someone who wants to make a dent ;-) Specifically, something like pairwise testing are relative low hanging fruits. In the future, Google may come out with some mechanism to attach "contracts" (validation constraints) to protos, which would aid most of those techniques.