Descrição geral
O livro de Vladimir Khorikov "Princípios de Testes Unitários" é dedicado a uma abordagem sistemática e ponderada dos testes automatizados de código. O autor examina os testes unitários não como um conjunto de ferramentas ou frameworks, mas como uma disciplina de engenharia intimamente ligada à arquitetura da aplicação, à qualidade do código e à capacidade de manutenção do sistema a longo prazo.
O livro analisa detalhadamente os princípios fundamentais dos bons testes: isolamento, fiabilidade, legibilidade e o seu valor para o projeto. É dada especial atenção à distinção entre testes unitários e de integração, bem como a onde se traça a linha entre eles na prática. O autor explica sistematicamente porque é que o desejo de testar "tudo o que mexe" muitas vezes leva a testes frágeis e inúteis.
Uma parte significativa do livro é dedicada aos aspetos arquiteturais dos testes. Mostra como a estrutura do código, as dependências e o estilo de design impactam diretamente a complexidade de escrever e manter os testes. São examinadas várias abordagens para o isolamento de dependências, tipos de test doubles e as suas áreas de aplicação.
O livro também analisa métricas de teste, como a cobertura de código, e explica porque é que elevadas percentagens de cobertura por si só não garantem qualidade. O autor foca-se na refatoração de testes, em mantê-los atualizados e em prevenir a degradação da base de testes ao longo do tempo.
O livro é dirigido a programadores que desejam aprofundar a sua compreensão do papel dos testes no processo de desenvolvimento e aprender a escrever testes que realmente beneficiem o projeto, em vez de criarem uma carga adicional.
Opinião
Um bom livro sobre testes de código. Além dos testes unitários, também presta muita atenção aos testes de integração. São analisadas em detalhe as escolas de testes de Londres e a clássica. É explicada a diferença entre cobertura de código e cobertura de branches, são descritos os requisitos que os testes devem cumprir, que tipos de test doubles existem e como os mocks diferem dos stubs, os diferentes estilos de testes unitários, como refatorar testes corretamente, como a arquitetura do projeto afeta os testes, e muito mais. Portanto, se pensas que sabes bem sobre testes, tenho a certeza de que encontrarás muitas coisas interessantes neste livro.