SlideShare une entreprise Scribd logo
1  sur  73
Tests d’Intégration
Nicolas Fränkel Février 2015
2https://leanpub.com/integrationtest
Me, myself and I
Developer & Architect as consultant
Wide range of businesses & customers
Teacher & Trainer
Speaker
Blogger
http://blog.frankel.ch/
http://morevaadin.com/
3https://leanpub.com/integrationtest
Also an author
4https://leanpub.com/integrationtest
Plan
Integration Testing
What is that?
Challenges
Solution hints
Testing with resource dependencies
Database
Web Services
Testing In-container
Spring & Spring MVC
JavaEE
Basics
6https://leanpub.com/integrationtest
There are many different kinds of testing
Unit Testing
Mutation Testing
GUI Testing
Performance Testing
Load Testing
Stress Testing
Endurance Testing
Security Testing
etc.
7https://leanpub.com/integrationtest
Unit Testing vs. Integration Testing
Unit Testing
Testing a unit in isolation
Integration Testing
Testing the collaboration of
multiple units
"Savatefouettéfigure1"byDaniel-PhotoDaniel.
8https://leanpub.com/integrationtest
A concrete example
Let’s take an example
A prototype car
"2011NissanLeafWAS20111040"byMariordoMarioRobertoDuranOrtiz-Ownwork
9https://leanpub.com/integrationtest
Unit Testing
Akin to testing each nut
and bolt separately
10https://leanpub.com/integrationtest
Integration Testing
Akin to going on a test
drive
"URE05e"byMarvinRaaijmakers-Ownwork.
11https://leanpub.com/integrationtest
Unit Testing + Integration Testing
Approaches are not
exclusive but
complementary
Would you take a prototype
car on test drive without
having tested only nuts and
bolts?
Would you manufacture a car
from a prototype having only
tested nuts and bolts but
without having tested it on
numerous test drives?
12https://leanpub.com/integrationtest
System Under Test
The SUT is what get
tested
Techniques from Unit
Testing can be re-used
Dependency Injection
Test doubles
13https://leanpub.com/integrationtest
Testing is about ROI
The larger the SUT
The more fragile the test
The less maintainable the test
The less the ROI
Thus, tests have to be
organized in a pyramidal
way
The bigger the SUT
The less the number of tests
Integration Testing
Test standard cases
Generally not error cases
http://martinfowler.com/bliki/TestPyramid.html
14https://leanpub.com/integrationtest
Integration Testing Challenges
Brittle
Dependent on external
resources
 Database(s)
 etc.
Slow
Dependent on external
resources
Hard to diagnose
15https://leanpub.com/integrationtest
How to cope
Separate Integration
Tests from Unit Tests
Fake required
infrastructure resources
Test in-container
16https://leanpub.com/integrationtest
But IT are still slow?!
Separating UT & IT
doesn’t make IT run
faster
But you can uncover
errors from UT faster
Fail Fast
It will speed testing
"Gepardjagt2(Acinonyxjubatus)"byMaleneThyssen-Ownwork.
17https://leanpub.com/integrationtest
Integration Testing and build
Available tools
Ant
Maven
Gradle
etc.
NewDevelopmentRecentlyFinishedonBristol'sCityCentrebyBrizzleboy
18https://leanpub.com/integrationtest
Maven lifecycle
…
compile
…
test
…
pre-integration-test
integration-test
post-integration-test
verify
…
19https://leanpub.com/integrationtest
Reminder on Surefire
Bound to the test phase
Runs by default
*Test
Test*
*TestCase
20https://leanpub.com/integrationtest
Failsafe
“Copy” of Surefire
Different defaults
*IT
IT*
*ITCase
One goal per lifecycle
phase
pre-integration-test
integration-test
post-integration-test
verify
Must be bound explicitly
21https://leanpub.com/integrationtest
Binding Failsafe - sample
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
<phase>integration-test</phase>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
22https://leanpub.com/integrationtest
Continuous Integration
Needs a build configured
Suggestions
Unit Tests run at each commit
Integration Tests run “regularly”
 Daily
 Hourly
 Depending on the context
