Testes Unitários e fUnit - Felipe Nascimento

Preview:

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

jf UnitMelhor prevenir

do que remediar...

jf Unit

Email: felipenmoura@gmail.comTwitter: 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

jfMas eu sempre testo meus códigos

Por que preciso me preocupar em escrever testes?

Unit

jfOu você quer agir assim o resto da vida?

Unit

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

mas num belo dia ...

Unit

jfÉ quando algo simplesmente absurdo acontece

Unit

jfAlgumas vezes, algo simples, um detalhe

Unit

jf

Em outras vezes,a coisa é crítica!

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

Unit

jf

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

Unit

jfOk, estou preparado para começar a construir testes

O primeiro passo é encontrar as ferramentas certas

Unit

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

jf

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

Unit

jf

5 passos principais

Unit

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

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

jfLet's code!

Usaremos a jfUnit comobiblioteca para testes

Por isso, importaremos elaNo header da página

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

Unit

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

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

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

jf

assertassertNotassertInassertNotInassertBetweenassertNotBetweenassertGTassertLtassertType

Outras possibilidades de teste:

Unit

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

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

jf

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

Ex.:

assertGT

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

Unit

jf Unit

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

Ex.:

assertLT

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

jf Unit

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

Ex.:

assertType

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

jf UnitStructure Only

var getPerson= function(){var o = {

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

return true;}

}return o;

};

jf UnitStructure Only

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

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

}});

jf Unit

On the Fly

jf Unit

Perguntas?

jf Unit

Email: felipenmoura@gmail.comTwitter: 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

Recommended