Buscar

SLIDES - UNIDADE 02- Fundamentos ao Teste de Software

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 20 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 20 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 20 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
NÍVEIS DE TESTE DE 
SOFTWARE
Priscila Souza
Os Três Fundamentos
QUANDO 
TESTAR?
COMO
TESTAR?
O QUE
TESTAR?
A atividade de testes é dividida em níveis (fases).
Cada nível aborda diferentes tipos de erros e aspectos do 
software.
Fonte: Shutterstock
Níveis (estágios) de Testes
Testes de 
Unidade
Testes de 
Integração
Testes de 
Sistema
Testes de 
Aceitação
Entrega
QUANDO 
TESTAR?
Fonte: Priscila Souza
Teste de Unidade
Teste de Unidade
 Uma unidade é o menor componente testável de software: 
 função, procedimento, método, classe, objeto.
 O teste de unidade também é conhecido como teste de 
componente, teste de módulo ou teste de programa.
 Objetivo principal do teste de unidade é garantir que cada
unidade funciona de acordo com sua especificação
 Pode incluir testes de funcionalidade e requisitos não 
funcionais.
2
Teste de Unidade
 Normalmente é realizado pelo 
programador
 mas pode ser feito por outro 
programador –
independência.
 Defeitos são corrigidos tão logo 
são encontrados.
 Geralmente é automatizado, 
através de ferramentas como 
Junit, PHPUnit, XXXUnit e outras. 
Fonte: Shutterstock
Tarefas de preparação para testes de unidade
 Planejar a abordagem geral 
dos testes de unidade
 Projetar os casos de testes e 
os procedimentos de teste
 Definir relações entre os 
testes
 Preparar o código auxiliar 
necessário para o teste
Fonte: Shutterstock
Ambiente de Testes de Unidade
 Para ser possível testar a unidade normalmente é necessário 
desenvolver pseudocontroladores e pseudocontrolados:
 Pseudocontrolador (drivers) 
 “Programa principal” que aceita os dados do caso 
de teste e repassa-os à unidade que esta sendo 
testada.
 Pseudocontrolado (stubs)
 Substitui uma unidade subordinada ao 
componente que esta sendo testado.
Ambiente de Testes de Unidade
unidade
stub stub
driver
resultados
casos de teste
Fonte: Professora Maria Augusta
Problemas Tratados por Teste de Unidade
 Erros mais comuns de cálculo:
 precedência aritmética mal entendida ou incorreta;
 iniciação incorreta;
 falta de precisão;
 representação incorreta de expressão simbólica.
 Erros de comparação e fluxo de controle:
 comparação de tipos de dados diferentes;
 operações ou precedência lógica incorretos;
 comparação incorreta de variáveis;
 terminação de ciclo inadequado ou inexistente, etc.
Fonte: Shutterstock
Teste de Integração
3
Teste de Integração
 Objetivo: validar a comunicação entre os componentes e 
sistemas.
 Conduzido pelos desenvolvedores.
 Podem ser feitos antes de o sistema estar concluído, à 
medida em que os componentes vão ficando prontos.
 Geralmente os tipos de falhas encontradas são de 
transmissão de dados.
Teste de Integração
 São automatizados através de 
ferramentas como Junit, 
PHPUnit, XXXUnit e outras. 
 Pode ser conduzido de diversas 
formas:
 Big Bang
 Integração Incremental
 Algo entre os dois extremos Fonte: Shutterstock
Abordagem Big-bang
 Todos os componentes são 
combinados e o programa inteiro 
é testado de uma só vez.
 Menor esforço
 Testa só no final
 O resultado, em geral, é 
desastroso;
 Dificuldade de identificar o 
local de ocorrência do defeito.
Fonte: Shutterstock
Abordagem Incremental
 O programa é integrado e 
testado em pequenos 
incrementos.
 Opções:
 Top-down
 Bottom-up
Fonte: Shutterstock
Integração Top Down
O driver é utilizado como módulo 
de controle principal
stubs são trocados pelos módulos reais, 
um de cada vez, seguindo o critério da 
profundidade ou amplitude
a medida que novos módulos são integrados 
testes de regressão são executados.
A
B
C
D E
F G
Integração Bottom-Up
drivers são removidos uma vez que 
o teste do subsistema é feito 
módulos são integrados usando um driver
A
B
C
D E
F G
subsistema
4
Problemas tratados no teste de integração
 Dados podem ser perdidos através de uma 
interface;
 Um módulo pode ter um efeito imprevisto 
ou adverso sobre outro;
 Subfunções podem não produzir o 
resultado esperado pela função principal;
 Imprecisão aceitável individualmente pode 
ser amplificada;
 Estruturas de dados globais podem gerar 
