Teste de Software
Juciara Nepomuceno de Souza
Rafael Garcia Miani
Técnicas de Teste de Software
Testabilidade







Operabilidade;
Observabilidade;
Controlabilidade;
Decomponibilidade;
Simplicidade;
Estabilidade;
Compreensibilidade.
Características de um bom teste

Alta probabilidade de encontrar um erro;

Sem redundância;

Sem grande complexidade ou simplicidade;
Teste Caixa Branca

Teste de caminho básico

Notação de Grafo de fluxo – Representação simples do
fluxo de controle (grafo de
fluxo).
Se
Até quando
Caso
Teste Caixa Branca

Teste de caminho básico

Caminhos independentes – qualquer caminho que insere um
novo conjunto de comandos ou uma nova condição.
Exemplos Caminhos:
1
2
3
5
4
7
6
C1: 1-2-7
C2: 1-3-5-6-7
C3: 1-3-4-6-7
Complexidade:
V(G)= 8 arestas – 7 nós +2= 3
Teste Caixa Branca

Teste de caminho básico

Derivação de Casos de Teste – após realizados os passos
anteriores podem ser extraídos dos caminhos independentes
os casos de testes que serão executados, dessa maneira é
assegurado que todos os comandos do programa foram
executados pelo menos uma vez.
Teste Caixa Branca

Teste de caminho básico

Matrizes de Grafos – representação tabular de um grafo de
fluxo em que são relacionados os nós do grafos às suas
conexões
1
1 2 3 4 5
a
1
b
2
3
5
e
f
4
c
g
2
d
a
3
d
4
c
5
g
b
f
e
Teste Caixa Branca

Teste de Estrutura de Controle

Teste de Condição – método referente aos testes de
condições lógicas em um módulo do software

Teste de Fluxo de Dados – método que seleciona caminhos de
teste de um programa de acordo coma localização das
definições

Teste de Ciclo – valida os ciclos existentes na implementação:

Simples, concatenados, aninhados e desestruturados.
Teste Caixa Preta
Esse tipo de teste permite a validade de um conjunto de
entradas relacionados as suas saídas.

Critérios:



Particionamento de equivalência
Análise do Valor Limite
Teste de Matriz Ortogonal
Teste Caixa Preta

Paticionamento de equivalência


É utilizado na divisão do domínio de entrada em classes de
dados.
Classes de equivalência podem ser divididas em válidas e
inválidas seguindo as seguintes diretrizes:




Se a condição de entrada especifica um intervalo, são definidas uma classe válida e
duas inválidas
Se a condição de entrada exige um valor específico, são definidas uma classe válida
e duas inválidas
Se a condição de entrada especifica um membro de um conjunto, são definidas
uma classe válida e uma inválida
Se a condição de entrada for booleana, são definidas uma classe válida e uma
inválida
Teste Caixa Preta

Análise de Valor Limite



Essa técnica complementa o particionamento de equivalência
Focaliza o teste em um ponto propício a erros, os limites de
uma classe de equivalência
As diretrizes da análise de valor limite são bem parecidas com
as do particionamento de equivalência
Teste Caixa Preta

Teste de Matriz Ortogonal




O teste de matriz ortogonal é um ponto médio para
problemas com domínio de entrada relativamente pequeno,
mas grande demais para testes exaustivos
Casos de teste ficam espalhados uniformemente pelo domínio
de teste
Detecta e isola todas as falhas de modo singular (pela análise
da informação sobre quais testes revelam erros, pode-se
identificar quais valores de parâmetro causam a falha)
Detecta todas as falhas de modo duplo
Teste Orientado a Objetos

Pode-se aplicar os testes do tipo caixa branca e caixa
preta, contudo podem surgir algumas complicações como
o encapsulamento e a herança


Teste com Base em Erro – nesta técnica são procurados erros
plausíveis, particularidades da implementação quem podem
ocasionar defeitos.
Teste com Base em Cenário – busca a validação do que o
usuário precisar fazer em relação ao que o produto
disponibiliza. Encontram-se erros de integração.
Estratégias de Testes de Software
Estratégia de Teste de Software

Teste de Unidade

Teste de Integração

Teste de Validação

Teste de Sistema

