<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Testing RESTful APIs - Use Case: RESTful API for Solving Multidimensional Time-Independent Schrödinger Equation</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Davor Dimoski</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Bojana Koteska</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ljupco Pejov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anastas Mishev</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ss. Cyril and Methodius University, Faculty of Computer Science and Engineering</institution>
          ,
          <addr-line>Skopje, North</addr-line>
          <country country="MK">Macedonia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Ss. Cyril and Methodius University, Faculty of Natural Sciences and Mathematics</institution>
          ,
          <addr-line>Skopje, North</addr-line>
          <country country="MK">Macedonia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Many of the enterprise software applications today are developed using a service-oriented architecture (SOA) where web services, especially microservices play a fundamental role. A RESTful web service is a lightweight and scalable web service that provide data over Internet via an API using the HTTP protocol. Testing of a RESTful API is challenging because the user inputs are sequences of HTTP requests to a remote server and the server responses are also in HTTP format. In this paper, we aim to analyse ten diferent tools for testing RESTful API web services and provide tool comparisons first based on the request support and second based on multiple functionalities - implementation, platform, languages, testing techniques and supported imports. Taking into account this analysis and tools possibilities, we perform testing on RESTful API service for solving multidimensional time-independent Schrödinger equation using Hermite DVR approach. The findings show that not all tests could be run on all testing tools since some of them do not ofer ready-made assertions for validating the response time or HTTP body content or there is no option for validating the HTTP body.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;REST API</kwd>
        <kwd>RESTful web service</kwd>
        <kwd>Testing tools</kwd>
        <kwd>Schrödinger equation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        information over the HyperText Transfer Protocol (HTTP) between a client and a server [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. In
other words, they are a standardized medium for communication between applications.
      </p>
      <p>
        REpresentational State Transfer (REST) architecture was introduced in 2000 by Roy Thomas
Fielding and it relies on Uniform Resource Identifiers (URIs) for detection and interaction with
resources [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. A URI usually represents a document that holds the current state of the resource.
RESTful web services are services based on the REST architecture and they are lightweight,
usually used for basic, ad–hoc integration scenarios [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Unlike SOAP, RESTful web services do
not require XML definitions and they additionally support JSON, plain text and other formats.
These web services use HTTP methods (GET, POST, PUT, DELETE etc.) to manipulate resources.
      </p>
      <p>
        The goal of testing APIs is to validate the ways an API is expected to behave in terms of
functionality, reliability, performance and security [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. SOAP based testing is very often based
on the Web Service Description Language (WSDL), but considering this is not applicable to
RESTful APIs, the task becomes more complicated – REST is only a design pattern, so it doesn’t
follow any unified standards to describe the APIs. Test coverage criteria for RESTful APIs are
usually divided in two parts: input criteria – related to the requests, and output criteria – related
to the responses of the API [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        Even though to the best of our knowledge there are not many papers that have examined
the diferences between several RESTful API testing tools, there are a few that describe the
process of developing RESTful API testing tools and automated testing approach. In [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], the
author presents a case study of automating tests without using a GUI library. In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], Venkatraj
et al. develop an automation framework based on Groovy for REST API testing. Atlidakis et
al. have written a paper on developing REST–ler – an intelligent automatic REST API security
testing tool that generates tests by analysing the Swagger specification of the API [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Arcuri
presented a fully automated white–box RESTful service testing approach, where test cases
are automatically generated using an evolutionary algorithm. The author also developed an
open–source tool for testing, called EvoMaster [
        <xref ref-type="bibr" rid="ref10 ref11">10, 11</xref>
        ].
      </p>
      <p>The aim of this paper is to explore diferent RESTful API testing tools and examine the
diferences between the functionalities they ofer. We will be discussing ten diferent RESTful
API testing tools and we will examine them by testing a RESTful web service for solving
multidimensional time–independent Schrödinger equation using Hermite DVR approach.</p>
      <p>This paper is organized as follows: in Section 2 we provide an overview on the ten selected
RESTful API testing tools that we are going to examine and draw a comparison table to see
the diferences between them; in Section 4 we describe our case study, testing approach and
examine the results; and finally in Section 5 we draw conclusions.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Testing RESTful APIs</title>
      <p>In this Section we give a short overview of several RESTful API Testing Tools and we provide
tool comparison based on diferent criteria.</p>
      <sec id="sec-2-1">
        <title>2.1. RESTful API Testing Tools</title>
        <p>
          2.1.1. SoapUI
SoapUI [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] is a tool dedicated for testing web services – this includes both SOAP and RESTful
APIs. This testing software ofers two versions – a free, open source one with basic functionalities
like SOAP and REST API testing, mocking, WSDL support and message assertions; and a pro
version which contains additional functionalities not available in the free version, like data–
driven testing, end–to–end testing support, native CI/CD integration support, etc. SoapUI
allows for REST projects to be created either by entering a URI or by importing a WADL file. It
supports the basic HTTP requests like POST, GET, PUT, and DELETE, but also HEAD, OPTIONS,
TRACE, PATCH, PROPFIND, LOCK, UNLOCK, COPY and PURGE requests as well. Users can
create test cases from the requests where assertions can be added. The assertions are divided in
several categories, ofering a variety of choices from checking a property’s content to validating
the HTTP status codes and checking security for sensitive information exposure.
        </p>
        <sec id="sec-2-1-1">
          <title>2.1.2. Katalon Studio</title>
          <p>
            Katalon Studio [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] is an automation tool that ofers testing for SOAP and REST APIs, Web,
Desktop and Mobile applications. It supports validation testing, functional testing, UI testing,
security testing, load testing, runtime and error detection, penetration testing and fuzz testing.
Katalon Studio also supports CI/CD integration and BDD (behavior driven development) with
Cucumber files. When it comes to testing REST Web Services, upon a creation of an API/Web
Services project, the user can manually create REST requests, or they can import Swagger,
WSDL and Postman files or URLs. Katalon ofers requests like GET, POST, PUT, DELETE,
PATCH, HEAD, CONNECT, OPTIONS and TRACE. The project is divided into several sections,
among which are Object Repository – where we can create a RESTful endpoint, Test Cases –
stores test scenarios for the test objects, and Test Suites – a place where test cases can be stored
and run at once. When executing a Test Suite, a report is automatically generated.
2.1.3. Postman
Postman [14] is a platform that supports all stages of an API lifecycle: development, testing,
publishing and documenting. It ofers automated testing and integration in the CI/CD
(Continuous integration/Continuous delivery) pipeline, as well as exploratory testing. Postman
allows creation of tests by manually creating a request or by importing a RAML/WADL/Open
API/GraphQL Schema/DHC/cURL/Runscope file. This tool supports the following types of
requests: GET, POST, PUT, PATCH, DELETE, COPY, HEAD, OPTIONS, LINK, UNLINK, PURGE,
LOCK, UNLOCK, PROPFIND and VIEW. In exploratory testing, users can use scripts to send
asynchronous requests, chain requests to create test scenarios and document the findings to
share them with others. With automated testing, users can create custom test suites in JavaScript,
parametrize requests, run the tests and debug.
          </p>
        </sec>
        <sec id="sec-2-1-2">
          <title>2.1.4. Apache JMeter</title>
          <p>Apache JMeter [15] is an open source software that allows load testing, functional testing and
measuring performance. Although it was originally designed to test Web Applications, it has
since expanded and now ofers a wider range of functionalities. All tests in Apache JMeter
must have a test plan, a thread group and at least one sampler. A test plan is the basis of any
test and it describes a sequence of steps that JMeter will execute once it is run. The thread
group ofers control over the number of threads/users that will be used when executing the
tests, the ramp–up period (in what time frame should all threads be executed) and the number
of times the test should be executed. Samplers simply send requests to a server and wait for
a response. This tool ofers various assertions among which the most popular are Response
and JSON assertions. The HTTP methods that Apache JMeter supports are: GET, POST, HEAD,
PUT, OPTIONS, TRACE, DELETE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE,
LOCK, UNLOCK, REPORT, MKCALENDAR and SEARCH. For load testing, there is a CLI Mode
which allows loading tests from any Java compatible OS. As mentioned earlier, it supports
multithreading and it ofers CI support as well.</p>
        </sec>
        <sec id="sec-2-1-3">
          <title>2.1.5. Rest–Assured</title>
          <p>Rest–Assured [16] is a Java library that is used for testing XML–based and JSON–based Web
Services. It supports POST, GET, PUT, DELETE, OPTIONS, PATCH and HEAD requests. To use
the Rest–Assured library, it needs to be imported in the Maven or Gradle file in a Java project.
It supports BDD given/when/then syntax and it also allows data–driven testing.</p>
        </sec>
        <sec id="sec-2-1-4">
          <title>2.1.6. Assertible</title>
          <p>Assertible [17] is a tool for testing and monitoring APIs and its focus is on automation. It
supports the following HTTP requests: GET, PUT, POST, PATCH, DELETE, HEAD, OPTIONS.
Web services can be manually created or imported with a Swagger file, a Postman collection file
or by a curl command. Assertible allows monitoring uptime and performance and continuous
integration as well. This tool utilizes the power of jq (command line JSON processor) to modify
and manipulate variables before they are used for a test run. Assertible has a feature called
encrypted variables which is a safe way to store sensitive data during testing.
2.1.7. Karate
Karate [18] is an open–source testing tool that allows automation, mocks, performance–testing
and UI–automation. The most common usage is in a Java IDE, but it can also be used as a stand–
alone executable. Karate supports the following requests: GET, POST, PUT, DELETE, PATCH,
OPTIONS, HEAD, CONNECT and TRACE. Furthermore, Karate supports multi–threaded parallel
execution. It has native support for YAML and CSV files which can be used for data–driven
testing. It can easily be integrated in CI/CD.</p>
        </sec>
        <sec id="sec-2-1-5">
          <title>2.1.8. Swagger Inspector</title>
          <p>Swagger Inspector [19] is an open source tool built around the OpenAPI Specification for testing
and documenting APIs. It supports importing Swagger/OAS 2, OAS 3 and WSDL files. It is a
web–based editor (full support for Firefox and Google Chrome) and it requires installation of
an extension in order to work properly. The history of requests is visible in the sidebar and
you can pin them and add them to collections. OpenAPI 3.0 supports GET, POST, PUT, PATCH,
DELETE, HEAD and OPTIONS requests.</p>
        </sec>
        <sec id="sec-2-1-6">
          <title>2.1.9. Insomnia</title>
          <p>Insomnia [20] is a cross–platform REST API client. It provides an intuitive approach to managing
APIs with sending requests, defining environment variables, authentication helpers, etc. It
supports GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD and additionally a custom
HTTP method (common examples being LINK, UNLINK, FIND, PURGE). Insomnia supports
environment variables, which are most commonly used when the user is using identical values
across several diferent requests.</p>
        </sec>
        <sec id="sec-2-1-7">
          <title>2.1.10. HttpMaster</title>
          <p>HttpMaster [21] is a software development and testing tool for web applications and RESTful web
services. HttpMaster ofers support for the most common rest methods like GET, HEAD, POST,
PUT, DELETE, TRACE, OPTIONS, PATCH, but also a custom method can be specified. There
is a functionality available for global and multi–valued parameters. It also utilizes Command
Line Interface to automate execution of HttpMaster projects and it allows OpenAPI (Swagger)
imports. Additionally, it supports load testing.</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>2.2. Tool Analysis and Discussion</title>
        <p>Below, we present two comparison tables that show how each tool difers from the others.
Table 1 shows the range of requests each tool supports (Fields marked with * represent that the
methods are covered through a custom HTTP request), while in Table 2 there is a detailed tools
comparison based on the following characteristics:
1. Implementation – how the tool is used is presented to the tester for usage:
• IDE – Integrated Development Editor;
• Framework;
• Library;
• CLI – Command Line Interface;
2. Platform – technologies/a framework of services the software relies on for standard
operations;
3. Languages – languages used for writing test cases;
4. Testing techniques – the types of testing the tool supports;
5. Supported imports – the types of files that can be used to load already created tests.
Groovy,
Javascript
Groovy
Javascript
Java
Java</p>
        <p>Java
x
x
x
Windows,
macOS,
Linux
Windows,
macOS,
Linux
Windows,
macOS,
Linux
JVM
JVM
SwaggerHub /
Windows,
macOS, /
Linux
Windows
x
*
*
x
x
x
*
*
x
x
x
*
*
x
*
*
x
x
x
x
*
x
Testing techniques
functional, performance,
interoperability,
regression, mocking,
automation, data–driven,
security, load
validation, functional, UI,
security, load,
runtime error detection,
penetration, fuzz
exploratory, automation
performance, functional,
load
automation, data–driven
automation, mock,
performance,
UI automation
manual
manual
x
*
*
*
*
x
Supported imports
WADL, URI
Open API,
WSDL, Postman
RAML, WADL,
Open API ,
GraphQL Schema,
Runscope file
/
Open API,
Postman collection
Open API, WSDL
Framework, CLI</p>
        <p>Java DSL
Swagger Inspector</p>
        <p>Web IDE</p>
        <p>Web–based</p>
        <p>UI–based commands automation
UI–based commands load, automation</p>
        <p>Open API</p>
        <p>The tools that have their own IDE are similar in the way that they are constructed. More or
less, working on each of them is a similar experience. However, there is a diference in the fact
that in most of the tools that have an IDE, aside from Postman, don’t require any programming
knowledge to construct basic test cases. For more advanced testing, Katalon, SoapUI and Apache
JMeter ofer the option to use the languages they support for writing more specific test cases.
Postman uses Javascript for constructing test cases.</p>
        <p>One advantage Apache JMeter, SoapUI and Karate have over the other testing tools is the
functionality of using concurrent threads – which allows load testing. This allows choosing
how many threads/virtual users will make a request to the server.</p>
        <p>When it comes to testing response duration, some tools fell short – they did not ofer the
option to validate the response time. Katalon Studio, SoapUI, Swagger Inspector, Insomnia and
HttpMaster do not ofer ready–made assertions for the response time. However, Katalon Studio
and SoapUI still have the option available with manually scripting assertions.</p>
        <p>The libraries that were used as testing tools – Rest–Assured and Karate, proved to be suficient
in conducting tests for our use case. It is important to note that the biggest advantage Karate
has over Rest–Assured is that for validating payloads it supports assertions such as “contains”,
which isn’t directly available with Rest–Assured. In order to use such assertion in Rest–Assured
you need to use external libraries such as Hamcrest.</p>
        <p>The free version of HttpMaster ofers obscure validation options: only whether the response
status code is 1xx, 2xx, 3xx for a successful call and 4xx or 5xx for an unsuccessful call. The tool
did not allow us to run the assertions if the HTTP body of the response contains an opening
bracket and the response time for the call.</p>
        <p>Two of the tools – Insomnia and Swagger Inspector did not ofer options for writing test
cases. The only testing that can be done with them is manual – the tester themselves have to
manually validate the response of the API call.
3. Use case – testing RESTful API for solving multidimensional
time–independent Schrödinger equation using Hermite DVR
approach</p>
      </sec>
      <sec id="sec-2-3">
        <title>3.1. API description</title>
        <p>To test the abilities of the aforementioned tools, we conducted testing on the Schrödinger
API [22] – a RESTful web service for solving multidimensional time–independent Schrödinger
equation using Hermite DVR approach. This RESTful web service provides a method for solution
of one–dimensional, two–dimensional and three–dimensional time–independent Schrödinger
equation based on the Gauss–Hermite Discrete Variable Representation (DVR) approach. Web
service source code is based on a python module that solves one–dimensional potentials using
a DVR method [23].</p>
        <p>The solution of one–dimensional Schrödinger equation is illustrated in the case of
following model potentials: Morse potential; Simple Harmonic Oscillator (SHO) potential;
Sombrero potential (Mexican hat); Woods–Saxon potential.</p>
        <p>Solutions of two–dimensional and three–dimensional Schrödinger equations are illustrated
for the following two model potentials: multidimensional Morse potential and multidimensional
SHO potential.</p>
      </sec>
      <sec id="sec-2-4">
        <title>3.2. Test scenarios</title>
        <p>The test scenarios that we will consider for testing this RESTful API are:
• Check the response on default values for parameters (happy path);
• Check the response on valid values for parameters (happy path);
• Check the response on invalid values for parameters (negative testing with invalid input);
• Check the response on large values for parameters (destructive testing).
When validating the response we consider the following response elements:
• HTTP status code – Validate the response status code (expected 200 for all scenarios,
except when invalid values are entered, in which case we expect a response code of 400);
• response payload – Validate whether the body of the response contains an opening
bracket "[" – all valid responses contain an opening and a closing bracket;
• basic performance sanity – Validate the response time of the request being less than
1000 ms.</p>
        <p>The values that were used for each scenario are shown in Table 3.</p>
      </sec>
      <sec id="sec-2-5">
        <title>3.3. Results</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>4. Conclusion</title>
      <p>The necessity for system interoperabilty and reusing imposes the need for creation of web
services. RESTful web services came into play in the early 2000s. Testing of such web services</p>
      <p>Test Scenario
Default
values</p>
      <p>Valid
values</p>
      <p>Invalid
values
difered from testing of SOAP services because REST approach did not follow any unified
description standards, but it required inputs criteria related to the requests and output criteria
related to the API responses. To explore the current testing options for RESTful APIs, we have
analyzed the existing testing tools and identified their main characteristics and diferences in
terms of HTTP request support and functionalities such as implementation, platform, languages,
testing techniques and supported imports. As a use case we considered the REST API for
solving multidimensional time–independent Schrödinger equation. We defined diferent testing
scenarios and success criteria. Based on the results, the majority of the tests that failed were
defined as a part of the destructive testing scenario. Also, some tools did not provide ready–
made assertions for validating the execution time. This research contributes to the theory by
analyzing the options for testing RESTful APIs. It also helped us to think about the possible
code optimization in order to satisfy the desired execution time requirements.</p>
    </sec>
    <sec id="sec-4">
      <title>Acknowledgments</title>
      <p>This work was supported in part by the European Union’s Horizon 2020 research and innovation
programme, project National Initiatives for Open Science – Europe, NI4OS–Europe, [857645]
and by the Faculty of Computer Science and Engineering, Skopje, North Macedonia.
[14] Postman HQ, Postman | the collaboration platform for api development, https://www.</p>
      <p>postman.com/, 2012. (Accessed on 05/22/2020).
[15] Apache Software Foundation, Apache jmeter - apache jmeter™, https://jmeter.apache.org/,
1998. (Accessed on 05/22/2020).
[16] J. Haleby, Rest assured, http://rest-assured.io/, 2010. (Accessed on 05/22/2020).
[17] Assertible, The easiest way to test and monitor your web services : Assertible, https:
//assertible.com/, 2015. (Accessed on 05/22/2020).
[18] P. Thomas, Karate, https://intuit.github.io/karate/, 2017. (Accessed on 05/22/2020).
[19] SmartBear Software,, Openapi design &amp; documentation tools | swagger, https://swagger.</p>
      <p>io/tools/swagger-inspector/, 2010. (Accessed on 05/22/2020).
[20] Kong Inc, Insomnia | api design platform and rest client, https://insomnia.rest/, 2019.</p>
      <p>(Accessed on 05/22/2020).
[21] Borvid, Httpmaster | master http testing and debugging, https://www.httpmaster.net/,
2013. (Accessed on 05/22/2020).
[22] Koteska et al, SchrödingerAPI - Jupyter Notebook, https://schrodinger.chem-api.finki.ukim.</p>
      <p>mk/, 2021. (Accessed on 06/02/2022).
[23] A. Richie-Halford, richford/dvr_py: Python module that solves one-dimensional potentials
using a discrete variable representation method., https://github.com/richford/dvr_py/,
2017. (Accessed on 05/25/2020).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>B.</given-names>
            <surname>Lim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. J.</given-names>
            <surname>Wen</surname>
          </string-name>
          , Web services:
          <article-title>An analysis of the technology, its benefits, and implementation dificulties</article-title>
          ,
          <source>Information systems management 20</source>
          (
          <year>2003</year>
          )
          <fpage>49</fpage>
          -
          <lpage>57</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>K.</given-names>
            <surname>Gottschalk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Graham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kreger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Snell</surname>
          </string-name>
          ,
          <article-title>Introduction to web services architecture</article-title>
          ,
          <source>IBM systems Journal</source>
          <volume>41</volume>
          (
          <year>2002</year>
          )
          <fpage>170</fpage>
          -
          <lpage>177</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Neumann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Laranjeiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bernardino</surname>
          </string-name>
          ,
          <article-title>An analysis of public rest web service apis</article-title>
          ,
          <source>IEEE Transactions on Services Computing</source>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Halili</surname>
          </string-name>
          , E. Ramadani,
          <article-title>Web services: a comparison of soap and rest services</article-title>
          ,
          <source>Modern Applied Science</source>
          <volume>12</volume>
          (
          <year>2018</year>
          )
          <fpage>175</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>H.</given-names>
            <surname>Ed-Douibi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L. C.</given-names>
            <surname>Izquierdo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Cabot</surname>
          </string-name>
          ,
          <article-title>Automatic generation of test cases for rest apis: a specification-based approach</article-title>
          ,
          <source>in: 2018 IEEE 22nd International Enterprise Distributed Object Computing Conference (EDOC)</source>
          , IEEE,
          <year>2018</year>
          , pp.
          <fpage>181</fpage>
          -
          <lpage>190</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Martin-Lopez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Segura</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ruiz-Cortés</surname>
          </string-name>
          ,
          <article-title>Test coverage criteria for restful web apis</article-title>
          ,
          <source>in: Proceedings of the 10th ACM SIGSOFT International Workshop on Automating TEST Case Design, Selection, and Evaluation</source>
          ,
          <year>2019</year>
          , pp.
          <fpage>15</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Richardson</surname>
          </string-name>
          ,
          <article-title>Automating and Testing a REST API: A Case Study in API testing using: Java, REST Assured</article-title>
          , Postman, Tracks,
          <source>cURL and HTTP Proxies</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>S.</given-names>
            <surname>Venkatraj</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Vincent</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vijayakumar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Vengatesan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rajesh</surname>
          </string-name>
          ,
          <article-title>Development of test automation framework for rest api testing</article-title>
          ,
          <source>Journal of Computational and Theoretical Nanoscience</source>
          <volume>16</volume>
          (
          <year>2019</year>
          )
          <fpage>453</fpage>
          -
          <lpage>457</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Atlidakis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Godefroid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Polishchuk</surname>
          </string-name>
          ,
          <article-title>Rest-ler: automatic intelligent rest api fuzzing</article-title>
          , arXiv preprint arXiv:
          <year>1806</year>
          .
          <volume>09739</volume>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Arcuri</surname>
          </string-name>
          ,
          <source>Restful api automated test case generation, in: 2017 IEEE International Conference on Software Quality, Reliability and Security (QRS)</source>
          , IEEE,
          <year>2017</year>
          , pp.
          <fpage>9</fpage>
          -
          <lpage>20</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Arcuri</surname>
          </string-name>
          ,
          <article-title>Restful api automated test case generation with evomaster</article-title>
          ,
          <source>ACM Transactions on Software Engineering and Methodology (TOSEM) 28</source>
          (
          <year>2019</year>
          )
          <fpage>1</fpage>
          -
          <lpage>37</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>SmartBear</given-names>
            <surname>Software</surname>
          </string-name>
          ,
          <article-title>The world's most popular api testing tool | soapui</article-title>
          , https://www. soapui.org/,
          <year>2006</year>
          . (Accessed on 05/22/
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Katalon</surname>
            <given-names>LLC</given-names>
          </string-name>
          ,
          <article-title>Katalon studio | the #1 codeless automation tool</article-title>
          , https://www.katalon.com/ katalon-studio/,
          <year>2015</year>
          . (Accessed on 05/22/
          <year>2020</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>