SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
jf Unit
Melhor prevenir
       do que remediar...
jf Unit
             Felipe Nascimento de Moura

                                Analista de sistemas, desenvolvedor PHP
                                Sênior e lider técnico pela Agiplan, Serviços
                                Financeiros
                                Criador ou mantenedor de diversos projetos
                                Open Source, além de plugins para jQuery e
                                addons para Firefox.




Email: felipenmoura@gmail.com
Twitter: felipenmoura
Website: felipenmoura.org
jf Unit
          Mas eu sempre testo meus códigos

               Por que preciso me preocupar em escrever testes?
jf Unit
  Ou você quer agir assim
             o resto da vida?
jf Unit
  Você pode achar que está seguro, que tudo está ok...




                 mas num belo dia ...
jf Unit
  É quando algo simplesmente absurdo acontece
jf Unit
    Algumas vezes, algo simples, um detalhe
jf Unit
Em outras vezes,
a coisa é crítica!




Uma falha tão épica que
bem poderia ser considerada
uma conquista!
jf Unit

Além das vezes em que investimos em uma melhoria
mas acabamos precisando voltar um passo por conta
de algo inesperado!
jf Unit
    Ok, estou preparado para
    começar a construir testes




O primeiro passo é encontrar as ferramentas certas
jf Unit
 Testes unitários
         Execução de testes em partes mínimas do sistema

         Normalmente executado pelo próprio desenvolvedor

         Facilmente automatizado para execução repetitiva
jf Unit
 Parâmetros e retorno
 Testes repetitivos para cada chamada
 Métricas e gráfico de falhas
jf Unit
 5 passos principais
 Set up
 Especificar o Input
 Chamar o metodo a ser testado
 Verificar o output
 Tear Down
jf Unit

 Versionador
   (SVN, GIT, etc)

 Ferramenta para automatização de testes
    (Junit,PHPUnit, jfUnit, SimpleTest, etc)

 Métricas e documentação
   (saber o que se espera dos testes)

 Histórico
    (sempre importante guardar o histórico dos testes)
jf Unit
  Let's code!


 Usaremos a jfUnit como
 biblioteca para testes


 Por isso, importaremos ela
 No header da página



  <script src='jfUnit.js'></script>
jf Unit
    Forma simples

jfUnit.assert( yourFunction,
               param1,
               param2,
               paramN...,
               expected);


    Ex.:
jfUnit.assert(soma, 10, 3, 13);
jf Unit
    Forma completa

jfUnit.assert({
   call:yourFunction,
   param1: value1,
   param2: value2,
   paramN: valueN,
   expected: 'expectedValue'
     callback: function(){},
     description: '',
     structureOnly: false,
     funcName: 'an alias to your function'
})
jf Unit
    Ex.:

jfUnit.assert({
   call:soma,
   primeiroValor: 10,
   SegundoValor: 3,
   expected: 13
     callback: function(){},
     description: 'Somando 10 com 3',
     structureOnly: false,
     funcName: 'an alias to your function'
})
jf Unit
  Outras possibilidades de teste:


 assert
 assertNot
 assertIn
 assertNotIn
 assertBetween
 assertNotBetween
 assertGT
 assertLt
 assertType
jf Unit
    assertIn

jfUnit.assertIn(function,
                Param1,
                Param2,
                ParamN...,
                Array());


    Ex.:
jfUnit.assertIn(soma, 10, 3, [12, 13, 14]);
jfUnit.assertNotIn(soma, 10, 3, [11, 12, 16]);
jf Unit
    assertBetween

jfUnit.assertBetween(function,
                Param1,
                Param2,
                ParamN...,
                Array(2));


    Ex.:
jfUnit.assertBetween(soma, 10, 3, [12, 14]);
jfUnit.assertNotBetween(soma, 10, 3, [9, 12]);
jf Unit
    assertGT

jfUnit.assertGT(function,
                Param1,
                Param2,
                ParamN...,
                ExpectedMenorQue);


    Ex.:
jfUnit.assertGT(soma, 10,   3, 10);
jf Unit
    assertLT

