Behaviour-Driven Development em Ruby

Slides:



Advertisements
Apresentações semelhantes
Teste Unitário - NUnit Realizando testes unitários utilizando a ferramenta NUnit Marcelo Rocha Rodrigo Rocha.
Advertisements

Sistemas de produção enxuta
Ruby Introdução.
Desenvolvimento de Plug-ins Orientado a Testes
Tecnologia de Banco de Dados Grupo 3: Diógenes LíbanoElton S. Vianna Euglen AssisLisa Hayashida Marcelo da Cruz SalvadorRicardo Takemura Gerenciador de.
Débora da Silva Orientadora: Maria Inés Castiñeira
Casos de Uso.
Tópicos Motivação para teste Por que algumas empresas não testam
Alex de Magalhães Machado
SELENIUM.
JMeter.
Walfredo Cirne walfredo.dsc.ufpb.br
Test Driven Development
Ci&T SPIN – Campinas Equipe de testes em projetos com CI e TDD.
Selenium CONFIGURAÇÃO DE TESTE.
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Performance em aplicações web – Parte I
Waterfall To Scrum.
Test-Driven Development
Linguagem Técnica II Testes Automatizados Aula 04 Prof
Introdução ao Teste Unitário com JUnit
REDUNDÂNCIA POR SOFTWARE
Engenharia de Software
DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde
Selenium Componentes: Fábio Gomes Claver Pari Eni Conde
Community Launch VS 2010 Rio de Janeiro Patrocínio: Praticando Test Driven Development no VS 2010 Christian Cunha Christian Cunha.
Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida.
Victor Moura Cortez.  Sistemas de grande porte  Feedback com testes manuais é demorado  Consome recursos humanos por muito tempo  Automatizar testes.
Test Driven Development por Johann Gomes e Thaís Moura.
Utilizando Testes Unitários Gleibson Rodrigo “dartanham” Fontes: antiga apresentação de testes da disciplina de ESS e na curso de testes do PDesigner.
Prototipagem rápida de gameplay
Um Framework Para Testes
Desenvolvimento Rápido de Aplicação (RAD)
Engenharia de Software
The art of Unit Testing. Unit testing O Um teste unitário é uma parte de código (geralmente um método/função), que invoca outra parte de codigo e verifica.
1 Test Driven Development John Jonathan da Silva /
METODOLOGIAS ÁGEIS TESTES UNITÁRIOS.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Classes e Objetos em Java.
Comunicação de dados Protocolos básicos de enlace de dados.
The Avengers Testers Team. Diraci Junior Trindade da Silva Analista de Qualidade CWI Software Coordenador do GUTS-rs
Teste de Software Conceitos iniciais.
Engenharia de Software
Introdução Teste Unitário com JUnit
Padrão- MVC Model, View, Controller
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Qualidade no Desenvolvimento de Software Wolley W. Silva Baseado nas notas de aula dos professores Tatuo e Daisy.
Conceitos Básicos Introdução.
SCORE 2009 – aula a convite do Prof. Jaelson Castro Marcelo d’Amorim Testes em 2h.
Técnicas e Projeto de Sistemas
Decisão #1 Decisão-chaveUtilização de C para desenvolvimento do MCTCore. DriversRNF: O código deve ser escrito na linguagem C. Descrição O sistema legado.
Teste de Integração, Sistema e Aceitação
Daniel Cukier – IME - USP 1 Junit 4.0 Daniel Cukier – IME – USP MAC5700.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
O que é Domain Driven Design Especificação Design Refactor Testes Quanto tempo isso leva?
Métodos Ágeis e Programação Extrema (XP)
1 JUnit. 2 Por que testar? Qualidade: Código testado é mais confiável –Como saber se o recurso funciona sem testar? Coragem para mudar: o programador.
1 Junit Motivação para o uso André Luís Moreira
Introdução. Funcionalidade. Tipos. Exemplo de Diagrama Típico. Exemplo de Diagrama de Requisito.
Aula 02 de Eng. de Requisitos
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
JMeter. O que é ? É uma ferramenta Open Source de testes de performance e estresse automatizados para aplicações WEB Feita em Java Possibilita testes.
GUTS-RS TESTES EM PROJETO DE IMPLANTAÇÃO ERP.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
#gutsrs Agile Tester 3.0 Daniel Ricardo Amorim.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Test Driven Development (TDD) Carlos Morais Desenvolvimento Dirigido por Testes.
Testes e Qualidade de Software
Workshop Agile tdd - Test Driven development
Transcrição da apresentação:

Behaviour-Driven Development em Ruby BDD com RSpec Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK www.dtsato.com

Duas Perspectivas

TDD / Test::Unit

DSL para BDD Quanta sigla…

Test::Unit Classe estende Test::Unit::TestCase Métodos devem começar com “test” Assertions: assert(bool) assert_equal(expected, actual) assert_raise(args, blk) assert_nil(actual) …

Class Herança Nomes dos testes Assert

Describe/it Should + matchers Agrupa mais de 1 ‘assertion’ por teste Descreve comportamento!

http://rspec.info/documentation/test_unit.html

setup/teardown

Simple Custom Matcher

Custom Matcher

Custom Matcher

Reaproveitamento

Pendente…

Test-Driven Development 1. Escreva um teste que falha 2. Faça o teste passar 3. Refatore!

Feedback Confiança Erros são detectados rapidamente Ajudam a saber quando terminamos Pensar no design antes de implementar Evita generalização desnecessária Regressão automatizada

Testes Unitários Integridade Interna Rápidos Independentes Escrito por e para desenvolvedores Não indicam integridade externa Interna: qualidade dos componentes Externa: qualidade do ponto de vista do sistema (clientes e usuários)

Visão mais ampla

Histórias Como <papel/usuário> Eu gostaria de <funcionalidade> Pois <valor de negócio>

Cenários (exemplos) Dado <contexto> Quando <evento> Então <consequência>

SMART Specific Measurable Achievable Relevant Time-boxed * Specific - no generalizations (”It must be quick enough” vs. “It must load 90% of the time within 1 second”) Measurable - nothing that can’t be given a quantative measurement (”Users are happy” vs. “Users who express their level of happiness should give us at least 7/10″) Achievable - nothing that can’t be done (”I want my site emblazoned on the side of the moon”) Relevant - keep it related to the story at hand (”I want the three latest blog posts and a pony”) Timeboxed- work out when it needs to happen (”I want to be able to duplicate the works of Shakespeare using the random word generator”)

Testes de Aceitação Integridade Externa Mais lentos Mais difícil detectar causa de erros Escrito para clientes Não indicam integridade interna

No mundo real as coisas são mais complicadas Rails: Model / View / Controller / Helpers/ Plugins / Módulos / …

Testes Unitários

Testes de Aceitação

?

Integração

Mocks Permitem especificar interações entre objetos Trocam o objeto real por um dublê Verificam que as expectativas foram atendidas Substituem: Objetos “gordos” Serviços externos Bibliotecas (não quero testar se o gem funciona) …

Mocks

Criando um mock

Gravando Expectativas

Verificar Expectativas Automático! O teste vai falhar se: Método esperado não foi chamado Método foi chamado com argumentos diferentes Método foi chamado mais ou menos vezes Método não esperado foi chamado …

Stubs Mocks que não verificam expectativas Servem como dublês mas não se importam com o que aconteceu

RSpec on Rails Permite testar camadas isoladas: Model Controller View Helper Testes de aceitação com Histórias

Model

Controller

View

Muito mais… http://rspec.info

De volta ao BDD…

Normalmente…

BDD

BDD Feedback Outside-in

Resumindo Behaviour-Driven Development RSpec Um processo ponta-a-ponta de desenvolvimento Independente de ferramenta “Outside-in” RSpec Ferramental completo para BDD ponta-a-ponta Histórias -> Mocks -> Specs

Coisas legais (Ruby) Autotest Synthesis Webrat Cucumber Selenium

Behaviour-Driven Development em Ruby BDD com RSpec Behaviour-Driven Development em Ruby Danilo Sato ThoughtWorks UK www.dtsato.com