Testes de Integração

Preview:

DESCRIPTION

Palestra sobre Testes de Integração apresentada na Bluesoft em 2009

Citation preview

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

Recommended