Infrastructure dependencies
24https://leanpub.com/integrationtest
Infrastructure dependencies
Database
Filesystem
Time
Message Oriented
Middleware
Mail server
FTP server
etc.
25https://leanpub.com/integrationtest
Mocks and infrastructure dependencies
To test your Service
Mock your DAO/repository
 Mockito
To test your DAO/repository
Mock your database???
26https://leanpub.com/integrationtest
Simple database use-case
Oracle database
Use an in-memory datasource
and hope for the best
Use Oracle Express and hope
for the best
Use a dedicated remote
schema for each developer
 And your DBAs will hate you
27https://leanpub.com/integrationtest
Reducing database gap risk
In-memory databases are easy to
setup
h2 is such a database
(successor of HSQL)
Compatibility modes for most
widespread DB
 jdbc:h2:mem:test;MODE=Oracle
28https://leanpub.com/integrationtest
Integration Testing with Web Services
Web Services also are an
infrastructure resource
Hosted on-site
Or outside
Different Web Services
types have different
solutions
RESTful
SOAP
29https://leanpub.com/integrationtest
Faking RESTful WS
Require an HTTP server
Requirements
Easy setup
Standalone
Embeddable in tests
Spring MVC?
Requires a servlet container
 (Not with Spring Boot)
Some code to write
Author:DwightSiplerfromStow,MA,USA
30https://leanpub.com/integrationtest
Spark to the rescue
Micro web framework
A la Sinatra
http://www.sparkjava.com/
Very few lines of code
Just wire to serve JSON files
31https://leanpub.com/integrationtest
Spark sample
import static spark.Spark.*;
import spark.*;
public class SparkSample{
public static void main(String[] args) {
setPort(5678);
get("/hello", (request, response) -> {
return "Hello World!";
});
get("/users/:name", (request, response) -> {
return "User: " + request.params(":name");
});
get("/private", (request, response) -> {
response.status(401);
return "Go Away!!!";
});
}
}
32https://leanpub.com/integrationtest
Faking SOAP web service
Possible to use Spark for SOAP
But unwieldy
33https://leanpub.com/integrationtest
SOAPUI
SOAPUI is the framework to test SOAP WS
Has a GUI
Good documentation
Understands
 Authentication
 Headers
 Etc.
Can be used to Fake SOAP WS
34https://leanpub.com/integrationtest
SOAPUI usage
Get WSDL
Either online
Or from a file
Create MockService
Craft the adequate response
Run the service
Point the dependency to localhost
35https://leanpub.com/integrationtest
Challenges to the previous scenario
Craft the adequate response?
More likely get one from the real WS
And tweak it
Running in an automated way
Save the project
Get the SOAPUI jar
Read the project and launch
36https://leanpub.com/integrationtest
SOAPUI automation
WsdlProject project = new WsdlProject();
String wsdlFile = "file:src/test/resources/ip2geo.wsdl";
WsdlInterface wsdlInterface =
importWsdl(project, wsdlFile, true)[0];
WsdlMockService fakeService =
project.addNewMockService("fakeService");
WsdlOperation wsdlOp =
wsdlInterface.getOperationByName("ResolveIP");
MockOperation fakeOp =
fakeService.addNewMockOperation(wsdlOp);
MockResponse fakeResponse =
fakeOp.addNewMockResponse("fakeResponse");
fakeResponse.setResponseContent(
"<soapenv:Envelope ...</soapenv:Envelope>");
runner = fakeService.start();
37https://leanpub.com/integrationtest
Faking Web Service in real-life
Use the same rules as for UT
Keep validation simple
Test one thing
 One Assert
 Or a set of related ones
Keep setup simple
Don’t put complex logic
 Don’t put too much logic
 Don’t put logic at all
Duplicate setup in each test
 Up to a point
