testes de integração
DESCRIPTION
Palestra sobre Testes de Integração apresentada na Bluesoft em 2009TRANSCRIPT
Testes de Integração
André Faria
http://www.flickr.com/photos/jacques_daigneault/3100967998/sizes/o/
O que os testes
unitários não
resolvem?
http://www.flickr.com/photos/cuppini/3211910657/
O que testar ?
Service LayerDomain Objects
AspectsWeb Tier CodeSQL Queries
Interation with JEE APIs
http://www.flickr.com/photos/14646075@N03/3498450536/sizes/o/
http://www.flickr.com/photos/14646075@N03/3498450536/sizes/o/
Non-Java Code Store Procedures / Scripts
Database SchemaViews, Triggers
Spring and Other ConfigurationsXML, Properties
O/R MappingJSPs and Other Views
Testando Código de Persistência
O que não testar? Connections Leaks
Use Spring JDBC, JPA, etc...
O que testar?SQL, HQL, JP QL
Testes LocalizadosDAO interface layer
http://www.flickr.com/photos/sveinhal/2729087260/sizes/l/
Teste sem depender do servidor
+ rápido Mesmo do que Tomcat ou Jetty
Fácil de debugar
Possibilidade de rodar testes individualmente
Rode de sua IDE ou Build Script
http://www.flickr.com/photos/colorblindpicaso/3399410617/sizes/o/
Como o Spring pode te Ajudar com isso?
Spring Integration TestingO pacote org.springframework.test(spring-mock.jar)
JUnit Superclasses
Spring Context Loading e CachingInjeção de Dependências
http://www.flickr.com/photos/dm-set/3846819118/sizes/l/
Data Access e Transaction Management(Criação e Rollback Automático, você não
precisar escrever isso no setup e teardown)
http://www.flickr.com/photos/vgm8383/4061536522/sizes/l/
Alta PerformanceMédia de 100 à 1000
testes por minuto
http://www.flickr.com/photos/stephenpoff/2913508009/sizes/l/
Teste Triggers, Sequences,
Store Procedures, Código JDBC, etc.
http://www.flickr.com/photos/soldiersmediacenter/4097699857/sizes/l/
Context Cachingbetween many Test Cases
Importante quando se usa Hibernate devido ao alto
custo da criação da Session Factory
Você não precisa alterar absolutamente nada nos seus objetos DAO
entre os testes e a entrega
http://www.flickr.com/photos/jamimages/121750129/sizes/l/
Arquivo de Configuração do Spring específico para Testes para
configurar Recursos como Banco de Dados
por exemplo
http://www.flickr.com/photos/libraryman/95516793/
Na Prática
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/applicationContext-resources-test.xml" })
@TransactionConfiguration(defaultRollback = true)
“Nos Testes de Integração sempre que possível prefira
usar o banco de dados real ao invés
de abordagens baseadas em Java
DB ou HSQL DB”
http://www.flickr.com/photos/gavinbell/35378445/sizes/o/
Annotations@Timed(mills=1000)
@Repeat(5)
@ExpectedException(Exception.class)
@DirtiesContext //Rebuild the Context after the test
http://www.flickr.com/photos/heypaul/107326157/sizes/l/
+ Annotations @BeforeTransaction
@Before@Test
@After@AfterTransaction
@NotTransactional@Rollback(false)
http://www.flickr.com/photos/heypaul/107326157/sizes/l/
Entenda os diferentes tipos de testes e seus objetivos
Testes Unitários e Testes de Integração não são exclusivos
Pirâmide de Testes
Aceitação
Integração
Unitários
Aprofunde-se
Palestra do Rod Johnson no No Fluff Just Stuff Symposiums em 2007http://www.infoq.com/presentations/system-integration-testing-with-spring
OBRIGADO