problemas, etc...
Fonte: Shutterstock
Teste de Sistema
Teste de Sistema
 Objetivo:
 garantir que o sistema funciona de 
acordo com seus requisitos 
funcionais e de qualidade 
(confiabilidade, usabilidade, 
desempenho, etc.) 
 São realizados após a codificação do 
sistema estar concluída.
 Relacionado ao comportamento do 
sistema como um todo. Fonte: Shutterstock
Teste de Sistema
Fonte: Google Fonte: Facebook
Teste de Sistema
 Baseados na especificação de requistitos, casos 
de uso, …
 Cenários de testes coerentes com requisiotos
 Seu propósito é encontrar o maior número de 
defeitos
 Conduzido pela equipe de testes
 Deve verificar requisitos funcionais e não 
funcionais
 Demandam ambiente de testes controlado
 Último teste antes da entrega
Fonte: Shutterstock
Teste de Aceitação
5
Teste de Aceitação
 Objetivo: executar o sistema sob 
ponto de vista de seu usuário final
 É realizado após correções dos 
defeitos encontrados internamente 
nos testes de Sistema.
 Objetivo é estabelecer confiança no 
sistema
 Encontrar defeitos não é foco 
principal.
Fonte: Shutterstock
Teste de Aceitação
 Planejados e executados por um grupo restrito 
de usuários finais do sistema, que simulam 
operações de rotina do sistema de modo a verificar 
se seu comportamento está de acordo com o 
solicitado.
 Testes alfa
 Usuários convidados a utilizar o sistema no 
ambiente do desenvolvedor.
 Testes beta
 Usuários utilizam o sistema em condições reais.
Fonte: Shutterstock
Imagens de versões beta
Fonte: Google Play
Estratégias de Teste de Software
Devem acomodar:
 Testes de baixo nível;
 Necessários para verificar se um pequeno trecho de código-fonte foi 
corretamente implementado
 Testes de alto nível;
 Necessários para validar as principais funções do sistema com base nos 
requisitos dos usuários e clientes.
 Diferentes técnicas de testes
 São adequadas em diferentes momentos
 Testes devem ser conduzidos: desenvolvedores e testadores
Técnicas de Teste
Priscila Souza
Na aula anterior, nós respondemos a pergunta 
“Quando testar?” entendendo os níveis de teste 
que precisam ser executados a medida que o 
processo de desenvolvimento avança.
Nessa aula, vamos responder a pergunta “Como 
testar?” descobrindo quais são e como funcionam 
as técnicas de testes.
6
Técnicas de Teste
 O entendimento das técnicas para elaboração de um projeto de 
teste é primordial para a consolidação do planejamento e 
preparação para execução dos testes dentro de um determinado 
projeto. 
 As técnicas de teste são divididas em 2 categorias: 
 Técnicas estáticas: compreendem os testes que não envolvem 
a execução do software.
 Técnicas dinâmicas: são relacionadas a execução do software. 
Técnicas Dinâmicas
 O software é executado com alguns casos de teste e os resultados 
da execução são examinados para verificar se o programa operou 
de acordo com o esperado. 
 O ideal seria testar o programa com todos os elementos do 
domínio de entrada (teste exaustivo).
 Infactível para grandes ou infinitos domínios de entrada.
 Por isso, devemos selecionar subdomínios, mas garantindo a alta 
probabilidade em revelar defeitos no software.
Técnicas Dinâmicas
 Como identificar esses subdomínios?
São definidas “regras”, chamadas de técnicas e seus 
critérios, para identificar quando dados de teste devem estar 
no mesmo subdomínio ou em subdomínios diferentes.
 Nessa aula vamos aprender sobre essas técnicas que são 
classificadas em: 
 Caixa-Branca e Caixa-Preta.
Testes Caixa-Branca
Testes Caixa-branca
 Nesta técnica os casos de 
teste são gerados tendo-se 
conhecimento da estrutura 
interna (lógica) do 
programa. 
 São também denominados 
testes estruturais. 
Dados 
de 
Entrada
Saída
Fonte: Prof. Priscila Souza
Testes Caixa-branca
 Se for realizado por umanalista de testes, este 
precisa ter conhecimento 
básico de programação.
Estudaremos as técnicas: 
 Cobertura Lógica (Critérios 
Myers) e Método dos 
Caminhos Básicos.
Exemplo de bloco básico de código:
1. READ A
2. READ B
3. C = A + B
4. IF A > B THEN
5. PRINT “RESULTADO INVÁLIDO”
6. ELSE
7. PRINT C
8. END IF
SENTENÇASCONDIÇÕES
DECISÕES
7
Cobertura Lógica (Critérios Myers)
 Este método é constituído de critérios que, quando 
