SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
N˜ao deixe para testar depois o
que vocˆe pode testar antes.
Rafael Guterres Jeffman
Tchelinux
2018
Por que desenvolvemos software?
Como desenvolvemos software?
Ciclo do Desenvolvimento de
Software
• An´alise
• Projeto
• Implementa¸c˜ao
• Testes
• Implanta¸c˜ao
User Stories
• Descri¸c˜ao informal de uma funcionalidade.
• Escritas na perspectiva do usu´ario.
• As hist´orias devem dizer quem ´e o usu´ario, o que ele vai
fazer, e qual o objetivo ele quer atingir.
Crit´erios de Aceita¸c˜ao
Para determinar se uma hist´oria de usu´ario est´a completa, deve
haver um crit´erio de aceita¸c˜ao, com objetivos que podem ser
medidos e avaliados.
Test Driven Development
• Faz com que todo c´odigo escrito seja testado.
• Auxilia no design da aplica¸c˜ao.
• Inverte a ordem tradicional de testes de software.
Cria teste → Teste falha →
Implementa c´odigo → Teste passa →
Refatorar c´odigo
Cr´ıticas ao TDD
Defini¸c˜ao do que ´e uma unidade
Quantidade de c´odigo de teste.
Uso de mocks.
Dificuldade de testar algumas situa¸c˜oes, com bancos de dados
e configura¸c˜oes espec´ıficas de plataforma.
Behavior Driven Development
• A unidade testada, ´e um requisito.
• Testa um comportamento esperado do sistema.
• Utiliza uma linguagem espec´ıfica de dom´ınio.
• Faz uso extensivo de ferramentas.
Gherkin DSL
• Desenvolvida para definir casos de teste no Cucumber.
• Procura for¸car requisitos e resultados claros.
• Facilmente traduz os crit´erios de aceita¸c˜ao de hist´orias.
• Internacionaliz´avel.
Exemplo
Feature: I want to code.
As a Developer, I want to code, so that I can pay my bills.
Scenario: I have to eat.
Given I know how to code.
Then I’m hired to code.
Then I’m payed in pizza.
Behave
• Behave ´e uma ferramenta que auxilia no uso de BDD com
Python.
• Auxilia na automa¸c˜ao de testes de aceita¸c˜ao (e unit´arios).
• Facil de integrar ao projeto.
• Busca facilitar a cria¸c˜ao do c´odigo de teste.
Features
• Features s˜ao escritas pelos Stakeholders, Analistas, etc.
• Uma feature ter´a, provavelmente, v´arios cen´arios.
• Podemos utilizar uma Hist´oria de Usu´ario como uma feature, e
os cen´arios como os testes de aceita¸c˜ao dessa feature.
• Descritas em linguagem natural, baseado no formato Gherkin.
Cen´arios
• Descrevem os passos para validar um cen´ario de uma feature.
• Cada cen´ario descreve apenas uma caracter´ıstica da feature.
• Cen´arios s˜ao criados a partir do ponto de vista do usu´ario.
• Podemos ter cen´arios para situa¸c˜oes de erro.
Given, When, Then
Cen´arios s˜ao descritos em passos que, se executados corretamente,
mostram que o cen´ario est´a corretamente implementado.
Given Utilizado para colocar o sistema em um estado conhecido.
When A¸c˜oes s˜ao executadas, modificando, ou n˜ao, o estado do
sistema.
Then Sa´ıdas observadas e avaliadas.
Um cen´ario completo.
Scenario: Change data of an inexistent institution.
Given the database has data for two institutions
When changing the data of an institution with id ”inexistent” to
"""
{ "long_name": "A Nice Place to Be" }
"""
Then the status code is 404
Testando com o Behave.
• As features devem ficar em um diret´orio features
• As implementa¸c˜oes dos passos devem ficar em um
subdiret´orio steps, dentro de features.
• Vocˆe pode controlar diversos aspectos dos testes atrav´es de
parˆametros da linha de comando.
You can implement step definitions for undefined steps
with these snippets:
@given(u’the database has data for two institutions’)
def step_impl(context):
raise NotImplementedError(u’STEP: Given the ...’)
@when(u’changing the data of an institution...’)
def step_impl(context):
raise NotImplementedError(u’STEP: When changing...’)
@then(u’the status code is 404’)
def step_impl(context):
raise NotImplementedError(u’STEP: Then ...’)
Implementando os Testes: Given
@given(’the database has data for two institutions ’)
def given_two_institutions_in_two_cities (context ):
"""Add two institutions to the database."""
url = "http ://127.0.0.1:5000/ api/city"
for v in context.cidades.values ():
response = requests.post(url , json=v)
assert response.status_code == 201
url = "http ://127.0.0.1:5000/ api/institution"
for institution in context.institutions:
response = requests.post(url , json=institution)
assert response.status_code == 201
Implementando os Testes: When
@when(’changing the data of an institution "{ inst_id }"’)
def when_changing_institution_data (context , inst_id ):
"""Request changes to the institution data."""
context.institution_id = institution_id
context.input = json.loads(context.text)
url = "http ://127.0.0.1:5000/ api/institution /{}"
url = url.format(institution_id)
context.response = requests.put(url ,
json=context.input)
Implementando os Testes: Then
@then(’the status code is {status_code}’)
def then_verify_status_code(context , status_code ):
"""Test the context response status code."""
expected = int(status_code)
observed = context.response.status_code
assert expected == observed
Implementando o C´odigo
Agora devemos passar nos testes...
Come¸ca a divers˜ao!
Para onde ir agora?
• http://github.com/behave
• http://behave.readthedocs.io/en/latest/tutorial.html
• http://behave.readthedocs.io/en/latest
Obrigado!
https://rafaeljeffman.com/tchelinux
rafasgj@gmail.com

