SlideShare a Scribd company logo
Write Antifragile & Domain-Driven
Tests with
• THOMAS PIERRAIN
(@TPIERRAIN)
ACCEPTANCE TESTS
(COARSE-GRAINED “UNIT” TESTS)
UNIT TESTS
(FINE-GRAINED)
CONTRACT TESTS
INTEGRATION TESTS
QA
SMOKE TESTS
EXPLORATORY TESTS
END-TO-END TESTS
OUTSIDE-IN
DIAMOND
TDD
Disclaimers
There is no silver bullet Your testing strategy & techniques must always be
chosen accordingly to your context (both human & technical)
As long as you understand your trade-offs there is no reason not to
explore new paths…
Thanks to Kent Beck, Martin Fowler, Michael Feathers, Nat Pryce & Steve Freeman for their great source of
inspiration over the years #shouldersOfGiants
Preamble
BFF API
Booking
API
E-commerce
CRS API
Central
Reservation
U
d
PSP
API
Payment
U
d
• THOMAS PIERRAIN
(@TPIERRAIN)
Metasearch
API
Distribution
U
d
Resorts
Referential
CMS
API
Property
Management
System (PMS)
Stay
U
d
U
d
Rates &
Cancellation rules
API
Revenue Mgmt
U
d
U
d
Hospitality
U
d
Accounts
API
Loyalty
API
Marketing
DDD
LOVES…
(Contextualized)
Services
E-commerce
Central
Reservation
U
d
Payment
U
d
• THOMAS PIERRAIN
(@TPIERRAIN)
Distribution
U
d
Resorts
Referential
Stay
U
d
U
d
Revenue Mgmt
U
d
U
d
U
d
Marketing
Accounts
API
Loyalty
API
DDD
LOVES…
(Contextualized)
Services
BFF API
Booking
API
CMS
API
PSP
API
CRS API
Rates &
Cancellation rules
API
Metasearch
API
Property
Management
System (PMS)
Hospitality
• THOMAS PIERRAIN
(@TPIERRAIN)
DDD (& TDD)
ALSO
LOVES… DOMAIN
HTTP
HTTP
API
INFRASTRUCTURE
OUR WEB API
Ports &
Adapters
• THOMAS PIERRAIN
(@TPIERRAIN)
DDD (& TDD)
ALSO
LOVE… DOMAIN
HTTP INFRASTRUCTURE
OUR WEB API
Ports &
Adapters
Easy to test
Protect Domain code from
Infra fads
Quick feedback
(carpaccio-style slicing)
Allow late
architectural decisions
Composable:
modular-monolith ready HTTP
API
• THOMAS PIERRAIN
(@TPIERRAIN)
DDD (& TDD)
ALSO
LOVE… DOMAIN
INFRASTRUCTURE
Ports &
Adapters
• THOMAS PIERRAIN
(@TPIERRAIN)
DDD (& TDD)
ALSO
LOVE… DOMAIN
HTTP INFRASTRUCTURE
OUR WEB API
Ports &
Adapters
HTTP
API
Let’s talk about tests!
• THOMAS PIERRAIN
(@TPIERRAIN)
Different
Types
A WORLD
OF TESTS
ET Exploratory Tests (E2E)
IT Integration Tests (Contract)
AT
(coarse-grained unit)
Acceptance Tests
UT (fine-grained) Unit Tests
Why do I do TDD?
Made me…
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
More relaxed
More efficient
More relevant
TDD Workflows
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT AT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT AT
AT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT AT
AT
AT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT AT
AT
AT
AT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT AT
AT
AT
AT
AT
AT
Outside-in
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
AT
AT
AT
AT
AT
AT
AT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
UT
UT
API
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
UT
UT
API UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
UT
UT
API UT
UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
API
UT
UT
UT
UT
UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
API
UT
UT
UT
UT
UT
UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
API
UT
UT
UT
UT
UT
UT
UT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
API
UT
UT
UT
UT
UT
UT
UT
AT
Inside-out
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
API
UT
UT
UT
UT
UT
UT
UT
AT
AT
Workflows
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
Outside-in Inside-out
A
P
I
…
…
A
P
I
Common pitfalls & mitigations
• THOMAS PIERRAIN
(@TPIERRAIN)
Beware of…
TEST
DRIVEN
DEVELOP
MENT
1. Fragile tests
2. Blind spots
3. Complex setups
TEST
DRIVEN
DEVELOP
MENT
1.
Beware of…
Fragile tests
uses
API
uses
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
AT
UT
UT
UT
UT
UT
UT
AT
uses
API
1.
Beware of…
Fragile tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT UT
UT
AT
UT
UT
UT
UT
AT
uses
API
Now we want to change
our implementation here
1.
Beware of…
Fragile tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT UT
UT
AT
UT
UT
UT
UT
AT
uses
API
1.
Beware of…
Fragile tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT UT
UT
AT
UT
UT
UT
UT
AT
😕
😕 😕
😕
😕
uses
API
1.
Beware of…
Fragile tests
😕
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT UT
UT
AT
UT
UT
UT
UT
AT
😕
😕 😕
😕
😕
uses
API
Fragile tests
➔ Less refactoring
😕
• THOMAS PIERRAIN
(@TPIERRAIN)
UT
UT
AT
UT
UT
UT
UT
AT
😕
😕 😕
😕
😕
uses
API
TEST
DRIVEN
DEVELOP
MENT
Fragile tests
MITIGATIONS
• Do not test “implementations”
• Focus on external behaviours
instead (with Outside-in TDD)
• Favor (coarse-grained unit)
Acceptance tests over fine-
grained unit tests
A
P
…
…
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT Disclaimer
Test Coverage will be a visual help to
identify blind spots in our code here
It doesn’t mean that test coverage is a
must
2.
Beware of…
Blind Spots
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
DOMAIN
HTTP
HTTP
API
INFRASTRUCTURE
OUR WEB API
2.
Beware of…
Blind Spots
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
DOMAIN
Test the domain code with
{ acceptance | unit tests }
2.
Beware of…
Blind Spots
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
DOMAIN
HTTP
API
Test the domain code with
{ acceptance | unit tests }
Test the infra code (i.e. Adapters) with
contract (integration) tests
2.
Beware of…
Blind Spots
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
2.
Beware of…
Blind Spots
IT
IT
IT
IT
HTTP
API