Author:I,rolfB
In-container Testing
39https://leanpub.com/integrationtest
Upping the ante
Testing collaboration is nice
Faking infrastructure dependencies is nice
But didn’t we forget the most important
dependency?
40https://leanpub.com/integrationtest
The container!
“Proprietary” container
Spring
Application Server
Tomcat
JBoss
<Place your favorite one here>
41https://leanpub.com/integrationtest
Spring
So far, we can test:
Beans which dependencies can be mocked (or not)
 Service
Beans that depend on fake resources
 Repository
What about the configuration?
In Unit Tests, we set dependencies
 The real configuration is not used
 Ergo, not tested!
42https://leanpub.com/integrationtest
Testing configuration
Configuration cannot be monolithic
Break down into fragments
Each fragment contains a set of either
 Real beans
 Fake beans
RudstonMonolithMay2013byAngelaFindlay
43https://leanpub.com/integrationtest
Data source configuration fragment management example
Different configuration
fragments
Production JNDI fragment
Test in-memory fragment
44https://leanpub.com/integrationtest
Data source configuration sample
<beans ...>
<jee:jndi-lookup id="ds" jndi-name="jdbc/MyDS" />
</beans>
<beans ...>
<bean id="ds" class="o.a.t.jdbc.pool.DataSource">
<property name="driverClassName”
value="org.h2.Driver" />
<property name="url" value="jdbc:h2:~/test" />
<property name="username" value="sa" />
<property name="maxActive" value="1" />
</bean>
</beans>
45https://leanpub.com/integrationtest
Fragment structure
1. Main fragment
Repository
Service
etc.
2. Prod DB fragment
3. Test DB fragment
46https://leanpub.com/integrationtest
Tips
Prevent coupling
No fragments reference in fragments
Use top-level assembly instead
 Tests
 Application Context
 Webapps
Pool exhaustion check
Set the maximum number of connections in the
pool to 1
Compile-time safety
Use JavaConfig
Not related to testing 
47https://leanpub.com/integrationtest
And now, how to test?
Get access to both
The entry point
The “end” point
Spring Test to the rescue
Integration with common
Testing frameworks
 JUnit
 TestNG
StLouisGatewayArch1916"byDirkBeyer-Ownwork.
48https://leanpub.com/integrationtest
Favor TestNG
Extra grouping
Per layer
Per use-case
Name your own
Extra lifecycle hooks
Better parameterization
Data Provider
Ordering of test methods
49https://leanpub.com/integrationtest
Spring TestNG integration
AbstractTestNGSpringContextTests
AbstractTransactionalTestNGSpringContextTests
Configurable context fragments
@ContextConfiguration
Inject any bean in the test class
If necessary, applicatonContext member from
superclass
50https://leanpub.com/integrationtest
Sample TestNG test with Spring
@ContextConfiguration(
classes = { MainCfg.class, AnotherCfg.class })
public class OrderIT extends
AbstractTestNGSpringContextTests {
@Autowired
private OrderService orderService;
@Test
public void should_do_this_and_that() {
orderService.order();
Assert.assertThat(...)
}
}
51https://leanpub.com/integrationtest
Testing with the DB (or other transactional resources)
Transactions
Bound to business
functionality
Implemented on Service layer
With DAO
Use explicit transaction
management
@Transactional
52https://leanpub.com/integrationtest
Transaction management tip
Tests fail… sometimes
How to audit state?
By default, Spring rollbacks
transactions
General configuration
@TransactionConfiguration(
defaultRollback = false
)
Can be overridden on a per-
method basis
 @Rollback(true)
53https://leanpub.com/integrationtest
Sample Transaction management
@ContextConfiguration
@TransactionConfiguration(defaultRollback = false)
public class OverrideDefaultRollbackSpringTest extends
AbstractTransactionalTestNGSpringContextTests {
@Test
@Rollback(true)
public void transaction_will_be_rollbacked() { ... }
@Test
public void transaction_wont_be_rollbacked() {
...
}
}
54https://leanpub.com/integrationtest
Spring MVC webapps Testing
Require a context hierachy
Parent as main context
Child as webapp context
@ContextHierarchy
Require a webapp configuration
@WebAppConfiguration
55https://leanpub.com/integrationtest
Spring MVC test sample
@WebAppConfiguration
@ContextHierarchy({
@ContextConfiguration(classes = MainConfig.class),
@ContextConfiguration(classes = WebConfig.class)
})
public class SpringWebApplicationTest
extends AbstractTestNGSpringContextTests {
...
}
56https://leanpub.com/integrationtest
Tools for testing webapps
HTML testing tools
Interact with HTML/CSS
 Fill this field
 Click on that button