Depuração
Estratégias de Teste de Software


Atividades planejadas antecipadamente
Características de Testes

Gabarito de teste






Conjunto de técnicas de projetos de casos de teste e métodos de
teste específicos
Equipe deve fazer revisões técnicas formais: evitar erros
Componente  Integração
Diversas técnicas
Em geral realizadas pela equipe de desenvolvimento e, no caso
de grandes projetos, um grupo de teste independentes
Teste de baixo e alto nível
Estratégias de Teste de Software

Organização do Teste



Desenvolvedor  Componentes (unidades individuais)
Desenvolvedor  Integração
Equipe de teste independente
Estratégias de Teste de Software
Teste de Unidade

Esforço na verificação da menor unidade de projeto de
software: componente ou módulo de software.

Caminhos de controle são testados.

Pode ser realizado em paralelo para vários módulos.
Teste de Unidade
Teste de Unidade

Exemplo:

Testar a interface e os caminhos.
RA
Aluno
Nome
Tombo
N
Emprestar
Data
N
Título
Livro
Editora
Autor
Teste de Integridade



Construir, de forma sistemática, a estrutura do programa,
ao mesmo tempo, executando testes para descobrir
erros.
Componentes funcionam bem de modo isolado, porém
quando colocado juntos, situações inesperadas podem
ocorrer.
Integração Incremental



Programa é construído e testado em pequenos incrementos,
em que erros são mais fáceis de isolar e corrigir.
Integração top-down
Integração bottom-up
Teste de Integridade

Integração top-down


Módulos são integrados movendo-se descendentemente na
hierarquia de controle, começando com o módulo de controle
principal.
Pode ser realiza de duas formas:


Por profundidade (M1, M2, M5)
Por largura (M2, M3, M4)
Teste de Integridade

Integração top-down

O processo de integração é feito em cinco passos:
1.
2.
3.
4.
5.
O módulo de controle principal é utilizado como um
pseudocontrolador do teste, e pseudocontroladores são
substituídos por todos os componentes diretamente ligados ao
programa principal.
Dependendo da abordagem de integração selecionada
(profundidade ou largura), os pseudocontroladores são substituídos,
um por vez, pelos seus componentes reais.
Testes são conduzidos à medida que cada componente é integrado.
Ao término de cada conjunto de testes, outro pseudocontrolado é
substituído por seu componente real.
Teste de regressão pode ser realizado para garantir que novos
erros não tenham sido introduzidos.
Teste de Integridade

Integração bottom-up


A integração dos componentes é feita de baixo para cima.
Pseudocontroladores eliminados, uma vez que o
processamento necessário para os componentes subordinados
em um determinável nível está sempre disponível.
Teste de Integridade

Integração bottom-up

1.
2.
3.
4.
O processo de integração é feito em 4 etapas:
Módulos de níveis mais baixo são combinados em clusters
que executam funções específicas do módulo principal.
É elaborado um driver que coordena a entrada e saída dos
casos de teste para cada cluster.
Cluster é testado.
Drivers são substituídos pelos clusters que passam a interagir
com os módulos acima, na estrutura do programa.
Teste de Integridade
Teste de Integridade

Top-Down



Vantagem: testar logo no início as funções principais do
software.
Desvantagem: pseudocontroladores e dificuldade de testes
quando eles são utilizados.
Bottom-up


Vantagem: não precisa de pseudocontroladores.
Desvantagem: módulo principal não existe enquanto todos os
módulos não estiverem testados.
Teste de Integridade

Teste de Regressão


É a reexecução de algum subconjunto de testes que já foi
conduzido.
Motivo:

Integração de um novo componente pode resultar em erros em
funções que anteriormente funcionavam impecavelmente.
Teste de Integridade

Exemplo: integrar componentes de uma biblioteca
RA
Aluno
Nome
Tombo
N
Emprestar
N
Livro
Data
RA
Aluno
Título
Editora
Nome
Tombo
N
Renovar
Data
Autor
N
Título
Livro
Editora
Autor
Teste de Integridade

Exemplo: integrar componentes de uma biblioteca
RA
Aluno
Nome
Tombo
N
Devolver
N
Livro
Data
RA
Aluno
Título
Editora
Nome
Tombo
N
Consultar
Data
Autor
N
Título
Livro
Editora
Autor
Teste de Validação

