tag:blogger.com,1999:blog-7709637092684013725.post236134438507398054..comments2023-07-27T16:13:39.376-03:00Comments on Programando sem cafeína: Duck typing e os testes de aceitação automáticosTiago Albineli Mottahttp://www.blogger.com/profile/04371749360526831167noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-7709637092684013725.post-88811625515540810452009-03-02T11:08:00.000-03:002009-03-02T11:08:00.000-03:00Hmm, acho que entendi, ruby, groovy e tal vc pode ...Hmm, acho que entendi, ruby, groovy e tal vc pode acrescentar uma funcionalidade em tempo de execução ao objeto certo? ai ninguem te garante que Estoque (que a principio não tem mais o método remover) não terá esse método em uma determinada execução, pois o método pode ter sido adicionado dinamicamente. Isso?!<BR/>É, realmente dificil de resolver, apenas com processos no desenvolvimento para garantir a certeza da não inclusão de bug.<BR/><BR/>ps: tenho que deixar de ser vadio e estudar um pouco mais essas linguagens dinamicas hehe<BR/><BR/>obrigado.Luiz Gustavo Rooshttps://www.blogger.com/profile/03211607638515290225noreply@blogger.comtag:blogger.com,1999:blog-7709637092684013725.post-2777057890998258292009-03-02T10:06:00.000-03:002009-03-02T10:06:00.000-03:00Faz muito sentido o que você falou Gustavo. Mas em...Faz muito sentido o que você falou Gustavo. Mas em Ruby é meio complicado implementar isso pois não há como saber se em tempo de execução a classe que você está mocando foi alterada. Muitas vezes mocamos arrays com métodos que não existem na classe Array por exemplo, apenas para tratar métodos que são inseridos por outros plugins. <BR/><BR/>Quanto a implementar um teste com livro, também faz sentido, mas o primeiro problema persistiria. Se ele alterasse o teste do uso da classe Livro, ainda sim o bug continuaria, para corrigir o que o desenvolvedor teria de lembrar de fazer é alterar o teste de todos os objetos "alugaveis" ou seja, aqueles que possuirem o método "tags" e verificar se não está quebrando nenhuma outra parte do sistema ao fazer essa alteração.<BR/><BR/>Sem dúvida um trabalho que pode ser bastante arriscado em sistemas mais complexos.Tiago Albineli Mottahttps://www.blogger.com/profile/04371749360526831167noreply@blogger.comtag:blogger.com,1999:blog-7709637092684013725.post-39085640306587441452009-02-28T21:33:00.000-03:002009-02-28T21:33:00.000-03:00Ola, parabens pelo post.Desculpa a ignorancia, não...Ola, parabens pelo post.<BR/>Desculpa a ignorancia, não tenho experiencia com ruby, mas quando vc faz: mock_model(Estoque), ele provavelmente cria um mock para Estoque, e no comando seguinte vc diz que esse mock deve chamar o método remover uma vez, passando como parametro um filme (não corri atras para ter certeza dessa afirmação, mas seria assim em java e não deve variar muito para ruby).<BR/>Mas enfim, esse problema não podia ser resolvido acrescentando um pouco mais de funcionalidade na lib (lib?) que faz o mock para vc? algo que quando vc faz: @estoque.should_receive(:remover) fizesse uma analise para garantir se realmente existe o método e gerasse nem que seja um alerta dizendo: "oh, vc esta me dizendo que estoque tem um método remover, mas eu não achei nenhum método remover, da uma checada". Para não dizer em falhar o teste, pois na minha opinião não faz sentido criar um mock para a chamada de um método que no sistema de verdade não existe.<BR/>No segundo caso do Filme e Livro com as tags, acho que naturalmente vc teria um teste unitário testando um Cliente alugando um Livro e um Filme, sendo Filme e Livro mocks, cairia no mesmo caso que falei acima.<BR/>Esse meu pensamento faz algum sentido? to viajando no conceito?! acho que isso poderia seila, quebrar um pouco esse conceito de duck typing, mas na minha opinião, se tratando de execução de testes, seria uma vantagem a mais e com certeza não seria ruim. <BR/><BR/>ValeuLuiz Gustavo Rooshttps://www.blogger.com/profile/03211607638515290225noreply@blogger.comtag:blogger.com,1999:blog-7709637092684013725.post-82901563220848170052009-02-27T20:20:00.000-03:002009-02-27T20:20:00.000-03:00Estamos utilizando o Cucumber e o Selenium, mas te...Estamos utilizando o Cucumber e o Selenium, mas tem um pessoal por aqui que está pesquisando também o Watir.Tiago Albineli Mottahttps://www.blogger.com/profile/04371749360526831167noreply@blogger.comtag:blogger.com,1999:blog-7709637092684013725.post-36526003275537327202009-02-27T20:13:00.000-03:002009-02-27T20:13:00.000-03:00Olá Tiago,Além de ferramentas como o Rational Func...Olá Tiago,<BR/><BR/>Além de ferramentas como o Rational Functional Tester e Selenium, vocês utilizam mais alguma ferramenta para criação de testes de aceitação automáticos?Anonymousnoreply@blogger.com