HTTP testing tools
 Send HTTP requests
 Get HTTP responses
57https://leanpub.com/integrationtest
Drawback of previous approaches
Very low-level
Fragile!
Remember that testing is
about ROI
 Breaking tests with every
HTML/CSS change is the worst
way to have positive ROI
 (There are mitigation
techniques  out of scope)
Attribution:©MilanNykodym,CzechRepublic
58https://leanpub.com/integrationtest
Drawback of Testing with controllers as entry point
Bypass many URL-
related features
Interceptors
Spring Security
etc.
ControllerSCSI.JPGbyRosco
59https://leanpub.com/integrationtest
Spring Test to the rescue
Spring Test has a large
chunk dedicated to MVC
Since 3.2
Can test with URL as
entry-points
Fluent API with static
imports
CoastguardHelicopter(8016050677)"byPaulLucasfromLeicestershire,UK-CoastguardHelicopter
60https://leanpub.com/integrationtest
Spring MVC Test overview
61https://leanpub.com/integrationtest
MockMvc class responsibilities
Request builder
Configures the Fake request
Request matcher
Misc. assertions
Request handler
Do something
 OOB logger
62https://leanpub.com/integrationtest
Available configuration on Request Builder
HTTP method
GET
POST
etc.
HTTP related stuff
Headers
Parameters
Content
JavaEE related stuff
Request attributes
Session
etc.
63https://leanpub.com/integrationtest
Request Builder sample
MockHttpServletRequestBuilder builder =
get("/customer/{id}", 1234L)
.accept("text/html")
.param("lang", "en")
.secure(true);
GET /customer/1234?lang=en HTTP/1.1
Accept: text/html
64https://leanpub.com/integrationtest
Some matchers
Checks result is a
Forward
 Either exact
 Or regexp
Redirect
 Either exact
 Or regexp
JSON payload
asafetywaxmatchboxandmatchesbyAathavanjaffna
65https://leanpub.com/integrationtest
Some other matchers
Request class
Handler class
Controller
Content class
Cookie class
Status class
HTTP code
Flash class
(Attributes, not the techno)
View class
Model class
"OvejasenPatagonia-Argentina"bywrittecarlosantonio
66https://leanpub.com/integrationtest
The JavaEE world
JavaEE has unique
challenges
CDI has no explicit wiring
 You can @Veto you own
classes
 But no compiled ones
Different application servers
 Same specifications
 Different implementations
67https://leanpub.com/integrationtest
Deploy only what you want
Standalone API to deploy
only resources relevant
to the test
Just pick and choose
Maven Integration
Gradle too…
68https://leanpub.com/integrationtest
Shrinkwrap sample
String srcMainWebapp = "src/main/webapp/";
ShrinkWrap.create(WebArchive.class, "myWar.war")
.addClass(MyService.class)
.addPackage(MyModel.class.getPackage())
.addAsWebInfResource("persistence.xml",
"classes/META-INF/persistence.xml")
.addAsWebInfResource(
new File(srcMainWebapp, "WEB-INF/page/my.jsp"),
"page/my.jsp")
.addAsWebResource(
new File(srcMainWebapp, "script/my.js"),
"script/my.js")
.setWebXML("web.xml");
69https://leanpub.com/integrationtest
Maven integration sample
File[] libs = Maven.resolver()
.loadPomFromFile("pom.xml")
.importDependencies(COMPILE, RUNTIME).resolve()
.withTransitivity().asFile();
ShrinkWrap.create(WebArchive.class, "myWar.war")
.addAsLibraries(libs);
70https://leanpub.com/integrationtest
Different application servers
Abstraction layer to
Download
Deploy applications
Test
Container adapters
TomEE
JBoss
Weld
etc.
Full Maven integration
71https://leanpub.com/integrationtest
Arquillian Test sample
public class ArquillianSampleIT extends Arquillian {
@Inject
private MyService myService;
@Deployment
public static JavaArchive createDeployment() {
return ...;
}
@Test
public void should_handle_service() {
Object value = myService.handle();
Assert.assertThat(...);
}
}
72https://leanpub.com/integrationtest
Arquillian configuration sample
<arquillian xmlns="http://jboss.org/schema/arquillian"
xmlns:xsi="..."
xsi:schemaLocation="
http://jboss.org/schema/arquillian
http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="tomee" default="true">
<configuration>
<property name="httpPort">-1</property>
<property name="stopPort">-1</property>
</configuration>
</arquillian>
https://leanpub.com/integrationtest
Twitter: @itfromtrenches

