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

Responder a