Sam Aybar (left) joined Runscope in 2016, prior to its acquisition by CA Technologies. He was responsible for everything from pre-sales engineering through post-sales customer success as well as support. He is currently a member of the customer-facing engineering team. Walter Guerrero (right) has over 30 years of experience in the IT industry covering large scale implementations. Walter has worked on the Broadcom’s Database and DevOps solutions for over 10 years. Walter is presently focusing on Test Data Management and Continuous Testing tool sets.

Become a JMeter and Continuous Testing Pro

Start Learning
Slack

Test Your Website Performance NOW! |

arrowPlease enter a URL with http(s)
Feb 09 2021

Creating a Mock Service from a BlazeMeter API Monitoring Response

​​​

If you’ve already used the Mock Services feature of BlazeMeter, you know how useful it can be when you are running tests but certain services are not available. For example, when you are using third party services. In this blog post, you will learn how to create a Mock Service, from the response to a BlazeMeter API Monitoring (Runscope) test. 

 

The first section of this article will get you up and running quickly, providing easy steps for importing a Runscope test that will create a mock service. The second section will go into a little more detail, providing an overview of what each step from the first section does.

Quick Creation of a Mock Service

To get started, you can download this file and import it as a new test in the API Monitoring tab of BlazeMeter. (You can read more about how to import a test here.)

 

You will be using both the BlazeMeter and Runscope APIs for this test. You can read about how to create a BlazeMeter API token here and a Runscope API token here.

 

Once you’ve imported this test, you will need to configure your environment with some initial variables:

 

  • harborId — 5c544422c7dc9735767b23ce //specifies the location to run the mock service from -- this is for the public US East (Virginia) location
  • shipId — 5d3ccab3526ad28f53205574 //specifies the location to run the mock service from -- this is for the public US East (Virginia) location
  • count — {{timestamp}} // a unique value so that the transaction is uniquely identified
  • mockName — a unique name for the Mock Service
  • runscopeBucketKey — a Runscope bucket key for testing with the request you want to mock
  • runscopeTestId — a Runscope test id for testing with the request you want to mock
  • runscopeTestRunId — Runscope test run id for test with request you want to mock
  • runscopeStepToMock — the test step number of the request you want to mock (note: the step count should include skipped steps)
  • runscopeToken — the Runscope API Token (see Step 1 here on creating a token)
  • workspaceId — your BlazeMeter workspace ID in which you want to create your mock service (see here on how to find your workspace ID) 

 

 

You will also need to configure the Basic Authentication on the Authentication tab of the environment. You will use your BlazeMeter API credentials here.

 

 

Once you’ve defined these initial variables and the Authentication tab, you are all set to go.  

 

Simply click Run Now at the top left of your screen, and you will kick off a Runscope test that will retrieve the test you specified and create a Mock Service.

 

You can see an example of what your test result should look like here

 

  

 

You’ll notice the last step of this test makes a request to the running mock service. You can now use this URL in other tests -- be it performance testing, API Monitoring or outside BlazeMeter altogether, to mock the response given by the original.

 

Mock Service Creation Overview

So now let’s explore each step of this test in a little more detail .

Step 1: Get the Test Result from Runscope

 

 

The first step in this test retrieves the Runscope test you’ve specified in your environment. It uses the Test Result Detail endpoint and extracts the UUID for the step that has the request you want to mock. Note that we cannot create this variable from the Variables tab. This is because you cannot reference a variable on that tab. We need to reference it since we are trying to specify which {{step}} of the test we want to take. So instead, the variable is created in a post-response script. (If you wanted to manually specify the step, you would be able to use the variables tab.)

 

Also note that this step (and the next step) use the Runscope API, so therefore there is a pre-request script that replaces the environment configured Authorization header (for BlazeMeter API) with a Runscope API token.

Step 2: Get the Body from Runscope

 

 

The second step uses the Test Result Step Detail endpoint to take the headers and body of the response you want to mock and assign them to variables to use later in the test. Note again that this needs to be done using a post response script. In the case of the body, this is because it needs to be base64 encoded when we upload it to the Mock Services API; for the headers, it is because they need to be reformatted for the Mock Services API.

Step 3: Create a Service

 

 

The third step uses the Create a Service endpoint to create the service that will contain the Mock Service in your BlazeMeter account. You will pass the Service ID that comes back from this in subsequent steps, so it is assigned to a variable here.

 

A Service is identified by its name. If the name you use for the service already exists, this step will return the Service ID for the service with that name (and you will get a 200 response). If the name is new, then a new service is created, and you will get a 201 response. Note the assertions tab that this step has been accounted for.

Step 4: Add a Mock Transaction

 

 

In order to create the Mock Service, you will first need a transaction to assign to that Mock Service. This is done with the fourth step, using the Create Transaction endpoint. The headers and body that were retrieved in step 2 are passed to this step. You can see in this request that the body (the content property) is base64 encoded. The transactionId that is produced is stored to a variable to use when creating the Mock Service.

Step 5: Create a Mock Service

 

 

Now that you have a transaction, you can create a Mock Service using the Create Mock Services endpoint. As configured, this mock service will run from the US Virginia public location, but you can customize this with a different shipId/harborId. You can also customize the thinkTime if you want it to take longer for the mock service to respond.

 

This step will give you back a mockServiceId that is assigned to a variable for subsequent use.

Step 6: Run Your Mock Service

 

 

Once the Mock Service is created, in order to use it you need to call the Deploy Mock Services endpoint to start running the mock service and make it usable.

Step 7: Pause the Test

 

 

It takes some time for the mock service to actually spin up, so by inserting a pause step here you give it time to work. If you find that you are getting a 503 response in step 9, increase the wait time here.

Step 8: Get the Mock Service

 

 

 

A request to the Get Mock Service endpoint will give you the URL for the (now running) Mock Service endpoint. This is the URL you can use anywhere else to get your Mock response.

Step 9: Get the Mock and Compare

 

 

This step is just to illustrate that the Mock Service is, in fact, up and running and returning the data expected.

Conclusion

Congratulations -- if you’ve followed the steps here you’ve successfully created a Mock Service from a Runscope test result. You can make additional modifications to this Mock Service either via API or from the Mock Services tab within BlazeMeter. Happy Mocking!

   
arrowPlease enter a URL with http(s)

Interested in writing for our Blog?Send us a pitch!