Download - Testes Unitários e fUnit - Felipe Nascimento
![Page 1: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/1.jpg)
jf UnitMelhor prevenir
do que remediar...
![Page 2: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/4.jpg)
jfOu você quer agir assim o resto da vida?
Unit
![Page 5: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/5.jpg)
jfVocê pode achar que está seguro, que tudo está ok...
mas num belo dia ...
Unit
![Page 6: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/6.jpg)
jfÉ quando algo simplesmente absurdo acontece
Unit
![Page 7: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/7.jpg)
jfAlgumas vezes, algo simples, um detalhe
Unit
![Page 8: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/19.jpg)
jf
assertassertNotassertInassertNotInassertBetweenassertNotBetweenassertGTassertLtassertType
Outras possibilidades de teste:
Unit
![Page 20: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/27.jpg)
![Page 28: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/28.jpg)
jf Unit
On the Fly
![Page 29: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/29.jpg)
jf Unit
Perguntas?
![Page 30: Testes Unitários e fUnit - Felipe Nascimento](https://reader033.vdocuments.net/reader033/viewer/2022051013/5483057fb4af9f730d8b493e/html5/thumbnails/30.jpg)
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