Acho que já falei em outro tópico, mas uma boa maneira de ter testes de aceitação com o selenium é usando um framework de BDD ( http://www.marcuscavalcanti.net/blog/2010/01/08/bdd-com-jbehave/), em java eu uso o JBehave, em PHP parece que xiste o PHPSpec que é uma versão do PHP para o RSpec do RoR, não sei qual nível de maturidade do PHPSpec, mas eu recomendo muito o uso da abordagem de BDD para um alinhamento melhor com o cliente, extremamente útil quando se usa uma abordagem ágil de desenvolvimento com o cliente próximo ao time de desenvolvimento.
Por exemplo, aqui no meu trabalho desenvolvemos uma API Java que faz essa integração entre o Selenium e o JBehave, a partir disso, construímos nossos testes como no caso de etste abaixo: DADO QUE entrei na página http://#application.host/ExtendedWarrantyWeb E TAMBÉM efetuo login com usuario ewb2w e senha ewb2wewb2w E TAMBÉM clico no item de tela Tratamento GE:id=treatWarranty E TAMBÉM seleciono as marcas Americanas,Shoptime,Submarino E TAMBÉM clico no item de tela Filtrar:id=id_filterButton_01 E TAMBÉM existe um item cuja descrição contém "Item de teste 001" E TAMBÉM existe um item cuja descrição contém "Item de teste 003" E TAMBÉM existe um item cuja descrição contém "Item de teste 005" E TAMBÉM não existe um item cuja descrição contém "Item de teste 002" E TAMBÉM não existe um item cuja descrição contém "Item de teste 004" E TAMBÉM não existe um item cuja descrição contém "Item de teste 006" E TAMBÉM não existe um item cuja descrição contém "Item de teste 007" E TAMBÉM não existe um item cuja descrição contém "Item de teste 002" Esse é um teste executável, que roda em cima da engine do Selenium. O teste é altamente legível e é que entra a participação do cliente, é ele, que será o usuário do sistema, que pode escrever esse caso de teste. -- Marcus Cavalcanti 21 9144-5068 www.marcuscavalcanti.net/blog 2011/3/3 Marcus Cavalcanti <[email protected]> > Tiago, uma maneira de você testar os controllers é mockando eles ( > http://martinfowler.com/articles/mocksArentStubs.html); > > Os testes funcionais do Selenium são uma boa opção para esse tipo de teste > também, mas ele é baseado em teste de aceitação e na visão do usuário em > relação ao sistema, inclusive, é indicado que o usuário que escreva os > testes de aceitação. > > Com mocks é uma abordagem mais técnica, na visão do desenvolvedor, válida > também, mas eu prefiro a anterior. > > -- > Marcus Cavalcanti > 21 9144-5068 > www.marcuscavalcanti.net/blog > > > 2011/3/2 Tiago Davi <[email protected]> > >> hummm. >> >> Já ouvi falar nesse Selenium mas eu realmente estou começando agora com >> testes e achei que deveria testar os controllers já que por exemplo tenho >> controllers que processam outros métodos e models do Doctrine. >> >> Vou procurar entender essa diferença mais pra frente com mais tempo. >> >> Obg por compartilhar. >> >> Att. >> >> Em 2 de março de 2011 23:17, Eric Saboia <[email protected]> escreveu: >> >> Vou montar um projeto com CI 2.0 + Doctrine + PHPunit com exemplos >>> >>> O mais importante dos testes unitários é realmente o modelo, como o amigo >>> Marcus falou >>> >>> Testes em controllers são chamados "testes de integração", onde vc envia >>> um sinal e espera um retorno de um determinado tipo contendo determinados >>> dados, esses testes são mais usados em serviços (web services), eu >>> particulamente nunca precisei deles, pois pra aplicações normais, os testes >>> funcionais (ou de aceitação) cobrem tanto as views quanto os controllers de >>> forma satisfatória. >>> >>> Eu recomendo o uso do Selenium pra quem quiser se aventurar nos testes >>> funcionais. Hoje é a ferramenta mais usada em todas as linguagens, e possue >>> um Driver "maduro" pra PHP. >>> >>> Abraços! >>> >>> 2011/3/2 Tiago Davi <[email protected]> >>> >>> Sim consegui usar a integração do Eric mas antes disso sofri para >>>> instalar o PEAR! essa lib da erro em quase todos os momentos de sua >>>> instalação e sempre tem um macete ou outro que precisamos fazer para ir >>>> driblando os erros e o SimpleTest comparado ao PHPUnit é realmente muito >>>> mais simples e exibe os testes direto no navegador. >>>> >>>> Já uso o Doctrine integrado ao CI 2.0 e recomendo! Doctrine agiliza e >>>> muito no processo de desenvolvimento mas tem que entender do ORM. >>>> >>>> Quando você entende o que o Doctrine pode fazer por você muita coisa do >>>> CI você irá deixar de lado! >>>> >>>> Já não uso models nem validação nem nada disso do CI, faço quase tudo >>>> pelo Doctrine e além disso ele permite testar meus models então só me >>>> preocupo mesmo em testar minhas libs e alguns controllers principais. >>>> >>>> Hoje uso CI 2 + Doctrine + Modular Extensions (HMVC) + SimpleTest >>>> >>>> Criei aqui uma estrutura pronta inclusive com o MY_Controller como uma >>>> lib de métodos que sempre vou precisar usar nos projetos e outra de helpers >>>> úteis e esse modular permite que meus controllers conversem entre si sem >>>> precisar herdá-los. >>>> >>>> Fico feliz em contribuir. >>>> >>>> Att. >>>> >>>> Em 2 de março de 2011 20:38, Nando Araujo >>>> <[email protected]>escreveu: >>>> >>>> Eu tenho interesse em usar TDD, testes unitários, etc.. >>>>> Até tive um tempo estudando em cima do projeto que o Eric Saboia >>>>> forneceu usando o CI_Unit, já experimentou? >>>>> >>>>> Eu vou ver se arranjo um tempo para integrar o Doctrine no CI 2.0 (não >>>>> cheguei a mexer com o Doctrine, mas li um pouco a respeito e entendi por >>>>> cima o funcionamento ORM e tal).. >>>>> >>>>> Vale a pena a gente trocar uma idéia a respeito.. >>>>> Abraço >>>>> >>>>> Em 28 de fevereiro de 2011 22:36, Marcus Cavalcanti < >>>>> [email protected]> escreveu: >>>>> >>>>> Hum... isso não é responsabilidade dos controllers, mas tudo bem. >>>>>> >>>>>> O que faria sentido testar nos controllers é o fluxo, mas aí vc >>>>>> poderia mockar e testá-los. >>>>>> >>>>>> >>>>>> -- >>>>>> Marcus Cavalcanti >>>>>> 21 9144-5068 >>>>>> www.marcuscavalcanti.net/blog >>>>>> >>>>>> >>>>>> 2011/2/28 Tiago Davi <[email protected]> >>>>>> >>>>>> Meus models são do Doctrine e organizo minha lógica toda em >>>>>>> controllers e libs e de qualquer forma já consegui chamar controller, >>>>>>> model >>>>>>> e inclusive testar métodos dentro de módulos do hmvc (modular >>>>>>> extensions) >>>>>>> com simpletest e CI 2.0. >>>>>>> >>>>>>> Se alguém se interessar sobre isso é só avisar. >>>>>>> >>>>>>> Obg. >>>>>>> >>>>>>> Em 27 de fevereiro de 2011 01:30, Marcus Cavalcanti < >>>>>>> [email protected]> escreveu: >>>>>>> >>>>>>> Não é não poder, é não fzer sentido. >>>>>>>> >>>>>>>> Controller não deve entender do seu negócio, não é ele a camada pra >>>>>>>> isso. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Marcus Cavalcanti >>>>>>>> 21 9144-5068 >>>>>>>> www.marcuscavalcanti.net/blog >>>>>>>> >>>>>>>> >>>>>>>> 2011/2/26 Tiago Davi <[email protected]> >>>>>>>> >>>>>>>>> Vou dar uma lida depois nesse material, estou iniciando agora nos >>>>>>>>> casos de teste. >>>>>>>>> >>>>>>>>> Mas acho estranho não poder testar um controller. >>>>>>>>> >>>>>>>>> Obg. >>>>>>>>> >>>>>>>>> Em 26 de fevereiro de 2011 18:44, Tiago Davi <tiago.asp.net@ >>>>>>>>> gmail.com> escreveu: >>>>>>>>> >>>>>>>>> O que quer dizer com controller não tem RN? >>>>>>>>>> >>>>>>>>>> Eu só queria por exemplo testar se um controle retorna mesmo TRUE. >>>>>>>>>> >>>>>>>>>> Dai no meu teste eu faria $this->assertTrue("passando o método do >>>>>>>>>> meu controle aqui"); >>>>>>>>>> >>>>>>>>>> Resumindo eu gostaria de testar meus controllers antes mesmo de >>>>>>>>>> escreve-los e pra isso estou integrando o SimpleTest com CI, estou >>>>>>>>>> sendo >>>>>>>>>> ignorante em alguma coisa? >>>>>>>>>> >>>>>>>>>> Att. >>>>>>>>>> >>>>>>>>>> Em 26 de fevereiro de 2011 18:38, Marcus Cavalcanti < >>>>>>>>>> [email protected]> escreveu: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> http://blog.caelum.com.br/tdd-e-sua-influencia-no-acoplamento-e-coesao/ >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> <http://blog.caelum.com.br/tdd-e-sua-influencia-no-acoplamento-e-coesao/>tem >>>>>>>>>>> um outro artigo muito bom que ia te ajudar a clarear um pouco mais >>>>>>>>>>> sobre >>>>>>>>>>> isso, mas parece que o domínio está fora, de qualquer maneira, se >>>>>>>>>>> você >>>>>>>>>>> quiser tentar depois: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> http://www.team-oriented-programming.com/2010/06/30/tdd_relearning_to_code.html >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Marcus Cavalcanti >>>>>>>>>>> 21 9144-5068 >>>>>>>>>>> www.marcuscavalcanti.net/blog >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> 2011/2/26 Marcus Cavalcanti <[email protected]> >>>>>>>>>>> >>>>>>>>>>> Tiago, Controller não tem RN, logo não deve ser testado. >>>>>>>>>>>> >>>>>>>>>>>> O que eu disse que não faz sentido é em relação a isso. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Marcus Cavalcanti >>>>>>>>>>>> 21 9144-5068 >>>>>>>>>>>> www.marcuscavalcanti.net/blog >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> 2011/2/26 Tiago Davi <[email protected]> >>>>>>>>>>>> >>>>>>>>>>>> Não faz sentido pois como disse é apenas um exemplo. >>>>>>>>>>>>> >>>>>>>>>>>>> Aonde está escrito "queroChamarUmController" eu gostaria de >>>>>>>>>>>>> chamar um método de um controller qualquer. >>>>>>>>>>>>> >>>>>>>>>>>>> Porém não tenho acesso aos controllers mas de qualquer forma >>>>>>>>>>>>> estou resolvendo o problema com outra lib. >>>>>>>>>>>>> >>>>>>>>>>>>> Até. >>>>>>>>>>>>> >>>>>>>>>>>>> Em 25 de fevereiro de 2011 20:00, Marcus Cavalcanti < >>>>>>>>>>>>> [email protected]> escreveu: >>>>>>>>>>>>> >>>>>>>>>>>>> Que tipo de teste é esse? hehe não faz o menor sentido >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Marcus Cavalcanti >>>>>>>>>>>>>> 21 9144-5068 >>>>>>>>>>>>>> www.marcuscavalcanti.net/blog >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> 2011/2/25 Tiago Davi <[email protected]> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Meu exemplo está assim: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> class TestModuleHome extends UnitTestCase{ >>>>>>>>>>>>>>> function testInformacoes() >>>>>>>>>>>>>>> { >>>>>>>>>>>>>>> $this->assertEqual("davi", "queroChamarUmController"); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Queria saber como posso chamar um método do meu controller e >>>>>>>>>>>>>>> passar no teste já que não posso herdar o controller e quando >>>>>>>>>>>>>>> instâncio >>>>>>>>>>>>>>> direto ele da erro? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Ninguém aqui usa essa lib?? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Em 25 de fevereiro de 2011 16:16, Tiago Davi <tiago.asp.net@ >>>>>>>>>>>>>>> gmail.com> escreveu: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Boa tarde alguém já usou essa lib? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> http://codeigniter.com/wiki/SimpleTester_-_Unit_testing_library/ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Sabe como posso testar um controller usando essa lib mas de >>>>>>>>>>>>>>>> forma a deixar o teste separado do controller? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Desde já agradeço. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Att. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>>>>>>>>>>> http://tiagoaspnet.blogspot.com >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>>>>>>>>>> http://tiagoaspnet.blogspot.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>>> [email protected] >>>>>>>>>>>>>>> http://www.codeigniter.com.br >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> --------------------------- >>>>>>>>>>>>>>> Oportunidade de negócio >>>>>>>>>>>>>>> http://www.franquiasargohost.net >>>>>>>>>>>>>>> --------------------------- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>>>>>>>> http://tiagoaspnet.blogspot.com >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>>>>> http://tiagoaspnet.blogspot.com >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>>>> http://tiagoaspnet.blogspot.com >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Tiago Davi - Desenvolvedor Web. >>>>>>> http://tiagoaspnet.blogspot.com >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> [email protected] >>>>>> http://www.codeigniter.com.br >>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>>> >>>>>> --------------------------- >>>>>> Oportunidade de negócio >>>>>> http://www.franquiasargohost.net >>>>>> --------------------------- >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> [email protected] >>>>> http://www.codeigniter.com.br >>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>> >>>>> --------------------------- >>>>> Oportunidade de negócio >>>>> http://www.franquiasargohost.net >>>>> --------------------------- >>>>> >>>>> >>>> >>>> >>>> -- >>>> Tiago Davi - Desenvolvedor Web. >>>> http://tiagoaspnet.blogspot.com >>>> >>>> >>>> >>>> _______________________________________________ >>>> [email protected] >>>> http://www.codeigniter.com.br >>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>> >>>> --------------------------- >>>> Oportunidade de negócio >>>> http://www.franquiasargohost.net >>>> --------------------------- >>>> >>>> >>> >>> >>> -- >>> Eric Saboia - eric.saboia.org >>> >>> Beautiful is better than ugly, >>> Explicit is better than implicit, >>> Simple is better than complex, >>> Complex is better than complicated. >>> >>> The Zen of Python, by Tim Peters >>> >>> >>> _______________________________________________ >>> [email protected] >>> http://www.codeigniter.com.br >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >>> --------------------------- >>> Oportunidade de negócio >>> http://www.franquiasargohost.net >>> --------------------------- >>> >>> >> >> >> -- >> Tiago Davi - Desenvolvedor Web. >> http://tiagoaspnet.blogspot.com >> >> >> >> _______________________________________________ >> [email protected] >> http://www.codeigniter.com.br >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >> >> --------------------------- >> Oportunidade de negócio >> http://www.franquiasargohost.net >> --------------------------- >> >> >
_______________________________________________ [email protected] http://www.codeigniter.com.br http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br --------------------------- Oportunidade de negócio http://www.franquiasargohost.net ---------------------------