CONTRACT TESTS
DOMAIN
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
100% covered
by Acceptance
Tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
2.
Beware of…
Blind Spots
IT
IT
IT
IT
HTTP
API

CONTRACT TESTS
DOMAIN
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
100% covered
by Acceptance
Tests
As DEV we
to write Domain-
Driven tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
2.
Beware of…
Blind Spots
IT
IT
IT
IT
HTTP
API

CONTRACT TESTS
DOMAIN
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
100% covered
by Acceptance
Tests
As DEV we
to write Domain-
Driven tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
2.
Beware of…
Blind Spots
As DEV we don’t write
enough integration tests
Because they are slow to
run & boring
➔ BUGS
IT
IT
IT
IT
HTTP
API

CONTRACT TESTS
DOMAIN
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
100% covered
by Acceptance
Tests
As DEV we
to write Domain-
Driven tests
As DEV we don’t write
enough integration tests
Because they are slow to
run & boring
➔ BUGS
IT
IT
IT
IT
HTTP
API

CONTRACT TESTS
DOMAIN
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
AT
100% covered
by Acceptance
Tests
As DEV we
to write Domain-
Driven tests
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
Blind Spots
MITIGATIONS
• Detect bugs in Adapters
via our beloved Acceptance
tests
• Include the Adapters code
and stub only the I/Os
BUGS
• THOMAS PIERRAIN
(@TPIERRAIN)
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
• THOMAS PIERRAIN
(@TPIERRAIN)
Test Suite for Rooms Availability
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
740 lines of Init()
• THOMAS PIERRAIN
(@TPIERRAIN)
Test Suite for Rooms Availability
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
740 lines of Init()
• THOMAS PIERRAIN
(@TPIERRAIN)
Test Suite for Rooms Availability
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
740 lines of Init()
• THOMAS PIERRAIN
(@TPIERRAIN)
Test Suite for Rooms Availability
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
Tests using initialized fields
➔ side effects nightmare
• THOMAS PIERRAIN
(@TPIERRAIN)
MITIGATIONS
• Avoid cognitive overload as much as
possible
The power of sameness
• Favor local variables over test suite
members
Everything should be created from the test
• Use Domain-Driven Builders to shorten
and explicit the Arrange section of your
tests
• Treat your test code as production code!
➔ merciless refactoring
TEST
DRIVEN
DEVELOP
MENT
3.
Beware of…
Complex
setups
• THOMAS PIERRAIN
(@TPIERRAIN)
Beware of…
TEST
DRIVEN
DEVELOP
MENT
1. Fragile tests
2. Blind spots
3. Complex setups
• THOMAS PIERRAIN
(@TPIERRAIN)
1. Fragile tests
2. Blind spots
3. Complex setups
Mitigations
TEST
DRIVEN
DEVELOP
MENT
• THOMAS PIERRAIN
(@TPIERRAIN)
1. Fragile tests
2. Blind spots
3. Complex setups
Mitigations
TEST
DRIVEN
DEVELOP
MENT
• THOMAS PIERRAIN
(@TPIERRAIN)
1. Fragile tests
2. Blind spots
3. Complex setups
Mitigations
TEST
DRIVEN
DEVELOP
MENT
Outside-in Diamond TDD
Outside-in Diamond TDD
Outside-in Diamond TDD
• THOMAS PIERRAIN
(@TPIERRAIN)
Outside-in
but…
TEST
DRIVEN
DEVELOP
MENT
Double loop?
• THOMAS PIERRAIN
(@TPIERRAIN)
Outside-in
but…
TEST
DRIVEN
DEVELOP
MENT
Double loop
• THOMAS PIERRAIN
(@TPIERRAIN)
Outside-in
but…
TEST
DRIVEN
DEVELOP
MENT
Double loop
One and a half loop
( )
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
Read it as a sentence divided into 2 parts
+
OUTSIDE-IN
DIAMOND
Fuzzers help us
- to randomly detect hard-coded values
or unsupported cases
OUTSIDE-IN
DIAMOND
Fuzzers help us
- to randomly detect hard-coded values
or unsupported case
- to shorten our test setup
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
OUTSIDE-IN
DIAMOND
Builders allow Behavioral
& Domain-Driven intentions
(no tech details here)
Very important!
OUTSIDE-IN
DIAMOND
We test from the left-side Adapter
(here a web controller)
Injecting the result of our builder
OUTSIDE-IN
DIAMOND
We define the end-user request
No I/O here, but we test
the whole { black-box / component / API }
OUTSIDE-IN
DIAMOND
Helper method to sum-up in “one line”
our assert intention
OUTSIDE-IN
DIAMOND
“One line” to hide our
technical assertions
towards DTOs etc.
OUTSIDE-IN
DIAMOND
“One line” to hide our
technical assertions
towards DTOs etc.
“One line” to reuse the same
check intention, but with
various adapters
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
OUTSIDE-IN
DIAMOND
ARRANGE
ACT
ASSERT
OUTSIDE-IN
DIAMOND
ARRANGE
ACT
ASSERT
Fuzzers to shorten & speed setup
Builders to shorten and
“domain-driven” our test setup
OUTSIDE-IN
DIAMOND
Domain-Driven!
Live code
Wrap up
Outside-in Diamond TDD
• Elaborated from & for the people
• Write fast & Antifragile tests
( refactoring )
• DDD but covers more blind spots
on the tech side
Outside-in Diamond TDD
• Elaborated from & for the people
• Write fast & Antifragile tests
( refactoring )
• DDD but covers more blind spots
on the tech side
Any Questions?
BINARY IS FOR MACHINE
CODE IS FOR PEOPLE
WE CARE PEOPLE
Special thanks to: Bruno BOUCARD, Cyrille DUPUYDAUBY & Rui CARVALHO for their kind reviews & feedbacks

