Testes Unitários e fUnit - Felipe Nascimento
-
Upload
tchelinux-slides -
Category
Technology
-
view
1.399 -
download
0
description
Transcript of Testes Unitários e fUnit - Felipe Nascimento
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