estratégias de testes de software - s3.amazonaws.com fileteste caixa preta teste de matriz...

43
Teste de Software Juciara Nepomuceno de Souza Rafael Garcia Miani

Upload: others

Post on 30-Aug-2019

13 views

Category:

Documents


0 download

TRANSCRIPT

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.

1

2 3

4 5

67

Exemplos Caminhos:

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

3

45

2

a

b

cd

e

f

g

1 2 3 4 5

1 a

2

3 d b

4 c f

5 g 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 deValor 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.

Aluno LivroEmprestarN N

RA Nome

Data

Tombo Título

Autor

Editora

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. 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.

2. Dependendo da abordagem de integração selecionada

(profundidade ou largura), os pseudocontroladores são substituídos,

um por vez, pelos seus componentes reais.

3. Testes são conduzidos à medida que cada componente é integrado.

4. Ao término de cada conjunto de testes, outro pseudocontrolado é

substituído por seu componente real.

5. 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

O processo de integração é feito em 4 etapas:

1. Módulos de níveis mais baixo são combinados em clusters

que executam funções específicas do módulo principal.

2. É elaborado um driver que coordena a entrada e saída dos

casos de teste para cada cluster.

3. Cluster é testado.

4. 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

Aluno LivroEmprestarN N

RA Nome

Data

Tombo Título

Autor

Editora

Aluno LivroRenovarN N

RA Nome

Data

Tombo Título

Autor

Editora

Teste de Integridade

Exemplo: integrar componentes de uma biblioteca

Aluno LivroDevolverN N

RA Nome

Data

Tombo Título

Autor

Editora

Aluno LivroConsultarN N

RA Nome

Data

Tombo Título

Autor

Editora

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. Função satisfaz a especificação e é aceita.

2. É 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.

Aluno LivroEmprestarN N

RA Nome

Data

Tombo Título

Autor

Editora

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

Verifica se todos os mecanismos de proteção realmente

protegem o software de acessos indevidos.

Teste de Estresse

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.