More Related Content

Similar to Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD

Lessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From ZombielandLessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From Zombieland
Matt Barbour
 
Testing Adhearsion Applications
Testing Adhearsion ApplicationsTesting Adhearsion Applications
Testing Adhearsion Applications
Luca Pradovera
 
"Test Design Techniques"
"Test Design Techniques" "Test Design Techniques"
"Test Design Techniques"
HYS Enterprise
 
Building tools to free up exploratory testers - appium conference talk
Building tools to free up exploratory testers - appium conference talkBuilding tools to free up exploratory testers - appium conference talk
Building tools to free up exploratory testers - appium conference talk
Pradeep Soundararajan
 
Sprint3r tpse2014-atdd-with-robot-framework
Sprint3r tpse2014-atdd-with-robot-frameworkSprint3r tpse2014-atdd-with-robot-framework
Sprint3r tpse2014-atdd-with-robot-framework
Thawatchai Jong
 
Massive Continuous Integration and Light-speed Iterations
Massive Continuous Integration and Light-speed IterationsMassive Continuous Integration and Light-speed Iterations
Massive Continuous Integration and Light-speed Iterations
TechWell
 
Shift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David LaulusaShift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David Laulusa
QA or the Highway
 
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeterHow to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
Alon Girmonsky
 
Smoke Tests @ DevOps-Hamburg 06.02.2017
Smoke Tests @ DevOps-Hamburg 06.02.2017Smoke Tests @ DevOps-Hamburg 06.02.2017
Smoke Tests @ DevOps-Hamburg 06.02.2017
tech.kartenmacherei
 
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony
 