obedecidos, determinam os casos de teste a serem gerados. 
 Os critérios vão se tornando cada vez mais abrangentes e 
rigorosos, partindo-se do mais simples, ineficiente e menos 
rigoroso (Cobertura de Comandos) até o mais complexo, 
eficiente e rigoroso (Cobertura de Múltiplas Condições). 
Cobertura Lógica (Critérios Myers)
A escolha do critério adequado será norteada pelos seguintes 
fatores:
 Complexidade do programa a testar
Programas mais simples podem ser satisfeitos pela 
utilização de critérios menos rigorosos.
 Estrutura do programa a ser testado
Certas estruturas são mais adequadas a determinados 
critérios.
Cobertura Lógica (Critérios Myers)
A escolha do critério adequado será norteada pelos seguintes 
fatores:
 Criticidade do programa a testar
Programas cujo funcionamento não é crítico podem 
exigir testes menos rigorosos.
 Nível de confiança que se deseja atingir
Se o nível de confiança de bom funcionamento é alto, 
critérios mais rigorosos são necessários.
Grafo de programa/Fluxo de controle
 É um grafo orientado que descreve o fluxo de controle do 
programa.
 Auxilia na criação de casos de testes caixa-branca;
 Nodos representam comandos;
 Arestas representam fluxo de controle;
 Regiões do grafo são áreas limitadas pelas arestas e 
nodos (incluindo a área fora do grafo).
Grafo de programa/Fluxo de controle
Sequência
Decisão/condição
verdadeiro falso
Repetição
falso
verdadeiro
Exemplo – Grafo de Programa
1 if A=B then
2 A : = A + 1
else
3 if B = C then
4 B : = B+1
else
5 B : = B -1;
6 end;
R1
R2
R3
a b
c
d
e
fg
V F
V F
R1
1
2 3
4 5
6
R2
R3
8
Exemplo – Grafo de Programa
1 soma_vetor (a, num_elementos, soma)
2 soma = 0
3 i = 1
4 while (i <= num_elementos)
5 if a[i] > 0
6 soma = soma + a[i]
endif
7 i = i + 1
end while
8 end soma_vetor
Caminhos no Grafo de Programa
 Um caminho é uma sequência de nodos: começando do 
nodo de entrada do grafo e chegando ao nodo de saída.
Exemplo:
No grafo anterior um caminho possivel é: 1,2,3,4 e 8.
Responda: a sequência 1,2,3,4,5,6,7,8 é um caminho factível? 
Cobertura de comandos (statements)
 Neste critério os casos de teste devem ser gerados de forma 
que ao serem executados, o fluxo do programa passe por 
todos os COMANDOS existentes no mesmo.
 Em termos do grafo de fluxo de controle consiste em garantir
que todos os nodos serão exercitados pelo menos uma vez
pelo conjunto de testes. 
Cobertura de comandos (statements)
1 if (a == b) 
2 + +i;
3 if (x == y)
4 - -i;
5 return i;
}
2
3
4
5
Verdadeiro
1
falso
Verdadeiro
falso
(4 caminhos possíveis, 
apenas 1 é testado pelo
critério de cobertura de 
comandos)
 Não é capaz de detectar diversos tipos de defeitos;
 Basta executar um comando de repetição uma única vez;
 Condições compostas não são testadas;
 Ifs sem elses são particularmente vulneráveis 
 se houver um defeito na condição e esta for sempre 
verdadeira, como não existe comando a ser testado no else, 
este defeito não é descoberto usando cobertura de 
comandos.
Cobertura de comandos (statements) Cobertura de desvios ou decisões (branches)
 Cada desvio ou decisão consiste em uma condição (simples 
ou composta) que deve ser avaliada pelo menos uma vez
como verdadeira e uma como falsa.
 Em termos do grafo de fluxo de controle consiste em
garantir que todos as arestas serão exercitados pelo menos
uma vez pelo conjunto de casos de teste. 
9
Cobertura de desvios ou decisões (branches)
1 if (a == b) 
2 + +i;
3 if (x == y)
4 - -i;
5 return i;
}
2
3
4
5
Verdadeiro
1
falso
Verdadeiro
falso
(4 caminhos possíveis, 
apenas 2 são testados
pelo critério de cobertura
de desvios)
Cobertura de desvios ou decisões (branches)
 Resolve alguns problemas da cobertura por comandos, 
mas não todos…
 Condições compostas podem não ser testadas;
 Podem haver caminhos não testados; 
 comandos de repetição só necessitam ser executados
uma vez apesar da condição de repetição ter de ser
testada duas vezes.
Cobertura de condições
 Cada parte de uma condição deve ser testada pelo menos 