jfUnit.assertLT(function,
                Param1,
                Param2,
                ParamN...,
                ExpectedMaiorQue);


    Ex.:
jfUnit.assertLT(soma, 10,   3, 15);
jf Unit
    assertType

jfUnit.assertType(function,
                Param1,
                Param2,
                ParamN...,
                'type');


    Ex.:
jfUnit.assertType(soma, 10,3, 'integer');
jf Unit
  Structure Only

 var getPerson= function(){
      var o = {
              age:25,
              name: 'felipe',
              jump: function(height){
                return true;
              }
            }
      return o;
   };
jf Unit
  Structure Only

 jfUnit.assert({
      call:getPerson,
      structureOnly:true,
      Expected:{
                 age:0,
                 name:'foo',
                 jump:'string'
               }
   });
jf Unit



      On the Fly
jf Unit


     Perguntas?
jf Unit
             Felipe Nascimento de Moura

                                Analista de sistemas, desenvolvedor PHP
                                Sênior e lider técnico pela Agiplan, Serviços
                                Financeiros
                                Criador ou mantenedor de diversos projetos
                                Open Source, além de plugins para jQuery e
                                addons para Firefox.




Email: felipenmoura@gmail.com
Twitter: felipenmoura
Website: felipenmoura.org

Más contenido relacionado

La actualidad más candente

Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em PythonRober Guerra
 
TDD em C++
TDD em C++TDD em C++
TDD em C++thiagodp
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++thiagodp
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoRegis Magalhães
 
Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3guestd6da1cd
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao phpTiago Davi
 
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_javaMirlem Pereira
 
Exercicios sequenciais
Exercicios sequenciaisExercicios sequenciais
Exercicios sequenciaisMirlem Pereira
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
Algoritmo 01 - Semana 01
Algoritmo 01 - Semana 01Algoritmo 01 - Semana 01
Algoritmo 01 - Semana 01Eder Samaniego
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0César Augusto Pessôa
 

La actualidad más candente (20)

Iniciando em Python
Iniciando em PythonIniciando em Python
Iniciando em Python
 
Shell script i
Shell script iShell script i
Shell script i
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
Algoritmos Aula 11
Algoritmos Aula 11Algoritmos Aula 11
Algoritmos Aula 11
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
 
Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3Linguagens de Programação II - Aula 3
Linguagens de Programação II - Aula 3
 
Minicurso php
Minicurso phpMinicurso php
Minicurso php
 
Introdução ao php
Introdução ao phpIntrodução ao php
Introdução ao php
 
Funções em C
Funções em CFunções em C
Funções em C
 
Linguagem C 10 Arquivos
Linguagem C 10 ArquivosLinguagem C 10 Arquivos
Linguagem C 10 Arquivos
 
Resumo computação I
Resumo computação IResumo computação I
Resumo computação I
 
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
8a. aula -_estrutura_de_controle_de_repeticao_-_while_java
 
Exercicios sequenciais
Exercicios sequenciaisExercicios sequenciais
Exercicios sequenciais
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Algoritmo 01 - Semana 01
Algoritmo 01 - Semana 01Algoritmo 01 - Semana 01
Algoritmo 01 - Semana 01
 
Linguagem C 02 String
Linguagem C 02 StringLinguagem C 02 String
Linguagem C 02 String
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0
 

Destacado

Upstart: porque o ubuntu liga tão rápido - Amador Pahim
Upstart: porque o ubuntu liga tão rápido - Amador PahimUpstart: porque o ubuntu liga tão rápido - Amador Pahim
Upstart: porque o ubuntu liga tão rápido - Amador PahimTchelinux
 
36panc aguda-1216204871093551-8
36panc aguda-1216204871093551-836panc aguda-1216204871093551-8
36panc aguda-1216204871093551-8Mocte Salaiza
 
Bawankashi (2)(Marathi Language)
Bawankashi (2)(Marathi Language)Bawankashi (2)(Marathi Language)
Bawankashi (2)(Marathi Language)Dr.Keshav Sathaye
 
