5

I've a RESTFul microservice written in Grails. This microservice has it's own DB. It also depends on two other microservices.

A typical workflow of the service is:

  1. Receives a GET request from a client e.g. browser
  2. Calls another microservice through http to get some information
  3. Queries it's own DB to get some data
  4. Send a response to the client

I want to write automated tests for this service. Whenever I'll run the test, it'll do the following:

  • Mock the external microservices
  • Create a database and populate it with test data
  • Run the application and configure it to use the mock services and DB
  • Run the test cases by sending http requests and matching responses

My question is: What type of test is this?

I'm not a QA so may be I'm asking a stupid question.

Nayan
  • 169
  • 5
  • I personally enjoy JAX-RS. If you're familiar with JEE, go ahead with this API –  Feb 02 '16 at 06:36
  • Well, I'm actually using JAX-RS with Grails. – Nayan Feb 02 '16 at 06:39
  • Tool/library/framework recommendations are off-topic on this site, so I edited out that part of your question. – Ixrec Feb 02 '16 at 12:07
  • 2
    Could be a Unittest if you consider the microservice to be a single unit including its own database. Could be an integration test if you consider integration of microservice and its database to be worth testing. – SpaceTrucker Feb 02 '16 at 12:13

2 Answers2

2

Testing terminology is very messy. Usually I've seen this type of tests to be called "integration tests", but to me it seems to be too overloaded term used also for quite different type of tests.

So I call them component tests. Your microservice is one component of the larger system. Term is quite self-explanatory and fits well definition from Martin Fowler:

A component test is a test that limits the scope of the exercised software to a portion of the system under test. It is in contrast to a BroadStackTest that's intended to exercise as much of the system as is reasonable.

qbd
  • 2,876
  • 1
  • 12
  • 16
0

I would call it just "unit tests".

And Mock objects are very common in Unit Tests, because those need to be independent from each other ( so test of feature X cannot depend on test of DB connector ).

Marqin
  • 385
  • 2
  • 9