Más contenido relacionado

La actualidad más candente

QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)Mayara Fernandes
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Lorena Caldas
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCMayara Fernandes
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpecguest49d83b2
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 

La actualidad más candente (10)

QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
 
Dito Tech Talk RSpec
Dito Tech Talk RSpecDito Tech Talk RSpec
Dito Tech Talk RSpec
 
Jenkins com SonarQube
Jenkins com SonarQubeJenkins com SonarQube
Jenkins com SonarQube
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 

Similar a Teste antes de codificar

Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverQualister
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driverJúlio de Lima
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilDanilo Sato
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe munizMatheus de Lara Calache
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeStefan Teixeira
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Elias Nogueira
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfHoctairBernardino
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 

Similar a Teste antes de codificar (20)

Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriver
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Processo e Processo de Software
Processo e Processo de SoftwareProcesso e Processo de Software
Processo e Processo de Software
 
Revisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia ÁgilRevisitando as Práticas de Engenharia Ágil
Revisitando as Práticas de Engenharia Ágil
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidadeTDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
TDC 2016 SP - Desmistificando cobertura de código como métrica de qualidade
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010Automação de Teste - BRATESTE 2010
Automação de Teste - BRATESTE 2010
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 

Más de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Tchelinux
 

Más de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 
Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.Desenvolvendo Jogos com pygame.
Desenvolvendo Jogos com pygame.
 