End-to-End Automated Testing: Lessons from Zombieland
End-to-End Automated Testing: Lessons from ZombielandEnd-to-End Automated Testing: Lessons from Zombieland
End-to-End Automated Testing: Lessons from Zombieland
Josiah Renaudin
 
Tackling Testing Telephony
Tackling Testing Telephony Tackling Testing Telephony
Tackling Testing Telephony
Mojo Lingo
 
Agile Testing Days 2018 USA - API Testing Fundamentals
Agile Testing Days 2018 USA - API Testing FundamentalsAgile Testing Days 2018 USA - API Testing Fundamentals
Agile Testing Days 2018 USA - API Testing Fundamentals
JoEllen Carter
 
Assumption Hunting
Assumption HuntingAssumption Hunting
Assumption Hunting
Nexer Digital
 
Vladimir Primakov - Qa management in big agile teams
Vladimir Primakov - Qa management in big agile teamsVladimir Primakov - Qa management in big agile teams
Vladimir Primakov - Qa management in big agile teams
Ievgenii Katsan
 
Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)
Dmitry Sharkov
 
Apex Testing Deep Dive
Apex Testing Deep DiveApex Testing Deep Dive
Apex Testing Deep Dive
Adam Olshansky
 
Expanding Your .NET Testing Toolbox - GLUG NET
Expanding Your .NET Testing Toolbox - GLUG NETExpanding Your .NET Testing Toolbox - GLUG NET
Expanding Your .NET Testing Toolbox - GLUG NET
Matt Eland
 
Streams on top of scala - #lambdaCon
Streams on top of scala - #lambdaConStreams on top of scala - #lambdaCon
Streams on top of scala - #lambdaCon
Quentin Adam
 
Automatic Features Generation And Model Training On Spark: A Bayesian Approach
Automatic Features Generation And Model Training On Spark: A Bayesian ApproachAutomatic Features Generation And Model Training On Spark: A Bayesian Approach
Automatic Features Generation And Model Training On Spark: A Bayesian Approach
Spark Summit
 

Similar to Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD (20)

Lessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From ZombielandLessons Learned in Test Automation From Zombieland
Lessons Learned in Test Automation From Zombieland
 
Testing Adhearsion Applications
Testing Adhearsion ApplicationsTesting Adhearsion Applications
Testing Adhearsion Applications
 
