Pq os teste unitários não são tão populares!  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
LuizClaudio
JavaEvangelist
[Avatar]

Membro desde: 03/04/2006 21:50:51
Mensagens: 388
Offline


Vira e mexe vem alguém e fala que os teste unitários não são legais, não funcionam não dão certo por esse ou aquele motivo. 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:
Li o artigo no javaworld e o cara faz um pergunta interessante colocação, que eu gostaria de fazer a vc's. " Eu adoraria ouvir estórias de situações mundo real aonde os teste unitários foram abandonados, ou simplesmente rejeitados e pq?"

http://www.javaworld.com/community/?q=node/756&nhtje=rn_052908&nladname=052908

"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
[WWW]
peczenyj
Moderador
[Avatar]

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

Te digo um lugar onde os testes foram rejeitados: num antigo projeto meu.

Mas eu era testador e os testes unitários, legados. Num port do sistema para uma nova arquitetura os programadores, que eram muito bons, decidiram que seria mais rapido desenvolver sem testes.

É claro que envolvia coisas simples como umas JNIs, umas Brigdes e bastante codigo novo para suportar uma funcionalidade boba, um tal de IPv6.

O projeto, depois de 6 meses, foi posto na geladeira...

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]
s4nchez
Virtual Machine Man
[Avatar]

Membro desde: 05/06/2006 11:35:55
Mensagens: 654
Localização: London, UK
Offline

Andei vendo vários programadores preferindo fazer teste de integração ao invés de teste unitário. Isso normalmente acontece quando o cara é preguiçoso ou acredita que integração cobre tudo que ele precisa. Daí quando alguma coisa começa dar errado tem que sair debugando código. É lindo de se ver

Ivan Sanchez | coding dojo | blog | twitter
[WWW]
DaviPiala
Virtual Machine Man
[Avatar]
Membro desde: 17/08/2007 19:17:35
Mensagens: 598
Localização: São Paulo
Offline

Testes Unitários não garantem que seu sistema está funcionando.
Testes Integrados não garantem que o seu programa está 100%.

Não se pode ficar sem fazer testes unitarios e não se pode ficar sem fazer testes integrados, ter os dois seria o cenario ideal.

Oq acontece é que alguns projetistas de testes planejam testes unitários inuteis, por isso numa empresa que trabalhei os testers não eram muito populares!

Só pra ter idéia, o sistema web tinha testes do tipo:

-Aperte Esc duas vezes para ver se sai do navegador.

Isso sim é um teste inutil!

This message was edited 1 time. Last update was at 30/05/2008 13:00:37


Si temi more regat
Efamima dove tore
Infata dio re
Infa lati plastire
saoj
JWizard
[Avatar]

Membro desde: 09/03/2004 23:34:46
Mensagens: 2572
Localização: Chicago, EUA
Offline

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...

This message was edited 1 time. Last update was at 30/05/2008 13:18:19


Sergio A Oliveira Jr. - saoj

ExperiMENTA:

Mentawai = http://www.mentaframwork.org - Full-stack Java Web Framework com Configuracão Programática
MentaLog = http://mentalog.soliveirajr.com - Non-intrusive, fast, garbage-less, colored and straightforward logging
MentaBean = http://mentabean.soliveirajr.com - Tiny ORM with SQL Builder
MentaRegex = http://mentaregex.soliveirajr.com - Perl-style regex for Java.
MentaContainer = http://mentacontainer.soliveirajr.com - Straightforward IoC, DI e Auto-Wiring
Space4J = http://www.space4j.org - Banco-de-dados de Objetos em Memória
Options-Lib = https://github.com/saoj/options-lib - Ruby classes para ter acesso as opcoes do Yahoo Finance
Selleto = http://www.selleto.com.br
Flipinion = http://www.flipinion.com
Kawai = http://www.kawaiwiki.org


[Email] [WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Eu gosto muito de testes unitários, ajudam a pegar muitos erros antes de subir a aplicação inteira e ajuda a ver erros de design.

Mas acho que os testes unitários não são suficentes para garantir que o aplicativo funciona. O erro muitas vezes esta bem na parte onde os objetos se "integram" ou se "comunicam". Além disso, o fato de seu unit test ter passado não significa que a aplicação esta fazendo o que ela deveria fazer.



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5795
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Sou amplamente favorável aos testes unitários. Acho que quem tem este hábito programa de um modo mais seguro. Mas faço 3 observações:

1) É óbvio que não são suficientes para garantir que o aplicativo funciona

2) Acho bobagem buscar cobertura 100% principalmente em uma linguagem verbosa como o Java

3) Como disse ontem, infelizmente só conheço um único livro que ensina a programar fazendo testes unitários

[]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/
[Email] [WWW]
peczenyj
Moderador
[Avatar]

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

100% de cobertura de teste nunca é 100% de cobertura de testes.

mas 90% de cobertura de testes é muito melhor do que ?% -- se trata de responsabilidade.

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]
DaviPiala
Virtual Machine Man
[Avatar]
Membro desde: 17/08/2007 19:17:35
Mensagens: 598
Localização: São Paulo
Offline

Trabalhei numa consultoria que presta serviço pra um banco, lá haviam algumas coisas bem toskas com relação a testes.

Um os testes unitários eram feitos após o build e não durante.

Erros nos testes unitários/integrados eram reportados e cobrados financeiramente da consultoria.

Não falo as empresas por ética.

Q coisa não?

Si temi more regat
Efamima dove tore
Infata dio re
Infa lati plastire
eric_jf
JavaEvangelist

Membro desde: 07/07/2006 12:28:12
Mensagens: 389
Offline

Luca wrote:
3) Como disse ontem, infelizmente só conheço um único livro que ensina a programar fazendo testes unitários


Poderia dizer qual é esse livro?

Obrigado.

Edufa
JavaEvangelist
[Avatar]

Membro desde: 18/04/2006 10:20:03
Mensagens: 313
Localização: Curitiba, PR
Offline

Pensando aqui, seria ótimo q os milhares de tutoriais de centenas de tecnologias, frameworks, hello worlds, etc.

Bem como aqueles pedaçoes de código de exemplo, se tivessem testes unitários poderiam ajudar a disseminar mais os testes ...

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.
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Unit test para Hello World?



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5795
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

eric_jf wrote:
Luca wrote:
3) Como disse ontem, infelizmente só conheço um único livro que ensina a programar fazendo testes unitários


Poderia dizer qual é esse livro?


Se não me engano é este: Agile Java Crafting Code with Test-Driven Development

Rubem Azenha wrote:Unit test para Hello World?


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

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/
[Email] [WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline




Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
Schuenemann
GUJ Ranger

Membro desde: 13/01/2005 12:31:27
Mensagens: 851
Offline

Luca wrote:Olá

eric_jf wrote:

Poderia dizer qual é esse livro?


Se não me engano é este: Agile Java Crafting Code with Test-Driven Development

E quanto ao JUnit in Action? Você o recomendou em outro tópico.
Ou ele não ensina a programar (só ensina testes)?
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team