30
jf Unit Melhor prevenir do que remediar...

Testes Unitários e fUnit - Felipe Nascimento

Embed Size (px)

DESCRIPTION

Palestrante: Felipe Nascimento de Moura – Porto Alegre/ RS Currículo: Analista de Sistemas e lider técnico em desenvolvimento web pelo grupo Agiplan, também ministra aulas de javascript, jquery e PHP e é o criador ou idealizador de diversos projetos open source como theWebMind, print_j, fUnit, foxTales, chessMate, entre outros addons para firefox e plugins para jQuery, além de também participar de projetos como a botaoteca.com.br. Atualmente graduando pelo Senac/RS onde prepara como Tese, a nova versão do core para o theWebMind, Mind3rd. É formado técnico em informática e tem especializações em gerência de projetos e ajax. Resumo: Abordagem sobre a utilidade dos testes unitários no desenvolvimento e como isto pode afetar sua produtividade. A palestra será focada no fUnit, biblioteca para testes unitários usando Javascript Proposta: Esta palestra mostrará a utilidade do uso de técnicas para testes unitários e focará bastante no javascript exibindo diversos exemplos e explicações sobre a biblioteca fUnit.

Citation preview

Page 1: Testes Unitários e fUnit -  Felipe Nascimento

jf UnitMelhor prevenir

do que remediar...

Page 2: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

Email: [email protected]: felipenmouraWebsite: felipenmoura.org

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

Felipe Nascimento de Moura

Page 3: Testes Unitários e fUnit -  Felipe Nascimento

jfMas eu sempre testo meus códigos

Por que preciso me preocupar em escrever testes?

Unit

Page 4: Testes Unitários e fUnit -  Felipe Nascimento

jfOu você quer agir assim o resto da vida?

Unit

Page 5: Testes Unitários e fUnit -  Felipe Nascimento

jfVocê pode achar que está seguro, que tudo está ok...

mas num belo dia ...

Unit

Page 6: Testes Unitários e fUnit -  Felipe Nascimento

jfÉ quando algo simplesmente absurdo acontece

Unit

Page 7: Testes Unitários e fUnit -  Felipe Nascimento

jfAlgumas vezes, algo simples, um detalhe

Unit

Page 8: Testes Unitários e fUnit -  Felipe Nascimento

jf

Em outras vezes,a coisa é crítica!

Uma falha tão épica quebem poderia ser consideradauma conquista!

Unit

Page 9: Testes Unitários e fUnit -  Felipe Nascimento

jf

Além das vezes em que investimos em uma melhoriamas acabamos precisando voltar um passo por contade algo inesperado!

Unit

Page 10: Testes Unitários e fUnit -  Felipe Nascimento

jfOk, estou preparado para começar a construir testes

O primeiro passo é encontrar as ferramentas certas

Unit

Page 11: Testes Unitários e fUnit -  Felipe Nascimento

jf UnitTestes unitários

Execução de testes em partes mínimas do sistema

Normalmente executado pelo próprio desenvolvedor

Facilmente automatizado para execução repetitiva

Page 12: Testes Unitários e fUnit -  Felipe Nascimento

jf

Parâmetros e retornoTestes repetitivos para cada chamadaMétricas e gráfico de falhas

Unit

Page 13: Testes Unitários e fUnit -  Felipe Nascimento

jf

5 passos principais

Unit

Set upEspecificar o InputChamar o metodo a ser testadoVerificar o outputTear Down

Page 14: Testes Unitários e fUnit -  Felipe Nascimento

jf

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)

Unit

Page 15: Testes Unitários e fUnit -  Felipe Nascimento

jfLet's code!

Usaremos a jfUnit comobiblioteca para testes

Por isso, importaremos elaNo header da página

<script src='jfUnit.js'></script>

Unit

Page 16: Testes Unitários e fUnit -  Felipe Nascimento

jf

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

Forma simples

jfUnit.assert(soma, 10, 3, 13);

Ex.:

jfUnit.assert(soma, 10, 3, 13);jfUnit.assert(soma, 10, 3, 13);

Unit

Page 17: Testes Unitários e fUnit -  Felipe Nascimento

jf

jfUnit.assert({call:yourFunction,param1: value1,param2: value2,paramN: valueN,expected: 'expectedValue'

callback: function(){},description: '',structureOnly: false,funcName: 'an alias to your function'

})

Forma completa

Unit

Page 18: Testes Unitários e fUnit -  Felipe Nascimento

jf

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'

})

Ex.:

Unit

Page 19: Testes Unitários e fUnit -  Felipe Nascimento

jf

assertassertNotassertInassertNotInassertBetweenassertNotBetweenassertGTassertLtassertType

Outras possibilidades de teste:

Unit

Page 20: Testes Unitários e fUnit -  Felipe Nascimento

jf

jfUnit.assertIn(soma, 10, 3, [12, 13, 14]);jfUnit.assertNotIn(soma, 10, 3, [11, 12, 16]);

Ex.:

assertIn

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

Unit

Page 21: Testes Unitários e fUnit -  Felipe Nascimento

jf

jfUnit.assertBetween(soma, 10, 3, [12, 14]);jfUnit.assertNotBetween(soma, 10, 3, [9, 12]);

Ex.:

assertBetween

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

Unit

Page 22: Testes Unitários e fUnit -  Felipe Nascimento

jf

jfUnit.assertGT(soma, 10, 3, 10);

Ex.:

assertGT

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

Unit

Page 23: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

jfUnit.assertLT(soma, 10, 3, 15);

Ex.:

assertLT

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

Page 24: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

jfUnit.assertType(soma, 10,3, 'integer');

Ex.:

assertType

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

Page 25: Testes Unitários e fUnit -  Felipe Nascimento

jf UnitStructure Only

var getPerson= function(){var o = {

age:25,name: 'felipe',jump: function(height){

return true;}

}return o;

};

Page 26: Testes Unitários e fUnit -  Felipe Nascimento

jf UnitStructure Only

jfUnit.assert({call:getPerson,structureOnly:true,Expected:{

age:0, name:'foo', jump:'string'

}});

Page 27: Testes Unitários e fUnit -  Felipe Nascimento
Page 28: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

On the Fly

Page 29: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

Perguntas?

Page 30: Testes Unitários e fUnit -  Felipe Nascimento

jf Unit

Email: [email protected]: felipenmouraWebsite: felipenmoura.org

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

Felipe Nascimento de Moura