SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
VII Encontro




Coding Dojo e Test Driven Development
Brunno Gomes 



 twitter.com/brunnogomes
 brunnolgp@gmail.com
Rodrigo Alves Vieira

  rodrigo3n.com
   twitter.com/rodrigo3n
   rodrigo3n@gmail.com
Coding Dojo

    + 
 Test Driven
Development
Coding Dojo?
flickr{rosie_hardy}
Test Driven
Development
       
flickr{chuckbiscuito}
Técnica apresentada por 
Kent Beck em seu livro (Test 
  Driven Development: By 
 Example, 2003), tem como 
    objetivo aumentar a 
   qualidade do software 
      escrito além das 
      capacidades do 
       programador 
Hmmm, TDD?!.. 
...Python tem o...
unittest
unittest
flickr{shutterhack}




   unittest
• O unittest (também chamado de 
  PyUnit) é um Framework built-in do 
  Python para Testes Unitários criado 
  por Steve Purcell em 2001. Baseado 
  no JUnit e no Smalltalk Testing 
  Framework
• Está incluso na biblioteca padrão do 
  Python desde a versão 2.1 (2001).
Vantagens
• É uma biblioteca padrão do Python
Vantagens
• É uma biblioteca padrão do Python
• É muito prática. Curva mínima de
  aprendizado
Vantagens
• É uma biblioteca padrão do Python
• É muito prática. Curva mínima de
  aprendizado
• Presente em todos os interpretadores
  do Python
Vantagens
• É uma biblioteca padrão do Python
• É muito prática. Curva mínima de
  aprendizado
• Presente em todos os interpretadores
  do Python
• É util pra qualquer projeto!
Qualquer
projeto!
O Framework

•TestCase
O Framework

•TestCase
•TestSuite
O Framework

•TestCase
•TestSuite
•TextTestRunner
Comece testando o
 código que você
    quer ter!
unittest.TestCase
# -*- encoding:utf-8 -*-
# aviao_teste.py

import unittest
from aviao import Aviao

class AviaoTeste(unittest.TestCase):
    """
    Documentação de AviaoTest
    """
    def testeAviaoCriado(self):
         aviao = Aviao(10)
         self.assertNotEqual(aviao == None, aviao)

if __name__ == "__main__":
    unittest.main()
flickr{saguar}




     Obviamente falha!
Completamos o primeiro passo do ciclo
 do TDD: escrevemos um teste como
  queremos que o código funcione. 

 Agora escreveremos apenas o código
 suficiente para fazer o teste passar!
# -*- encoding:utf-8 -*-
# aviao.py

tanque = 10

class Aviao():
    def __init__(self, encher_o_tanque=tanque):
        print "Executando testes..."
flickr{naty_nina}




Fizemos o primeiro teste passar!




 Agora vem a...
flickr{finsterbaby}




                      ...Refatoração!
Aqui pensamos 
atenciosamente no que os 
  testes estão fazendo. 
Melhoramos a qualidade do 
 código fonte e do próprio 
    teste e removemos 
        duplicação
# -*- encoding:utf-8 -*-
# aviao_teste.py

import unittest
from aviao import Aviao

class AviaoTeste(unittest.TestCase):
    """
    Documentação de AviaoTest
    """
    def testeAviaoCriado(self):
         aviao = Aviao(10)
         self.assertNotEqual(aviao == None, aviao), 
                 "Avião não pode ser None"

if __name__ == "__main__":
    unittest.main()
Pro-dica: Execute os testes com a opção '-v' e veja 
   a execução de cada teste em modo verboso!




~λ python aviao_teste.py                     -v
unittest.TestSuite

 Uma ferramenta do unittest para 
   agrupar testes individuais e 
organizar 'pilhas' de testes, mesmo 
 em diferentes arquivos/módulos, 
     criando Suítes de Teste!