uma vez como verdadeira e uma vez como falsa;
 Não requer testar todas as possibilidades;
 Não requer que todos os desvios sejam cobertos;
 O desvio pode ser sempre falso, por exemplo, mas cada 
parte da condição foi testada como V e F.
Cobertura de condições
1 if (idade >= 18) and (Aprovado = ‘OK’) then
2 contrato =‘SIM’;
else
3 contrato =‘NÃO’;
4 end if
2 Casos de testes:
1) Idade = 19, Aprovado = OK 
2) Idade = 18, Aprovado = Não 
Idade >=18 e Idade <18
Aprovado= OK e Aprovado <> OK
Cobertura de condições/decisões
 Uma combinação dos dois últimos critérios
 Cada condição em uma decisão é testada em todas as suas 
saídas possíveis e cada decisão tem sua saída V ou F percorrida 
ao menos uma vez. 
Cobertura de condições/decisões
1 if (idade >= 18) and 1A (Aprovado = ‘OK’) then
2 contrato =‘SIM’;
else
3 contrato =‘NÃO’;
4 end if
3 Casos de testes:
1) Idade = 19, Aprovado = OK 
2) Idade = 18, Aprovado = Não 
3) Idade = 17, Aprovado = X
Idade >=18
Aprovado =OK
Aprovado <>OK
Idade <18
2 3
4
1
1A
10
Cobertura de múltiplas condições
 Todas as combinações de V ou F de cada condição devem
ser testadas
 Este é sem dúvida o critério mais abrangente. 
 Porém, esta abrangência tem um preço: o número de 
casos de teste para satisfazê-lo é maior.
 As falhas deste critério estão relacionadas ao número de 
caminhos percorridos: ele não garante que este número 
seja suficiente para testar com confiança o programa.
Cobertura de múltiplas condições
1 if (idade >= 18) and (Aprovado = ‘OK’) then
2 contrato =‘SIM’;
else
3 contrato =‘NÃO’;
4 end if
4 Casos de testes:
1) Idade = 19, Aprovado = OK 
2) Idade = 18, Aprovado = Não 
3) Idade = 17, Aprovado = OK
4) Idade = 16, Aprovado = Não 
Caminhos independentes
 Método criado pelo matemático norte-americano Thomas 
McCabe baseado na teoria de grafos.
 Sua lógica consiste essencialmente em fazer com que os 
casos de teste sejam gerados de forma a fazer com que:
 o fluxo do programa passe por um número mínimo de 
caminhos entre a entrada e a saída do programa, sem o 
risco de ocorrerem redundâncias.
Caminhos independentes
 Existem 3 formas de se determinar quantos são os caminhos 
independentes, também denominado complexidade 
ciclomática:
 Contar o Número de Regiões;
 Aplicar a fórmula C = E – N + 2;
 onde C = número de caminhos independentes; E = número 
de arestas; N = número de nós;
 Contar o número de estruturas de decisão no programa e 
somar 1. 
Exercício – Complexidade Ciclomática
R1
R2
R3
a b
c
d
e
fg
V F
V F
Qual é a complexidade 
Ciclomática?
R1
1
2 3
4 5
6
1 if A=B then
2 A : = A + 1
else
3 if B = C then
4 B : = B+1
else
5 B : = B -1;
6 end;
Resposta: 3
R2
R3
Caminhos independentes
 Para identificar os caminhos independentes em um grafo é preciso:
 Determinar o número de caminhos independentes conforme visto 
anteriormente.
 Tomar o caminho mais a esquerda possível no grafo como primeiro 
caminho independente. No exemplo anterior, este caminho é o ac.
 Tomar o próximo caminho à direita, tendo o cuidado de incluir nele pelo 
menos uma aresta que não tenha sido incluída nos outros caminhos já 
determinados. No exemplo, caminho bdg.
 Repetir o passo anterior até que se obtenham todos os caminhos. No 
exemplo, só nos resta o caminho bef.
11
Caminhos independentes – Casos de testes
 Cada caminho obtido dará origem a um caso de teste. Os 
casos de teste sãogerados de forma que façam com que os 
caminhos aos quais correspondam sejam percorridos. 
No exemplo anterior temos:
Caminho ac: Entradas: A=3, B=3, C=3. Saídas: A=4, B=3.
Caminho bdg: Entradas: A=3, B=4, C=4. Saídas: A=3, B=5.
Caminho bef: Entradas: A=3, B=5, C=6. Saídas: A=3, B=4.
Caminhos independentes – passos do método
 Passo 1: Desenhar o grafo de controle;
 Passo 2: Determinar o número de caminhos 
