Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
1. Utilizando BDD com
Specflow e Selenium
para testes web
Cleiton Felipe de Moraes
Líder SoroCódigos / MTAC / GFT
2. Quem vos fala?
• Cleiton Felipe de Moraes
– Casado com uma blogueira literária,
Pai do Pedro e de dois gatos (Nina e Flash)
– Cruzeirense, Graffiteiro,
skatista(já faz um tempo que não ando rs)
– Líder e Co-Fundador da SoroCódigos Comunidade técnica
de Sorocaba e região e co-organizador da Open Dev Community.
– Associado MTAC (Multi_Platform Technical Audience Contributor)
– Trabalho com desenvolvimento a mais de 8 anos
• Plataforma .Net, PHP, Java e outras mais...
• Atualmente sou Analista Desenvolvedor Sênior na Coreon IT
3. Agenda
• O que é BDD?
• Onde se aplica o conceito do BDD?
• O que é Specflow/Cucumber?
• Automatizando(Selenium + Specflow)
• Referencias
4. O que é BDD?
BDD é o acronimo de Behavior Driven Development
Podemos chamar de modelo de desenvolvimento, que
foca em ter uma comunicação maior e mais efetiva
entre as partes:
• Técnica (Desenvolvedores, etc..)
• Qualidade (Analistas de testes, testes, etc...)
• Negócio ou não técnica (Analista de negócios,
funcional e usuário final...)
5. BDD - Behavior Driven Development
BDD está fundamentada em três princípios simples:
1. Negócio e Tecnologia deveriam “falar” sobre um
sistema da mesma forma;
2. Qualquer sistema deveria ter um valor identificável e
verificável para o “negócio”;
3. Análise, design e planejamento precoce tem, sempre,
retorno questionável.
7. BDD - Behavior Driven Development
Tecnologia e Negócios falando a mesma língua!
Seu Projeto
Compete ao “Negócio”
Funcionalidades
Cenário
Passos
Compete ao “TI”
Step Definitions
Codificação
Bibliotecas de Automação
8. O que é Specflow?
“Use SpecFlow to define, manage and execute automated
acceptance tests from business-readable specifications. SpecFlow
acceptance tests follow the BDD paradigm: define specifications
using examples understandable to business users as well as
developers and testers. SpecFlow integrates with Visual Studio, but
can be also used from the command line (e.g. on a build server).”
Behavior Driven Development (BDD ou ainda uma tradução Desenvolvimento Guiado por Comportamento) é uma técnica de desenvolvimento Ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas ou de negócios num projeto de software. Foi originalmente concebido em 2003, por Dan North [1] como uma resposta à Test Driven Development (Desenvolvimento Guiado por Testes), e tem se expandido bastante nos últimos anos.[2]
Os focos do BDD são a linguagem e as interações usadas no processo de desenvolvimento de software. Desenvolvedores usam sua língua nativa em combinação com a linguagem ubíqua (ubiquitous language), que lhes permite concentrar nas razões pelas quais o código deve ser criado, e não em detalhes técnicos, além de minimizar traduções entre a linguagem técnica na qual o código é escrito e outras linguagens de domínio, usuários, clientes, gerência do projeto, etc.
Dan North criou o primeiro framework de BDD, JBehave[1], em Java, seguido de um framework em Ruby a nível de história chamado RBehave[1], o qual foi depois incorporado ao projeto RSpec. Ele também trabalhou com David Chelimsky, Aslak Hellesøy e outros para desenvolver o framework RSpec e também escrever "The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends". O primeiro framework baseado em histórias no RSpec foi posteriormente substituído pelo Cucumber[3], desenvolvido principalmente por Alask Hellesøy.
Referencia: https://pt.wikipedia.org/wiki/Behavior_Driven_Development
BDD está fundamentada em três princípios simples:
Negócio e Tecnologia deveriam “falar” sobre um sistema da mesma forma;
Qualquer sistema deveria ter um valor identificável e verificável para o “negócio”;
Análise, design e planejamento precoce tem, sempre, retorno questionável.
BDD expressa mais a parte de negócio do que tecnologia
Compete ao “negócio” a definição de:
Features – representam, em alto nível, os principais características do sistema – correspondem a uma descrição resumida dos “valores” que estamos entregando (ex: autenticação de usuários, cadastro de clientes, cálculo de imposto, emissão de nota);
Cenários – descrições de “casos de uso”, com pré-requisitos, ações e resultado esperado (ex: cadastro de novo usuário, usuário esqueceu senha, etc.)
Passos/Etapas (steps) – interações entre agente externo (usuário ou sistema) e resultado esperado para um dado cenário.
Compete ao “TI”:
Definições para etapas (Step definitions) – correspondências, usando um framework de testes, entre testes de unidade e etapas definidas pelo negócio;
Código – implementação efetiva de código para atender as definições do negócio;
Biblioteca de automação (opcional) – para simular, caso necessário, ações de um usuário na interface do sistema (WatiN, por exemplo).
BDD garante “documentação viva”
BDD associa os benefícios de uma documentação formal, escrita e mantida pelo “negócio”, com testes de unidade que “demonstram” que essa documentação é efetivamente válida.
Na prática, isso garante que a documentação deixa de ser um registro estático, que se converte em algo gradualmente ultrapassado, em um artefato “vivo” que reflete constantemente o estado atual de um projeto.
Ref: http://www.specflow.org/
O Specflow é o Cucumber for .net quem vem do Ruby já conhece o cucumber e o specflow tem a mesmo função que é disponibilizar um framework que facilita a vida dos desenvolvedores testes e pessoas de negócios para uma comunicação mais simples em tempo de desenvolvimento da aplicação. Trazendo com sigo o tipo de linguagem chamado Gherkin