SlideShare uma empresa Scribd logo
1 de 28
Thiago Ghisi (@thiagoghisi)
   2003 - SENAI e o Poder da Programação Pascal.
   2005 - Técnico em Informática com Habilitação em Redes de Computadores
   2006/1 - Ciência da Computação (Unisul)
   2006/2 - Técnico de Informática (Tractebel Energia/Consult System)
   2007/1 - PUIC: Testes, CMMI e Extreme Programming
   2007/2 – Nexxera Techpeople
   2008 - Testes Automatizados (Techpeople)
   2009/1 - SCJP 6.0
   2009/2 - Ágiles 2009 (1º Coding Dojo)
   2010/1 - TCC: Shell para desenvolvimento de Sistemas Especialistas na Web.
      0% de cobertura de Testes Automatizados == Estou até hoje para disponibilizar o fonte.
   2010/2 - MPS.BR Nível F (Techpeople)
   2011/1 - CMMI ML2 (Techpeople)
   2011/2 - Bacharel em Ciência da Computação (Unisul)
   2011/3 – DojoTuba
   2011/4 - Consultor MPS.BR
   2011/5 – Fork In Tuba
1.   Quem já ouviu falar e sabe o que são Testes
     Automatizados?
2.   Quem já usou algum tipo de Teste Automatizado em
     alguma aplicação que desenvolveu
     profissionalmente?
3.   Quem FREQUENTEMENTE faz Testes
     Automatizados?
4.   Quem SEMPRE faz Testes Automatizados?
5.   Quem faz TDD do início ao fim?
 Com que linguagem de programação você trabalha?
 Em uma palavra:
   Feedback
 Em uma frase:
   “Executar o programa com alguma(s)
    entrada(s) e conferir visualmente os
    resultados obtidos” AgilCoop/USP
 “É o processo de escrita de uma programa de
 computador para realizar o teste de software.”
 Wikipédia
 “Uso de software para a controlar a execução do teste de
  software, comparando RESULTADOS ESPERADOS com
  os RESULTADOS REAIS.” Wikipédia
 Projeto sem Testes Automatizados = Medo de
  Refatorar o Código e a Arquitetura = Código Imundo =
  Baixa Produtividade e Alta Taxa de retrabalho (BUGs)
  = Pessoas desmotivadas = Go Horse Process
 Projeto com Testes Automatizados = Segurança ao
  Refatorar o Código e a Arquitetura = Código Limpo =
  Alta Produtividade e Baixa Taxa de retrabalho (BUGs)
  = Pessoas motivadas = $$$
 “São os testes de unidade que mantêm seus códigos flexíveis,
    reutilizáveis e passíveis de manutenção.”
   “Sem testes, cada modificação pode gerar um bug e você ficará
    relutante em fazer mudanças.”
   “Quanto maior a cobertura dos seus testes menor o medo.”
   “Ter uma coleção de testes de unidade automatizados que cubram o
    código de produção é o segredo para manter seu projeto e arquitetura
    os mais limpos possíveis.”
   “Se não mantiver os testes limpos, irá perdê-los.”
 Importância dos Testes Automatizados em Linguagens
 Dinâmicas X Importância dos Testes Automatizados
 em Linguagens Compiladas?
 O teste é modelado conhecendo-se a estrutura interna
    do sistema
   Aplicável somente quando se conhece o algoritmo
   O calculo da Cobertura de Testes é totalmente baseada
    em princípios Caixa Branca
   Teoricamente, cada caminho possível ao longo do
    código deve ser testado
   Teste Estrutural
 O teste é modelado sem o conhecimento da estrutura
  interna do sistema
 Aplicável em todas as fases/tipos de Testes.
 Se concentram e se baseiam na entrada e saída da
  unidade.
 Teste Funcional
 O primeiro tipo de teste que se deve fazer
 Uma unidade pode ser entendida como o menor
  trecho de código de um sistema que pode ser testado.
  Normalmente um método.
 Focado em um trecho específico do código, desta
  forma os erros encontrados são facilmente localizados,
  diminuindo o tempo gasto com depuração.
 Exemplo da Engenharia aeronáutica
 xUnit (API)
 JUnit com EclEmma
 Mock Objects?
 Sucede o Teste de Unidade
 Módulos são combinados e testados em grupo
 Onde vários Mock Objects são removidos
 Antecede o Testes de Aceitação, ou os testes onde o
 sistema está completamente integrado
 Sistema completamente integrado
 “Última ação de teste antes da implantação do software. A
  meta do teste de aceitação é verificar se o software está
  pronto e pode ser usado pelos usuários finais para executar
  as funções e as tarefas para as quais foi criado.” RUP
 Testes caixa preta que são realizados através da interface de
  usuário, que pode ser, por exemplo, um console textual,
  uma interface de uma aplicação local ou uma interface Web
 Validação do sistema do ponto de vista do Cliente, do
  negócio.
 Selenium Server  o interpretador, é um server em
  java, um JARZÃO
 Selenium IDE (FIREFOX)  grava e exporta testes
  para todos os clients
 Selenium Client (Várias Linguagens: Java, PHP, Ruby,
  Python)  Não tem desculpas para não usar!
 Fast – Quando os testes rodam devagar, você não desejará
    executá-los com frequência.
   Idenpendent – Quando os testes dependem um dos outro,
    se o primeiro falhar causará um efeito dominó de falhas,
    dificultando o diagnóstico.
   Repeatable – Caso os testes não p0ssam ser repetidos em
    qualquer ambiente, você sempre terá uma desculpa para
    não manter os testes VERDES.
   Self-validating – Asserts TRUE ou FALSE, sempre! Evita
    comparações manuais.
   Timely – Escrever os testes na hora certa, que é em 99%
    das vezes antes. Se criá-los depois, o teste de código de
    produção poderá fica mais difícil.
 Atuar como especificação das funcionalidades
 Atuar como repelente de bugs
 Ajudar a achar defeitos no sistema em teste
 Atuar como documentação executável
 Atuar como rede de segurança para mudanças
 Não fazer mal ao sistema em teste


                              Referência: AgilCoop/USP
