SlideShare a Scribd company logo
Testing REST &Testing REST &
Messaging applicationsMessaging applications
at Devskiller - a caseat Devskiller - a case
studystudy
@olga_maciaszek
Olga Maciaszek-Sharma
14.05.2018
Olga Maciaszek-SharmaOlga Maciaszek-Sharma
@olga_maciaszek
https://github.com/OlgaMaciaszekhttps://github.com/OlgaMaciaszek
@@olga_maciaszekolga_maciaszek
BackgroundBackground
@olga_maciaszek
E2E TestsE2E Tests
E2E TestsE2E Tests
@olga_maciaszek
@olga_maciaszek
Source: https://testing.googleblog.com/2015/04/just-say-no-to-more-end-to-end-tests.html
Test PyramidTest Pyramid
MicroservicesMicroservices
@olga_maciaszek
Decoupling DeploymentDecoupling Deployment
@olga_maciaszek
Environment per ServiceEnvironment per Service
One To Rule Them AllOne To Rule Them All
FailsafeFailsafe
vs.vs.
Safe To FailSafe To Fail
@olga_maciaszek
Circuit BreakersCircuit Breakers
@olga_maciaszek
How many E2E?How many E2E?
@olga_maciaszek
ContractsContracts
@olga_maciaszek
MonitoringMonitoring
AlertingAlerting
LoggingLogging
Unit TestsUnit Tests
Input A ==> Output BInput A ==> Output B
@olga_maciaszek
ContractsContracts
Consumer-Driven ContractsConsumer-Driven Contracts
sinon.jssinon.js
https://martinfowler.com/articles/consum
erDrivenContracts.html
@olga_maciaszek
Contract TestsContract Tests
https://martinfowler.com/bliki/ContractTest.html
@olga_maciaszek
Spring Cloud ContractSpring Cloud Contract
https://cloud.spring.io/spring-cloud-contract/
@olga_maciaszek
ContractsContracts
package contracts
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'PUT'
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
loanAmount: 99999
])
headers {
contentType('application/json')
}
}
response {
status OK()
body([
fraudCheckStatus: "FRAUD",
"rejection.reason": "Amount too high"
])
headers {
contentType('application/json')
}
}
}
@olga_maciaszek
Contract TestsContract Tests
@Test
public void validate_shouldMarkClientAsFraud() throws Exception {
// given:
MockMvcRequestSpecification request = given()
.header("Content-Type", "application/vnd.fraud.v1+json")
.body("{"client.id":"1234567890","loanAmount":99999}");
// when:
ResponseOptions response = given().spec(request)
.put("/fraudcheck");
// then:
assertThat(response.statusCode()).isEqualTo(200);
assertThat(response.header("Content-Type"))
.matches("application/vnd.fraud.v1.json.*");
// and:
DocumentContext parsedJson = JsonPath.parse(response.getBody().asString());
assertThatJson(parsedJson).field("['fraudCheckStatus']").matches("[A-Z]{5}");
assertThatJson(parsedJson).field("['rejection.reason']")
.isEqualTo("Amount too high");
}
@olga_maciaszek
Contract TestsContract Tests
def validate_shouldMarkClientAsFraud() {
given:
def request = given()
.header('Content-Type', 'application/vnd.fraud.v1+json')
.body('{"clientId":"12345678902","loanAmount":99999}')
when:
def response = given().spec(request).put("/fraudcheck")
then:
response.statusCode == 200
response.header('Content-Type') == 'application/vnd.fraud.v1+json'
and:
DocumentContext parsedJson = JsonPath.parse(response.body.asString())
assertTassertThatJson(parsedJson).field("rejectionReason")
.isEqualTo("Amount too high")
assertThatJson(parsedJson).field("fraudCheckStatus").isEqualTo("FRAUD")
}
@olga_maciaszek
StubsStubs
{
"request": {
"url": "/fraudcheck",
"method": "PUT",
"bodyPatterns": [
{
"matchesJsonPath": "$[?(@.loanAmount == 99999)]"
},
{
"matchesJsonPath": "$[?(@.clientId == '12345678902')]"
}
],
"headers": {
"Content-Type": {
"equalTo": "application/vnd.fraud.v1+json"
}
}
},
"response": {
"status": 200,
"body": "{"fraudCheckStatus":"FRAUD",
"rejectionReason":"Amount too high"}",
"headers": {
"Content-Type": "application/vnd.fraud.v1+json"
}
}
}
@olga_maciaszek
Using StubsUsing Stubs
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.NONE)
@AutoConfigureStubRunner(ids = {"com.example:http-server-dsl:+:stubs:6565"},
stubsMode = StubRunnerProperties.StubsMode.LOCAL)
@DirtiesContext
public class LoanApplicationServiceTests { ... }
@olga_maciaszek
JUnit Rule
Service Discovery
Messaging ContractsMessaging Contracts
def contractDsl = Contract.make {
label 'some_label'
input {
messageFrom('inputQueue')
messageBody([
bookName: 'foo'
])
messageHeaders {
header('sample', 'header')
}
}
outputMessage {
sentTo('outputQueue')
body([
bookName: 'foo'
])
headers {
header('BOOK-NAME', 'foo')
}
}
}
@olga_maciaszek
Messaging Contract TestsMessaging Contract Tests
given:
ContractVerifierMessage inputMessage = contractVerifierMessaging.create(
'''{"bookName":"foo"}''',
['sample': 'header']
)
when:
contractVerifierMessaging.send(inputMessage, 'inputQueue')
then:
ContractVerifierMessage response = contractVerifierMessaging
.receive('outputQueue')
assert response != null
response.getHeader('BOOK-NAME')?.toString() == 'foo'
and:
DocumentContext parsedJson = JsonPath.parse(contractVerifierObjectMapper
.writeValueAsString(response.payload))
assertThatJson(parsedJson).field("bookName").isEqualTo("foo")
@olga_maciaszek
Messaging Client-Side TestMessaging Client-Side Test
given:
messaging.send(new BookReturned('foo'), [sample: 'header'], 'input')
when:
Message<?> receivedMessage = messaging.receive('outputTest')
then:
receivedMessage != null
assertJsons(receivedMessage.payload)
receivedMessage.headers.get('BOOK-NAME') == 'foo'
@olga_maciaszek
StubTrigger InterfaceStubTrigger Interface
package org.springframework.cloud.contract.stubrunner;
import java.util.Collection;
import java.util.Map;
public interface StubTrigger {
boolean trigger(String ivyNotation, String labelName);
boolean trigger(String labelName);
boolean trigger();
Map<String, Collection<String>> labels();
}
@olga_maciaszek
SCC Canonical FlowSCC Canonical Flow
@olga_maciaszek
SCC Canonical FlowSCC Canonical Flow
@olga_maciaszek
SCC Canonical FlowSCC Canonical Flow
@olga_maciaszek
SCC Canonical FlowSCC Canonical Flow
@olga_maciaszek
SCC Canonical FlowSCC Canonical Flow
@olga_maciaszek
Local FlowLocal Flow
@olga_maciaszek
Sources: http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
Local FlowLocal Flow
Skip Test To Generate Stubs
Stub service layer implementation while working on the
API
Never skip tests in the pipelines
@olga_maciaszek
Contracts ScopeContracts Scope
Skip Contracts for non-Skip Contracts for non-
essential functionalityessential functionality
@olga_maciaszek
Contracts ScopeContracts Scope
Skip multiple valuesSkip multiple values
@olga_maciaszek
Skip Multiple ValuesSkip Multiple Values
@olga_maciaszek
request {
method 'PUT'
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
"client.type" : "INDIVIDUAL"
loanAmount: 99999
])
headers {
contentType('application/json')
}}
request {
method 'PUT'
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
"client.type" : "BUSINESS"
loanAmount: 99999
])
headers {
contentType('application/json')
}}
BackwardsBackwards
Compatibility CheckCompatibility Check
Spring Cloud PipelinesSpring Cloud Pipelines
@olga_maciaszek
BackwardsBackwards
Compatibility ChangeCompatibility Change
@olga_maciaszek
Contracts                  APP
Deferred UpdateDeferred Update
       bT             bT
    bT + bTM       bT + bTM
       bTM         bT + bTM
       bTM            bTM
