testes unitários e funit - felipe nascimento
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.TRANSCRIPT
jf UnitMelhor prevenir
do que remediar...
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
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: [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