| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 23:36:24
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Alberto Saviola enviou um texto para o Artima onde ele fala que nem todos os desenvolvedores estão prontos, tem condições ou vontade de "cair de cabeça" nos testes, mas como as metodologias ágeis levam os testes como religião e dizendo que ou você testa tudo ou não testa nada, essas pessoas que ainda não foram "infectadas" pelos testes terminam achando que já que não vão testar tudo, então não se testa nada.
Texto completo: Testivus - Testing For The Rest Of Us
É claro que deve-se dar um passo de cada vez, incutir uma cultura de testes de software em uma equipe ou em um processo que não prevê esse tipod e abordagem dá trabalho e deve ser feito com calma, mas isso também não pode ser visto como motivo pra ficar sempre fazendo teste "do que é importante". A idéia é subir até o todo da montanha e não montar um acampamento na base dela.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 07:46:39
|
guilherme.chapiewski
JavaEvangelist
![[Avatar]](/images/avatar/dc3adabb7efe88ae26a804e45cc8d245.png)
Membro desde: 09/01/2007 16:56:48
Mensagens: 310
Localização: Rio de Janeiro
Offline
|
Hahaha, muito bom! Coincidentemente tivemos uma reunião no início da semana aqui na empresa onde o assunto foi semelhante a parte do que está escrito nesse post!!!
Show de bola Mauricio!
|
Guilherme Chapiewski
http://gc.blog.br - Blog sobre desenvolvimento de software e tecnologia |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 08:05:10
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Veja como exemplo a gente, aqui na Siemens.
Temos um perfil de aplicação muito diferente do que se vê nos livros por aí. São aplicações que fazem uso intensivo de threads e sockets para interagir com centrais telefônicas, de comportamento complexo.
As classes core desse tipo de aplicação não só são multi-threaded, como também devem lidar com questões como sincronização com as centrais, diferenças de timers, etc.
Agora, vai montar JUnit para elas!! É praticamente impossível. Muitas vezes só isso é suficiente para desgostar os T1, desmotivar totalmente os T2 e colocar os T3 com um sonoro "eu falei que isso não prestava" na boca.
Entretanto, isso não significa que para todo o resto do sistema não deve haver testes. Bem pelo contrário. Todo local onde pode haver teste unitário, há. As classes core, onde isso é mais custoso do que o benefício gerado, são cobertas por extensivos testes funcionais.
É mesmo muito importante testar sempre. Mesmo quando você ainda não tem capacidade ou recursos de fazer o teste, testar o que pode ser testado. E ficar atento, pois um dia, pode surgir algo que viabilize o teste daquilo que você pensava não ser possível.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 09:46:02
|
marcioa1
Virtual Machine Man
![[Avatar]](/images/avatar/169779d3852b32ce8b1a1724dbf5217d.jpg)
Membro desde: 29/11/2003 12:52:10
Mensagens: 736
Localização: Valinhos-SP
Offline
|
Vou pegar uma carona neste tópico. Com licença.
Eu não uso testes, e me sinto mal por isto.
Em meus sistemas, o usuário digita dois ou três parâmetros, o programa vai ao banco de dados e gera um pdf. Vou testar o que, se praticamente não há processamento do tipo calcula isto, aquilo etc ... ? Os parâmetros são testados no front-end. Como testar os selects ? Testar a geração de um PDF (iText) ?
Agradeço por comentários,
Márcio
|
SCJP 1.4, |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 09:50:31
|
#@®®¡$
Moderador
![[Avatar]](/images/avatar/2288f691b58edecadcc9a8691762b4fd.jpg)
Membro desde: 13/02/2004 09:42:28
Mensagens: 807
Localização: São Paulo
Offline
|
Os parâmetros são tratados, não são? Então o tratamento deles deve ser testado. De resto, se a situação é tão simples assim, não tem muita coisa, mas as coisas nem sempre são tão simples, né?
|
Wilerson "#@®®¡$" de Oliveira
http://mundoestranho.net/blog/
Douglas Adams wrote:I love deadlines. I like the whooshing sound they make as they fly by.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 09:53:24
|
guilherme.chapiewski
JavaEvangelist
![[Avatar]](/images/avatar/dc3adabb7efe88ae26a804e45cc8d245.png)
Membro desde: 09/01/2007 16:56:48
Mensagens: 310
Localização: Rio de Janeiro
Offline
|
Temos um perfil de aplicação muito diferente do que se vê nos livros por aí. São aplicações que fazem uso intensivo de threads e sockets para interagir com centrais telefônicas, de comportamento complexo.
As classes core desse tipo de aplicação não só são multi-threaded, como também devem lidar com questões como sincronização com as centrais, diferenças de timers, etc.
Agora, vai montar JUnit para elas!! É praticamente impossível. Muitas vezes só isso é suficiente para desgostar os T1, desmotivar totalmente os T2 e colocar os T3 com um sonoro "eu falei que isso não prestava" na boca.
Isso é verdade. Eu trabalhei durante um tempo com sistemas deste tipo quando trabalhava numa empresa que vende soluções VoIP com Asterisk.
É muito difícil fazer testes com esse tipo de plataforma, mas aí eu acho que deve prevalecer a regra: "Testes imperfeitos executados frequentemente são muito melhores do que testes perfeitos que sequer são escritos".
Eu nunca ví nenhum sistema por mais testável que fosse com 100% de cobertura de testes. Se mesmo com sistemas complexos for possível cobrir qualquer coisa, já é melhor do que nada.
A cultura de testes pode até ser útil para que as pessoas passem a programar as coisas de forma mais "testável" utilizando por exemplo Dependency Injection, separando melhor as camadas da aplicação, etc.
|
Guilherme Chapiewski
http://gc.blog.br - Blog sobre desenvolvimento de software e tecnologia |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 10:09:10
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
ViniGodoy wrote:As classes core desse tipo de aplicação não só são multi-threaded, como também devem lidar com questões como sincronização com as centrais, diferenças de timers, etc.
Agora, vai montar JUnit para elas!! É praticamente impossível. Muitas vezes só isso é suficiente para desgostar os T1, desmotivar totalmente os T2 e colocar os T3 com um sonoro "eu falei que isso não prestava" na boca.
Pois eu acho que não. Trabalho com transações bancárias em servidores multithread que estão sempre enviando e recebendo informações de N clientes e nós pegamos MUITOS bugs de threading fazendo testes com o JUnitPerf. Não posso dizer que estamos livres de problemas, mas muita coisa já foi descoberta e resolvida com os nossos testes e isso nos dá segurança pra continuar no caminho certo.
Acho que nós devemos sempre cobrar dos "gerentes" (se é que dá pra chamar esse povo assim...) de que os testes são uma das partes mais importantes do desenvolvimento. Não podemos simplesmente pensar no curto prazo e deixar os testes pra lá, porque um dia a coisa estoura.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 11:06:41
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Quanto mais se fuçar no software, melhor, seja do jeito que for.
Sempre pensei assim, entretanto as vezes meu chefe me manda parar.
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 12:44:23
|
Guilherme Silveira
Administrador
Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline
|
Eu aprendi a ser fanático com o cv (oops): como você tem certeza que seu código funciona se você não testa ele?
|
-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 13:02:06
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Maurício Linhares wrote:Pois eu acho que não. Trabalho com transações bancárias em servidores multithread que estão sempre enviando e recebendo informações de N clientes e nós pegamos MUITOS bugs de threading fazendo testes com o JUnitPerf. Não posso dizer que estamos livres de problemas, mas muita coisa já foi descoberta e resolvida com os nossos testes e isso nos dá segurança pra continuar no caminho certo.
Garanto à você que não é a mesma coisa. Não vou entrar no quesito dos por quês pois não é o objetivo desse forum. Ainda sim, como eu mesmo ressaltei, ainda procuramos testar essas classes indiretamente, através de testes funcionais.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2007 13:27:14
|
sunshine
JavaChild
![[Avatar]](/images/avatar/c8c900d24159eff62761e.jpg)
Membro desde: 28/09/2004 18:53:15
Mensagens: 111
Offline
|
Olá Marcio,
marcioa1 wrote:
Como testar os selects ?
para testes de banco de dados você pode utilizar o dbUnit
marcioa1 wrote:
Testar a geração de um PDF (iText) ?
e para testar classes que dependam de outros objetos você pode dar uma olhada no EasyMock, há uma matéria na JavaMagazine sobre isso
|
pfilipak |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2007 10:26:33
|
Guilherme Silveira
Administrador
Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline
|
sunshine wrote:Olá Marcio,
e para testar classes que dependam de outros objetos você pode dar uma olhada no EasyMock, há uma matéria na JavaMagazine sobre isso
jmock jmock...
|
-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
 |
|
|
 |
|
|