Ερωτόκριτος ΕΕ Α' Λυκείου
Ερωτόκριτος ΕΕ Α' ΛυκείουΕρωτόκριτος ΕΕ Α' Λυκείου
Ερωτόκριτος ΕΕ Α' ΛυκείουValedinos Dervisai
 
MINICEREBROS
MINICEREBROSMINICEREBROS
MINICEREBROStropeda
 

Destacado (7)

Upstart: porque o ubuntu liga tão rápido - Amador Pahim
Upstart: porque o ubuntu liga tão rápido - Amador PahimUpstart: porque o ubuntu liga tão rápido - Amador Pahim
Upstart: porque o ubuntu liga tão rápido - Amador Pahim
 
GESTÃO DA QUALIDADE
GESTÃO DA QUALIDADEGESTÃO DA QUALIDADE
GESTÃO DA QUALIDADE
 
36panc aguda-1216204871093551-8
36panc aguda-1216204871093551-836panc aguda-1216204871093551-8
36panc aguda-1216204871093551-8
 
Bawankashi (2)(Marathi Language)
Bawankashi (2)(Marathi Language)Bawankashi (2)(Marathi Language)
Bawankashi (2)(Marathi Language)
 
Ερωτόκριτος ΕΕ Α' Λυκείου
Ερωτόκριτος ΕΕ Α' ΛυκείουΕρωτόκριτος ΕΕ Α' Λυκείου
Ερωτόκριτος ΕΕ Α' Λυκείου
 
MINICEREBROS
MINICEREBROSMINICEREBROS
MINICEREBROS
 
Neumonia pediatria
Neumonia pediatriaNeumonia pediatria
Neumonia pediatria
 

Similar a Testes Unitários e fUnit - Felipe Nascimento

TDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação FuncionalTDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação Funcionaltdc-globalcode
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalEmanuel Gonçalves
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Polimorfismo
PolimorfismoPolimorfismo
PolimorfismoCaveiras
 
Androidconf 2011 lecheta
Androidconf 2011 lechetaAndroidconf 2011 lecheta
Androidconf 2011 lechetarlecheta
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Rafael Ponte
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPTSidney Souza
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015talkitbr
 

Similar a Testes Unitários e fUnit - Felipe Nascimento (11)

TDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação FuncionalTDC2016SP - Trilha Programação Funcional
TDC2016SP - Trilha Programação Funcional
 
Light Talk sobre JavaScript Funcional
Light Talk sobre JavaScript FuncionalLight Talk sobre JavaScript Funcional
Light Talk sobre JavaScript Funcional
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Tdc2010 web
Tdc2010 webTdc2010 web
Tdc2010 web
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Java14
Java14Java14
Java14
 
Androidconf 2011 lecheta
Androidconf 2011 lechetaAndroidconf 2011 lecheta
Androidconf 2011 lecheta
 
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
Importancia dos Testes Automatizados no dia a dia FIC-Estacio 2015
 
Testando Aplicações com PHPT
Testando Aplicações com PHPTTestando Aplicações com PHPT
Testando Aplicações com PHPT
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 

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
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. 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
 

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.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
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é?
 

