3. O que são?
É uma forma de realização de testes de software, que
permite verificar e validar e correto funcionamento de
uma unidade de código desenvolvido
4. Vantagens
•Validar se o código desenvolvido implementa o
comportamento esperado
•Mudança de código com confiança
•Evitar regressões
•Uma forma de documentação
•Menos BUGS
5. Desvantagens
•Tempo adicional de desenvolvimento
•Tentação de alterações ao código não pretendidas mas
apenas para o tornar testável
6. Checklist
•Validar resultados
•Boundary Conditions (Ex: Formato de data errada, valores em falta
ou fora do intervalo, duplicados….)
•Verificar a relação inversa (Ex: raizQuadrada(a)² = a)
•Verificação cruzada (Ex: raizQuadrada(a) = Math. sqrt(a))
•Forçar condições de erro e verificar retorno
•Performance
9. Definição
•Framework simples open-source para escrita de testes
unitários automatizados para Java
•TDD aplicável, isto é, desenvolvimento conduzido pelos testes
•Integração com ferramentas de build (ex: Ant, Maven)
•Baseado essencialmente em anotações
10. Anotações
•@Test – método de teste
O atributo “timeout” permite estabelecer o tempo máximo em
que o teste deve ser executado
O atributo “expected” permite validar o levantamento de
determinada excepção
•@Ignore – método de teste ignorado
•@BeforeClass – método executado antes dos demais
métodos da classe de teste
•@AfterClass – método executado após os demais métodos da
classe de teste
•@Before – método executado antes de cada caso de teste
•@After – método executado após cada caso de teste
17. Mocks
•Nem sempre é fácil criar testes unitários porque
frequentemente existem dependências que não podemos ou
devemos testar unitariamente
•Mock objects são objetos que simulam o comportamento de
outros objetos de forma controlada.
•O desenvovlimento em camadas, recorrendo ao uso de
interfaces é fundamental para a utilização de mocks
•Um exemplo típico será a existência de um mock simulando a
camada de acesso a dados (BDD), permitindo testes unitários
isolados
18. Definição
•Existem frameworks que permitem a manipulação/integração
de mocks com JUnit, como por exemplo mockito
•Facilita a criação de objetos mock de forma a que os testes
fiquem simples e legíveis
Essencialmente:
•O retorno de determinada chamada pode ser redefinido de
teste para teste
•A verificação de chamadas, isto é, o número de vezes que um
método é invocado, bem como quais os parametros de
entrada esperados, é algo programável de forma intuitiva
19. Modo de utilização
1) Inicialização do mock
2) Descrição do comportamento esperado
3) Invocação do método que se pretende testar
4) Verificação/Confirmação da invocação ao método, bem como dos
parâmetros de entrada