Teste antes de codificar

  • 1. N˜ao deixe para testar depois o que vocˆe pode testar antes. Rafael Guterres Jeffman Tchelinux 2018
  • 3.
  • 5.
  • 6. Ciclo do Desenvolvimento de Software • An´alise • Projeto • Implementa¸c˜ao • Testes • Implanta¸c˜ao
  • 7. User Stories • Descri¸c˜ao informal de uma funcionalidade. • Escritas na perspectiva do usu´ario. • As hist´orias devem dizer quem ´e o usu´ario, o que ele vai fazer, e qual o objetivo ele quer atingir.
  • 8. Crit´erios de Aceita¸c˜ao Para determinar se uma hist´oria de usu´ario est´a completa, deve haver um crit´erio de aceita¸c˜ao, com objetivos que podem ser medidos e avaliados.
  • 9. Test Driven Development • Faz com que todo c´odigo escrito seja testado. • Auxilia no design da aplica¸c˜ao. • Inverte a ordem tradicional de testes de software. Cria teste → Teste falha → Implementa c´odigo → Teste passa → Refatorar c´odigo
  • 10. Cr´ıticas ao TDD Defini¸c˜ao do que ´e uma unidade Quantidade de c´odigo de teste. Uso de mocks. Dificuldade de testar algumas situa¸c˜oes, com bancos de dados e configura¸c˜oes espec´ıficas de plataforma.
  • 11. Behavior Driven Development • A unidade testada, ´e um requisito. • Testa um comportamento esperado do sistema. • Utiliza uma linguagem espec´ıfica de dom´ınio. • Faz uso extensivo de ferramentas.
  • 12. Gherkin DSL • Desenvolvida para definir casos de teste no Cucumber. • Procura for¸car requisitos e resultados claros. • Facilmente traduz os crit´erios de aceita¸c˜ao de hist´orias. • Internacionaliz´avel.
  • 13. Exemplo Feature: I want to code. As a Developer, I want to code, so that I can pay my bills. Scenario: I have to eat. Given I know how to code. Then I’m hired to code. Then I’m payed in pizza.
  • 14. Behave • Behave ´e uma ferramenta que auxilia no uso de BDD com Python. • Auxilia na automa¸c˜ao de testes de aceita¸c˜ao (e unit´arios). • Facil de integrar ao projeto. • Busca facilitar a cria¸c˜ao do c´odigo de teste.
  • 15. Features • Features s˜ao escritas pelos Stakeholders, Analistas, etc. • Uma feature ter´a, provavelmente, v´arios cen´arios. • Podemos utilizar uma Hist´oria de Usu´ario como uma feature, e os cen´arios como os testes de aceita¸c˜ao dessa feature. • Descritas em linguagem natural, baseado no formato Gherkin.
  • 16. Cen´arios • Descrevem os passos para validar um cen´ario de uma feature. • Cada cen´ario descreve apenas uma caracter´ıstica da feature. • Cen´arios s˜ao criados a partir do ponto de vista do usu´ario. • Podemos ter cen´arios para situa¸c˜oes de erro.
  • 17. Given, When, Then Cen´arios s˜ao descritos em passos que, se executados corretamente, mostram que o cen´ario est´a corretamente implementado. Given Utilizado para colocar o sistema em um estado conhecido. When A¸c˜oes s˜ao executadas, modificando, ou n˜ao, o estado do sistema. Then Sa´ıdas observadas e avaliadas.
  • 18. Um cen´ario completo. Scenario: Change data of an inexistent institution. Given the database has data for two institutions When changing the data of an institution with id ”inexistent” to """ { "long_name": "A Nice Place to Be" } """ Then the status code is 404
  • 19. Testando com o Behave. • As features devem ficar em um diret´orio features • As implementa¸c˜oes dos passos devem ficar em um subdiret´orio steps, dentro de features. • Vocˆe pode controlar diversos aspectos dos testes atrav´es de parˆametros da linha de comando.
  • 20. You can implement step definitions for undefined steps with these snippets: @given(u’the database has data for two institutions’) def step_impl(context): raise NotImplementedError(u’STEP: Given the ...’) @when(u’changing the data of an institution...’) def step_impl(context): raise NotImplementedError(u’STEP: When changing...’) @then(u’the status code is 404’) def step_impl(context): raise NotImplementedError(u’STEP: Then ...’)
  • 21. Implementando os Testes: Given @given(’the database has data for two institutions ’) def given_two_institutions_in_two_cities (context ): """Add two institutions to the database.""" url = "http ://127.0.0.1:5000/ api/city" for v in context.cidades.values (): response = requests.post(url , json=v) assert response.status_code == 201 url = "http ://127.0.0.1:5000/ api/institution" for institution in context.institutions: response = requests.post(url , json=institution) assert response.status_code == 201
  • 22. Implementando os Testes: When @when(’changing the data of an institution "{ inst_id }"’) def when_changing_institution_data (context , inst_id ): """Request changes to the institution data.""" context.institution_id = institution_id context.input = json.loads(context.text) url = "http ://127.0.0.1:5000/ api/institution /{}" url = url.format(institution_id) context.response = requests.put(url , json=context.input)
  • 23. Implementando os Testes: Then @then(’the status code is {status_code}’) def then_verify_status_code(context , status_code ): """Test the context response status code.""" expected = int(status_code) observed = context.response.status_code assert expected == observed
  • 24. Implementando o C´odigo Agora devemos passar nos testes... Come¸ca a divers˜ao!
  • 25. Para onde ir agora? • http://github.com/behave • http://behave.readthedocs.io/en/latest/tutorial.html • http://behave.readthedocs.io/en/latest