Definições
Teste de Unidade: é o teste usado para testar unidades do código. O teste de unidade consiste em verificar o comportamento das menores unidades numa aplicação.
Os testes de unidade garantem que cada parte funcione correctamente e cumpra com os requisitos do software. Sem a criação de testes os desenvolvedores correm o risco de encontrar erros muito tarde, principalmente quando o software entra em produção, aumentando os custos da manutenção.
Unidades: podem ser métodos, funções, classes, structs, módulos, pacotes e funcionalidades.
Elementos principais de um teste
- Pré-condições: condição que deve testada durante a execução do teste;
- Pós-condição: condição que deve ser atendida para a execução bem-sucedida do teste;
- Etapas do teste: ordem das instruções para a execução do teste;
- Resultado esperado: resultado que se pretende alcançar na execução do teste;
- Resultado real: resultado obtido após a execução do teste;
- Estado: estado obtido após a execução de um teste. Pode ser aprovado ou reprovado.
Biliotecas e Frameworks
- Java: JUnit, JBehave, Serenity, Spock, etc;
- C#: NUnit, XUnit, Moq, OpenCover, AutoFixture;
- Javascript: Jasmine, Karma;
- Python: Unittest, PyTest;
- PHP: PHPUnit,
- Go: go testing;
- Elixir: ExUnit.
Benefícios dos Testes de Unidade
- Identificação dos erros de software com antecedência;
- Mudanças são possíveis sem refletir em outros módulos;
- Simplificação da integração do código;
- Simplifica o design e a documentação;
- Reduz a taxa de erros e o consumo de tempo;
- Reduz os custos de implementação;
- Facilidade na refactoração do código e melhoria do código;
- Fornece a documentação “viva” do software.
Exemplo
Criação de testes para uma biblioteca de manipulação de ficheiros. A biblioteca está dividida em 3 partes: Manipulação de ficheiros (criação, remoção e escrita), Compressão de ficheiros e Informação dos ficheiros.
- Nome da biblioteca: FileManager
- Linguagem: Go
- Ferramenta de teste: go testing