"Test Design Techniques"
"Test Design Techniques" "Test Design Techniques"
"Test Design Techniques"
 
Building tools to free up exploratory testers - appium conference talk
Building tools to free up exploratory testers - appium conference talkBuilding tools to free up exploratory testers - appium conference talk
Building tools to free up exploratory testers - appium conference talk
 
Sprint3r tpse2014-atdd-with-robot-framework
Sprint3r tpse2014-atdd-with-robot-frameworkSprint3r tpse2014-atdd-with-robot-framework
Sprint3r tpse2014-atdd-with-robot-framework
 
Massive Continuous Integration and Light-speed Iterations
Massive Continuous Integration and Light-speed IterationsMassive Continuous Integration and Light-speed Iterations
Massive Continuous Integration and Light-speed Iterations
 
Shift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David LaulusaShift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David Laulusa
 
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeterHow to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
How to Run a 1,000,000 VU Load Test using Apache JMeter and BlazeMeter
 
Smoke Tests @ DevOps-Hamburg 06.02.2017
Smoke Tests @ DevOps-Hamburg 06.02.2017Smoke Tests @ DevOps-Hamburg 06.02.2017
Smoke Tests @ DevOps-Hamburg 06.02.2017
 
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
 
End-to-End Automated Testing: Lessons from Zombieland
End-to-End Automated Testing: Lessons from ZombielandEnd-to-End Automated Testing: Lessons from Zombieland
End-to-End Automated Testing: Lessons from Zombieland
 
Tackling Testing Telephony
Tackling Testing Telephony Tackling Testing Telephony
Tackling Testing Telephony
 
Agile Testing Days 2018 USA - API Testing Fundamentals
Agile Testing Days 2018 USA - API Testing FundamentalsAgile Testing Days 2018 USA - API Testing Fundamentals
Agile Testing Days 2018 USA - API Testing Fundamentals
 
Assumption Hunting
Assumption HuntingAssumption Hunting
Assumption Hunting
 
Vladimir Primakov - Qa management in big agile teams
Vladimir Primakov - Qa management in big agile teamsVladimir Primakov - Qa management in big agile teams
Vladimir Primakov - Qa management in big agile teams
 
Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)Strategic Testing (CodeMash 2016)
Strategic Testing (CodeMash 2016)
 
Apex Testing Deep Dive
Apex Testing Deep DiveApex Testing Deep Dive
Apex Testing Deep Dive
 
Expanding Your .NET Testing Toolbox - GLUG NET
Expanding Your .NET Testing Toolbox - GLUG NETExpanding Your .NET Testing Toolbox - GLUG NET
Expanding Your .NET Testing Toolbox - GLUG NET
 
Streams on top of scala - #lambdaCon
Streams on top of scala - #lambdaConStreams on top of scala - #lambdaCon
Streams on top of scala - #lambdaCon
 
Automatic Features Generation And Model Training On Spark: A Bayesian Approach
Automatic Features Generation And Model Training On Spark: A Bayesian ApproachAutomatic Features Generation And Model Training On Spark: A Bayesian Approach
Automatic Features Generation And Model Training On Spark: A Bayesian Approach
 

More from Thomas Pierrain

The scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThe scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarine
Thomas Pierrain
 
Hexagonal And Beyond
Hexagonal And BeyondHexagonal And Beyond
Hexagonal And Beyond
Thomas Pierrain
 
La scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireLa scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaire
Thomas Pierrain
 
De l'autre côté du miroir
De l'autre côté du miroirDe l'autre côté du miroir
De l'autre côté du miroir
Thomas Pierrain
 
eXtreme
eXtremeeXtreme
Beyond Hexagonal architecture
Beyond Hexagonal architectureBeyond Hexagonal architecture
Beyond Hexagonal architecture
Thomas Pierrain
 
The 9 rules of debugging
The 9 rules of debuggingThe 9 rules of debugging
The 9 rules of debugging
Thomas Pierrain
 
Hexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellHexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shell
Thomas Pierrain
 