Contenu connexe

Tendances

Building Quality with Foundations of Mud
Building Quality with Foundations of MudBuilding Quality with Foundations of Mud
Building Quality with Foundations of Mud
seleniumconf
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUI
Phuoc Nguyen
 
Beginning AngularJS
Beginning AngularJSBeginning AngularJS
Beginning AngularJS
Troy Miles
 
Load testing using_neoload by kc
Load testing using_neoload by kcLoad testing using_neoload by kc
Load testing using_neoload by kc
krishna chaitanya
 
Exactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in KostromaExactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in Kostroma
Iosif Itkin
 
Qtp 9.2 examples
Qtp 9.2 examplesQtp 9.2 examples
Qtp 9.2 examples
medsherb
 

Tendances (20)

Building Quality with Foundations of Mud
Building Quality with Foundations of MudBuilding Quality with Foundations of Mud
Building Quality with Foundations of Mud
 
Jbehave selenium
Jbehave seleniumJbehave selenium
Jbehave selenium
 
Parallel run selenium tests in a good way
Parallel run selenium tests in a good  wayParallel run selenium tests in a good  way
Parallel run selenium tests in a good way
 
Load Testing with JMeter, BlazeMeter, New Relic
Load Testing with JMeter, BlazeMeter, New RelicLoad Testing with JMeter, BlazeMeter, New Relic
Load Testing with JMeter, BlazeMeter, New Relic
 
Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"Никита Галкин "Testing in Frontend World"
Никита Галкин "Testing in Frontend World"
 
Example of TAF with batch execution of test cases
 Example of TAF with batch execution of test cases  Example of TAF with batch execution of test cases
Example of TAF with batch execution of test cases
 
Qa process
Qa processQa process
Qa process
 
Webservice performance testing with SoapUI
Webservice performance testing with SoapUIWebservice performance testing with SoapUI
Webservice performance testing with SoapUI
 
Node.JS error handling best practices
Node.JS error handling best practicesNode.JS error handling best practices
Node.JS error handling best practices
 
Automated Testing in Angular Slides
Automated Testing in Angular SlidesAutomated Testing in Angular Slides
Automated Testing in Angular Slides
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Beginning AngularJS
Beginning AngularJSBeginning AngularJS
Beginning AngularJS
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX Ecosystem
 
Real Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrapReal Java EE Testing with Arquillian and ShrinkWrap
Real Java EE Testing with Arquillian and ShrinkWrap
 
Load testing using_neoload by kc
Load testing using_neoload by kcLoad testing using_neoload by kc
Load testing using_neoload by kc
 
Exactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in KostromaExactpro Systems for KSTU Students in Kostroma
Exactpro Systems for KSTU Students in Kostroma
 
Qtp 9.2 examples
Qtp 9.2 examplesQtp 9.2 examples
Qtp 9.2 examples
 
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
Test-Driven Development with DbFit and Oracle database, BGOUG Conference, 201...
 
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
StarWest 2013 Performance is not an afterthought – make it a part of your Agi...
 