Criando uma suíte de Testes
 # -*- encoding:utf-8 -*-
 # aviao_test_suite.py

 import unittest
 import aviao_teste

 def suite():
     testsuite = unittest.TestSuite()
     testsuite.addTest(unittest.makeSuite(AviaoTeste)
     return testsuite




Ou ainda melhor...
A classe TestSuite torna ainda mais 
poderosa sua suíte de testes porque você 
 pode importar quantos módulos quiser 
 contendo uma quantidade qualquer de 
                 testes!

 Então você pode aninhar os testes para 
         dinamizar a execução!
E com 'aninhar' eu quis dizer que você 
 pode aninhar até outras suítes de testes!
import unittest
from aviao_test_suite import AviaoTestSuite
from outro_modulo import OutraTestSuite

suite1 = aviao_test_suite.AviaoTestSuite
suite2 = outro_modulo.OutraTestSuite

teste_geral = unittest.TestSuite((suite1, suite2))



Uma suíte de testes que execua outra suíte de 
testes! Massa!
unittest.TextTestRunner

 Claro que testes são 
documentação também, 
então, nada melhor que 
 tê-los disponíveis em 
       texto puro! 
E é exatamente isso que o TextTestRunner 
    faz cada vez que o invocamos com 
"unittest.main()" no arquivo aviao_teste.py!

unittest.main() gera um objeto TestSuite que 
    contém todos os testes(métodos) que 
 começam com "test" (testAviaoCriado, 
      por exemplo) , então ele invoca o 
 TextTestRunner que executa cada um dos 
  testes e te retorna o resultado via stderr!
Nossa suíte final de testes!
# -*- encoding:utf-8 -*-
# aviao_teste_suite.py

import unittest
from aviao_test import *

class AviaoTesteSuite(unittest.TestSuite):
    def __init__(self):
        unittest.TestSuite.__init__(self.map(AviaoTeste, 
            ("AviaoTeste")))

    def suite(self):
        suite = unittest.TestSuite()
        suite.addTest(unittest.makeSuite(AviaoTeste))
        return suite

suite1 = unittest.TestSuite()
suite1.addTest(AviaoTeste("testeAviaoCriado"))

unittest.TextTestRunner().run(suite1)
unittest.TextTestRunner(verbosity=2).run(suite())
mais informações:

 help(unittest)
flickr{ibcbulk}




Fazer TDD é
como andar de
bicicleta!
Coding Dojo
Porque ?
Nós não
treinamos.
O que é ?
De acordo com o CodingDojo.Org

     “Um encontro onde um grupo de
programadores se junta para trabalhar num
 desafio de programação. O objetivo é se
divertir praticar deliberadamente de forma a
        melhorar suas habilidades.”
Prática
Deliberada.
Não é...
...um lugar para
 pura exibição.
... competição.
Características
• Passos de bebê
• Todos são iguais
• Todos devem entender
• Sempre começa do zero
• Sempre se usa testes
• Iterativo e Interativo
• Interrupções incentivadas
• Abertura para novas idéias
Algumas
 regras
• Computador + Projetor
• Piloto + co-piloto
• TDD
  vermelho → verde → refatorar
Estilos
PreparedKata
• Piloto e co-piloto fixos
• Apresentam uma solução do
  início ao fim
• Cada passo é explicado
• Indicado para um grande
  número de participantes
• Pode-se usar um problema e
  solução previamente
  preparados
RandoriKata
• Piloto e co-piloto revezam
• Todos os presentes são
  convidados a participar
• Cada par tem um tempo para
  programar
• Indicado para grupos
  menores
• O ideal é que todos os
  participantes programem
Problemas e
 Soluções
• Problemas simples
• Qualquer um pode propor
• Tem que começar e terminar
  na mesma sessão do Dojo
Depois do Dojo
• O que aprendemos ?
• O que foi bom ?
• O que foi ruim ?
Valeu! o/

Weitere ähnliche Inhalte

Was ist angesagt?

Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Djangofabiocerqueira
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnitelliando dias
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnitLeonardo Soares
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Luís Cobucci
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução PythonGleison Rodrigues
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7Rogério Moraes de Carvalho
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium Mayron Cachina
 
Test Driven Infrastructure na Globo.com
Test Driven Infrastructure na Globo.comTest Driven Infrastructure na Globo.com
Test Driven Infrastructure na Globo.comRogério Schneider
 

Was ist angesagt? (20)

Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Junit
JunitJunit
Junit
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnit
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011
 
Introdução ao Maven
Introdução ao MavenIntrodução ao Maven
Introdução ao Maven
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7Plataforma de compiladores .NET,Visual Studio 2015, C# 6 e futuro C# 7
Plataforma de compiladores .NET, Visual Studio 2015, C# 6 e futuro C# 7
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Consegi 2011: Puppet
Consegi 2011: PuppetConsegi 2011: Puppet
Consegi 2011: Puppet
 
Test Driven Infrastructure na Globo.com
Test Driven Infrastructure na Globo.comTest Driven Infrastructure na Globo.com
Test Driven Infrastructure na Globo.com
 

Andere mochten auch

Wahrnehmung der Öffentlichkeitsarbeit zur Liniennetzumstellung
Wahrnehmung der Öffentlichkeitsarbeit zur LiniennetzumstellungWahrnehmung der Öffentlichkeitsarbeit zur Liniennetzumstellung
Wahrnehmung der Öffentlichkeitsarbeit zur LiniennetzumstellungKathrin Viergutz
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7Felipe Pimentel
 
Bdd for-dso-1227123516572504-8
Bdd for-dso-1227123516572504-8Bdd for-dso-1227123516572504-8
Bdd for-dso-1227123516572504-8Frédéric Delorme
 
Instituto tecnologico superior
Instituto tecnologico superiorInstituto tecnologico superior
Instituto tecnologico superiormaria_belen
 
Angelica favorite movies
Angelica favorite moviesAngelica favorite movies
Angelica favorite moviesangiemillan22
 
Presentación1. circulo cromatico laura p diaz pptx
Presentación1. circulo cromatico laura p diaz pptxPresentación1. circulo cromatico laura p diaz pptx
Presentación1. circulo cromatico laura p diaz pptxLaura Diaz
 
El escritorio y la barra de tarea jessica hernandez, kelly guerrero
El escritorio y la barra de tarea jessica hernandez, kelly guerreroEl escritorio y la barra de tarea jessica hernandez, kelly guerrero
El escritorio y la barra de tarea jessica hernandez, kelly guerrerokellyisabel
 
Explorando el microsoft excel 2007
Explorando el microsoft excel 2007Explorando el microsoft excel 2007
Explorando el microsoft excel 2007gracejaramillo
 
Servicios publicos domiciliarios
Servicios publicos domiciliariosServicios publicos domiciliarios
Servicios publicos domiciliariosGabrielaFuentes11
 
Estacion_Nautica_Estrecho de Magallanes
Estacion_Nautica_Estrecho de MagallanesEstacion_Nautica_Estrecho de Magallanes
Estacion_Nautica_Estrecho de MagallanesEstacionNautica
 
Dimensiones y perspectivas, sociosemiotica
Dimensiones y perspectivas, sociosemioticaDimensiones y perspectivas, sociosemiotica
Dimensiones y perspectivas, sociosemioticaDaniel Meza
 

Andere mochten auch (20)

Wahrnehmung der Öffentlichkeitsarbeit zur Liniennetzumstellung
Wahrnehmung der Öffentlichkeitsarbeit zur LiniennetzumstellungWahrnehmung der Öffentlichkeitsarbeit zur Liniennetzumstellung
Wahrnehmung der Öffentlichkeitsarbeit zur Liniennetzumstellung
 
Internet tips lewis 2013
Internet tips lewis 2013Internet tips lewis 2013
Internet tips lewis 2013
 
Maratona Windows Phone 7
Maratona Windows Phone 7Maratona Windows Phone 7
Maratona Windows Phone 7
 
Bdd for-dso-1227123516572504-8
Bdd for-dso-1227123516572504-8Bdd for-dso-1227123516572504-8
Bdd for-dso-1227123516572504-8
 
Mapping toolbox
Mapping toolboxMapping toolbox
Mapping toolbox
 
Esai gramatika
Esai gramatikaEsai gramatika
Esai gramatika
 
Oh la la babel
Oh la la babelOh la la babel
Oh la la babel
 
Expo hardware
Expo hardwareExpo hardware
Expo hardware
 
Pym
PymPym
Pym
 
Instituto tecnologico superior
Instituto tecnologico superiorInstituto tecnologico superior
Instituto tecnologico superior
 
Angelica favorite movies
Angelica favorite moviesAngelica favorite movies
Angelica favorite movies
 
Presentación1. circulo cromatico laura p diaz pptx
Presentación1. circulo cromatico laura p diaz pptxPresentación1. circulo cromatico laura p diaz pptx
Presentación1. circulo cromatico laura p diaz pptx
 
El escritorio y la barra de tarea jessica hernandez, kelly guerrero
El escritorio y la barra de tarea jessica hernandez, kelly guerreroEl escritorio y la barra de tarea jessica hernandez, kelly guerrero
El escritorio y la barra de tarea jessica hernandez, kelly guerrero
 
Amor
AmorAmor
Amor
 
Explorando el microsoft excel 2007
Explorando el microsoft excel 2007Explorando el microsoft excel 2007
Explorando el microsoft excel 2007
 
Servicios publicos domiciliarios
Servicios publicos domiciliariosServicios publicos domiciliarios
Servicios publicos domiciliarios
 
Estacion_Nautica_Estrecho de Magallanes
Estacion_Nautica_Estrecho de MagallanesEstacion_Nautica_Estrecho de Magallanes
Estacion_Nautica_Estrecho de Magallanes
 
Dimensiones y perspectivas, sociosemiotica
Dimensiones y perspectivas, sociosemioticaDimensiones y perspectivas, sociosemiotica
Dimensiones y perspectivas, sociosemiotica
 
Nixon
NixonNixon
Nixon
 
B 5030 libro
B 5030 libroB 5030 libro
B 5030 libro
 

Ähnlich wie Coding Dojo e Test Driven Development

Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDDDextra
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDRaphael Pacheco
 
Escrevendo testes j unit no net beans ide
Escrevendo testes j unit no net beans ideEscrevendo testes j unit no net beans ide
Escrevendo testes j unit no net beans ideSocorro Vania Alves
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasWordCamp Floripa
 
Palestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community LaunchPalestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community LaunchWaldyr Felix
 

Ähnlich wie Coding Dojo e Test Driven Development (20)

JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
JUnit
JUnitJUnit
JUnit
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Java 12
Java 12Java 12
Java 12
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDDABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
ABAP Code Retreat Brasil - Apagando tudo e começando novamente: Conhecendo o TDD
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Escrevendo testes j unit no net beans ide
Escrevendo testes j unit no net beans ideEscrevendo testes j unit no net beans ide
Escrevendo testes j unit no net beans ide
 
Desenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por TestesDesenvolvimento Guiado Por Testes
Desenvolvimento Guiado Por Testes
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
Frameworks para C 3º DeSif
Frameworks para C 3º DeSifFrameworks para C 3º DeSif
Frameworks para C 3º DeSif
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Palestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community LaunchPalestra novidades do Visual Studio 2010 - Community Launch
Palestra novidades do Visual Studio 2010 - Community Launch
 

Coding Dojo e Test Driven Development