For myself, I don't know if there is a best practice to automate testing SOA services. However, I'll share my experience with you.
One of Services design principles is Composition, where services are designed as a set of composable units to deliver a business function.
In turn, we will have two type of services. Autonomous services that are not composed of any other services and
those services that are composed of other services.
For both of them, we can follow Acceptance Test Driven Development concepts to develop and automate their regression tests in a meaningful way. 'Following this approach, we can describe their functionalities using Gherkin language.
Let me give you an example. Let's assume that you want to test a "personnel module" service. This service has employee data service which is responsible for managing basic employee data.
Now we can write the following Gherkin to test our service.
Given I have a Job Title defined as “Software Architect”
When I create an Employee with the following data
|Name | Mustafa|
|Job Title| Software Architect|
Then I should receive an employee code
The previous Gherkin explains itself. That is why I prefer using Gherkin to create my tests.
It will be easy if you are going to test the implementation of autonomous service.
What should we do with composed services that are composed of other services?
Simply mock them. If you are using proxies to abstract service calls, mock these proxies to respond to you with expected output and focus on testing the composition logic.
For other types of tests such as load testing, or to test other aspects rather than business logic, there are a lot of tools that sends the requests on your behave.