My Test Automation Journey
My Test Automation JourneyMy Test Automation Journey
My Test Automation Journey
 

Similaire à 201502 - Integration Testing

Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
Billie Berzinskas
 
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
mdfachowdhury
 
Automated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS SitesAutomated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS Sites
joelabrahamsson
 
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
Stowarzyszenie Jakości Systemów Informatycznych (SJSI)
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
elliando dias
 

Similaire à 201502 - Integration Testing (20)

Java Day Kharkiv - Integration Testing from the Trenches Rebooted
Java Day Kharkiv - Integration Testing from the Trenches RebootedJava Day Kharkiv - Integration Testing from the Trenches Rebooted
Java Day Kharkiv - Integration Testing from the Trenches Rebooted
 
Unit tests and TDD
Unit tests and TDDUnit tests and TDD
Unit tests and TDD
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScript
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under Test
 
Soap ui documentation
Soap ui documentationSoap ui documentation
Soap ui documentation
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
 
Presentation
PresentationPresentation
Presentation
 
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
Evaluating Test Driven Development And Parameterized Unit Testing In Dot Net ...
 
Automated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS SitesAutomated Testing Of EPiServer CMS Sites
Automated Testing Of EPiServer CMS Sites
 
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
DevOps on Windows: How to Deploy Complex Windows Workloads | AWS Public Secto...
 
Spring boot
Spring bootSpring boot
Spring boot
 
Codeception
CodeceptionCodeception
Codeception
 
Full Testing Experience - Visual Studio and TFS 2010
 Full Testing Experience - Visual Studio and TFS 2010 Full Testing Experience - Visual Studio and TFS 2010
Full Testing Experience - Visual Studio and TFS 2010
 
Test Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, MockingTest Driven Development:Unit Testing, Dependency Injection, Mocking
Test Driven Development:Unit Testing, Dependency Injection, Mocking
 
Build a Technical Infrastructure that Supports Innovation by Florian Motlik -...
Build a Technical Infrastructure that Supports Innovation by Florian Motlik -...Build a Technical Infrastructure that Supports Innovation by Florian Motlik -...
Build a Technical Infrastructure that Supports Innovation by Florian Motlik -...
 
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
[TestWarez 2017] Behavior Driven Development in a complex environment - Consu...
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
 
Testing Applications—For the Cloud and in the Cloud
Testing Applications—For the Cloud and in the CloudTesting Applications—For the Cloud and in the Cloud
Testing Applications—For the Cloud and in the Cloud
 
Altitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly WorkshopAltitude San Francisco 2018: Testing with Fastly Workshop
Altitude San Francisco 2018: Testing with Fastly Workshop
 
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
How to set up an ASP.NET 5 Continuous Delivery Pipeline using IBM Bluemix Dev...
 

Plus de lyonjug

201303 - Golo
201303 - Golo201303 - Golo
201303 - Golo
lyonjug
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
lyonjug
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Forax
lyonjug
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
lyonjug
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
lyonjug
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guava
lyonjug
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojure
lyonjug
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draï
lyonjug
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2
lyonjug
 

Plus de lyonjug (20)

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Java
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansible
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middleware
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Golo
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Forax
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guava
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojure
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshop
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilité
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Labourey
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draï
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2
 

Dernier

Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Dernier (20)

WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 

201502 - Integration Testing

Notes de l'éditeur

  1. skinparam dpi 150 class A class B package SUT { class C class D } class E class F A .right.> B B .down.> C C .right.> D D ..> E E .right.> F hide empty members
  2. skinparam dpi 150 package "Test Config" <<Rect>> { class "<bean\nclass='o.a.t.j.p.DataSource'>" as testdb } package "Prod Config" <<Rect>> { class "<jee:jndi-lookup\njndi-name='jdbc/MyDS' />" as jndidb } package "Main Config" <<Rect>> { class Service class Repository class "id=datasource" as dbbean } Service --> "1" Repository Repository --> "1" dbbean testdb -up-|> dbbean jndidb -up-|> dbbean hide circle hide empty members