Testes Unitários e fUnit - Felipe Nascimento

  • 1. jf Unit Melhor prevenir do que remediar...
  • 2. jf Unit Felipe Nascimento de Moura Analista de sistemas, desenvolvedor PHP Sênior e lider técnico pela Agiplan, Serviços Financeiros Criador ou mantenedor de diversos projetos Open Source, além de plugins para jQuery e addons para Firefox. Email: felipenmoura@gmail.com Twitter: felipenmoura Website: felipenmoura.org
  • 3. jf Unit Mas eu sempre testo meus códigos Por que preciso me preocupar em escrever testes?
  • 4. jf Unit Ou você quer agir assim o resto da vida?
  • 5. jf Unit Você pode achar que está seguro, que tudo está ok... mas num belo dia ...
  • 6. jf Unit É quando algo simplesmente absurdo acontece
  • 7. jf Unit Algumas vezes, algo simples, um detalhe
  • 8. jf Unit Em outras vezes, a coisa é crítica! Uma falha tão épica que bem poderia ser considerada uma conquista!
  • 9. jf Unit Além das vezes em que investimos em uma melhoria mas acabamos precisando voltar um passo por conta de algo inesperado!
  • 10. jf Unit Ok, estou preparado para começar a construir testes O primeiro passo é encontrar as ferramentas certas
  • 11. jf Unit Testes unitários Execução de testes em partes mínimas do sistema Normalmente executado pelo próprio desenvolvedor Facilmente automatizado para execução repetitiva
  • 12. jf Unit Parâmetros e retorno Testes repetitivos para cada chamada Métricas e gráfico de falhas
  • 13. jf Unit 5 passos principais Set up Especificar o Input Chamar o metodo a ser testado Verificar o output Tear Down
  • 14. jf Unit Versionador (SVN, GIT, etc) Ferramenta para automatização de testes (Junit,PHPUnit, jfUnit, SimpleTest, etc) Métricas e documentação (saber o que se espera dos testes) Histórico (sempre importante guardar o histórico dos testes)
  • 15. jf Unit Let's code! Usaremos a jfUnit como biblioteca para testes Por isso, importaremos ela No header da página <script src='jfUnit.js'></script>
  • 16. jf Unit Forma simples jfUnit.assert( yourFunction, param1, param2, paramN..., expected); Ex.: jfUnit.assert(soma, 10, 3, 13);
  • 17. jf Unit Forma completa jfUnit.assert({ call:yourFunction, param1: value1, param2: value2, paramN: valueN, expected: 'expectedValue' callback: function(){}, description: '', structureOnly: false, funcName: 'an alias to your function' })
  • 18. jf Unit Ex.: jfUnit.assert({ call:soma, primeiroValor: 10, SegundoValor: 3, expected: 13 callback: function(){}, description: 'Somando 10 com 3', structureOnly: false, funcName: 'an alias to your function' })
  • 19. jf Unit Outras possibilidades de teste: assert assertNot assertIn assertNotIn assertBetween assertNotBetween assertGT assertLt assertType
  • 20. jf Unit assertIn jfUnit.assertIn(function, Param1, Param2, ParamN..., Array()); Ex.: jfUnit.assertIn(soma, 10, 3, [12, 13, 14]); jfUnit.assertNotIn(soma, 10, 3, [11, 12, 16]);
  • 21. jf Unit assertBetween jfUnit.assertBetween(function, Param1, Param2, ParamN..., Array(2)); Ex.: jfUnit.assertBetween(soma, 10, 3, [12, 14]); jfUnit.assertNotBetween(soma, 10, 3, [9, 12]);
  • 22. jf Unit assertGT jfUnit.assertGT(function, Param1, Param2, ParamN..., ExpectedMenorQue); Ex.: jfUnit.assertGT(soma, 10, 3, 10);
  • 23. jf Unit assertLT jfUnit.assertLT(function, Param1, Param2, ParamN..., ExpectedMaiorQue); Ex.: jfUnit.assertLT(soma, 10, 3, 15);
  • 24. jf Unit assertType jfUnit.assertType(function, Param1, Param2, ParamN..., 'type'); Ex.: jfUnit.assertType(soma, 10,3, 'integer');
  • 25. jf Unit Structure Only var getPerson= function(){ var o = { age:25, name: 'felipe', jump: function(height){ return true; } } return o; };
  • 26. jf Unit Structure Only jfUnit.assert({ call:getPerson, structureOnly:true, Expected:{ age:0, name:'foo', jump:'string' } });
  • 27.
  • 28. jf Unit On the Fly
  • 29. jf Unit Perguntas?
  • 30. jf Unit Felipe Nascimento de Moura Analista de sistemas, desenvolvedor PHP Sênior e lider técnico pela Agiplan, Serviços Financeiros Criador ou mantenedor de diversos projetos Open Source, além de plugins para jQuery e addons para Firefox. Email: felipenmoura@gmail.com Twitter: felipenmoura Website: felipenmoura.org