Link Vídeo: http://www.youtube.com/watch?v=9XwiUKXZm-o
 Reconhecimento que Desenvolvimento de software é uma
    tarefa complexa.
   A automação dos testes dá segurança à equipe para fazer
    alterações no código, seja por manutenção, refatoração ou
    até mesmo para adição de novas funcionalidades.
   No começo e por muito tempo vai doer fazer, vai ser difícil,
    é uma mudança de paradigma. Pratique!
   Fazer testes automatizados está relacionado com ser
    ou não profissional!
   Precisamos convencer nossos superiores que testes
    automatizados são importantes e que são eles que vão
    ganhar com isso!
 Livro Código Limpo: Habilidades Práticas do Agile Software –
Capítulo 9: Testes de Unidade
 http://ccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao08-
  Testes.pdf
 http://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-1-2-
  Introducao-AgilCoop-Verao2010.pdf
 http://www.agilcoop.org.br/files/AgilCoop-Verao2010-
  TestesAutomatizados.pdf
 https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCaix
  aEletronicoEconomico
 https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCalc
  uloDeNumerosRomanos
 https://github.com/rodrigoy/beckanos-java
 http://seleniumhq.org/
 Contatos:


   E-mail: thiago.ghisi@gmail.com
   Twitter: @thiagoghisi
   Blog: http://thiagoghisi.com
   Linkedin: http://br.linkedin.com/in/thiagoghisi
   DojoTuba/ForkInTuba:
    http://groups.google.com/group/dojotuba

Mais conteúdo relacionado

Mais procurados

Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitRobinson Castilho
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumIsrael Santiago
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddCarlos Santana
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
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 Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockitoRenan Uchôa
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 

Mais procurados (20)

Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
Automação de Teste Funcionais - Selenium
Automação de Teste Funcionais - SeleniumAutomação de Teste Funcionais - Selenium
Automação de Teste Funcionais - Selenium
 
Aexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tddAexo TI - Boas práticas de testes tdd
Aexo TI - Boas práticas de testes tdd
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
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
 
JUnit
JUnitJUnit
JUnit
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Junit
JunitJunit
Junit
 
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 

Semelhante a Carreira e atuação de Thiago Ghisi em testes automatizados

CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de SeleniumAutotic
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
A importância de utilizar testes automatizados
A  importância   de utilizar  testes automatizadosA  importância   de utilizar  testes automatizados
A importância de utilizar testes automatizadosDiego Allan Oliveira
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Danilo Pinotti
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
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
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Javaelliando dias
 
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
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 
Verificação e Validação
Verificação e ValidaçãoVerificação e Validação
Verificação e ValidaçãoMarcelo Yamaguti
 

Semelhante a Carreira e atuação de Thiago Ghisi em testes automatizados (20)

CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Curso Básico de Selenium
Curso Básico de SeleniumCurso Básico de Selenium
Curso Básico de Selenium
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
A importância de utilizar testes automatizados
A  importância   de utilizar  testes automatizadosA  importância   de utilizar  testes automatizados
A importância de utilizar testes automatizados
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
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?
 