independentes (complexidade ciclomática);
 Passo 3: Obter os caminhos independentes;
 Passo 4: Para cada caminho, gerar os casos de teste, 
utilizando a especificação do programa para inferir os 
resultados esperados;
 Passo 5: Executar cada caso de teste e checar os resultados 
obtidos contra os esperados.
Testes Caixa-Preta
Testes Caixa-preta
 Nesta metodologia os casos de 
teste são gerados sem o 
conhecimento da estrutura 
interna do programa. 
 Apenas o conhecimento das 
entradas e saídas possíveis para 
o programa é necessário. São 
também denominados testes 
funcionais. 
W
Dados 
de 
Entrada
Saída
Fonte: Prof. Priscila Souza
?
Testes Caixa-preta
 Estudaremos os seguintes métodos:
 Partição em Classes de Equivalência
 Análise de Valores de Borda (limite)
 Grafo de Causa-Efeito
 Todos os critérios baseiam-se na especificação do sistema.
Partição em Classes de Equivalência
 Naturalmente, é impossível testar todas as combinações 
possíveis de entradas.
 É preciso achar um subconjunto significativo.
 O método envolve achar partições;
 Para cada tipo de dado.
12
Partição em Classes de Equivalência
Fonte: shutterstock
Partição em Classes de Equivalência
 Definição - Classe de Equivalência
 Uma classe de equivalência nada mais é do que um 
subconjunto das entradas possíveis de um programa, de 
tal forma que um teste efetuado para um valor 
representativo da mesma é equivalente ao teste para 
qualquer outro valor nesta classe.
Partição em Classes de Equivalência
 Particionar o domínio de entrada em classes de 
equivalência
 Resultado: número finito de partições ou classes de 
equivalência.
 Selecionar um dado membro de uma classe de 
equivalência como sendo um representante da classe
 Premissa: assume-se que todos os membros de uma 
classe de equivalência são processados de maneira 
equivalente pelo software.
Como Identificar as Classes? 
 Identificar na especificação de requisitos as condições que 
dividem o domínio de entrada:
 Intervalo de valores: define-se uma classe válida e duas 
inválidas.
 Conjunto de valores: define-se uma classe válida para 
cada conjunto e uma classe inválida para outros valores 
quaisquer.
 Valor ou característica mandatória: define-se uma classe 
válida e uma inválida.
Intervalo de Valores Válidos
 Por exemplo: o comprimento de um objeto de entrada pertence 
ao intervalo de 1 a 499 Milímetros
 Criar uma classe de equivalência:
 para todos os valores dentro do intervalo - Partição Válida
 para todos os valores menores do que 1 - Partição Inválida
 para todos os valores maiores que 499 - Partição Inválida
Conjunto de Valores Válidos
 Por exemplo: se a especificação de um módulo de pintura de objetos 
diz que as cores vermelho, verde e amarelo são permitidas como 
valores de entrada.
 Criar uma classe de equivalência que inclui:
 vermelho, verde e amarelo (CORES - valores válidos) 
 e uma classe que inclui todas as outras entradas (valores inválidos).
13
Valor ou característica mandatória
 Por exemplo: se o primeiro caracter do identificador de um item 
de pedido tiver de ser uma letra
 Criar uma classe de equivalência válida onde os identificadores 
começam com uma letra, e uma classe inválida onde o primeiro 
caracter não é uma letra.
Vantagens das Classes de Equivalência
 Elimina a necessidade de teste exaustivo que não é viável de 
qualquer forma;
 Guia o testador na seleção de um subconjunto de entradas 
para os testes com alta probabilidade de detectar um defeito;
 Permite cobrir um domínio maior de entrada selecionando 
um subconjunto menor de valores dadas as classes de 
equivalência.
Análise dos Valores de Borda
 Muitos defeitos acontecem nas bordas (limites) entre as 
classes de equivalência:
 Exatamente na fronteira
 Logo abaixo da fronteira
 Logo acima da fronteira
Análise dos Valores de Borda
 Casos de testes que consideram estas bordas (limites) em geral 
revelam defeitos.
 Princípio da Timidez:
 "Os 'BUGS' se concentram nos cantos e nas frestas" 
 Este método complementa o Partição em Classes de 
Equivalência (que utiliza valores típicos), testando valores 
focalizados nas fronteiras dos intervalos de validade. 
Análise dos Valores de Borda
 Se a condição de entrada for um Intervalo de valores:
 Criar casos de teste com valores válidos
 nas fronteiras do intervalo.
 Criar casos de teste com valores inválidos
 logo acima e logo abaixo da fronteira do intervalo.
Análise dos Valores de Borda
 Exemplo: 