No Shared DTOsNo Shared DTOs
@olga_maciaszek
SNAPSHOTSSNAPSHOTS
@olga_maciaszek
Public APIPublic API
Spring Rest DocsSpring Rest Docs
MockMvc Tests -> REST Docs, Stubs, Contracts
@olga_maciaszek
Public APIPublic API
mvn spring-cloud-contract:run -Dstubs="org.springframework:gs-rest-service"
Docs
@olga_maciaszek
Generate Rest DocsGenerate Rest Docs
from Contractsfrom Contracts
@olga_maciaszek
https://github.com/OlgaMaciaszekhttps://github.com/OlgaMaciaszek
@@olga_maciaszekolga_maciaszek
Thank youThank you

More Related Content

What's hot

oracle soa Examples
oracle soa Examplesoracle soa Examples
oracle soa Examples
xavier john
 
Testing RESTful web services with REST Assured
Testing RESTful web services with REST AssuredTesting RESTful web services with REST Assured
Testing RESTful web services with REST Assured
Bas Dijkstra
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
Derek Willian Stavis
 
The Groovy Way of Testing with Spock
The Groovy Way of Testing with SpockThe Groovy Way of Testing with Spock
The Groovy Way of Testing with Spock
Naresha K
 
TDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
TDC2016POA | Trilha JavaScript - JavaScript Promises na PráticaTDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
TDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
tdc-globalcode
 
Creating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat ApplicationCreating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat Application
Micha Kops
 
Integration test framework
Integration test frameworkIntegration test framework
Integration test framework
Ilya Medvedev
 
Enterprise Java Puzzlers
Enterprise Java PuzzlersEnterprise Java Puzzlers
Enterprise Java Puzzlers
Pavel Grushetzky
 