Início:





Fim da fase de integração. Componentes individuais foram
exercitados.
Software completamente montado.
Erros de interface descobertos e corrigidos.
Validação é considerada bem-sucedida se o software
funciona de um modo que pode ser razoavelmente
esperado pelo cliente.
Essas expectativas razoavelmente esperadas são definidas
na Especificação de Requisitos:

Critérios de Validação
Teste de Validação

Critérios de Teste de Validação

A validação é conseguida por uma série de testes que
demonstram conformidade com os requisitos.

Plano de teste: delineia as classes de teste a ser conduzidas.

Procedimento de teste: define os casos de teste específicos.

Requisitos funcionais sejam satisfeitos, características
comportamentais sejam conseguidas, requisitos de
desempenho sejam alcançados, documentação esteja correta.
Teste de Validação

Após cada teste de validação:
1.
2.
Função satisfaz a especificação e é aceita.
É descoberto um desvio na especificação e uma lista de
deficiências é criada. Erros aqui encontrados são difíceis de
serem corrigidos até o prazo da entrega.
Teste de Aceitação: software sob encomenda é
construído para um cliente .
Software desenvolvido como um produto para vários
usuários:




Teste alfa: conduzidos na instalação do desenvolvedor junto
com os usuários finais.
Teste beta: conduzido na instalação do usuário final.
Desenvolvedor geralmente não está presente.
Teste de Validação

Exemplo:

Certificar que a empréstimo de um livro a um aluno não
demore mais que três segundos para retornar uma mensagem
de sucesso.
RA
Aluno
Nome
Tombo
N
Emprestar
Data
N
Título
Livro
Editora
Autor
Teste de Sistema



Software é incorporado a outros elementos do
sistema(hardware e pessoal), e uma série de testes de
integração e validação é conduzida.
Uma série de diferentes testes cuja finalidade principal é
exercitar por completo o sistema.
Tipos:




Recuperação
Segurança
Estresse
Desempenho
Teste de Sistema

Teste de Recuperação


É um teste de sistema que força o software a falhar de
diversos modos e verifica se a recuperação é adequadamente
realizada.
Automática (pelo sistema)


A reinicialização, os mecanismos de verificação, a recuperação dos
dados e o reinício são avaliados quanto à correção.
Recuperação com intervenção humana

Tempo médio para reparo é avaliado para determinar se está dentro
de limites aceitáveis.
Teste de Sistema

Teste de Segurança


Teste de Estresse


Verifica se todos os mecanismos de proteção realmente
protegem o software de acessos indevidos.
Tem por objetivo confrontar os programas com situações
anormais de quantidade, frequência e volume.
Teste de Desempenho


Tem por objetivo testar o tempo de resposta do sistema e é
aplicado, geralmente, para sistemas de tempo real.
Normalmente aclopados a teste de estresse.
Teste de Sistema

Exemplo:

Vários estudantes (milhares) fazem consulta ao mesmo tempo,
empréstimos são feitos (cerca de 500 por minuto).Verifica se
tempo de resposta está adequado e se um estudante não está
consultando um livro que acaba de ser emprestado e ainda não
foi atualizado.
Depuração


Ocorre como consequência de um teste bem-sucedido.
Quando um caso de teste descobre um erro, a depuração
é a ação que resulta na reparação do erro.
Depuração

Três estratégias de depuração:



Força bruta: o erro não é analisado para descobrir a causa,
deixando que o próprio computador a descubra. Ex: Inserir
vários comandos de escrita no programa.
Rastreamento (backtracking): inicia-se no local em que o
sintoma foi descoberto e rastreia-se para trás até que o local
da causa seja encontrado.
Eliminação da causa: supõe-se uma causa e elaboram-se casos
de testes para comprovar ou refutar essa hipótese.
Conclusões




O Objetivo do teste é encontrar erros e se eles não
forem detectados, o teste não pode afirmar sua ausência.
Testar tudo é impossível
As técnicas de teste são complementares, devendo ser
aplicadas em conjunto.
Para testar com eficiência é preciso conhecer bem o
software.
Download

Estratégias de Testes de Software