Integração contínua  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
brunohansen
JavaEvangelist
[Avatar]

Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline

Salve galera do GUJ,

Voltei ao livro do Beck (Programação eXtrema explicada), mas não achei a resposta nele de forma clara.

Quais testes verificam a integração dos códigos?

Estou realmente tendo muitas dúvidas para responder essa pergunta.

1- Espero que a resposta não seja os testes de unidade. Pois, sempre achei que os testes de unidade testam as classes de forma isoladas utilizando mocks. Ou será que o teste de unidade não precisa testar as classes de forma isolada? Desta forma nunca escreverei um mock no meu projeto já que eu estou visando a integração e terei que escolher escrever testes deforma ascendente para localizar de forma mais prática onde ocorreu um erro.
2- Se a resposta for os testes funcionais tem algo de estranho no livro. Pois, na página 103 ele diz: que após a integração os testes tem que executar a 100%; e na página 121 ele diz: Os testes funcionais não executam necessariamente a 100%.
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Não li o livro mas, aqui na empresa, chamamos esse tipo de teste de 'teste de integração', que tem um escopo maior do que os testes funcionais.

Um teste unitario verifica que eu posso colocar um item no meu carrinho, calcular desconto, etc - tudo separado.
Um teste funcional verifica que uma compra tem valor X, verifica que o usuario A pode logar, etc
Um teste de integração vai fazer o login com o usuario A, vai adicionar o item no carrinho e devo gerar boleto com o valor X.

Creio que, quando ele diz que os testes funcionais não precisam passar 100%, isso pode ser algo
- Temporario (esta em processo de desenvolvimento e algumas partes do codigo não estão prontas)
- Definitivo (chega, to sem tempo, são duas e meia da manhã, vai pra cliente amanhã e a tela X, que vai ser usada só uma vez e nunca mais tem um errinho quando alguem tenta cadastrar um XXX com ç)

Só lendo pra ver o que ele quis dizer.

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
brunohansen
JavaEvangelist
[Avatar]

Membro desde: 27/03/2006 11:11:34
Mensagens: 391
Offline

peczenyj wrote:Não li o livro mas, aqui na empresa, chamamos esse tipo de teste de 'teste de integração', que tem um escopo maior do que os testes funcionais.


OK. Mas, no livro Beck só menciona testes de unidade e testes funcionais. Quais dos dois seriam executados n integração contínua?

peczenyj wrote:
Um teste de integração vai fazer o login com o usuario A, vai adicionar o item no carrinho e devo gerar boleto com o valor X.


Este também não seria um teste funcional? Ele reflete justamente o que o usuário que fazer: ele quer se logar no sistema, quer adicionar itens no carrinho e quer gerar o boleto.

Eu diria olhando um pouco por alto que:

Teste de integração visa a integração dos componentes em detalhe maior que o objetivo do usuário;
Teste funcional visa a integração dos componentes em detalhe do objetivo do usuário.

Ambos os testes possuem um nível de integração.

peczenyj wrote:
Creio que, quando ele diz que os testes funcionais não precisam passar 100%, isso pode ser algo
- Temporario (esta em processo de desenvolvimento e algumas partes do codigo não estão prontas)
- Definitivo (chega, to sem tempo, são duas e meia da manhã, vai pra cliente amanhã e a tela X, que vai ser usada só uma vez e nunca mais tem um errinho quando alguem tenta cadastrar um XXX com ç)


Beck fala que os testes funcionais não precisam sempre estar em 100%, só que isso faz com que eu não possa usar esses testes para integração continua, pois os testes da integração continua tem que sempre executar 100%.

Tem se falado bastante que os testes unitários testam as classes de forma isoladas utilizando mocks. Mas, se eles testam as classes de forma isolada não posso utiliza-los na integração contínua, pois eles são isolado não testam integração.

Acho que essa visão de se ter que isolar uma classe utilizando mocks uma abordagem um tanto quanto equivocada.

Exemplo:

A classe X usa a Y

Na abordagem do isolamento eu teria que criar um mock de Y para testar de forma isolada X.

Na abordagem da "confiança" eu testaria a classe Y e depois testaria a classe X utilizando a classe Y real, não precisaria criar um mock de Y, pois eu já testei Y e sei que ele funciona (confio no Y). Essa abordagem seria um teste de unidade e integração acesdente ao mesmo tempo. Só vejo beneficios de usar essa abordagem: Os testes de integração evoluem ao mesmo tempo que os testes unitarios evoluem e não precisamos ficar criando mocks para tudo. Sera que essa é a abordagem para testes unitarios na XP? Me parece ser pois posso uza-los na integração continua.

Fowler no seu livro de refatoração disse: Testes de unidade são bastante localizados. Cada classe de teste trabalha dentro de um único pacote. Ela testa a interface com outros pacotes, mas assume que esses pacotes funcionem.

Acho esse lance de isolar classes com mocks para executar testes unitarios total exagero, não é nada agil e não te permite utiliza-los na integração continua.
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Ai entra a pergunta: se um teste funcional está falhando, qual é o motivo?

É motivo para 'quebrar' o build (ou pelo menos dar um warning legal)?

Sobre testes funcionais e de integração: de certa forma é questão de interpretação. No fundo eles podem fazer a mesma coisa, porem vc deve concordar que um teste funcional pode ser feito num pedaço do código, enquanto um teste "super" funcional ou de integração precisa da aplicação como um todo.

Sobre os testes unitarios, de uma olhada:
http://gc.blog.br/2007/08/28/mock-objects-em-excesso-podem-atrapalhar/

This message was edited 1 time. Last update was at 22/10/2007 15:23:17


http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
andrefariagomes
JavaBaby
[Avatar]

Membro desde: 18/09/2004 11:10:06
Mensagens: 90
Offline

Seus problemas acabaram:

Aqui tem tudo que você precisa saber sobre integração contínua, testes unitários e testes de aceitação.
http://www.improveit.com.br/xp

Abraço,
André Faria

This message was edited 1 time. Last update was at 22/10/2007 16:11:32


Abraço,
André Faria
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team