| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 15:57:21
|
carlosass
HelloWorld
![[Avatar]](/images/avatar/8bb604aef2c0b402c5006bba0e536e3e.jpg)
Membro desde: 13/05/2008 12:43:36
Mensagens: 14
Localização: Rio de Janeiro
Offline
|
Oi,
Os testes (tanto unitários quanto de integração) devem fazer parte de um desenvolvimento de software. Desenvolvedores profissionais desenvolvem com testes.
Se os testes não estão tão populares, cabe à nós desenvolvedores profissionais a fazer uma maior divulgação da importância dos testes.
|
Carlos André
http://infotecfatos.blogspot.com/ |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 16:01:22
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5406
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Schuenemann wrote:E quanto ao JUnit in Action? Você o recomendou em outro tópico.
Ou ele não ensina a programar (só ensina testes)?
O Junit in action é muito bom. Eu li e acho que vale a pena mas é para quem já sabe Java.
Já o livro anterior eu só dei uma olhada e achei curioso justamente por ensinar a programar já com testes.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 16:11:10
|
Hal Jordan
JavaChild
![[Avatar]](/images/avatar/2cb6a27d266231298f8e74610bab6fe8.jpg)
Membro desde: 24/04/2006 12:20:41
Mensagens: 129
Offline
|
Existe MUITOSSS livros sobre teste unitarios... JUnit in Action, JUnit Recipes, Test Driven in Action, isso da editora Manning...
Mas querendo ou não, teste unitario demanda tempo, paciencia, disciplina e habilidade. E em ambientes onde nao te proporcionam isso é muito dificil colocar para funcionar essa prática.
Outra coisa, querendo ou não, testar é dificil.... Não digo dificil para seres perfeitos como muitos, ou como eu , mas para testar requer bom entendimento de OO, requer conhecimentos de refatoração e, principalmente, necessita entender o valor dos testes unitarios... Senão vira mais uma coisa chata para fazer...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 16:14:12
|
LuizClaudio
JavaEvangelist
![[Avatar]](/images/avatar/a9cf46a38a9b05e959f33215e5cdc38a.png)
Membro desde: 03/04/2006 21:50:51
Mensagens: 362
Offline
|
saoj wrote:Sem entrar no mérito se testes unitários é tão importante para os programadores Java quanto a ressurreição para os cristãos (procure no GUJ que há vários tópicos com esse debate), gostaria de expressar minha opinião de desacordo com a afirmação abaixo:
Eu uso teste unitários, a mais ou menos um ano, não consigo mais me imaginar passando horas debugando código só pq implementei uma nova funcionalidade.
Eu entendo que programação OO requer organização e principalmente separação de responsabilidades. Num código com uma arquitetura e organização minimamente descentes, estender o sistema não pode fundamentalmente ter como consequencia a sua quebra. Muitos, tb por causa dos testes unitários, abominam herança. É estranho entender então porque todas as linguagens OO que surgiram nos últimos 10 anos possuem herança. Será que é porque herança, igualmente junto a interfaces do Java, ajuda a estender um sistema sem quebrar o que já funciona hoje?
Por favor: esqueçam a história do MyProperties extends Properties. Nesse caso é claro que é melhor usar composição, a não ser que vc queira passar o seu novo objeto para um sistema legado que utiliza properties. O certo aqui, como todo mundo já deve saber, é preferir interfaces como java.util.Map, mas infelizmente o properties não implementa nenhuma interface.
Eu acredito que se para qualquer estenção ou mudança no seu código vc precisa de testes unitários, então o seu código é um spagetti code. Acho que as pessoas confundem muito sistema com algoritimo. O primeiro pode existir tranquilamente sem testes unitários, já o segundo pode tirar bastante proveito de testes unitários, principalmente se o algoritmo vai evoluir e ser modificado diversas vezes.
E então temos TDD, que eu entendo pouco, mas que acho ser uma metodologia de desenvolvimento que usa testes unitários como especificação. Se for isso não tem nada haver com esse debate...
Concordo contigo, os testes não estão em uma lado oposto à herança, aliás isso é novidade para mim, não faço nem idéia de como alguém chega a esse tipo de conclusão.
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 16:17:30
|
LuizClaudio
JavaEvangelist
![[Avatar]](/images/avatar/a9cf46a38a9b05e959f33215e5cdc38a.png)
Membro desde: 03/04/2006 21:50:51
Mensagens: 362
Offline
|
Luca wrote:
3) Como disse ontem, infelizmente só conheço um único livro que ensina a programar fazendo testes unitários
Isso é um dos motivo que fazem os testes unitários não serem tão populares assim, pelo menos é o que diz o autor do artigo no javaworld.
|
"Porque Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crê não pereça, mas tenha vida eterna." João 3.16 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 16:37:51
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5406
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
LuizClaudio wrote: Concordo contigo, os testes não estão em uma lado oposto à herança, aliás isso é novidade para mim, não faço nem idéia de como alguém chega a esse tipo de conclusão.
Como disse hoje ou ontem em outro tópico, o Peter Coad foi o primeiro autor que li recomendando favorecer composição sobre herança e isto foi em 1999. Anos depois o Joshua Bloch e o Rod Johnson enfatizaram muito isto.
Mas foi quando surgiu a onda de testes unitários é que começou a cair a ficha de muita gente porque com herança ficava muito mais difícil testar. É por isto que alguém deve ter escrito que testes unitários não combinam com herança.
Hoje todo mundo sabe dos defeitos da herança mas se este estágio foi alcançado, além da popularização das ideías do Coad, Bloch e Johnson, com certeza a onda de testes unitários tem sua parcela de contribuição.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 17:01:12
|
saoj
Forum Spammer
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.jpg)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline
|
Hoje todo mundo sabe dos defeitos da herança mas se este estágio foi alcançado, além da popularização das ideías do Coad, Bloch e Johnson, com certeza a onda de testes unitários tem sua parcela de contribuição.
Sim, hoje todo mundo sabe os defeitos de herança e quando favorecer composição sobre herança. O que pouquíssima gente parece entender é quando e como herança deve ser usada, isto é, quando ela justifica grandeosamente a sua razão de existir. Ou será ela algo totamente inútil que pode ser removido tranquilamente de qualquer linguagem OO?
As pessoas idolatram tanto os testes unitários que fecharam os olhos para a herança e como ela pode "estender sem quebrar", ou seja, permitir a evolução do sistema e a criação de novas funcionalidades sem necessariamente quebrar o que já existe. Mas ela prejudica testes unitários, o que vc está falando? Está maluco?. Bom, "a única diferença de um maluco e eu é que eu sei que não sou maluco."
Não é que as pessoas não entendem os defeitos de herança por causa de testes unitários. Mas sim que testes unitários colaboram para que as pessoas reneguem e não entendam herança. Se vc está começando agora a programar OO, testes unitários poderão lhe dar o ilusório conforto de que vc está fazendo a coisa direito. A mensagem parece ser essa: "Programe como quiser, faça uma arquitetura bem interdependente e enroscada, onde tudo depende de tudo. E se der verdinho parabéns!"
Testes unitários é a rodinha da bicicleta. O problema é que pouca gente tem afirmado que é preciso aprender e gostar de andar sem rodinha. E existem outras maneiras, automatizadas ou não, unitárias ou não, de testar se pelo menos o que vc fez está funcionando... Se fez direito aí o computador não tem como dizer e é nessa hora que a programação deixa de ser uma chata ciência exata e vira arte... O meu Hello World é mais bonito que o seu...
This message was edited 6 times. Last update was at 30/05/2008 17:43:09
|
Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 17:14:46
|
Edufa
JavaGuru
![[Avatar]](/images/avatar/5747a0021eb349e9c8d3667cf1a5e9ec.jpg)
Membro desde: 18/04/2006 10:20:03
Mensagens: 238
Localização: Curitiba, PR
Offline
|
Luca wrote:Olá
Quando aprendi Fortran em 1968 meu primeiro programinha NÃO foi um HelloWorld. Foi multiplicação de matrizes.
Mas já que atualmente sempre se usa o HelloWorld, porque não fazer teste unitário? Eu acho que seria muito bom já incluir teste unitário no primeiro HelloWorld. Se fosse assim a gente não precisava ler o que eu li ontem dizendo que escrever testes unitários consome tempo exagerado.
[]s
Luca
Realmente para hello world por um lado pode ser exagero por outro criar a cultura de usar testes unitários é válida. E não apenas para HW, mas para exemplos de códigos, vários frameworks tem dezenas de exemplos de como fazer, mas nenhum deles com teste. Quem está começando se olha o tetse pode se interessar, expandir e até mesmo entender melhor o proprio framework. E não estou comentando de testes dos frameworks e sim dos exemplos em cima deles.
Rubem Azenha wrote:
Pois é é bem isso que to falando, se houvessem mais códigos assim, eu acho q facilitaria a adoção. Na primeira mexida no código qdo o teste falha quem está aprendendo logo percebe uma das vantagens e o poder disso.
|
Edufa
Curitiba, PR
--
"O estado sou eu". - Luís XIV
"O estado somos nós."- Lênin
"O estado somos eu." - Lula
--
O mundo é deles mas a amazônia é nossa
O petróleo é nosso, mas o gás é deles.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 17:49:03
|
Bruno Laturner
Forum Spammer
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 2717
Localização: Cuiabá, MT
Offline
|
Rubem Azenha wrote:
Funciona no Linux?
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 17:55:59
|
Adolfo Rodrigues
JavaGuru
![[Avatar]](/images/avatar/5c9dc137c4e9543d7e4001d7bdef7413.jpg)
Membro desde: 18/04/2007 20:02:52
Mensagens: 270
Localização: Sampa
Offline
|
saoj wrote:
A mensagem parece ser essa: "Programe como quiser, faça uma arquitetura bem interdependente e enroscada, onde tudo depende de tudo. E se der verdinho parabéns!"
Aqui eu discordo de você, Sérgio. Acho (minha opinião) que é bem mais fácil escrever código acoplado, sem separação de responsabilidades e pouco coeso sem testes unitários (os de integração não ajudam nisso, aí concordo com você).
Só o fato de você ter que pensar num nome apropriado para o método de teste, testar isoladamente um comportamento do sistema e implementar somente o necessário para que aquele pedaço de código funcione, já te ajudam a evitar o código macarrônico e acoplado.
Só uma pergunta, Sérgio: você já tentou fazer algum pet project usando TDD? (tô perguntando na boa mesmo, só pra saber se você já usou e realmente não achou legal)
|
http://www.adolfosousa.com.br/blog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 18:47:02
|
GutomCosta
Thread.start()
![[Avatar]](/images/avatar/f7e4dd6300aa79c1ba9425a76dcf26f5.jpg)
Membro desde: 08/08/2005 20:20:59
Mensagens: 32
Localização: Rio de Janeiro
Offline
|
Luca diz:
como disse hoje ou ontem em outro tópico, o Peter Coad foi o primeiro autor que li recomendando favorecer composição sobre herança e isto foi em 1999. Anos depois o Joshua Bloch e o Rod Johnson enfatizaram muito isto.
Luca,
Erich Gamma já falava sobre isso antes, no clássico livro da GoF, ou estou enganado?
Valeu
Luiz Augusto
|
Luiz Costa
www.sagadoprogramador.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 18:59:40
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5406
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
GutomCosta wrote:Erich Gamma já falava sobre isso antes, no clássico livro da GoF, ou estou enganado?
De certa forma você está certo. Mas acho que talvez eles não tenham sido muito enfáticos (estou chutando porque não me lembro).
No meu caso só tive contato com o livro do GOF (de 1995) quando foi lançado o CD (datado de 1998 ). Não me lembro o ano que comprei mas foi bem depois do livro ter se tornado clássico. Aliás, foi tão depois, que já havia até edição traduzida para o português e me lembro que comprei o CD porque custava muito mais barato do que a edição nacional. Então no meu caso o Peter Coad foi minha primeira fonte e confesso que até estranhei a insistência dele com este assunto pois dedicou a ele um capítulo inteiro do seu livro Java Design.
[]s
Luca
This message was edited 1 time. Last update was at 30/05/2008 19:00:37
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/05/2008 19:36:44
|
saoj
Forum Spammer
![[Avatar]](/images/avatar/2e7ceec8361275c4e31fee5fe422740b.jpg)
Membro desde: 09/03/2004 23:34:46
Mensagens: 2292
Localização: Los Angeles, EUA
Offline
|
Só uma pergunta, Sérgio: você já tentou fazer algum pet project usando TDD? (tô perguntando na boa mesmo, só pra saber se você já usou e realmente não achou legal)
Não. Não tenho como dar minha opinião sobre mais esse método de desenvolvimento de software. Agora existe TDD, que obviamente vai depender de testes unitários e existe um sistema qualquer que está sendo feito utilizando a metodologia XXX != TDD que pode ter ou não testes unitários.
Existe algumas classes que gritam por testes unitários. Outras não. Acho testes unitários uma bela ferramenta de testes, mas não é o Santo Gral da programação. Se vc utiliza testes unitários e a luz vermelha está acendendo muito, então procure aprender o porque do erro, o que vc fez errado e como poderia ter evitado isso. Talvez assim seja uma bela ferramenta de aprendizado.
Agora se vc utiliza testes unitários, seu código tem qualidade e vc está feliz e produtivo com isso, então testes unitários é muito bom, para vc.
|
Participe dos meus novos blogs:
O Poder Primário - Você no controle da sua felicidade
Sedução Tecnológica - Tutoriais, dicas e histórias de um engenheiro
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/05/2008 00:00:40
|
louds
Moderador
![[Avatar]](/images/avatar/1e48c4420b7073bc11916c6c1de226bb.jpg)
Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline
|
saoj wrote:
Não é que as pessoas não entendem os defeitos de herança por causa de testes unitários. Mas sim que testes unitários colaboram para que as pessoas reneguem e não entendam herança. Se vc está começando agora a programar OO, testes unitários poderão lhe dar o ilusório conforto de que vc está fazendo a coisa direito. A mensagem parece ser essa: "Programe como quiser, faça uma arquitetura bem interdependente e enroscada, onde tudo depende de tudo. E se der verdinho parabéns!"
Que enorme besteira isso. Herança atrapalha em absolutamente nada para escrever testes unitários, pois você estará verificando uma unidade por vez. O fato de existirem um zilhão de classes filhas não interfere em nada. Sistemas com boa cobertura de testes costuma abusar menos de herança pois ela aumenta em muito o acoplamento da classes do sistema.
Eu pessoalmente acho que herança é um daqueles conceitos de OO que simplesmente não deu certo na prática, é uma idéia falha que só leva a designs furados. O próprio Gosling mesmo disse que teria tirado herança do Java se tivesse achado na época uma solução razoável para se usar apenas composição.
Quase sempre que eu vejo código usando herança é síndrome do programador folgado que prefere usar herança para entubar métodos auxiliares para economizar no teclado. O indivíduo cria classes inchadas sem nenhum desacoplamento claro de qual objeto faz o que.
Herança é forte sintoma de incapacidade de separar as responsabilidades dos objetos de maneira fina. Herança quase sempre é desculpa para fazer POG.
|
http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/05/2008 07:56:17
|
J2Alex
JavaEvangelist
![[Avatar]](/images/avatar/f4be00279ee2e0a53eafdaa94a151e2c.jpg)
Membro desde: 18/01/2003 08:14:41
Mensagens: 341
Localização: São José dos Campos
Offline
|
saoj wrote:A mensagem parece ser essa: "Programe como quiser, faça uma arquitetura bem interdependente e enroscada, onde tudo depende de tudo. E se der verdinho parabéns!"
Você está um pouco equivocado... testes unitários contribuem justamente no sentido contrário de que você afirmou.
|
Alexandre ( J2Alex )
Desenvolvedor Java EE
ITA (Instituto Tecnológico de Aeronáutica)
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0
Não temeis pelos dias que virão - tens a espada e tens as honras e um coração gentil. |
|
|
 |
|
|