demoiselle / behave

Demoiselle Behave
https://www.frameworkdemoiselle.gov.br/dbehave/
29 stars 53 forks source link

Boas práticas para reuso de passos "semi-genéricos" entre projetos #194

Closed arildojg closed 9 years ago

arildojg commented 10 years ago

Boa tarde

A medida que estamos utilizando o DBehave nos projetos é comum identificar passos de um projeto que podem ser reaproveitados em outros.

Talvez alguns desses passos sejam genéricos a ponto de serem incorporados ao framework após análise da SUPST, mas nem sempre isso vai ocorrer. Sendo assim, haverá passos que:

arildojg commented 10 years ago

Para ilustrar o problema, a seguir estão alguns passos que gostaríamos de reutilizar em mais de um projeto:

Segue também exemplos de utilização dos mesmos, substituindo as variaveis com alguns valores:

E NÃO será exibido "Aviso: já existe um "

Quando informo um número randomico com prefixo "1" no campo "Chave de Acesso"

!-- extrair uma parte específica de um texto e guardar em variável para uso futuro Quando uso a E.R. "[0-9]{0,11}/[0-9]{4}" e obtenho "numero_do_novo_DLe" do campo "Mensagem Sucesso" Quando uso a E.R. ":\s[0-9]+." e obtenho "finalMsgAlerta" do campo "Mensagem Alerta"

!-- esperar aparecimento de msg que tem parte fixa e parte dinâmica Então será exibido "DL-e [<numero_do_novo_DLe>] criado com sucesso." (parâmetros substituidos pelos seus respectivos valores) Então será exibido "Solicitação do DL-e <numero_do_novo_DLe> realizada com sucesso." (parâmetros substituidos pelos seus respectivos valores)

!-- Ver o valor atual de uma variavel em tempo de execução: util para debug Dado que imprimo no console o valor de "numero_do_novo_DLe"

Quando defino a variavel "data_hora_criacao_dle" com valor "01/03/2012 01:00:01"

!-- Definir uma data/hora retrocedendo ou avançando a partir de uma data/hora usada como base Quando informo o resultado da expressão "DATA_ATUAL+2d6H30m" no campo "Data/Hora Inicial" no formato "dd/MM/yyyy HH:mm" Quando informo o resultado da expressão "data_hora_criacao_dle+20d" no campo "Data/Hora Registro" no formato "dd/MM/yyyy HH:mm"

juliancesar commented 10 years ago

@arildojg , estamos avaliando subir para o framework as seguintes frases:

Você poderia fazer um pull request contendo o código destes passos?

juliancesar commented 10 years ago

@arildojg , foram adicionadas algumas novas frases no commit https://github.com/demoiselle/behave/commit/ed81da322a33c668f2ce7a7362464b5e0a182147. Obrigado pela contribuição.

juliancesar commented 10 years ago

@arildojg , já se passaram quase 7 meses desde que você abriu esta issue, está dúvida ainda continua? Você já tem algumas pistas de como resolver? Alguma delas já foi colocada em prática?

Obrigado.

arildojg commented 10 years ago

Dá ultima vez que conversamos numa áudio, a idéia seria tentar colocar tais passos em um projeto separado, gerar um .jar e tentar usá-lo/incluí-lo nos projetos como uma dependência via pom. Posso fazer uma prova de conceito quarta, qdo voltar de férias. Fazem idéia se a princípio o DBehave consegue pegar passos dentro de um .jar incluído via dependência?

Em 1 de setembro de 2014 17:53, Julian Cesar notifications@github.com escreveu:

@arildojg https://github.com/arildojg , já se passaram quase 7 meses desde que você abriu esta issue, está dúvida ainda continua? Você já tem algumas pistas de como resolver? Alguma delas já foi colocada em prática?

Obrigado.

— Reply to this email directly or view it on GitHub https://github.com/demoiselle/behave/issues/194#issuecomment-54091110.

      Arildo
               arildo.gueno@gmail.com
               arildo_gueno@yahoo.com.br
juliancesar commented 10 years ago

@arildojg , a principio vai funcionar sim.

ThiagoNicolielo commented 9 years ago

@juliancesar, Você comentou isso: "NÃO será exibido "$text" - Já foi criado, esta atendendo?" Não estou encontrando esta frase, utilizo a versão 1.4.1.

Foi retirada? Grato.

arildojg commented 9 years ago

ThiagoNicolielo, este passo é antigo e está dentro de um projeto que criamos internamente apenas para compartilhar passos que poderiam ser reutilizados. Esse projeto segue a idéia comentada nas msgs anteriores dessa issue. Contém passos que são genéricos mas talvez não a ponto de serem incorporados no DBehave.

É um grande candidato a sumir, pois essa abordagem de verificar texto no html todo acaba gerando problemas. O ideal seria ter uma frase para garantir que o texto não é exibido em um elemento específico, previamente mapeado. Talvez a frase a seguir presente na CommonSteps possa ser usada como base: "ser\u00E1 exibido na \"$elementName\" o valor \"$text\"".

arildojg commented 9 years ago

Criamos um projeto onde colocamos classes contendo os steps reutilizáveis. A partir desse projeto criamos um componente e referenciamos ele nos demais projetos via maven/pom.xml. Os classes com steps reutilizaveis que estão nesse projeto extendem a CommonSteps. Nos projetos onde queremos fazer reuso de passos, fazemos as classes de steps específicos do projeto extenderem essas classes de steps reutilizaveis.

malaguti commented 8 years ago

Eu faço uma story xxxReuse.story, aonde eu coloco todos os cenários, sem exceção, e faço uma story xxxControl, que vai ser chanada pela classe de teste, e que vai chamar todos os cenários gravados no xxxReuse. Cenários como navegar até chegar em uma tela específica, e cenários aonde eu poso passar as informações de gravação e retorno esperado, eu chamo quantas vezes precisar. Usando parâmetros, eu posso usar o mesmo cenário diversas vezes para executar diversos testes diferentes.

malaguti commented 8 years ago

Eu escrevi sobre o assunto postado acima no você.serpro, mas não consegui que o editor respeitasse a identação, e as quebras de linha. Eu estou disponibilizando um DOCX com exemplos dessa prática. Abordagem de reuso de cenários.docx