Une nuit dans l'hexagone
Une nuit dans l'hexagoneUne nuit dans l'hexagone
Une nuit dans l'hexagone
Thomas Pierrain
 
Equiper sa voie
Equiper sa voieEquiper sa voie
Equiper sa voie
Thomas Pierrain
 
As time goes by (episode 2)
As time goes by (episode 2)As time goes by (episode 2)
As time goes by (episode 2)
Thomas Pierrain
 
Et si on parlait Éthique ?
Et si on parlait Éthique ?Et si on parlait Éthique ?
Et si on parlait Éthique ?
Thomas Pierrain
 
Sortir de notre zone de confort
Sortir de notre zone de confortSortir de notre zone de confort
Sortir de notre zone de confort
Thomas Pierrain
 
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreL'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
Thomas Pierrain
 
Legacy club (english version)
Legacy club (english version)Legacy club (english version)
Legacy club (english version)
Thomas Pierrain
 
The art of Software Design
The art of Software DesignThe art of Software Design
The art of Software Design
Thomas Pierrain
 
CQRS without event sourcing
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcing
Thomas Pierrain
 
Async await...oh wait!
Async await...oh wait!Async await...oh wait!
Async await...oh wait!
Thomas Pierrain
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
Thomas Pierrain
 
Decouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingDecouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event storming
Thomas Pierrain
 

More from Thomas Pierrain (20)

The scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarineThe scale-up, the autonomy and the nuclear submarine
The scale-up, the autonomy and the nuclear submarine
 
Hexagonal And Beyond
Hexagonal And BeyondHexagonal And Beyond
Hexagonal And Beyond
 
La scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaireLa scale-up, l'autonomie et le sous-marin nucléaire
La scale-up, l'autonomie et le sous-marin nucléaire
 
De l'autre côté du miroir
De l'autre côté du miroirDe l'autre côté du miroir
De l'autre côté du miroir
 
eXtreme
eXtremeeXtreme
eXtreme
 
Beyond Hexagonal architecture
Beyond Hexagonal architectureBeyond Hexagonal architecture
Beyond Hexagonal architecture
 
The 9 rules of debugging
The 9 rules of debuggingThe 9 rules of debugging
The 9 rules of debugging
 
Hexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shellHexagonal architecture vs Functional core / Imperative shell
Hexagonal architecture vs Functional core / Imperative shell
 
Une nuit dans l'hexagone
Une nuit dans l'hexagoneUne nuit dans l'hexagone
Une nuit dans l'hexagone
 
Equiper sa voie
Equiper sa voieEquiper sa voie
Equiper sa voie
 
As time goes by (episode 2)
As time goes by (episode 2)As time goes by (episode 2)
As time goes by (episode 2)
 
Et si on parlait Éthique ?
Et si on parlait Éthique ?Et si on parlait Éthique ?
Et si on parlait Éthique ?
 
Sortir de notre zone de confort
Sortir de notre zone de confortSortir de notre zone de confort
Sortir de notre zone de confort
 
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettreL'Agilité a grande échelle : conserver l'esprit, pas la lettre
L'Agilité a grande échelle : conserver l'esprit, pas la lettre
 
Legacy club (english version)
Legacy club (english version)Legacy club (english version)
Legacy club (english version)
 
The art of Software Design
The art of Software DesignThe art of Software Design
The art of Software Design
 
CQRS without event sourcing
CQRS without event sourcingCQRS without event sourcing
CQRS without event sourcing
 
Async await...oh wait!
Async await...oh wait!Async await...oh wait!
Async await...oh wait!
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
Decouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event stormingDecouvrir son sujet grace à l'event storming
Decouvrir son sujet grace à l'event storming
 

Recently uploaded

Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
QuickwayInfoSystems3
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
vrstrong314
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 

Recently uploaded (20)

Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Enterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptxEnterprise Software Development with No Code Solutions.pptx
Enterprise Software Development with No Code Solutions.pptx
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 

Write Antifragile & Domain-Driven tests with ”Outside-in diamond” ◆ TDD