A entrada é um valor do intervalo de -1.0 a +1.0:
 Casos de teste:
 Entrada: -1.0; Saída: Válido;
 Entrada: +1.0; Saída: Válido; 
 Entrada: +1.1; Saída: Inválido;
 Entrada: -1.1; Saída: Inválido.
14
Análise dos Valores de Borda
 Se a condição de entrada for um Conjunto ordenado 
(listas, tabelas):
 Criar casos de teste focando
 no primeiro elemento do conjunto
 no último elemento do conjunto
 no elemento anterior ao primeiro do conjunto 
(inválido)
 no elemento posterior ao último do conjunto (inválido)
Análise dos Valores de Borda
 Exemplo: A entrada é um elemento da lista ordenada: 
{B, K, M, R, T}
 Casos de teste:
 B, T (válidos) 
 A, U (inválidos)
Grafo de Causa e Efeito
 Método baseado em especificações de ENTRADAS (causas) e 
SAÍDAS (efeitos). 
 Representa a combinação de entradas em saídas de forma 
bastante representativa, não redundante e, muitas vezes, de 
tamanho minimizado. 
 Além disso possui uma vantagem extra, pois aponta 
ambiguidades e incompletezas na especificação.
 Porém, quando o grafo de causa-efeito torna-se muito complexo, fica 
bastante difícil a geração da tabela de decisão. Nesta situação, a 
utilização deste método só é viável com o auxílio do computador.
Grafo de Causa e Efeito – Passos do Método
1 - Desenhar o grafo:
 Identificar as causas: as causas são as entradas do programa. Colocá-
las à esquerda no diagrama.
 Identificar os efeitos: os efeitos são as saídas do programa. Colocá-los 
à direita no diagrama.
2 - Transformar o grafo em tabela de decisão. 
 Como? Para cada um dos efeitos, gerar combinações entre causas que 
façam com que sejam ativados. 
3 - Gerar os casos de teste
Grafo de Causa e Efeito - Notação
 Cada nó do grafo pode assumir valores: 
0 (ausência) ou 1 (presença) do estado.
 A notação do grafo contém os seguintes operadores:
Grafo de Causa e Efeito - Exemplo
Seja a seguinte especificação para um compilador de 
um comando bem simples: 
 O caractere na coluna 1 deve ser "A" ou "B". 
 O caractere na coluna 2 deve ser um número. 
 Se isto ocorrer, o arquivo deve ser atualizado.
 Se o primeiro caractere estiver incorreto, emitir 
mensagem M1. 
 Se o segundo caractere não for um dígito, 
emitir mensagem M2. 
15
Grafo de Causa e Efeito - Exemplo
 CAUSAS:
1 - Caractere na primeira coluna é "A“; 
2 - Caractere na primeira coluna é "B" ;
3 - Caractere na segunda coluna é um número.
 EFEITOS:
70 - Atualiza o arquivo;
71 - Emite mensagem M1;
72 - Emite mensagem M2.
Grafo de Causa e Efeito - Exemplo
 Grafo:
Grafo de Causa e Efeito - Exemplo
 Tabela de decisão:
Outras abordagens para testes Caixa-preta
 Diagrama de transição de teste
 baseado em máquinas de estados finitos
 Adivinhação ou suposição/palpite de erros
 baseado em experiências anteriores; uso de intuição para 
adivinhar onde os erros podem ocorrer.
 Teste exploratório
Quais técnicas devo escolher?
 Para escolher as técnicas corretas deve-se considerar:
 Tipo do sistema
 Nível de risco
 Objetivos do teste
 Documentação disponível
Tempo e orçamento
 Etc.
Técnicas x Níveis de Testes
 Testes caixa-preta são apropriados em todos os níveis mas 
sua utilização é maior nos níveis mais altos: Sistema e 
Aceitação.
 Testes caixa-branca são utilizados predominantemente nos 
níveis mais baixos: Unidade e Integração.
 É durante o planejamento dos testes que devem ser definidas 
quais técnicas utilizar e em quais níveis. 
16
Testes Estáticos 
Priscila Souza
As técnicas de testes de software são divididas em 2 
categorias: técnicas dinâmicas relacionadas a 
execução do software e técnicas estáticas que 
compreendem os testes que não envolvem a 
execução do software.
Nessa aula, vamos continuar respondendo a 
pergunta “Como testar?” descobrindo quais são e 
como funcionam as técnicas de testes estáticas.
Testes Estáticos
 As técnicas de testes estáticas 
são aquelas que não dependem 
de um artefato executável para 
serem realizadas. 
 Artefatos são examinados 
manualmente (inspeção visual).
Fonte: Shutterstock
Testes Estáticos
 Exemplos de artefatos que podem ser 