Teste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e AplicandoTeste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e Aplicando
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java JavaImplementando Implementando eXtreme treme Programming rogramming em em Java Java
Implementando Implementando eXtreme treme Programming rogramming em em Java Java
 
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
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
Verificação e Validação
Verificação e ValidaçãoVerificação e Validação
Verificação e Validação
 

Mais de Thiago Ghisi

Agile não é pra todo mundo: os desafios não técnicos
Agile não é pra todo mundo: os desafios não técnicosAgile não é pra todo mundo: os desafios não técnicos
Agile não é pra todo mundo: os desafios não técnicosThiago Ghisi
 
Test pyramid in an Android Agile Project - TDC2013
Test pyramid in an Android Agile Project - TDC2013Test pyramid in an Android Agile Project - TDC2013
Test pyramid in an Android Agile Project - TDC2013Thiago Ghisi
 
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Thiago Ghisi
 
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...Thiago Ghisi
 
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na web
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na webExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na web
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na webThiago Ghisi
 

Mais de Thiago Ghisi (7)

Agile não é pra todo mundo: os desafios não técnicos
Agile não é pra todo mundo: os desafios não técnicosAgile não é pra todo mundo: os desafios não técnicos
Agile não é pra todo mundo: os desafios não técnicos
 
The Test Pyramid
The Test PyramidThe Test Pyramid
The Test Pyramid
 
Test pyramid in an Android Agile Project - TDC2013
Test pyramid in an Android Agile Project - TDC2013Test pyramid in an Android Agile Project - TDC2013
Test pyramid in an Android Agile Project - TDC2013
 
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
 
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...
QA Reviews, Kick-offs e Desk Checks por estória: três práticas que podem prev...
 
DojoTuba 01
DojoTuba 01DojoTuba 01
DojoTuba 01
 
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na web
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na webExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na web
ExpertsGoToWeb: Shell para desenvolvimento de sistemas especialistas na web
 

