| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2011 16:24:34
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Olá
Sabemos que nem todas as aplicações que mantemos usufruem de um modelo de domínio rico. Muitas delas utilizam objetos burros e inserem as regras de negócio em serviços que usam esses objetos. E muitos desses serviços não incluem apenas a lógica de negócio: geralmente embutem outros aspectos do sistema, como infraestrutura e logging.
Vale a pena inserir testes nesse contexto? Como vocês tem aplicado testes nessa arquitetura em particular?
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/07/2011 19:32:44
|
YvGa
Virtual Machine Man
Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline
|
É impossivel mudar o cenario?
Não digo da noite pro dia, mas aos poucos. Quando voce tem que alterar um determinado ponto da aplicacao, voce pode refatorar, melhorar o dominio, incluindo testes.
Nao vejo vantagens em por testes num sistema monolitico, sem melhorá-lo. Muito trabalho e pouco resultado.
Se voce nao conhece eu recomendo:
http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052
|
Paulo Borio |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2011 07:43:48
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
Ótima recomendação de livro, Paulo. Não o conhecia, obrigado.
Mudar o cenário? Hmmm... Eu diria que é preciso mudá-lo de qualquer jeito, independente de mantermos o transaction script ou mudarmos para domain model. Os serviços precisam ser refatorados para cuidar apenas de regras de negócio, e delegar as outras responsabilidades - persistência, logging - para serviços externos. Senão nunca teremos testes que testem apenas as regras de negócio.
Mas eu gostaria de saber se alguém aqui já teve a experiência de escrever testes para um transaction script.
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2011 19:18:44
|
YvGa
Virtual Machine Man
Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline
|
tnaires wrote:Ótima recomendação de livro, Paulo. Não o conhecia, obrigado.
Mudar o cenário? Hmmm... Eu diria que é preciso mudá-lo de qualquer jeito, independente de mantermos o transaction script ou mudarmos para domain model. Os serviços precisam ser refatorados para cuidar apenas de regras de negócio, e delegar as outras responsabilidades - persistência, logging - para serviços externos. Senão nunca teremos testes que testem apenas as regras de negócio.
Mas eu gostaria de saber se alguém aqui já teve a experiência de escrever testes para um transaction script.
Entao, nao sei se eh exatamente o que voce pergunta, mas quando eu ouco Transaction Script, pela definicao do PoEAA, me vem a cabeca, algo pequeno, que nao precisa de um dominio rico, mas que é organizado. Nao parece ser esse o seu caso.
Se com Transaction Script voce quer dizer aquela massaroca desgraçada que a gente encontra todos dias, nesse caso sim, já tive experiencia e ainda lido com eles.
Pode ser que alguem lhe de melhores noticias, mas no meu caso foi aquilo q eu te falei. A medida que preciso mexer vou retatorando e pondo testes, esse livro ajuda bastante na forma de fazer as alteracoes, encontrar os pontos e alterar, mas o resultado demora, nao aparece da noite pro dia e nem é tao divertido quanto usar TDD desde o inicio do projeto.
|
Paulo Borio |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2011 23:55:42
|
tnaires
GUJ Master
![[Avatar]](/images/avatar/5f6371c9126149517d9ba475def53139.png)
Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline
|
YvGa wrote:Entao, nao sei se eh exatamente o que voce pergunta, mas quando eu ouco Transaction Script, pela definicao do PoEAA, me vem a cabeca, algo pequeno, que nao precisa de um dominio rico, mas que é organizado. Nao parece ser esse o seu caso.
Se com Transaction Script voce quer dizer aquela massaroca desgraçada que a gente encontra todos dias, nesse caso sim, já tive experiencia e ainda lido com eles.
Aí é que está, o Transaction Script deve ser usado para aplicações simples. Quando é utilizada para aplicações com domínio um pouco mais complexos que um CRUD, fica uma porcaria... Some a isso o fato de que todos os serviços não estão desacoplados das ortogonalidades - persistência, logging...
YvGa wrote:Pode ser que alguem lhe de melhores noticias, mas no meu caso foi aquilo q eu te falei. A medida que preciso mexer vou retatorando e pondo testes, esse livro ajuda bastante na forma de fazer as alteracoes, encontrar os pontos e alterar, mas o resultado demora, nao aparece da noite pro dia e nem é tao divertido quanto usar TDD desde o inicio do projeto.
Então você procura refatorar para um domain model ou mantém a arquitetura original?
|
Tarso Nunes Aires
Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2011 17:45:27
|
YvGa
Virtual Machine Man
Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline
|
Tento refatorar, mas nao forço. Nao sou muito fã da opção de refazer tudo, a nao ser que nao esteja funcionando mesmo ou nao esteja em producao.
Eh muito arriscado mexer em algo que nao tem testes e esta em producao, o que eu venho fazendo eh refatorar e incluir testes a medida que preciso alterar qualquer funcionalidade. Eh um processo que leva tempo, o resultado eh lento, mas eu procuro ir caminhando para um domain model sim.
O que eu aconselho tambem eh ter sempre o Refactoring e o Working effetively with legacy code sempre a mao.
This message was edited 1 time. Last update was at 23/07/2011 17:47:28
|
Paulo Borio |
|
|
 |
|
|