Buscar

[07] QuaSftw Testes Unitários e Integração

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Rafael Targino
rtargino@unicarioca.edu.br
@rafatargino
QUALIDADE DE SOFTWARE
Unidade III - Testes Unitários e de Integração
2
Fases do Teste
• Teste de Unidade
• Teste de Integração
• Teste de Sistema
• Teste de Aceitação
Fases do Teste
• Inicialmente, os testes focalizam cada componente 
do produto individualmente, garantindo que ele 
funciona como unidade.
Testes de Unidade
3
Fases do Teste
• Em seguida, componentes são montados ou 
integrados para formar o pacote de software 
completo.
Testes de Integração
Fases do Teste
• O Software, uma vez integrado, deve ser combinado 
com outros elementos do sistema (Hardware, BD, 
Equipe, etc.), ou seja, o sistema.
Testes de Sistema
4
Fases do Teste
• Depois dos testes de sistema, testes de alto nível. 
• Critérios de validação devem ser avaliados. 
• Estes testes garantem que o produto satisfaz os 
requisitos estabelecidos.
Testes de Validação
Princípios dos testes
• Evite testar seus próprios programas, a menos que seja com 
auxílio de uma ferramenta
• Determine se o SW faz o que é esperado, mas também se não 
faz algo indesejável
• Nunca planeje testes assumindo que falhas não serão 
encontradas
• A probabilidade de detectar falhas em uma parte do SW é 
proporcional ao nº de falhas já detectadas.
• Um teste bem sucedido é aquele que revela um erro ainda não
descoberto
• A atividade de testes não pode mostrar a ausência de bugs. Ela
só pode mostrar se defeitos de software estão presentes
5
Fases do Teste
• Teste de Unidade
• Teste de Integração
• Teste de Sistema
• Teste de Aceitação
Quando começam os testes?
• As atividades de testes devem ser integradas às 
atividades de desenvolvimento.
• As atividades de teste devem ser iniciadas cedo.
• Procedimentos de teste podem ser descritos desde a 
fase de especificação.
6
Quando começam os testes?
• Conduzir revisões técnicas formais antes da realização de 
testes de software
• “Não se pode testar a qualidade de um software se ela 
não estiver lá antes de começar os testes” (Pressman)
• Testes começam ao nível do componente e prosseguem 
“para fora”, em direção à integração do todo o sistema.
Modelo em V
7
Métodos Ágeis: TDD
• Test Driven Development
– Modelo de Desenvolvimento Orientado a Testes
• É uma das principais técnicas associadas a métodos ágeis de desenvolvimento
• A idéia é que os testes sejam desenvolvidos antes do código
• O passos para usar TDD são:
– Escreve um caso de teste e executa um caso de teste
– Falhando, implementa o código para passar no teste
– Passando, continua o desenvolvimento e escreve um novo caso de testes
• TODA a fase de implementação de um método ágil pode ser feita com TDD
Teste de Unidades
• Visam exercitar detalhadamente uma unidade do 
sistema:
– módulo ou função; classe ou pequenos “clusters”
• Principais aspectos a serem considerados :
– Estruturas de dados: verificar integridade dos dados 
armazenados.
– Condições de limite: verificar se a unidade opera 
adequadamente nos limites estabelecidos (ex: enésima posição 
de um vetor, etc.).
– Tratamento de erros: todos os caminhos de manipulação de 
erros são testados.
8
Organização das Classes de Testes Unitários
Dinâmica de Como Fazer o Teste Unitário
• Durante o Desenvolvimento
– Primeiro projetar e escrever as classes de testes
– Depois, desenvolver as classes com regra de negócios
– A principal regra para saber o que testar é: “Tenha criatividade 
para imaginar as possibilidades de testes”.
– Comece pelas mais simples e deixe os testes “complexos“ para o 
final.
– Use apenas dados suficientes (não teste 10 condições se três 
forem suficientes)
• Diariamente 
– É SUGERIDO que seja rodado os testes várias vezes ao dia (é fácil 
corrigir pequenos problemas do que corrigir um “problemão” 
somente no final do projeto).
– Achou um bug? Não conserte sem antes escrever um teste que o 
pegue. Se você não o fizer, ele volta!
9
Ache as Possibilidades de Teste nesta Classe
Drivers e Stubs
• Necessários quando se testam unidades isoladamente. 
Podem ser:
– Driver (pseudo controlador): chama a unidade em teste
– Stub (pseudo controlado): substitui uma unidade que é chamada 
pelo unidade em teste.
10
Drivers e Stubs
• Devem ser mais simples e mais rápidos de 
desenvolver do que as unidades substituídas
– Custam recursos do projeto ($$$)
• Grau de facilidade ou dificuldade de construí-los 
depende da qualidade do projeto:
– Acoplamento 
– Coesão 
Exemplo de Stub
11
Exemplo de Driver
JUnit – O que é? 
• Um framework que facilita o desenvolvimento e 
execução de testes de unidade em código Java 
• Fornece Uma API para construir os testes e Aplicações 
para executar testes
1. Defina uma lista de tarefas a implementar( o que testar)
2. Escreva uma classe (test case) e implemente um método de 
teste para uma tarefa da lista.
3. Rode o JUnit e certifique-se que o teste falha
4. Implemente o código mais simples que rode o teste
5. Refatore o código para remover a duplicação de dados
6. Caso necessário, escreva mais um teste ou refine o 
existente
7. Faça esses passos para toda a lista de tarefas.
12
Ferramentas de Testes
• Automatização de Testes Unitários - JUnit
JUnit – Como implementar 
1. Crie uma classe que estenda junit.framework.TestCase para 
cada classe a ser testada 
import junit.framework.*; 
class SuaClasseTest extends TestCase
{... 
} 
2. Para cada método a ser testado defina um método public
void test???() no test case 
SuaClasse: 
public int Soma(Object o ...) 
{ ... 
} 
SuaClasseTest: 
public void testSoma()
13
1. Criando a Classe de Teste
2. Criando a Classe (de Negócio) que será Testada
14
Rodando o Teste no Modo Gráfico
Resultado de Sucesso
15
Resultado de Falha
Outros Exemplos de Testes
Métodos NomeValido e MultiplicaValores
16
Outros Exemplos de Testes
Métodos NomeValido e MultiplicaValores
JUnit - Outros Métodos de Testes
• assertEquals( )
– Testa igualdade entre dois objetos(esperado x retornado) 
• assertFalse( ) 
– Testa Retorno booleano FALSO 
• assertTrue( ) 
– Testa Retorno booleano VERDADEIRO 
• assertNotNull( ) 
– Testa se um valor de um objeto NÃO está NULO 
• assertNull( ) 
– Testa se um valor de um objeto está NULO
17
Fases do Teste
• Teste de Unidade
• Teste de Integração
• Teste de Sistema
• Teste de Aceitação
Teste de Integração
• O objetivo é encontrar falhas quando pedaços de código são 
integrados
– Falhas de interface
• Podem ser aplicados de acordo com quatro estratégias:
– Bottom-Up
– Top-Down
– Mista
– Colaborações
• Estratégias diferentes são necessárias para que os testes possam 
ocorrer sem a necessidade de TODOS os módulos finalizados.
18
Falhas na Integração
• Porque ocorrem falhas de integração?
– Interfaces incorretas
– Falta, sobreposição ou conflito de funcionalidades
– Violação da integridade de arquivos e estruturas de dados 
globais
– Sequencia incorreta de unidades integradas
– Tratamento de erros (exceções) incorreto
– Problema de configuração / versões
– Falta de recursos para atender a demanda das unidades (stubs e 
drivers)
– Objeto incorreto é associado a mensagem (polimorfismo)
Abordagens para Integração
• Não incremental (“big-bang”):
– Todas as unidades são integradas de uma só vez
– Esforço de preparação menor
– Esforço para diagnóstico e correção de falhas é maior
• Incremental
– As unidades são integradas gradualmente
• Descendente (“top-down”)
• Ascendente (“bottom-up”)
• Mista
• Colaborações
19
Integração Top-down
• Começa com a unidade principale vai aos poucos 
integrando as unidades subordinadas
• Em OO: classes de controle primeiro
• Utiliza stubs em lugar das unidades subordinadas
Integração Bottom-up 
• Começa a integração pelas 
unidades subordinadas
• Em OO: começar pelas classes 
independentes ou que usam 
poucas servidoras
• Utiliza drivers em lugar das 
unidades de controle
• Algoritmos de mais baixo nível 
são testados antes de serem 
integrados ao resto do sistema
20
Integração por Colaborações
• Identifica colaborações: grupos de unidades que interagem para 
realizar uma ação do sistema.
• Escolhe uma colaboração integrando as unidades que a compõem.
• Critério: integrar todas as colaborações identificadas.
• Testes enfocam funcionalidades e podem ser reutilizados nos testes 
de sistema.
Integração por Colaborações
21
Ferramentas de Testes
• Integração Contínua - Jenkis
Criando Test Suite para rodar Vários Test Cases
22
Criando Test Suite para rodar Vários Test Cases
Criando Test Suite para rodar Vários Test Cases
23
Criando Test Suite para rodar Vários Test Cases
https://www.youtube.com/watch?v=BFfxcOHnowQ 16:40 até 29:29 
Referências Bibliográficas
• KOSCIANSKI, A. e SOARES, M. S. 
Qualidade de Software. NOVATEC.
• PRESSMAN, R. S. Engenharia de 
Software. McGraw Hill,
• Notas de Aula do Prof. David 
Zanetti, Qualidade de Software -
Unicarioca

Outros materiais