Carreira e atuação de Thiago Ghisi em testes automatizados

  • 2. 2003 - SENAI e o Poder da Programação Pascal.  2005 - Técnico em Informática com Habilitação em Redes de Computadores  2006/1 - Ciência da Computação (Unisul)  2006/2 - Técnico de Informática (Tractebel Energia/Consult System)  2007/1 - PUIC: Testes, CMMI e Extreme Programming  2007/2 – Nexxera Techpeople  2008 - Testes Automatizados (Techpeople)  2009/1 - SCJP 6.0  2009/2 - Ágiles 2009 (1º Coding Dojo)  2010/1 - TCC: Shell para desenvolvimento de Sistemas Especialistas na Web.  0% de cobertura de Testes Automatizados == Estou até hoje para disponibilizar o fonte.  2010/2 - MPS.BR Nível F (Techpeople)  2011/1 - CMMI ML2 (Techpeople)  2011/2 - Bacharel em Ciência da Computação (Unisul)  2011/3 – DojoTuba  2011/4 - Consultor MPS.BR  2011/5 – Fork In Tuba
  • 3. 1. Quem já ouviu falar e sabe o que são Testes Automatizados? 2. Quem já usou algum tipo de Teste Automatizado em alguma aplicação que desenvolveu profissionalmente? 3. Quem FREQUENTEMENTE faz Testes Automatizados? 4. Quem SEMPRE faz Testes Automatizados? 5. Quem faz TDD do início ao fim?
  • 4.  Com que linguagem de programação você trabalha?
  • 5.  Em uma palavra:  Feedback  Em uma frase:  “Executar o programa com alguma(s) entrada(s) e conferir visualmente os resultados obtidos” AgilCoop/USP
  • 6.  “É o processo de escrita de uma programa de computador para realizar o teste de software.” Wikipédia
  • 7.  “Uso de software para a controlar a execução do teste de software, comparando RESULTADOS ESPERADOS com os RESULTADOS REAIS.” Wikipédia
  • 8.
  • 9.
  • 10.  Projeto sem Testes Automatizados = Medo de Refatorar o Código e a Arquitetura = Código Imundo = Baixa Produtividade e Alta Taxa de retrabalho (BUGs) = Pessoas desmotivadas = Go Horse Process  Projeto com Testes Automatizados = Segurança ao Refatorar o Código e a Arquitetura = Código Limpo = Alta Produtividade e Baixa Taxa de retrabalho (BUGs) = Pessoas motivadas = $$$
  • 11.  “São os testes de unidade que mantêm seus códigos flexíveis, reutilizáveis e passíveis de manutenção.”  “Sem testes, cada modificação pode gerar um bug e você ficará relutante em fazer mudanças.”  “Quanto maior a cobertura dos seus testes menor o medo.”  “Ter uma coleção de testes de unidade automatizados que cubram o código de produção é o segredo para manter seu projeto e arquitetura os mais limpos possíveis.”  “Se não mantiver os testes limpos, irá perdê-los.”
  • 12.  Importância dos Testes Automatizados em Linguagens Dinâmicas X Importância dos Testes Automatizados em Linguagens Compiladas?
  • 13.  O teste é modelado conhecendo-se a estrutura interna do sistema  Aplicável somente quando se conhece o algoritmo  O calculo da Cobertura de Testes é totalmente baseada em princípios Caixa Branca  Teoricamente, cada caminho possível ao longo do código deve ser testado  Teste Estrutural
  • 14.  O teste é modelado sem o conhecimento da estrutura interna do sistema  Aplicável em todas as fases/tipos de Testes.  Se concentram e se baseiam na entrada e saída da unidade.  Teste Funcional
  • 15.  O primeiro tipo de teste que se deve fazer  Uma unidade pode ser entendida como o menor trecho de código de um sistema que pode ser testado. Normalmente um método.  Focado em um trecho específico do código, desta forma os erros encontrados são facilmente localizados, diminuindo o tempo gasto com depuração.  Exemplo da Engenharia aeronáutica
  • 16.
  • 17.
  • 18.  xUnit (API)  JUnit com EclEmma  Mock Objects?
  • 19.  Sucede o Teste de Unidade  Módulos são combinados e testados em grupo  Onde vários Mock Objects são removidos  Antecede o Testes de Aceitação, ou os testes onde o sistema está completamente integrado
  • 20.  Sistema completamente integrado  “Última ação de teste antes da implantação do software. A meta do teste de aceitação é verificar se o software está pronto e pode ser usado pelos usuários finais para executar as funções e as tarefas para as quais foi criado.” RUP  Testes caixa preta que são realizados através da interface de usuário, que pode ser, por exemplo, um console textual, uma interface de uma aplicação local ou uma interface Web  Validação do sistema do ponto de vista do Cliente, do negócio.
  • 21.  Selenium Server  o interpretador, é um server em java, um JARZÃO  Selenium IDE (FIREFOX)  grava e exporta testes para todos os clients  Selenium Client (Várias Linguagens: Java, PHP, Ruby, Python)  Não tem desculpas para não usar!
  • 22.
  • 23.  Fast – Quando os testes rodam devagar, você não desejará executá-los com frequência.  Idenpendent – Quando os testes dependem um dos outro, se o primeiro falhar causará um efeito dominó de falhas, dificultando o diagnóstico.  Repeatable – Caso os testes não p0ssam ser repetidos em qualquer ambiente, você sempre terá uma desculpa para não manter os testes VERDES.  Self-validating – Asserts TRUE ou FALSE, sempre! Evita comparações manuais.  Timely – Escrever os testes na hora certa, que é em 99% das vezes antes. Se criá-los depois, o teste de código de produção poderá fica mais difícil.
  • 24.  Atuar como especificação das funcionalidades  Atuar como repelente de bugs  Ajudar a achar defeitos no sistema em teste  Atuar como documentação executável  Atuar como rede de segurança para mudanças  Não fazer mal ao sistema em teste Referência: AgilCoop/USP
  • 26.  Reconhecimento que Desenvolvimento de software é uma tarefa complexa.  A automação dos testes dá segurança à equipe para fazer alterações no código, seja por manutenção, refatoração ou até mesmo para adição de novas funcionalidades.  No começo e por muito tempo vai doer fazer, vai ser difícil, é uma mudança de paradigma. Pratique!  Fazer testes automatizados está relacionado com ser ou não profissional!  Precisamos convencer nossos superiores que testes automatizados são importantes e que são eles que vão ganhar com isso!
  • 27.  Livro Código Limpo: Habilidades Práticas do Agile Software – Capítulo 9: Testes de Unidade  http://ccsl.ime.usp.br/agilcoop/files/AgilCoop-Verao08- Testes.pdf  http://ccsl.ime.usp.br/agilcoop/files/TestesAutomatizados-1-2- Introducao-AgilCoop-Verao2010.pdf  http://www.agilcoop.org.br/files/AgilCoop-Verao2010- TestesAutomatizados.pdf  https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCaix aEletronicoEconomico  https://github.com/thiagoghisi/DojoTuba/tree/master/dojoCalc uloDeNumerosRomanos  https://github.com/rodrigoy/beckanos-java  http://seleniumhq.org/
  • 28.  Contatos:  E-mail: thiago.ghisi@gmail.com  Twitter: @thiagoghisi  Blog: http://thiagoghisi.com  Linkedin: http://br.linkedin.com/in/thiagoghisi  DojoTuba/ForkInTuba: http://groups.google.com/group/dojotuba