Examinados por meio de testes estáticos: 
 Especificações de requisitos
 Estórias de usuários
 Código-fonte
 Manual de usuário
 Plano de projeto
 Especificações de arquitetura, etc...
Fonte: Shutterstock
Testes Estáticos
 Podem ser usados em todos os níveis de 
testes.
 Não substituem os testes dinâmicos
 se complementam, encontrando 
diferentes tipos de defeitos.
 Normalmente estão associados aos 
marcos do projeto.
 Principais atividades: revisões e 
inspeções e suas variações.
Fonte: Shutterstock
Revisões e Inspeções
Importância das revisões e inspeções:
 Quando aplicadas no início do ciclo de vida de desenvolvimento 
de software, permite a detecção antecipada dos defeitos antes 
da realização dos testes dinâmicos; 
 Reduzem cerca de 60% a 90 % dos defeitos; 
 Reduzem o retrabalho em cerca de 40% a 50%; 
 Reduzem o custo do projeto;
17
Revisões e Inspeções
 Previnem defeitos revelando inconsistências, ambiguidades, 
contradições, omissões, imprecisões e redundâncias nos 
requisitos; 
 Aumentam a produtividade no desenvolvimento (p.e., devido 
ao desenho aprimorado, código mais sustentável); 
 Melhoram a comunicação entre os membros da equipe durante 
a participação nas revisões.
 Equipe possui maior consciência de problemas de qualidade.
Papéis de uma Revisão Formal
 Autor: cria o produto e corrige os defeitos encontrados.
 Facilitador: garante a execução eficaz, media se necessário 
entre os pontos de vista.
 Líder de revisão: decide quem será envolvido e organiza 
quando e onde acontecerá a revisão.
 Revisor: identifica possíveis problemas, pode representar 
diferentes perspectivas.
 Redator: coleta os defeitos encontrados, registra os pontos em 
aberto e decisões da reunião de revisão...
Revisão Informal
 Verificação de parceiros, 
pareamento, revisão de pares;
 O objetivo principal é detectar 
defeitos potenciais;
 Não é baseado em um processo 
formal; 
 O uso de checklists é opcional;
 Muito comumente usado no 
desenvolvimento Ágil.
Fonte: Shutterstock
Revisão Técnica (Technical Review)
 Objetivos: Avaliar um produto de software por equipe qualificada 
para determinar a adequação e seu uso e identificar discrepâncias 
de padrões e especificações; verificar se a qualidade do produto é 
a esperada;
 Os revisores devem ser especialistas técnicos;
 O redator é obrigatório e preferencialmente que não seja o autor;
 O uso de checklists é opcional;
 São produzidos registros de defeitos potenciais e o relatório de 
revisão.
Revisão de Apresentação (Walkthroughs)
 Objetivos: permitir troca de conhecimentos; coletar ideias de 
outros membros do time que levam a uma melhoria geral do 
produto; encontrar anomalias; considerar implementações 
alternativas;
 O autor do material apresenta-o em ordem lógica;
 Pode ser realizado em todos os momentos do desenvolvimento;
 Papeis podem ser compartilhados: Líder, relator, autor;
 Deve ser planejado: participantes definidos, encontro agendado;
 Resultados devem ser registrados.
Inspeção (Inspection)
 Objetivos: detectar defeitos potenciais; avaliar a qualidade; criar 
confiança no produto de trabalho; identificar desvios em relação aos 
requisitos e padrões; coletar dados de métricas;
 Processo definido: regras (exe.: duração 2h) e checklists;
 Utiliza as funções de Autor, Líder, Revisor, Redator e Leitor;
 São produzidos registros de defeitos potenciais e o relatório de 
revisão;
 Métricas são coletadas e usadas para melhorar o processo de 
desenvolvimento de software, incluindo o processo de inspeção.
18
Inspeção de Código
 Um dos tipos de inspeção mais comuns
 Primeira ação é adotar um padrão 
de codificação
 Padrões de codificação
 Recomendado adotar padrões existentes.
 Economiza trabalho
 Pode haver ferramentas automatizadas Fonte: Shutterstock
Dicas para realização de revisões
 Planejar e acompanhar
 Treinar os participantes
 Gerenciar problemas pessoais
 Mantenha a simplicidade
 Melhorar processo e ferramentas
 Reportar resultados
 Ter o apoio da gerência
Fonte: Shutterstock
TIPOS DE TESTE
Priscila Souza
Na aula anterior, nós respondemos a pergunta 
“Como testar?” aprendemos quais são e como 
funcionam as técnicas de testes de software.
Nessa aula, vamos responder a pergunta “O que 
testar?” descobrindo quais são os tipos de testes.
Tipos de Teste de Software
 Um tipo de teste é um grupo de atividades que visa testar 
