O documento discute testes de software, incluindo:
1) Testes devem ser realizados em todos os sistemas para detectar problemas
2) Benefícios dos testes incluem garantir que sistemas funcionam corretamente e melhorar qualidade
3) Deve-se testar tudo, como telas, validações e regras de negócio, para evitar erros futuros
2. O que é Teste de Software ?
Processo de verificação do software onde a principal
finalidade é detectar problemas
• Os testes devem ser realizados em todos os
sistemas, independente da
plataforma, ambiente, tecnologia ou linguagem de
programação
3. Benefícios do Teste de Software
• Garantir que o sistema funciona
• Garantir que está fazendo tudo que deveria fazer
• Detectar problemas
• Melhorar performance
• Melhorar qualidade do código
• Melhorar a usabilidade do sistema
Testes fazem parte do ciclo do desenvolvimento de software
6. O que Testar ?
TUDO… independente da
(complexidade, quantidade de linhas ou cenário)
• Telas
• Camadas
• Validações e Consistências
• Regras de Negócio
• Arquivos, Banco de Dados (Abertura, Pedido, Resposta)
O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
7. Modelos de Teste
• Manual
Uma pessoa vai testar o software
Conferência do Código (Pessoa Técnica)
Depuração (BreakPoints)
Evidência (PrintScreen)
• Automático
Um programa de computador vai testar o software
Código que Testa Código (Robo de Testes)
Próprio Desenvolvedor pode criar o Robo
Testes Manuais são demorados (Conferência do Código) e mais
caros R$ R$ (Precisa de uma Pessoa Técnica pra Conferir)
Existem muitas empresas que AINDA utilizam testes Manuais
8. Ferramentas de Teste
Existem frameworks de teste que nos ajudam a testar
os nossos sistemas de forma automatizada
• INTERFACE VISUAL - SELENIUM, WATIN
• CÓDIGO - NUNIT
VISUAL STUDIO UNIT TEST FRAMEWORK
9. Visual Studio Unit Test Framework
• Framework de testes da Microsoft
• Disponível desde o Visual Studio 2005
• Os testes criados rodam de 2 formas
• Gráfica (IDE Visual Studio)
• Código (MSTest.exe)
• Atributos que decoram as classes e métodos
• Definido no assembly
Microsoft.VisualStudio.QualityTools.UnitTestFramework
10. Resumo e apelidos carinhosos
TEST SUITE SYSTEM UNDER TEST
SUT
PROJETO
DE SISTEMA
TESTE
11. Demonstração
1 Visualizando os 3 Modelos de Projetos de Teste (Coded, Web and Load, Unit)
2 Criando um Projeto de Teste (Unit Test)
3 Visualizando a Referência e Namespace do Projeto
4 Conhecendo a Classe de Teste UNITTEST1
5 Conhecendo o Método de Teste TESTMETHOD1
6 Conhecendo a Janela Test Explorer
12. ABC dos Testes
1. Analise o SUT e verifique quais unidades você quer testar
2. No TEST SUITE crie classes e métodos de teste
3. Execute os testes até que todos fiquem VERDES
OBS: Caso o teste fique vermelho (FALHOU) foi retornada
alguma informação que você não estava esperando,
modificar o código ATÉ QUE O TESTE FIQUE VERDE
DE QUANTO EM QUANTO TEMPO IREMOS EXECUTAR A
SUITE DE TESTES ????
Sempre que algum desenvolvedor alterar o SUT !!!
13. Demonstração
1 Conhecendo a Classe Assert (AreEqual, AreNotEqual……..)
2 Criando um Método para Testar o Nome, Email e Idade
3 Fazer os Testes Falharem (VERMELHO)
4 Fazer os Testes Falharem (VERMELHO) COM MENSAGEM DESCRITIVA
5 Fazer os Testes Passarem (VERDE)
6 Fazer um Teste ficar Inconclusivo (INCONCLUSIVE)
7 Fazer um Teste Falhar de Propósito (FAIL)
14. Divisão do Teste
Todo teste é dividido em 3 etapas
• Arrange - Preparação do Teste
• Instância as classe que vai usar no teste
• Prepara a massa de dados
• Act - Unidade que vai ser Testada
• Execução das funcionalidades do SUT
• Assert - Verificação de Resultados
• Conferência de resultados (se o que foi retornado do SUT era o
que você estava esperando que retornasse)
15. Demonstração
1 Criando um Componente Matemático
2 Criando as Classes (Calculadora e Numeros)
3 Calculadora=> Codificando as Operações Aritméticas Básicas
4 Numeros=> Codificando as Operações Matemáticas
5 Visualizando os 3 Modelos de Projetos de Teste (Coded, Unit, Web and Load)
6 Criando um Projeto de Teste (Unit Test)
7 Criando Métodos de Teste para Testar as Operações Aritméticas
8 Criando a Classe de Teste NumerosTST
9 Criando Métodos de Teste para Testar as Operações Matemáticas
16. Triangulação
Técnica de gerar vários testes para testar o mesmo
comportamento de uma classe
• Redundante… e isso é muito bom !!!
• Testar ao máximo todas as possibilidades de entrada
Quanto MAIS você Triangular MELHOR !!!
17. Exemplo de Triangulação
[TestMethod]
public void TESTAR_SOMA()
{
Calculadora classe = new Calculadora();
Int32 resultado = classe.Somar(1, 1);
Assert.AreEqual(2, resultado, "O resultado deveria ser 2");
}
[TestMethod]
public void TESTAR_SOMA_NUMEROS_ALTOS()
{
Calculadora classe = new Calculadora();
Int32 resultado = classe.Somar(3000, 9000);
Assert.AreEqual(12000, resultado, "O resultado deveria ser 12000");
}
[TestMethod]
public void TESTAR_SOMA_NUMEROS_NEGATIVOS()
{
Calculadora classe = new Calculadora();
Int32 resultado = classe.Somar(-250, 500);
Assert.AreEqual(250, resultado, "O resultado deveria ser 250");
}
18. Demonstração
1 Triangulando as Operações Aritméticas
2 Triangulando as Operações Matemáticas
19. Cobertura de Código (Code Coverage)
Técnica que identifica quais linhas de código
NÃO FORAM TESTADAS
• Mostra para o desenvolvedor o que falta testar no SUT
• As linhas de código que não estiverem cobertas por
testes, ficarão na cor VERMELHA, a idéia é testar tudo, o
correto seria que todas as linhas ficassem na cor VERDE
O que você NÃO testar PODERÁ ocasionar um erro no FUTURO
20. Demonstração
Alterando as Operações Aritméticas para Retornar ZERO, caso algum
1 Parâmetro de Entrada seja Igual a ZERO
2 Aplicando a Cobertura de Código nos Testes Aritméticos
21. Laboratório
Codificar o projeto de clientes e colocar em prática
tudo que você aprendeu até agora…
1. Crie um projeto utilizando Repository e DTO
2. Simule os registros com NBUILDER
3. Crie o projeto de teste
4. Crie as classes e métodos de teste
5. Faça as triangulações
6. Aplique a cobertura de código
OS MÉTODOS DA SUITE DE TESTE DEVEM FICAR VERDES