Yan Magalhães
Front End Developer at Ingresso Rápido
Uma introdução a testes unitários e TDD
Study: Buggy software costs users, vendors nearly $60B annually
São testes que visam certificar o funcionamento de cada pequena parte do nosso sistema (classes), de forma isolada.
São os testes responsáveis por garantir o funcionamento da integração entre partes do sistema. Utilizamos classes do sistema que se comunicam, e a testamos de uma única forma, garantindo assim o funcionamento entre elas.
São os testes que garantem o funcionamento do sistema, verificando as funcionalidades implantadas e garantindo que o software realmente está fazendo o que fato era esperado.
É o teste que garante o funcionamento do sistema, como um todo.
Queremos adicionar produtos em um carrinho de compras, e depois descobrir qual é o produto de maior e menor valor.
Criado por Kent Beck, o Test Driven Development é uma técnica de desenvolvimento de software, onde primeiro escrevemos o nosso teste e a partir daí, fazemos a implementação.
Iremos receber uma string que representa os números romanos, e em seguida, retornar o seu valor em decimal.
O tão famoso "passinhos de bebê" nos ajuda a entender melhor o contexto do problema. Sendo assim, buscamos fazer o teste passar, da forma mais simples possível.
Permitem simular instâncias de uma classe, permitindo realizar ações nestas classes.
Artigo acadêmico de David Janzen, mostrando que uma equipe de desenvolvimento que utiliza TDD gasta menos tempo debugando, e a complexidade do código produzido era menor.
http://src.acm.org/subpages/gf_entries_06/DavidJanzen_src_gf06.pdf
Artigo acadêmico de Nagappan, mostrando um estudo de caso da Microsoft e da IBM. Este estudo mostrou que em 4 produtos, o número de erros caiu entre 40 a 90%, em comparação com os mesmos produtos, que não utilizavam TDD.
http://dl.acm.org/citation.cfm?id=1159787
/YanMagale
/@yanmagale
/yaanmagale
/yaanmagalhaes
/+YanMagalhaes
By Yan Magalhães
Palestra sobre Testes Unitários e TDD, apresentada no 2º PHP MG Talks, 27/02/2016