características específicas de um software, ou parte de um software, 
com base em objetivos de teste específicos. 
 Tais como: 
 Avaliar funcionalidades
 Medir confiabilidade
 Avaliar a usabilidade
 Avaliar a estrutura do sistema
 Confirmar mudanças no software
Tipos de Teste de Software
Classificação dos testes em função do objetivo do teste:
 Teste Funcional (caixa-preta)
 Teste Estrutural (caixa-branca)
 Teste Não-funcional
 Teste relacionado a mudanças:
 Teste de Confirmação (Reteste)
 Teste de Regressão
19
Teste Funcional (Caixa-preta)
 Funcionalidade normalmente descrita em algum documento de 
requisitos.
 Considera o comportamento especificado.
 Avalia as funções do software (“o que o sistema faz”)
 Observa apenas QUAL foi o resultado do teste e não COMO o 
mesmo foi obtido
 Condições e casos de testes são derivados da funcionalidade 
especificada.
 Executa as funções usando dados válidos e inválidos
Teste Funcional (Caixa-preta)
 Objetivo: garantir que todos os requisitos ou comportamentos 
da aplicação ou componente estão corretos.
 Erros que podem ser descobertos:
 Funções incorretas ou ausentes; 
 Interfaces;
 Estruturas de dados ou acesso a dados; 
 Desempenho; 
 Estratégias:
 Partição de equivalência, Análise de valores limite; etc.
Teste Não-funcional
 Relacionado a requisitos não-funcionais.
 O teste é excutado para medir as caracteristicas que podem 
ser quantificadas em uma escala variável (ex: o tempo de 
resposta em um teste de performance).
 O teste não funcional é o teste de "quão bem" o sistema se 
comporta.
 Uso da ISO/IEC 9126 como base.
Teste Não-funcional
 Inclui, mas não se limitam a:
 teste de performance; 
 teste de carga; 
 teste de estresse; 
 teste de estabilidade.
 teste de usabilidade; 
 teste de interoperabilidade; 
 teste de manutenibilidade; 
 teste de confiabilidade; 
 teste de segurança;
 teste de portabilidade;
 Etc...
Teste Estrutural (Caixa-branca)
 Avalia a estrutura e o comportamento interno do componente 
de software.
 O teste é realizado diretamente sobre o código-fonte dos 
componentes. 
 Interessado na cobertura dos testes pela análise de elementos 
estruturais.
 Mais aplicado aos níveis de unidade e integração.
Teste Estrutural (Caixa-branca)
 Objetivo: garantir que todas as linhas de código e condições 
foram executadas pelo menos uma vez e estão corretas.
 Estratégias:
 Cobertura de comandos; 
 Cobertura de desvios;
 Cobertura de condições;
 Coberturade múltiplas condições.
20
Teste relacionado a mudanças
 Teste de Confirmação (Reteste):
 Executa casos de teste reprovados durante a última 
execução para confirmar se os defeitos foram corrigidos.
 Novos defeitos podem ter sido inseridos.
 As etapas para reproduzir as falhas causadas pelo defeito 
devem ser executadas novamente na nova versão do 
software. 
Teste relacionado a mudanças
 Teste de Regressão:
 Objetivo: procurar alterações não intencionais no 
comportamento como resultado de alterações no 
software ou no ambiente.
 Candidatos a serem automatizados.
 Executados sempre que há mudanças.
 Esforço de manutenção considerável.
Teste relacionado a mudanças
 Teste de Regressão:
 Especialmente em modelos de desenvolvimento ágil, os 
testes de regressão desempenham um papel fundamental 
na criação da confiança de que as alterações não 
impactaram os componentes existentes.
Teste relacionado a mudanças
 Testes de Confirmação e Regressão:
 São realizados em todos os níveis de teste;
 Extremamente importantes devido à natureza evolutiva 
dos softwares;
 Particularmente relevante para os sistemas da Internet 
das Coisas (IoT).
Quando utilizar cada uma das abordagens?
De acordo com cada situação. Por exemplo:
 Para testar a conformidade de um algoritmo de busca por 
exemplo, um teste estrutural é mais adequado;
 Para testar uma operação de inserção de um elemento em 
uma estrutura de dados, um teste funcional é suficiente.
Estratégia para teste de Software
 Uma estratégia de testes de software descreve a abordagem 
geral e os objetivos das atividades de teste.
 E, descreve com clareza os critérios para a conclusão dos 
testes e os critérios de sucesso a serem usados.
 Ela deve contemplar todos os níveis de teste, os tipos de 
testes a serem realizados e as técnicas para sua execução.

Outros materiais