Does anyone have any tips on writing tests that compare two REST services? We are doing this as a form of regression testing.
I was hoping to do something along the lines of:
- send a GET for "/1" to both services and compare the results
- send a POST to both services, and compare the results
- send a PUT to both services, and compare the results
The idea is that:
- every operation is sent to both services
- the results should be identical
The REST services are written in Java/Jersey, so using that would be ideal, but what have people found to be useful?
Since this is a broad, non-coding question not strictly related to java, here are some related links:
- The twitter open-source Diffy server, comparing primary, secondary and candidate endpoints: https://github.com/twitter/diffy
- a similar, simpler http proxy: https://github.com/xthexder/httptee
- Someone doing this using JMeter:
https://dzone.com/articles/the-easiest-way-to-compare-rest-api-responses-usin
- An Example using Postman post-response hooks to compare requests: https://documenter.getpostman.com/view/33232/difference-between-two-responses/2QsCkC
- The Postman approach but using newman, a postman CLI client: https://github.com/indeedeng-alpha/newman-reporter-diff
Anyone feel free to edit my answer to add more alternatives demonstrating API response comparison
I would use jUnit and some of the example test cases from the Jersey source as a starting point. Without knowing specifically how you want to determine "identical" responses, you can make a request to each in your test case and iterate through the response, convert it to a string and test for equals()
, etc. Here is an example of a JSONP from JAXB test.
Write Junit to get the response objects from both services. And then do the comparison in Java as you do normally for the objects.
But why do you have to write two services that does the same thing and return same results? Atleast I assume the response objects schema is different between two services.