Cucumber ajuda equipes de desenvolvimento de software a: 1) compreender corretamente os requisitos através de exemplos em linguagem natural, 2) usar o mesmo vocabulário para falar sobre o software, e 3) ter uma documentação viva e de fácil leitura. Cucumber estrutura testes em features, scenarios e steps technology-facing. Melhores práticas incluem escrever features declarativas e reusar step definitions.
O Cucumber ajuda equipes a compreender requisitos corretamente através de exemplos em linguagem natural, ter uma documentação executável compartilhada, e encontrar problemas de requisitos mais cedo. A estrutura do Cucumber separa especificações de negócios de implementações técnicas. Melhores práticas incluem escrever features declarativas e reutilizar definições de passos.
Este documento apresenta uma introdução ao desenvolvimento baseado em testes (TDD) utilizando a abordagem Behavior Driven Development (BDD) e a ferramenta Cucumber. O documento discute os princípios e o ciclo do BDD, como escrever estórias e cenários no Cucumber, e como implementar os passos no Cucumber.
This document provides an overview of Behavior Driven Development (BDD) using Cucumber and Selenium with Java. It discusses the traditional development process versus BDD, introduces BDD concepts and Cucumber tools, and provides examples of unit testing "hello world" with Cucumber and end-to-end testing by searching GitHub with Selenium.
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTaise Dias da Silva
1) O documento apresenta uma palestra sobre análise de microsserviços em 3 passos.
2) É discutido o contexto e desafios de análise em arquiteturas de microsserviços, como times perdendo a visão geral do produto e ficando bloqueados por dependências.
3) São apresentados 3 passos para realizar a análise de microsserviços de forma efetiva: definir histórias do usuário, organizar o backlog, e mapear dependências.
O documento descreve (1) a sintaxe do arquivo ".feature" no Cucumber, (2) como começar com testes de aceitação legíveis para todas as partes interessadas, e (3) como o Cucumber funciona lendo arquivos de texto ".feature" e executando cenários neles descritos.
TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavelTaise Dias da Silva
Baseada em experiência de projetos reais, esta palestra compila recomendações que agregam valor ao desenvolvimento de software. Essas recomendações tratam de problemas de suites de testes automatizados demoradas, dívida técnica e cobertura funcional dos testes, dificuldade em identificar por onde começar a automação dos testes, e dificuldades no uso de testes de contrato.
Angular 2, Typescript e outras tecnologias relacionadas. O documento resume conceitos importantes como:
- Componentes, diretivas, serviços, módulos e roteamento no Angular;
- Conceitos do TypeScript como tipagem, classes e interfaces;
- Ferramentas como Angular CLI para criação de projetos.
O Cucumber ajuda equipes a compreender requisitos corretamente através de exemplos em linguagem natural, ter uma documentação executável compartilhada, e encontrar problemas de requisitos mais cedo. A estrutura do Cucumber separa especificações de negócios de implementações técnicas. Melhores práticas incluem escrever features declarativas e reutilizar definições de passos.
Este documento apresenta uma introdução ao desenvolvimento baseado em testes (TDD) utilizando a abordagem Behavior Driven Development (BDD) e a ferramenta Cucumber. O documento discute os princípios e o ciclo do BDD, como escrever estórias e cenários no Cucumber, e como implementar os passos no Cucumber.
This document provides an overview of Behavior Driven Development (BDD) using Cucumber and Selenium with Java. It discusses the traditional development process versus BDD, introduces BDD concepts and Cucumber tools, and provides examples of unit testing "hello world" with Cucumber and end-to-end testing by searching GitHub with Selenium.
TheDevConf 2016 - Análise efetiva de microservices em 3 passosTaise Dias da Silva
1) O documento apresenta uma palestra sobre análise de microsserviços em 3 passos.
2) É discutido o contexto e desafios de análise em arquiteturas de microsserviços, como times perdendo a visão geral do produto e ficando bloqueados por dependências.
3) São apresentados 3 passos para realizar a análise de microsserviços de forma efetiva: definir histórias do usuário, organizar o backlog, e mapear dependências.
O documento descreve (1) a sintaxe do arquivo ".feature" no Cucumber, (2) como começar com testes de aceitação legíveis para todas as partes interessadas, e (3) como o Cucumber funciona lendo arquivos de texto ".feature" e executando cenários neles descritos.
TheDevConf 2016 - 4 dicas valiosas para uma piramide de testes saudavelTaise Dias da Silva
Baseada em experiência de projetos reais, esta palestra compila recomendações que agregam valor ao desenvolvimento de software. Essas recomendações tratam de problemas de suites de testes automatizados demoradas, dívida técnica e cobertura funcional dos testes, dificuldade em identificar por onde começar a automação dos testes, e dificuldades no uso de testes de contrato.
Angular 2, Typescript e outras tecnologias relacionadas. O documento resume conceitos importantes como:
- Componentes, diretivas, serviços, módulos e roteamento no Angular;
- Conceitos do TypeScript como tipagem, classes e interfaces;
- Ferramentas como Angular CLI para criação de projetos.
O documento discute Behavior Driven Development (BDD) usando a ferramenta rSpec para Ruby on Rails. Apresenta como escrever especificações para modelos usando rSpec, incluindo fixtures e validações. Também mostra como rodar os testes e analisar a proporção de código e testes.
1) O documento apresenta informações sobre Angular 2 ministrado por Loiane Groner em 60 minutos, incluindo seus contatos e experiência.
2) São apresentados os principais blocos do Angular 2 como componentes, diretivas, roteamento, serviços, módulos e data binding.
3) O documento fornece um resumo dos principais tópicos para se aprender Angular 2, como tiposcript, criação de projetos, componentes, diretivas, comunicação entre componentes e muito mais.
SOLID através de BDD: um guia prático para rubistaslucashungaro
Palestra apresentada na RubyConf Brasil 2011, Dev in Sampa 2011, TDC Florianópolis 2011 e Dev in Vale 2011.
Aborda aplicações práticas dos princípios Single Responsibility e Dependency Inversion, além de dicas de como identificar problemas no design do código orientado a objetos.
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
O documento discute a evolução de um framework PHP chamado Adianti Framework ao longo dos anos. Ele aborda desafios como aderir a padrões da comunidade, acrescentar novos componentes, melhorar a estrutura de diretórios e substituir tecnologias incorporadas.
This document discusses how to quickly build web applications using the Django framework. It covers installing Django, creating models and templates, and building a basic job listing application. The goal is to demonstrate how Django allows for rapid development through features like automatic administration interfaces, URL routing, and object relational mapping.
Este documento apresenta como criar APIs usando o micro-framework PHP Silex. Ele explica o que é uma API e por que criá-las, demonstra um exemplo simples de API de cervejas e mostra como implementar recursos como listar, buscar, criar, atualizar e deletar itens usando Silex.
Este documento fornece uma introdução ao teste de aplicações Rails usando o framework RSpec. Resume as principais ideias apresentadas em 3 frases ou menos:
1) O documento introduz o framework RSpec para testes automatizados em aplicações Rails, descrevendo como configurar e gerar testes para modelos, controladores, helpers e views.
2) É enfatizado o workflow Red-Green-Refactor para escrever testes, começando com testes que falham e depois fazendo-os passar, além de apresentar exemplos passo-a-passo de
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
O documento apresenta o framework Zend Framework. Aborda o que são frameworks, quem usa o Zend Framework e por que usá-lo. Explica alguns de seus componentes e como utilizá-lo, contribuir e se certificar.
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
O documento resume as principais características e funcionalidades do framework CakePHP para desenvolvimento web, incluindo sua arquitetura MVC, o uso de modelos, views e controllers, helpers, components e formulários.
O documento apresenta React como uma biblioteca para construção de interfaces com componentes, estados e ciclo de vida. Também descreve tecnologias como React Router para gerenciamento de rotas, Webpack para empacotamento de código e Babel para transpilação, que auxiliam no desenvolvimento de aplicações web com React.
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
O documento discute o framework Django para desenvolvimento web em Python. Ele apresenta as principais características do Django como mapeamento objeto-relacional, estrutura MVT e internacionalização. Em seguida, descreve a criação de uma aplicação de microblog usando Django, incluindo a geração do ambiente de desenvolvimento, modelos, URLs, views, templates e forms.
Mini-curso realizado no CESOL 2009 em Fortaleza na UFC campos do PICI, ministrado por mim Targino Silveira.
Nesse mini-curso viso preparar as pessoas para iniciarem a fazer pequenas aplicações e ao terminarem o mini-curso já sabendo com incluir, editar, excluir, pesquisar registros; alterar templates, trabalhar com migrations e uma outra serie de procedimentos.
O documento discute aplicações plugáveis em Django, incluindo exemplos de aplicações plugáveis como djapian e django-tagging. Ele também cobre tópicos como views e templates extensíveis, classes de modelo genéricas, boas práticas de desenvolvimento e distribuição de aplicações plugáveis em Django.
Slides da 1ª de uma série de 4 lives sobre testes automatizados em Ruby. Assista todas!
Fábio Araujo remove mitos sobre BDD e destaca a sua importância na comunicação dentro e fora da equipe com objetivo de garantir os resultados para o negócio e a qualidade dos softwares necessários.
Desafios, formatos e ferramentas são apresentados, formando uma grande base de conhecimento sobre o Desenvolvimento Direcionado por Comportamento (BDD).
Um dos grandes, senão o maior, gerador de defeitos em software é a comunicação humana, cujas falhas naturais e frequentes pode levar ao fracasso os mais variados projetos em organizações de qualquer porte ou orientação.
Este vídeo não requer que você tenha assistido nenhum outro conteúdo da série.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
O documento discute vários tópicos relacionados ao desenvolvimento web com Ruby on Rails, incluindo: ferramentas de email marketing, relacionamentos de modelo, escopos de modelo, testes unitários e de integração utilizando ferramentas como Cucumber, RSpec e WebRat.
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
O documento fornece 3 dicas principais para escrever códigos JavaScript melhores:
1) Aprenda bem a linguagem JavaScript e seus conceitos-chave.
2) Aplique padrões como o Module Pattern para organizar e encapsular o código.
3) Use arquiteturas como MVC para separar as preocupações da aplicação.
Além disso, fornece dicas gerais como documentar o código, criar arquivos separados, injetar dependências e realizar testes. O objetivo é ajudar a escrever códigos mais
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
O documento discute Behavior Driven Development (BDD) usando a ferramenta rSpec para Ruby on Rails. Apresenta como escrever especificações para modelos usando rSpec, incluindo fixtures e validações. Também mostra como rodar os testes e analisar a proporção de código e testes.
1) O documento apresenta informações sobre Angular 2 ministrado por Loiane Groner em 60 minutos, incluindo seus contatos e experiência.
2) São apresentados os principais blocos do Angular 2 como componentes, diretivas, roteamento, serviços, módulos e data binding.
3) O documento fornece um resumo dos principais tópicos para se aprender Angular 2, como tiposcript, criação de projetos, componentes, diretivas, comunicação entre componentes e muito mais.
SOLID através de BDD: um guia prático para rubistaslucashungaro
Palestra apresentada na RubyConf Brasil 2011, Dev in Sampa 2011, TDC Florianópolis 2011 e Dev in Vale 2011.
Aborda aplicações práticas dos princípios Single Responsibility e Dependency Inversion, além de dicas de como identificar problemas no design do código orientado a objetos.
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
O documento discute a evolução de um framework PHP chamado Adianti Framework ao longo dos anos. Ele aborda desafios como aderir a padrões da comunidade, acrescentar novos componentes, melhorar a estrutura de diretórios e substituir tecnologias incorporadas.
This document discusses how to quickly build web applications using the Django framework. It covers installing Django, creating models and templates, and building a basic job listing application. The goal is to demonstrate how Django allows for rapid development through features like automatic administration interfaces, URL routing, and object relational mapping.
Este documento apresenta como criar APIs usando o micro-framework PHP Silex. Ele explica o que é uma API e por que criá-las, demonstra um exemplo simples de API de cervejas e mostra como implementar recursos como listar, buscar, criar, atualizar e deletar itens usando Silex.
Este documento fornece uma introdução ao teste de aplicações Rails usando o framework RSpec. Resume as principais ideias apresentadas em 3 frases ou menos:
1) O documento introduz o framework RSpec para testes automatizados em aplicações Rails, descrevendo como configurar e gerar testes para modelos, controladores, helpers e views.
2) É enfatizado o workflow Red-Green-Refactor para escrever testes, começando com testes que falham e depois fazendo-os passar, além de apresentar exemplos passo-a-passo de
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
O documento apresenta o framework Zend Framework. Aborda o que são frameworks, quem usa o Zend Framework e por que usá-lo. Explica alguns de seus componentes e como utilizá-lo, contribuir e se certificar.
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
O documento resume as principais características e funcionalidades do framework CakePHP para desenvolvimento web, incluindo sua arquitetura MVC, o uso de modelos, views e controllers, helpers, components e formulários.
O documento apresenta React como uma biblioteca para construção de interfaces com componentes, estados e ciclo de vida. Também descreve tecnologias como React Router para gerenciamento de rotas, Webpack para empacotamento de código e Babel para transpilação, que auxiliam no desenvolvimento de aplicações web com React.
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
O documento discute o framework Django para desenvolvimento web em Python. Ele apresenta as principais características do Django como mapeamento objeto-relacional, estrutura MVT e internacionalização. Em seguida, descreve a criação de uma aplicação de microblog usando Django, incluindo a geração do ambiente de desenvolvimento, modelos, URLs, views, templates e forms.
Mini-curso realizado no CESOL 2009 em Fortaleza na UFC campos do PICI, ministrado por mim Targino Silveira.
Nesse mini-curso viso preparar as pessoas para iniciarem a fazer pequenas aplicações e ao terminarem o mini-curso já sabendo com incluir, editar, excluir, pesquisar registros; alterar templates, trabalhar com migrations e uma outra serie de procedimentos.
O documento discute aplicações plugáveis em Django, incluindo exemplos de aplicações plugáveis como djapian e django-tagging. Ele também cobre tópicos como views e templates extensíveis, classes de modelo genéricas, boas práticas de desenvolvimento e distribuição de aplicações plugáveis em Django.
Slides da 1ª de uma série de 4 lives sobre testes automatizados em Ruby. Assista todas!
Fábio Araujo remove mitos sobre BDD e destaca a sua importância na comunicação dentro e fora da equipe com objetivo de garantir os resultados para o negócio e a qualidade dos softwares necessários.
Desafios, formatos e ferramentas são apresentados, formando uma grande base de conhecimento sobre o Desenvolvimento Direcionado por Comportamento (BDD).
Um dos grandes, senão o maior, gerador de defeitos em software é a comunicação humana, cujas falhas naturais e frequentes pode levar ao fracasso os mais variados projetos em organizações de qualquer porte ou orientação.
Este vídeo não requer que você tenha assistido nenhum outro conteúdo da série.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
O documento discute vários tópicos relacionados ao desenvolvimento web com Ruby on Rails, incluindo: ferramentas de email marketing, relacionamentos de modelo, escopos de modelo, testes unitários e de integração utilizando ferramentas como Cucumber, RSpec e WebRat.
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
O documento fornece 3 dicas principais para escrever códigos JavaScript melhores:
1) Aprenda bem a linguagem JavaScript e seus conceitos-chave.
2) Aplique padrões como o Module Pattern para organizar e encapsular o código.
3) Use arquiteturas como MVC para separar as preocupações da aplicação.
Além disso, fornece dicas gerais como documentar o código, criar arquivos separados, injetar dependências e realizar testes. O objetivo é ajudar a escrever códigos mais
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
4. Software - Problemas
o Software: o que pode acontecer de
errado?
o Defeito de implementação
o Programa não faz o que pretendia
o Corrigido em desenvolvimento/QA
o Defeito no requisito
o Programa faz o que pretendia
o O requisito não foi compreendido corretamente
5. Software - Problemas
o 50-60% dos problemas encontrados por
testadores são causados por problemas
nos requisitos
o 100-200% mais caro para se corrigir do
que os outros defeitos porque o código
já estará escrito
6. Como Cucumber pode ajudar?
o Cucumber é uma ferramenta baseada
em Behavior Driven Development (BDD)
o Stakeholders focam em especificação
baseada no valor do negócio
o Especificações escritas em linguagem
natural (qualquer um consegue ler)
7. Como Cucumber pode ajudar?
o Especificações viram testes de
aceitação, descrevendo exemplos do
comportamento do software antes da
implementação (feedback cedo)
o Testes são usados na regressão durante
a evolução do software
8. O que é Cucumber?
o Cucumber é uma ferramenta que
executa descrições funcionais em
texto puro como testes
automatizados
o Texto puro: escrito em Gherkin
o Automação: escrita em alguma
linguagem de programação
10. Cucumber testing stack
Seu projeto
Business
Facing
Seu sistema
Features
Automation library
Scenarios
Support code
Steps
Step definitions
Technology
Facing
12. Feature
o Testes em Cucumber são agrupados em
features
Feature: Acess app Dinossaurs
<<description>>
o Cada teste em Cucumber chama-se scenario
Scenario: List dinos names
13. Scenario & Steps
o Cada scenario contém steps que diz ao
Cucumber o que fazer
Given I am in Dino app
When I choose List
Then I see the list of dinosaurs
And I should see filter message in
the screen
14. Step Definitions
o Para que Cucumber saiba como executar um
scenario de uma feature, precisamos escrever
step definition.
Given(/^I am in Dino app$/) do
pending # express the regexp above
with the code you wish you had
end
15. Step Definitions
o Para implementar step definition:
o Substitua comentário por código
o Código delega para o support code,
específico do domínio da sua app
o O support code usa uma automation library
para interagir com o sistema.
Given(/^I am in Dino app$/) do
@page = Index.new
@page.load
@diff_group = ""
@filter_value = ""
end
16. Step Definitions
When(/^I choose List$/) do
@page.list_link.click
end
Then(/^I see the list of dinosaurs$/) do
@page.should have_dino_list
@page.should_not have_dino_image
end
And(/^I should see filter message in the
screen$/) do
@page.dino_results.text.should ==
"Results for ""+@filter_value+""
and DD Group ""+@diff_group+"""
end
17. Arquivos & Diretórios
o Features
o Cada feature é salva como arquivo .feature
o Features são salvas no diretório features
o Step definitions
o step definitions são salvos com extensão .rb
o Step definitions são salvos no diretório
step_definitions
19. Features Declarativas
Feature: Dinosaurs app access
Scenario: List dinos names
Given I go to the home page
When I click the link "List"
Then the page should contain a list of Dinosaurs
Feature: Dinosaurs app access
Scenario: List dinos names
Given I am in Dino app
When I list dinos names
Then I see a list of Dinosaurs
20. Features Narrativas
Feature: Dinosaurs app access
Scenario: List dinos names
Given I am in Dino app
When I choose List
Then I see list of Dinosaurs
Feature: Dinosaurs app access
In order to identify dinosaurs
As a bones keeper
I want to access information about dinosaurs
Scenario: List dinos names
Given I am in Dino app
When I choose List
Then I see list of Dinosaurs
21. Evitar steps conjuntivos
# Scenario 1
...
When I compose an email to “john@john.com” and send it
...
# step definition
When(/^I compose an email to “(.*)” and send it$/) do |email_address|
email = Email.new recipient: email_address
email.send
end
# Scenario 2
...
When I compose an email to “john@john.com”
And I add “mary@mary.com” as recipient
And I send the email
...
# step definition
When(/^I compose an email to “(.*)”$/) do |email_address|
@email = Email.new recipient: email_address
end
When(/^I send an email$/) do
@email.send
end
22. Reusar step definitions
# feature
...
When I compose an informal email to “friend@gap.com”
And I send an email
...
# step definition
When(/^I compose an email to “(.*)” and send it$/) do |
email_address|
@email = Email.new recipient: email_address
end
...
When(/^I compose an informal email to “(.*)”$/) do |
email_address|
Step %{I compose an e-mail to “#{email_address}”}
@email.set_greeting “Ahoi mate”
end
23. Não abusar do uso do Background
Feature: Using the background
In order to ...
Background:
Given I am signed up as “qa@it.com”
Scenario: Acessing a build
When I go to the dashboard
Then I should be able to access the
build
Scenario: Restarting a build
When I go to the dashboard
Then I should be able to restart the
build
24. Não abusar do uso do Background
Feature: Using the background
In order to ...
Background:
Given I am signed up as “qa@it.com”
When I go to the dashboard
Scenario: Acessing a build
Then I should be able to access the
build
Scenario: Restarting a build
Then I should be able to restart the
build
26. Resumo
o Cucumber ajuda o time de desenvolvimento
de software a:
o Compreender corretamente os requisitos
através de exemplos
o Usar o mesmo vocabulário para fala sobre
o software
o Ter uma documentação viva (executável) e
de fácil leitura em linguagem natural
28. Resumo
o Melhores práticas:
o Escrever features declarativas
o Inserir narrative nas features
o Evitar steps conjuntivos
o Reusar step definitions
o Não abusar do uso de backgrounds
29. References
o Test automation with Cucumber-JVM:
http://pt.slideshare.net/alan_parkinson/testautomation-with-cucumberjvm
o Code Centric:
https://blog.codecentric.de/en/2013/08/cucumbersetup-basics/
o Code Centric:
http://blog.codeship.io/2013/05/21/TestingTuesday-6-Top-5-Cucumber-best-practices.html
o The Cucumber Book: Behaviour-Driven
Development for Testers and Developers, by Matt
Wynne and Aslak Hellesøy