... | ... | @@ -3,16 +3,25 @@ |
|
|
Testes Unitários
|
|
|
----------------
|
|
|
|
|
|
testes unitários são pequenas funcções que testam o retorno de outras funções. No caso, das funções que você escreve para analises de dados, e na realidade para qualquer função.
|
|
|
Testes unitários são pequenas funções que testam o retorno de outras funções. O objetivo é escrever vários desses pequenos testes para cada função usada em um sistema. Ao testar várias combinações de entrada se cria uma confiança de que a dita função funciona como planejado. Essas funções de teste não são apagadas depois de usadas e são feitas para serem gerenciadas por uma ferramenta (framework) de testes. Então qualquer pessoa pode executar o framework e testar todas as funções do projeto inteiro em segundos e vai saber na hora se o código que ela acabou de escrever quebrou alguma coisa no sistema. Fácil, automático, bem padronizado e com bons relatórios por parte do framework.
|
|
|
|
|
|
Leia as três páginas do django (listadas [aqui](https://docs.djangoproject.com/en/1.11/topics/testing/)) sobre como escrever e executar testes unitários no django.
|
|
|
Os frameworks para testes em geral são chamados "alguma coisa unit". Tem o [Junit] pra Java, o [PHPUnit] pra PHP e por ai vai. O framework mais usado pra Python é o [unittest] que funciona pra testar funções. E o Django extende um pouco o [unittest] colocando ferramentas pra testar por exemplo se um usuário que não fez login pode acessar a página de informações de um aluno (spoiler: não deve poder). Só ai já são 2 funçõezinhas de teste: se o usuário logado vai poder acessar; se o não logado vai ser corretamente encaminhado pra página de login. E isso vai ter que ser feito pra cada view do projeto.
|
|
|
|
|
|
Além de você rodar esses testes na sua máquina, eles também serão executados no gitlab.
|
|
|
Dependendo do resultado disso no projeto, iremos configurar o servidor para automaticamente colocar em produção commit's que passarem nesse teste.
|
|
|
|
|
|
[Junit]: https://junit.org/junit5/
|
|
|
[PHPUnit]: https://phpunit.de/
|
|
|
[unittest]: https://docs.python.org/3/library/unittest.html
|
|
|
|
|
|
|
|
|
|
|
|
Além de você rodar esses testes na sua máquina, eles também serão executados no gitlab (os pipelines). É isso que dá a confiança de que o novo código não quebrou o sistema e é a confiança necessária pra tornar possíveis metodologias como [continuous delivery] e [continuous integration].
|
|
|
Dependendo do resultado disso no projeto, iremos configurar o servidor para automaticamente colocar em produção commit's que passarem nesse teste ([continuous integration]).
|
|
|
|
|
|
Uma prática de desenvolvimento de software chamada [TDD](
|
|
|
http://tdd.caelum.com.br/) estimula desenvolvedores a escrever os testes para uma função antes mesmo de escrever a dita função. Isso da mais clareza à interface de chamada e retorno da função.
|
|
|
|
|
|
[continuous delivery]: https://en.wikipedia.org/wiki/Continuous_delivery
|
|
|
[continuous integration]: https://en.wikipedia.org/wiki/Continuous_integration
|
|
|
|
|
|
Cuidado para sempre ler a documentação da versão correta do django, a 1.11
|
|
|
|
... | ... | |