<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Leveraging composability in model-based testing for microservices</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Bas</forename><surname>Van Den Brink</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">University of Amsterdam</orgName>
								<address>
									<addrLine>Science Park 904</addrLine>
									<postCode>1098 XH</postCode>
									<settlement>Amsterdam</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="department">Info Support</orgName>
								<address>
									<addrLine>De Kruisboog 42</addrLine>
									<postCode>3905 TG</postCode>
									<settlement>Veenendaal</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Tannaz</forename><surname>Zameni</surname></persName>
							<affiliation key="aff2">
								<orgName type="institution">University of Twente</orgName>
								<address>
									<addrLine>Drienerlolaan 5</addrLine>
									<postCode>7522 NB</postCode>
									<settlement>Enschede</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ulyana</forename><surname>Tikhonova</surname></persName>
							<affiliation key="aff3">
								<orgName type="department">Axini</orgName>
								<address>
									<addrLine>Azartplein 12</addrLine>
									<postCode>1019 PD</postCode>
									<settlement>Amsterdam</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Lammert</forename><surname>Vinke</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">Info Support</orgName>
								<address>
									<addrLine>De Kruisboog 42</addrLine>
									<postCode>3905 TG</postCode>
									<settlement>Veenendaal</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ana-Maria</forename><surname>Oprescu</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">University of Amsterdam</orgName>
								<address>
									<addrLine>Science Park 904</addrLine>
									<postCode>1098 XH</postCode>
									<settlement>Amsterdam</settlement>
									<country key="NL">The Netherlands</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Leveraging composability in model-based testing for microservices</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">703929D98392BC36F8AE070BC2663169</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T21:52+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>microservices</term>
					<term>model-based testing</term>
					<term>compositional testing</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The microservices architecture is becoming increasingly more popular in contemporary software systems. Microservices communicate with each other over a network using specific communication protocols, such as HTTP or AMQP. Microservices systems can pose various challenges, with testing being one of them. Model-based testing is an established formal method for testing software systems. However, testing microservices using model-based testing is an open research topic. The goal of our research is to explore formally testing microservices systems. This research is divided in two parts: (1) we develop a theoretical framework for formally testing microservices, extending existing work on ioco-theory; (2) we implement the theoretical framework in a proof-of-concept to experiment with microservices systems from both open-source and industry.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>In recent years, distributed architectures such as microservices <ref type="bibr" target="#b16">[18]</ref> are becoming popular in industry <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b19">21,</ref><ref type="bibr" target="#b28">30]</ref>. In comparison to monolithic systems, microservices offer independent scaling and simpler deployment procedures, amongst other benefits <ref type="bibr" target="#b12">[13,</ref><ref type="bibr" target="#b24">26]</ref>. However, implementing a microservice architecture also presents some challenges. These challenges arise inherently due to the distributed interaction between services. For instance, testing microservices is regarded to be more complex than testing monolithic applications <ref type="bibr" target="#b12">[13]</ref>.</p><p>This complexity comes from the fact that each microservice is deployed as a separate software artifact. With monolithic systems, software components compose using simple function calls. In microservice systems, this composition is done by establishing a network connection between each microservice. Such a composition introduces additional variables during testing, such as: network instability, (de)serialization errors and communication protocol issues.</p><p>As an example, microservices systems might contain hundreds of small components that are separately deployed <ref type="bibr" target="#b22">[24]</ref>. These microservices work together to form software systems BENEVOL <ref type="bibr">'22:</ref> The 21st Belgium-Netherlands Software Evolution Workshop Mons, <ref type="bibr">12-13 September 2022</ref> bas.vandenbrink@infosupport.com (B. v. d. Brink); t.zameni@utwente.nl (T. Zameni); tikhonova@axini.com (U. Tikhonova); lammert.vinke@infosupport.com (L. Vinke); a.m.oprescu@uva.nl (A. Oprescu) that handle a variety of complex tasks. Companies such as Netflix <ref type="bibr" target="#b22">[24]</ref>, Amazon <ref type="bibr" target="#b21">[23]</ref> and Zalando <ref type="bibr" target="#b18">[20]</ref> are known to implement the microservices architecture for their software systems.</p><p>Testing a single microservice is arguably straightforward. The complexity of testing microservices lies in testing the integration between these small components <ref type="bibr" target="#b12">[13]</ref>. Microservices are typically integrated using a networking protocol, such as HTTP or AMQP <ref type="bibr" target="#b4">[5]</ref>. While there exists tooling to test software systems from end-to-end, many tools require the software developer to write and maintain these tests. End-to-end tests are described as flaky <ref type="bibr" target="#b26">[28]</ref>, expensive to write/maintain and expensive to execute <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b25">27]</ref>. A model alleviates the maintainability problem, and generating test cases from written specifications rather than building and applying test cases reduces costs and effort <ref type="bibr" target="#b2">[3]</ref>. If we leverage the composability of models, then we could avoid fully deploying the end-to-end test infrastructure and suite, and contribute considerable savings.</p><p>Model-based testing <ref type="bibr" target="#b36">[38,</ref><ref type="bibr" target="#b35">37]</ref> is a formal technique to automatically generate and execute test cases from a specification. The specification models the behavior of the system under test. The test scenarios are generated from such a specification automatically. The system is tested as a black-box and is interacted with through its inputs and outputs. While model-based testing could be used with various formalisms, such as Finite State Machines and Abstract Data Types <ref type="bibr" target="#b20">[22]</ref>, we use Labelled Transition Systems to leverage research conducted by Jan Tretmans et al. <ref type="bibr" target="#b33">[35]</ref> and its industrial applications, such as Axini's Axini Modeling Plaform (AMP) <ref type="bibr" target="#b6">[7]</ref>. Ultimately, this formal testing theory helps us to decide whether the system conforms to its specification.</p><p>Indeed, model-based testing can be fitting as a means to perform integration tests for microservices. Additionally, model-based testing has the benefit that tests are automatically generated, meaning that there is less overhead in writing the tests themselves. When the specification of the system changes, new tests are generated automatically.</p><p>Research proposes compositional model-based testing as a technique to model components separately and combine these models to test the combination of components <ref type="bibr" target="#b10">[11]</ref>. The main benefit is that these models are smaller, making them easier to write and maintain.</p><p>Compositional testing is still ongoing research <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b23">25,</ref><ref type="bibr" target="#b13">15]</ref>, while its applicability to microservices remains an open research topic. With this study, we want to focus on the applicability of compositional model-based testing in combination with microservices.</p><p>Our vision is that if compositional testing is applicable to test microservices, three main issues with contemporary testing are tackled:</p><p>1. Writing and maintaining expensive integration tests ultimately becomes obsolete, as model-based testing allows for the generation and execution of these tests. 2. Models become smaller and easier to maintain. With the inclusion of CI/CD pipeline support and a proper framework, model-based testing can become more accessible to development teams. 3. Model-based testing can be applied in a more incremental manner, allowing it to be part of the development phase of a project.</p><p>This research project is still in an early stage. With this paper, we aim to provide an initial description of the project. Section 2 informally describes theoretical preliminaries for this paper. Section 3 discusses related work, Section 4 presents our methodology, Section 5 aims to provide an informal description of the current ideas behind testing microservices and Section 6 provides an outlook for the rest of the project.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Background</head><p>This section describes two main concepts used in this paper: transition systems and microservice communication. Transition systems are the formalism of choice for testing microservices systems in our research. Microservice communication form the basis of our proposed software testing theory.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Transition Systems</head><p>There exists various formalisms that can be utilized for model-based testing <ref type="bibr" target="#b35">[37]</ref>. In our study, we use transition-based models as a formalism for modeling the behavior of microservices.</p><p>Transition-based models, or state-transition models, focus on describing the transitions between different states of the system <ref type="bibr" target="#b35">[37]</ref>. This formalism is commonly used to describe the behavior of reactive or control-oriented systems, where outputs do not only depend on the current input but also on earlier inputs. We consider microservises to fit well in this scope.</p><p>In a simplistic form, Labelled Transition Systems (LTS) <ref type="bibr" target="#b33">[35]</ref> contain a set of states with transitions between them. There exists various extensions of labelled transition systems. A Labelled Transition System with Inputs and Outputs (IOLTS) <ref type="bibr" target="#b33">[35]</ref> distinguishes transitions with inputs or outputs of the system. Similarly, a Symbolic Transition System (STS) <ref type="bibr" target="#b11">[12]</ref> extends upon the LTS with the notion of data and variables. Naturally, there exists a version of the STS with a distinction between inputs and outputs: the IOSTS.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Microservice Communication</head><p>There are two aspects regarding microservice communication, which are depicted in table <ref type="table">1</ref>. The first column regards the relation between sending and receiving entities: one-to-one, or one-to-many. The second column determines whether the communication is synchronous or asynchronous. The Request/Response communication style can be observed when synchronous one-to-one communication is applied. With this communication style, a sender will send a message (or request) to exactly one receiver. The sender will await the response of the receiver before continuing program flow.</p><p>When one-to-one communication is applied asynchronously, we observe the Notification communication style. In this case, the sender will still send a response to a receiver, but will not await a response. The sender will continue its program flow regardless of how the request is handled by the receiver. In the case of asynchronous messaging with one-to-many receivers, we observe the Publish/Subscribe communication style. Typically, a message-broker is introduced to handle the communication between the sender and receivers. Receivers can subscribe to a specific message topic. A sender can publish a message to such a topic. The message-broker then ensures that the message is delivered to all subscribers of that topic.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Table 1</head><p>A summary of microservice communication styles <ref type="bibr" target="#b29">[31]</ref> One-to-one One-to-many Synchronous Request/response -Asynchronous Notification Publish/subscribe</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Related work</head><p>There currently exists tooling to test microservices from end-to-end, such as Protractor <ref type="bibr" target="#b3">[4]</ref> or Cypress <ref type="bibr">[14]</ref>. These frameworks utilize the browser to interact with the system through its web interface. However, these testing techniques require the developer to manually write and maintain the testing suite.</p><p>Behavior Driven Development (BDD) testing tools can also be used to test microservices systems. Examples of these tools are Cucumber <ref type="bibr" target="#b30">[32]</ref> and SpecFlow <ref type="bibr" target="#b34">[36]</ref>. This technique allows practitioners to create a specification of their software system's behavior using a human-readable domain specific language. BDD tools then use this specification to automatically generate most of the test code with predefined inputs and assertions. The practitioner then can implement the rest of this test code and test the software system. With model-based testing, the formal model contains enough information to fully automate test generation and execution.</p><p>Furthermore, there have been various research efforts regarding microservices testing. For example, Gazzola et al. <ref type="bibr" target="#b17">[19]</ref> present a tool that automatically generates test cases based on the run time traces of deployed microservices systems. These test cases are then executed on a microservice in isolation. All external dependencies of the microservice are replaced by a stub. The behavior of this stub is also determined by the collected runtime traces. The main difference with our work is that our test cases are derived from a formal model instead of execution traces.</p><p>Another tool proposed by research is EvoMaster <ref type="bibr" target="#b5">[6]</ref>. This tool can automatically generate tests for REST and GraphQL API's, which are commonly used technologies in microservices architectures. EvoMaster uses AI-techniques and (optionally) program analysis to find test cases. This approach does not require any human intervention to generate tests, whereas model-based testing techniques require a formal model to be constructed. Here lies the trade-off between these methods: EvoMaster's approach does not require manual labour, at the cost of a few hours of running its search algorithm. Optional code analysis (white-box testing) improves the effectiveness of the test cases several times over. With our approach, we construct a model which does not require code analysis, and is still able to perform automated tests. We see the major difference in how the knowledge is captured: EvoMaster learns it from the code base, we learn it from the model created by the practitioner.</p><p>Tools such as TorXakis <ref type="bibr" target="#b32">[34]</ref> and Axini Modeling Platform (AMP) <ref type="bibr" target="#b6">[7]</ref> already exist to perform model-based testing on software systems. However, our work explores a tailored theory towards the modeling and testing of microservices. We develop a proof-of-concept that implements this theory specifically. This allows us to see if such a theory for testing microservices differs from general model-based testing approaches.</p><p>In our work, we explore the notion of a network environment as an additional transition system during the composition of microservices. We are inspired by the works of both de Alfaro and Henzinger <ref type="bibr" target="#b1">[2]</ref> and Daca et al. <ref type="bibr" target="#b13">[15]</ref>. Both studies investigate how computing a separate environment during composition can alter the properties of the final composed model. We explore in our work how a network environment alters the properties of the final composed model between microservices.</p><p>Van der Bijl et al. <ref type="bibr" target="#b10">[11]</ref> conclude in their study that the ioco relation does not hold after composition of underspecified models. As a solution, they propose Demonic Completion of underspecified specifications. In short, Demonic Completion is an algorithm that maps all underspecified transitions to a chaos state that accepts all behaviors. A benefit of Demonic Completion is that the ioco relation is preserved after composition. A downside of Demonic Completion is that the model accepts any behavior during testing, which possibly weakens the quality of the model.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Methodology</head><p>The goal of this research is to investigate the applicability of compositional model-based testing in the context of microservices. The first research question is focused on the differences between models of regular software components and models of microservices. To formally model microservices we choose the Symbolic Transition System with Inputs and Outputs (IOSTS). A transition system is able to capture the behavior of microservices. Moreover, symbolic transition systems contain the notion of data and variables. As microservices process vast amounts of data, symbolic transition systems make for a suitable modeling formalism.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>RQ1: To what extent does a symbolic input-output transition system capture the behavior of microservices?</head><p>To the best of our knowledge, compositional testing has not yet been applied in the context of microservices. This raises the question: "If we could model and test a single microservice, can we also combine the output of these tests as an input of other microservices?", leading to the following research question:</p><p>RQ2: To what extent can we test microservice systems using compositional model-based testing? For the second research question, we develop a formal framework for Symbolic Transition Systems and their compositions. Additionally, this theory is implemented in a proof-of-concept that can be used to test microservices systems. With this proof-of-concept, we will test actual microservices systems. We plan on testing two systems during this research project: the opensource eShopOnContainers [17] and a microservices system from industry provided by Info Support. Due to timing constraints, we have scoped the number of systems under test to two. Moreover, we choose the eShopOnContainers system as it is an open-source reference implementation of a microservice architecture. Being an open-source project, the system is accessible as a first candidate for testing non-trivial microservices systems. Additionally, we also include a microservices system from industry to show the applicability of our theory in practice.</p><p>Furthermore, we plan to compare our proof-of-concept to traditional model-based testing tooling by using the Axini Modeling Platform (AMP) <ref type="bibr" target="#b6">[7]</ref>. AMP is a model-based testing platform used in industry on large-scale software systems. We will perform validation and evaluation experiments on our proof-of-concept and AMP to investigate how a tailored theory towards <ref type="bibr" target="#b0">[1]</ref><ref type="bibr" target="#b1">[2]</ref><ref type="bibr" target="#b2">[3]</ref><ref type="bibr" target="#b3">[4]</ref><ref type="bibr" target="#b4">[5]</ref><ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref><ref type="bibr" target="#b7">[8]</ref><ref type="bibr" target="#b8">[9]</ref><ref type="bibr" target="#b9">[10]</ref><ref type="bibr" target="#b10">[11]</ref> formally testing microservices impacts testing results.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Validation</head><p>We should be able to model specifications for microservices. Our proof-of-concept should be able to use these models to detect bugs in microservices systems. To validate this, we systematically inject bugs in microservices systems using open-source mutation testing frameworks such as Stryker <ref type="bibr" target="#b31">[33]</ref> or PIT <ref type="bibr" target="#b27">[29]</ref>. We will then test these microservices systems using our proof-ofconcept and report to what extend it can detect these bugs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Evaluation</head><p>Our proposed method touches upon two area's of software testing: testing microservices in general and model-based testing theory. We will perform evaluation experiments on both of these aspects.</p><p>We evaluate how our proof-of-concept compares to other microservices testing techniques. We have selected three testing techniques: automated testing using EvoMaster <ref type="bibr" target="#b5">[6]</ref>, browserbased end-to-end testing using Cypress [14] and manually written E2E tests without a framework. We will perform experiments by testing the same microservices system using the aforementioned techniques. We will compare these techniques based on efficiency, effectiveness and applicability using the framework proposed by Eldh et al. <ref type="bibr" target="#b14">[16]</ref>. Additionally, we will compare the expressiveness of all testing techniques in terms of user friendliness. For example, what kind of information does each testing technique provide when a test has detected a bug? This could give us insights on how easy or intuitively a practitioner can interact with our proposed testing technique.</p><p>We also compare our proof-of-concept with the Axini Modeling Platform, as a framework representative for model-based testing. The goal is to see if a tailored theory for testing microservices differs from a general model-based testing approach. For comparison, we plan to employ a similar approach as conducted by van den Bos and Tretmans <ref type="bibr" target="#b11">[12]</ref>. We perform multiple test executions using both model-based testing techniques. After test execution, we measure the number of inputs and outputs that were required to find the injected bug in the system under test. This approach gives us insights in how thorough and effective our proof-of-concept is in finding bugs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Towards modeling microservices</head><p>Due to their distributed nature, microservices can display various behaviors that might impact modeling. In this section, we informally describe the differences of modeling a microservice.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1.">Asynchronous Behavior</head><p>Asynchronous messaging might have an impact on model-based testing. If an output of a microservice is produced asynchronously, we might observe it at different moment for each test execution.</p><p>Effectively, this introduces a form of non-determinism where microservices that use asynchronous actions yield different traces with the same input. It might be interesting to introduce a form of partial order or relative timestamps to model this kind of asynchronous behavior of microservices. We will explore this in the short-term.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2.">Operating environments of microservices</head><p>A microservice can be tested in isolation. Indeed, deploying a microservice separately and stubbing out any external dependency allows us to create a specific environment for testing. However, there is a difference between this testing environment and the actual production environment of microservices. Microservices communicate over a network. This effectively means that if we would compose microservice models, we could model this notion of the network as well. A network might introduce a form of non-determinism to the actions between microservices. A network connection may or may not be established between both parties. The result is that when two microservices communicate over a network to perform a procedure, this procedure may or may not be executed.</p><p>Moreover, a microservice either has successfully established a connection and is executing a procedure, or it has failed and therefore stopped. To an external observer of the microservice, there is no distinguishable behavior between the two; the microservice is quiescent.</p><p>When we are composing microservice models, it might be required to model the network as a separate transition system. This is inspired by the work of both de Alfaro and Helzinger <ref type="bibr" target="#b1">[2]</ref> and Daca et al. <ref type="bibr" target="#b13">[15]</ref>. The authors compute an environment as a separate transition system during the composition of two models. In our case, we can use this environment as a third component during composition. For example, instead of composing microservices A and B, we now compose microservices A and B with a third component (the network) N.</p><p>The main benefit is that we can use model-based testing to generate scenario's where the network between two microservices is unstable. As an example, this would allow us to test how a microservice would behave when the network is physically down.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.3.">Underspecification of the HTTP protocol</head><p>Microservices use some kind of protocol to communicate with each other. As discussed earlier, microservices typically use the HTTP protocol for synchronous communication. An interesting aspect of this protocol is that it specifies semantics for handling erroneous situations.</p><p>In the case that a microservice has handled a HTTP request successfully, it returns a HTTP Status Code in the 2xx-class. This status code class indicates success. If any kind of error occurs during the handling of a HTTP request, the microservice should return a status code in the 5xx-class. This indicates that the microservice did not fulfill the request successfully.</p><p>We could make use of the semantics of the HTTP protocol to allow the underspecification of erroneous behavior. For example, we could model a flow of a microservice that only considers the "Happy Path", e.g. only the case where the microservice returns a 2xx-class response. In this model, we did not specify any other possible HTTP Status codes, such as the 5xx-class to indicate an error. When we compose microservice specifications, we could detect that the composed specification does not contain any paths with erroneous HTTP status codes. We know that these erroneous HTTP status codes can be returned, as that is what the HTTP protocol specifies.</p><p>In this case, we can perform a special kind of Demonic Completion for these microservice models. For this completion, we find the states that contain transitions with HTTP responses. We can then add additional transitions from these states that model a generic error handling. This generic error handling can resemble the "Chaos" state that is used in Demonic Completion that allows all behavior.</p><p>The benefit of this approach is that we now allow microservice models with some notion of underspecification. We will investigate the compositional properties of this completion in the near-future.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Conclusion Outlook</head><p>With this work-in-progress study, we want to explore the applicability of compositional modelbased testing in combination with microservices.</p><p>In the short-term, we will formalize our theory regarding microservices testing. Next, we will develop a proof-of-concept that implements this tailor-made theory. This proof-of-concept will then be used to test actual microservices systems. One candidate for testing is the aforementioned open-source eShopOnContainers system. Moreover, we will also test a professionally developed microservices system that is provided by Info Support.</p><p>Additionally, we plan on performing validation and evaluation experiments on this proofof-concept. During these experiments, both microservices systems will be tested using the proof-of-concept and the Axini Modeling Platform. This will then allow us to compare both model-based testing methods, and find out whether developing a testing theory tailored towards microservices reaps the benefits that we hypothesize.</p><p>We are aware that our endeavour may change the job portfolio of testing practitioners, however, it does not need to change the requirements on their background education. We simply aim to better leverage their knowledge of the system under test, without the burden of setting up tedious end-to-end test setups. The theoretical challenges intrinsic to the employed formalisms would have been solved in the proposed framework.</p></div>		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Murphy Tools: Utilizing Extracted GUI Models for Industrial Software Testing</title>
		<author>
			<persName><forename type="first">Pekka</forename><surname>Aho</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Matias</forename><surname>Suarez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Teemu</forename><surname>Kanstrén</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Atif</forename><forename type="middle">M</forename><surname>Memon</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSTW.2014.39</idno>
	</analytic>
	<monogr>
		<title level="m">2014 IEEE Seventh International Conference on Software Testing, Verification and Validation Workshops</title>
				<imprint>
			<date type="published" when="2014-03">Mar. 2014</date>
			<biblScope unit="page" from="343" to="348" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Interface automata</title>
		<author>
			<persName><forename type="first">Luca</forename><surname>De Alfaro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><forename type="middle">A</forename><surname>Henzinger</surname></persName>
		</author>
		<idno type="DOI">10.1145/503271.503226</idno>
		<ptr target="https://doi.org/10.1145/503271.503226" />
	</analytic>
	<monogr>
		<title level="j">ACM SIGSOFT Software Engineering Notes</title>
		<idno type="ISSN">0163-5948</idno>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="109" to="120" />
			<date type="published" when="2001">Sept. 2001. visited on 06/21/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Using model checking to generate tests from specifications</title>
		<author>
			<persName><forename type="first">Paul</forename><forename type="middle">E</forename><surname>Paul E Ammann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">William</forename><surname>Black</surname></persName>
		</author>
		<author>
			<persName><surname>Majurski</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings second international conference on formal engineering methods (Cat. No. 98EX241)</title>
				<meeting>second international conference on formal engineering methods (Cat. No. 98EX241)</meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="1998">1998</date>
			<biblScope unit="page" from="46" to="54" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><surname>Angular</surname></persName>
		</author>
		<ptr target="https://www.protractortest.org/#/(visitedon06/" />
		<title level="m">Protractor. End to end testing for Angular</title>
				<imprint>
			<date type="published" when="2022">21/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Communication in a microservice architecture</title>
		<author>
			<persName><forename type="first">Nish</forename><surname>Anil</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Clark</forename><surname>Brent</surname></persName>
		</author>
		<author>
			<persName><forename type="first">David</forename><surname>Coulter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Miguel</forename><surname>Veloso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><surname>Parente</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Maira</forename><surname>Wenzel</surname></persName>
		</author>
		<ptr target="https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-microservice-architecture" />
		<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">RESTful API Automated Test Case Generation with EvoMaster</title>
		<author>
			<persName><forename type="first">Andrea</forename><surname>Arcuri</surname></persName>
		</author>
		<idno type="DOI">10.1145/3293455</idno>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Software Engineering and Methodology</title>
		<idno type="ISSN">1049-331X</idno>
		<imprint>
			<biblScope unit="volume">28</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="1" to="37" />
			<date type="published" when="2019-02-08">Feb. 2019. Visited on 08/29/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Axini Modeling Platform</title>
		<author>
			<persName><surname>Axini</surname></persName>
		</author>
		<ptr target="https://www.axini.com/nl/" />
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Visual GUI testing in continuous integration environment</title>
		<author>
			<persName><forename type="first">Fachrul</forename><surname>Pralienka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bani</forename><surname>Muhamad</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Riyanarto</forename><surname>Sarno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Adhatus</forename><surname>Solichah Ahmadiyah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Siti</forename><surname>Rochimah</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICTS.2016.7910301</idno>
	</analytic>
	<monogr>
		<title level="m">2016 International Conference on Information Communication Technology and Systems (ICTS)</title>
				<imprint>
			<date type="published" when="2016-10">Oct. 2016</date>
			<biblScope unit="page" from="214" to="219" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">DevOps: A Software Architect&apos;s Perspective</title>
		<author>
			<persName><surname>Bass</surname></persName>
		</author>
		<author>
			<persName><surname>Weber</surname></persName>
		</author>
		<author>
			<persName><surname>Zhu</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2015">2015</date>
			<publisher>Addison-Wesley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Complete Composition Operators for IOCO-Testing Theory</title>
		<author>
			<persName><forename type="first">Nikola</forename><surname>Beneš</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Przemysław</forename><surname>Daca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><forename type="middle">A</forename><surname>Henzinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jan</forename><surname>Křetínský</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dejan</forename><surname>Ničković</surname></persName>
		</author>
		<idno type="DOI">10.1145/2737166.2737175</idno>
		<ptr target="https://dl.acm.org/doi/10.1145/2737166.2737175" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 18th International ACM SIGSOFT Symposium on Component-Based Software Engineering</title>
				<meeting>the 18th International ACM SIGSOFT Symposium on Component-Based Software Engineering<address><addrLine>Montréal QC Canada</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015-05-05">May 2015. visited on 05/22/2022</date>
			<biblScope unit="page" from="101" to="110" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Compositional Testing with ioco</title>
		<author>
			<persName><forename type="first">Arend</forename><surname>Machiel Van Der Bijl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jan</forename><surname>Rensink</surname></persName>
		</author>
		<author>
			<persName><surname>Tretmans</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-24617-6_7</idno>
	</analytic>
	<monogr>
		<title level="m">Formal Approaches to Software Testing</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Alexandre</forename><surname>Petrenko</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Andreas</forename><surname>Ulrich</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="86" to="100" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Coverage-Based Testing with Symbolic Transition Systems</title>
		<author>
			<persName><forename type="first">Petra</forename><surname>Van Den Bos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jan</forename><surname>Tretmans</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-31157-5_5</idno>
		<ptr target="http://link.springer.com/10.1007/978-3-030-31157-5_5(visitedon" />
	</analytic>
	<monogr>
		<title level="m">Tests and Proofs</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Dirk</forename><surname>Beyer</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Chantal</forename><surname>Keller</surname></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer International Publishing</publisher>
			<date type="published" when="2019-01-13">2019. 01/13/2022</date>
			<biblScope unit="volume">11823</biblScope>
			<biblScope unit="page" from="64" to="82" />
		</imprint>
	</monogr>
	<note>Series Title</note>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Microservices: Architecting for Continuous Delivery and DevOps</title>
		<author>
			<persName><forename type="first">Lianping</forename><surname>Chen</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICSA.2018.00013</idno>
		<ptr target="https://ieeexplore.ieee.org/document/8417115/(visitedon07/" />
	</analytic>
	<monogr>
		<title level="m">2018 IEEE International Conference on Software Architecture (ICSA)</title>
				<meeting><address><addrLine>Seattle, WA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018-04">Apr. 2018. 20/2021</date>
			<biblScope unit="page" from="39" to="397" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Compositional Specifications for ioco Testing</title>
		<author>
			<persName><forename type="first">Przemyslaw</forename><surname>Daca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Thomas</forename><forename type="middle">A</forename><surname>Henzinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Willibald</forename><surname>Krenn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Dejan</forename><surname>Nickovic</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1904.07083[cs</idno>
		<idno>arXiv: 1904.07083</idno>
		<ptr target="http://arxiv.org/abs/1904.07083(visitedon" />
		<imprint>
			<date type="published" when="2019-04">Apr. 2019. 11/13/2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">A Framework for Comparing Efficiency, Effectiveness and Applicability of Software Testing Techniques</title>
		<author>
			<persName><forename type="first">Sigrid</forename><surname>Eldh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hans</forename><surname>Hansson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sasikumar</forename><surname>Punnekkat</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Anders</forename><surname>Pettersson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Daniel</forename><surname>Sundmark</surname></persName>
		</author>
		<idno type="DOI">10.1109/TAIC-PART.2006.1</idno>
		<imprint>
			<date type="published" when="2006-08">Aug. 2006</date>
			<biblScope unit="page" from="159" to="170" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<ptr target="https://github.com/dotnet-architecture/eShopOnContainers" />
		<title level="m">eShopOnContainers</title>
				<imprint>
			<date type="published" when="2022-06">June 2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<author>
			<persName><forename type="first">Martin</forename><surname>Fowler</surname></persName>
		</author>
		<ptr target="https://martinfowler.com/articles/microservices.html" />
		<title level="m">Microservices</title>
				<imprint>
			<date type="published" when="2022-06-21">06/21/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Automatic Ex-Vivo Regression Testing of Microservices</title>
		<author>
			<persName><forename type="first">Luca</forename><surname>Gazzola</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Maayan</forename><surname>Goldstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Leonardo</forename><surname>Mariani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Itai</forename><surname>Segall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Luca</forename><surname>Ussi</surname></persName>
		</author>
		<idno type="DOI">10.1145/3387903.3389309</idno>
		<ptr target="https://dl.acm.org/doi/10.1145/3387903.3389309" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the IEEE/ACM 1st International Conference on Automation of Software Test</title>
				<meeting>the IEEE/ACM 1st International Conference on Automation of Software Test<address><addrLine>Seoul Republic of Korea</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2020-10-06">Oct. 2020. visited on 06/16/2022</date>
			<biblScope unit="page" from="11" to="20" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">From Monolith to Microservices, Zalando&apos;s Journey</title>
		<author>
			<persName><surname>Giamas</surname></persName>
		</author>
		<ptr target="https://www.infoq.com/news/2016/02/Monolith-Microservices-Zalando/" />
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Performance Engineering for Microservices: Research Challenges and Directions</title>
		<author>
			<persName><forename type="first">Robert</forename><surname>Heinrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">André</forename><surname>Van Hoorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Holger</forename><surname>Knoche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Fei</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Lucy</forename><forename type="middle">Ellen</forename><surname>Lwakatare</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Claus</forename><surname>Pahl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stefan</forename><surname>Schulte</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Johannes</forename><surname>Wettinger</surname></persName>
		</author>
		<idno type="DOI">10.1145/3053600.3053653</idno>
		<ptr target="https://dl.acm.org/doi/10.1145/3053600.3053653" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 8th ACM/SPEC on International Conference on Performance Engineering Companion</title>
				<meeting>the 8th ACM/SPEC on International Conference on Performance Engineering Companion<address><addrLine>L&apos;Aquila Italy</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2017-04-07">Apr. 2017. visited on 07/20/2021</date>
			<biblScope unit="page" from="223" to="226" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Using formal specifications to support testing</title>
		<author>
			<persName><forename type="first">Kirill</forename><surname>Robert M Hierons</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jonathan</forename><forename type="middle">P</forename><surname>Bogdanov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rance</forename><surname>Bowen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">John</forename><surname>Cleaveland</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeremy</forename><surname>Derrick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marian</forename><surname>Dick</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mark</forename><surname>Gheorghe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kalpesh</forename><surname>Harman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Paul</forename><surname>Kapoor</surname></persName>
		</author>
		<author>
			<persName><surname>Krause</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Computing Surveys (CSUR)</title>
		<imprint>
			<biblScope unit="volume">41</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="1" to="76" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<title level="m" type="main">Amazon Architecture</title>
		<author>
			<persName><surname>Hoff</surname></persName>
		</author>
		<ptr target="http://highscalability.com/blog/2007/9/18/amazon-architecture.html" />
		<imprint>
			<date type="published" when="2007-03-31">2007. 03/31/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<title level="m" type="main">About Netflix -Completing the Netflix Cloud Migration</title>
		<author>
			<persName><forename type="first">Yury</forename><surname>Izrailevsky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stevan</forename><surname>Vlaovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ruslan</forename><surname>Meshenberg</surname></persName>
		</author>
		<ptr target="https://about.netflix.com/,%20https://about.netflix.com/en/news/completing-the-netflix-cloud-migration" />
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Matching implementations to specifications: the corner cases of ioco</title>
		<author>
			<persName><forename type="first">Ramon</forename><surname>Janssen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jan</forename><surname>Tretmans</surname></persName>
		</author>
		<idno type="DOI">10.1145/3297280.3297496</idno>
		<ptr target="https://dl.acm.org/doi/10.1145/3297280.3297496" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing</title>
				<meeting>the 34th ACM/SIGAPP Symposium on Applied Computing<address><addrLine>Limassol Cyprus</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2019-04-06">Apr. 2019. visited on 06/21/2022</date>
			<biblScope unit="page" from="2196" to="2205" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Performance and Scalability Testing Strategy Based on Kubemark</title>
		<author>
			<persName><forename type="first">Qing</forename><surname>Lei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Weidong</forename><surname>Liao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yingtao</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mei</forename><surname>Yang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Haifeng</forename><surname>Li</surname></persName>
		</author>
		<ptr target="https://ieeexplore.ieee.org/document/8725658/(visitedon" />
	</analytic>
	<monogr>
		<title level="m">2019 IEEE 4th International Conference on Cloud Computing and Big Data Analysis (ICCCBDA)</title>
				<meeting><address><addrLine>Chengdu, China</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2019-04">Apr. 2019. 07/20/2021</date>
			<biblScope unit="page" from="511" to="516" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">AutoBlackTest: Automatic Black-Box Testing of Interactive Applications</title>
		<author>
			<persName><forename type="first">Leonardo</forename><surname>Mariani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mauro</forename><surname>Pezze</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Oliviero</forename><surname>Riganelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mauro</forename><surname>Santoro</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICST.2012.88</idno>
	</analytic>
	<monogr>
		<title level="m">Verification and Validation 2012 IEEE Fifth International Conference on Software Testing</title>
				<imprint>
			<date type="published" when="2012-04">Apr. 2012</date>
			<biblScope unit="page" from="81" to="90" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Hierarchical GUI test case generation using automated planning</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Memon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">E</forename><surname>Pollack</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">L</forename><surname>Soffa</surname></persName>
		</author>
		<idno type="DOI">10.1109/32.908959</idno>
	</analytic>
	<monogr>
		<title level="m">Conference Name: IEEE Transactions on Software Engineering</title>
				<imprint>
			<date type="published" when="2001-02">Feb. 2001</date>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="page" from="144" to="155" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<author>
			<persName><surname>Pit</surname></persName>
		</author>
		<ptr target="https://pitest.org/(visitedon09/" />
		<title level="m">PIT Mutation Testing</title>
				<imprint>
			<date type="published" when="2022-05">05/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Towards Executable Specifications for Microservices</title>
		<author>
			<persName><forename type="first">Jose</forename><forename type="middle">G</forename><surname>Quenum</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Samir</forename><surname>Aknine</surname></persName>
		</author>
		<idno type="DOI">10.1109/SCC.2018.00013</idno>
		<ptr target="https://ieeexplore.ieee.org/document/8456399/(visitedon07/" />
	</analytic>
	<monogr>
		<title level="m">2018 IEEE International Conference on Services Computing (SCC)</title>
				<meeting><address><addrLine>San Francisco, CA, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018-07">July 2018. 20/2021</date>
			<biblScope unit="page" from="41" to="48" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<monogr>
		<title level="m" type="main">Building Microservices: Inter-Process Communication</title>
		<author>
			<persName><forename type="first">Chris</forename><surname>Richardson</surname></persName>
		</author>
		<ptr target="https://www.nginx.com/blog/building-microservices-inter-process-communication/(visitedon02/" />
		<imprint>
			<date type="published" when="2015-07">July 2015. 03/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<monogr>
		<author>
			<persName><surname>Smartbear</surname></persName>
		</author>
		<ptr target="https://cucumber.io/(visitedon" />
		<title level="m">Cucumber</title>
				<imprint>
			<date type="published" when="2022-05">09/05/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<monogr>
		<title/>
		<author>
			<persName><surname>Stryker</surname></persName>
		</author>
		<author>
			<persName><surname>Stryker Mutator</surname></persName>
		</author>
		<ptr target="https://stryker-mutator.io/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<monogr>
		<title/>
		<author>
			<persName><surname>Torxakis</surname></persName>
		</author>
		<author>
			<persName><surname>Torxakis</surname></persName>
		</author>
		<ptr target="https://github.com/TorXakis/TorXakis(visited" />
		<imprint>
			<date type="published" when="2022-06-21">06/21/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">Model Based Testing with Labelled Transition Systems</title>
		<author>
			<persName><forename type="first">Jan</forename><surname>Tretmans</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-78917-8_1</idno>
		<ptr target="https://doi.org/10.1007/978-3-540-78917-8_1(visitedon07/" />
	</analytic>
	<monogr>
		<title level="m">Formal Methods and Testing: An Outcome of the FORTEST Network, Revised Selected Papers</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Robert</forename><forename type="middle">M</forename><surname>Hierons</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Jonathan</forename><forename type="middle">P</forename><surname>Bowen</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Mark</forename><surname>Harman</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2008-12">2008. 12/2021</date>
			<biblScope unit="page" from="1" to="38" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<monogr>
		<title/>
		<author>
			<persName><surname>Tricentis</surname></persName>
		</author>
		<author>
			<persName><surname>Specflow</surname></persName>
		</author>
		<ptr target="https://specflow.org/(visitedon" />
		<imprint>
			<date type="published" when="2022-05">09/05/2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<monogr>
		<title level="m" type="main">Practical Model-Based Testing: A Tools Approach</title>
		<author>
			<persName><forename type="first">Mark</forename><surname>Utting</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bruno</forename><surname>Legeard</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2010-07">July 2010</date>
			<publisher>Elsevier</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b36">
	<monogr>
		<title level="m" type="main">A TAXONOMY OF MODEL-BASED TESTING</title>
		<author>
			<persName><forename type="first">Mark</forename><surname>Utting</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Pretschner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bruno</forename><surname>Legeard</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006-04">Apr. 2006</date>
			<biblScope unit="page">18</biblScope>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