Android dev 3
Android dev 3Android dev 3
Android dev 3
Aravindharamanan S
 
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Knoldus Inc.
 

What's hot (10)

oracle soa Examples
oracle soa Examplesoracle soa Examples
oracle soa Examples
 
Testing RESTful web services with REST Assured
Testing RESTful web services with REST AssuredTesting RESTful web services with REST Assured
Testing RESTful web services with REST Assured
 
JavaScript Promises
JavaScript PromisesJavaScript Promises
JavaScript Promises
 
The Groovy Way of Testing with Spock
The Groovy Way of Testing with SpockThe Groovy Way of Testing with Spock
The Groovy Way of Testing with Spock
 
TDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
TDC2016POA | Trilha JavaScript - JavaScript Promises na PráticaTDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
TDC2016POA | Trilha JavaScript - JavaScript Promises na Prática
 
Creating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat ApplicationCreating a Java EE 7 Websocket Chat Application
Creating a Java EE 7 Websocket Chat Application
 
Integration test framework
Integration test frameworkIntegration test framework
Integration test framework
 
Enterprise Java Puzzlers
Enterprise Java PuzzlersEnterprise Java Puzzlers
Enterprise Java Puzzlers
 
Android dev 3
Android dev 3Android dev 3
Android dev 3
 
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
 

Similar to Testing REST and Messaging Applications at Devskiller - a case study

Microsrvs testing-slides
Microsrvs testing-slidesMicrosrvs testing-slides
Microsrvs testing-slides
Igor Redkach
 
Mutation Testing: Testing your tests
Mutation Testing: Testing your testsMutation Testing: Testing your tests
Mutation Testing: Testing your tests
Stephen Leigh
 
Why Our Code Smells
Why Our Code SmellsWhy Our Code Smells
Why Our Code Smells
TiNguyn863920
 
How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014
Guillaume POTIER
 
Unit Testing Express Middleware
Unit Testing Express MiddlewareUnit Testing Express Middleware
Unit Testing Express Middleware
Morris Singer
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You Test
Schalk Cronjé
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
Sara Tornincasa
 
What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?
Trisha Gee
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
intuit_india
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
VodqaBLR
 
Not your father's tests
Not your father's testsNot your father's tests
Not your father's tests
Sean P. Floyd
 
Spock
SpockSpock
Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014
alexandre freire
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-Assured
Michel Schudel
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Schalk Cronjé
 
Anatomy of a Gem: Bane
Anatomy of a Gem: BaneAnatomy of a Gem: Bane
Anatomy of a Gem: Bane
Daniel Wellman
 
How To Test Everything
How To Test EverythingHow To Test Everything
How To Test Everything
noelrap
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl Techniques
Dave Cross
 
Unit testing powershell
Unit testing powershellUnit testing powershell
Unit testing powershell
Matt Wrock
 
Rspec
RspecRspec

Similar to Testing REST and Messaging Applications at Devskiller - a case study (20)

Microsrvs testing-slides
Microsrvs testing-slidesMicrosrvs testing-slides
Microsrvs testing-slides
 
Mutation Testing: Testing your tests
Mutation Testing: Testing your testsMutation Testing: Testing your tests
Mutation Testing: Testing your tests
 
Why Our Code Smells
Why Our Code SmellsWhy Our Code Smells
Why Our Code Smells
 
How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014How to test complex SaaS applications - The family july 2014
How to test complex SaaS applications - The family july 2014
 
Unit Testing Express Middleware
Unit Testing Express MiddlewareUnit Testing Express Middleware
Unit Testing Express Middleware
 
Cool JVM Tools to Help You Test
Cool JVM Tools to Help You TestCool JVM Tools to Help You Test
Cool JVM Tools to Help You Test
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
 
What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?What do you mean, Backwards Compatibility?
What do you mean, Backwards Compatibility?
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
 
Karate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made SimpleKarate - Web-Service API Testing Made Simple
Karate - Web-Service API Testing Made Simple
 
Not your father's tests
Not your father's testsNot your father's tests
Not your father's tests
 
Spock
SpockSpock
Spock
 
Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014
 
Test your microservices with REST-Assured
Test your microservices with REST-AssuredTest your microservices with REST-Assured
Test your microservices with REST-Assured
 
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionCool Jvm Tools to Help you Test - Aylesbury Testers Version
Cool Jvm Tools to Help you Test - Aylesbury Testers Version
 
Anatomy of a Gem: Bane
Anatomy of a Gem: BaneAnatomy of a Gem: Bane
Anatomy of a Gem: Bane
 
How To Test Everything
How To Test EverythingHow To Test Everything
How To Test Everything
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl Techniques
 
Unit testing powershell
Unit testing powershellUnit testing powershell
Unit testing powershell
 
Rspec
RspecRspec
Rspec
 

Recently uploaded

What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
Massimo Artizzu
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 

Recently uploaded (20)

What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 

Testing REST and Messaging Applications at Devskiller - a case study