To all test automation experts :-) ! I'd like to hear your opinions on the following scenario:
There is a web application that I need to test. I have to run back-end tests on the server and front-end tests on the client. I also need to run end-to-end tests, involving both the back-end and the front-end.
The server exposes webservices (SOAP) and the front-end client consumes data from these services. There are also third-party clients consuming data from the web services. Sometimes, a test scenario requires that i do end-to-end tests, i.e. I make some changes in the front-end GUI and then use a web service on the back-end to find out whether the changes were successful or not.
I like FitNesse - in my opinion, the separation of WHAT and WHY from HOW is essential for designing good tests. There is the Selenesse module, which makes it possible to integrate Selenium tests with FitNesse wiki pages. This makes it easy to describe what and why I need to test something (wiki text) from how I want to test it (scenario tables and script tables) which is how I want things to be.
The problem with FitNesse is that it is somewhat cumbersome to test SOAP web services. Either, I need to develop a purpose-built SOAP client Java fixture, or I have to write Java fixtures extending the ServiceFixture class, written for FIT. Either way, the development effort is significantly larger than if I implement these tests in soapUI.
In my opinion, the drawback with soapUI, is that there is no easy way of explaining the WHAT and the WHY of a test (at least not in a way that is intuitive).
So, assuming I want a reasonable development effort for end-to-end testing, I have settled for the approach of writing GUI tests in FitNesse/Selenesse and back-end tests in soapUI. I now have the choice of trying to run soapUI tests from FitNesse, managing all tests there, or to run FitNesse tests from soapUI...
I have some concerns regarding test management (not so easy to see the test results in one view) and maintainablity (two tools with different laguages) of this approach. Do you have any ideas for best/good practice regarding this? Would you suggest a third tool for managing the other two?