The company where I work is a software vendor with a suite of applications. There are also a number of web services, and of course they have to be kept stable even if the applications change. We haven't always succeeded with this, and sometimes a customer finds that a service is not behaving as before after upgrading.

We now want to handle this better. In general, web services shouldn't change, and if they have to, at least we will know about it and document the change.

But how do we ensure this? One idea is to compare the WSDL files with the previous versions at every release. That will make sure the interfaces don't change, but it won't detect that the behavior changes, for example if a bug is introduced in some common library.

Another idea is to build up a suite of service tests, for example using soapUI. But then we'll never know if we have covered enough cases.

What are some best practices regarding this?