Teste de Software
Engenharia de Software



Fase de definição ("o que")
Análise do Requisitos
Planejamento de projeto de software
Fase de Desenvolvimento ("como")
Projeto de software
Codificação
Realização de testes
Fase de manutenção ("atualizações e alterações")
Testes para detecção de defeitos
Teste de Defeitos
Testar programas para
demonstrar
a presença de defeitos
#
Teste de Validação
Demonstrar que o sistema
cumpre
as suas especificações
Fases de Teste
Component
testing
Integration
testing
Software developer
Independent testing team
O processo de teste

Teste de Componentes
•
•

Teste de componentes individuais dos programas
Normalmente é de responsabilidade do desenvolvedor do
programa (exceto em alguns sistemas críticos)
Testes de Integração
•
•
•
Teste de um grupo de componentes integrados para a criação
de um sistema ou sub-sistema.
Responsabilidade de uma equipe de testes independente
Testes são baseados na especificação do sistema.
Objetivos da atividade de teste
1- A atividade de teste é o processo de executar um
programa com a finalidade de descobrir um erro.
2- Um bom caso de teste é aquele que tem uma elevada
probabilidade de revelar um erro ainda não descoberto,
forçando o programa a uma ação anormal.
3- Um teste bem sucedido é aquele que revela um erro
ainda não descoberto.
O objetivo é projetar casos de teste que descubra
sistematicamente diferentes classes de erros e façam-no
com um quantidade de tempo e esforço mínimos.
Objetivos da atividade de teste


Se a atividade de teste for conduzida com
sucesso, ela descobrirá erros no software.
A atividade de teste não pode mostrar a
ausência de erros nos programas, mas sim a
presença de erros nos programas. importante !!!
Fluxo de informações de teste
Configuração do SW
Especificação de Requisitos
Especificação de projeto
Código Fonte
Resultados
dos Testes
Avaliação
Erros
Atividades
de teste
Configuração de Teste
Plano e procedimento de teste
Ferramentas de teste
Casos de teste e
resultados esperados
Dados de taxas de erros
Modelo de
Confiabilidade
Depuração
Correções
Confiabilidade Prevista
Fluxo de informações de teste



Se erros graves forem encontrados com regularidade =>
a qualidade e a confiabilidade de software são suspeitas.
Se erros facilmente corrigíveis forem encontrados =>
a qualidade e a confiabilidade do software estão
aceitáveis ou os testes são inadequados para revelar
erros graves.
Se não for encontrado erro => a configuração de teste
não foi suficientemente elaborada e erros podem estar
escondidos no software
Dados de teste e Casos de teste


Dados de teste: são as entradas selecionadas
para testar o sistema.
Casos de Teste: Definição das entradas para
testar o sistema e das saídas esperadas caso o
sistema opere de acordo com o especificado.
Processo de teste
Projetos de casos de teste abordagens

Teste da caixa branca




Baseia-se em um minucioso exame dos detalhes procedimentais.
São testados os caminhos lógicos através do software, fornecendose casos de teste que põem à prova conjuntos específicos de
condições e/ou laços.
O status do programa pode ser examinado em vários pontos para
determinar se o status esperado ou estabelecido corresponde ao
status real.
Teste da caixa preta



Refere-se aos testes que são realizados nas interfaces do software.
São usados para demonstrar que as funções dos softwares são
operacionais, que a entrada é adequadamente aceita e a saída é
corretamente produzida; que a integridade das informações externas
é mantida.
Examina aspectos de um sistema sem se preocupar muito com a
estrutura lógica interna do software.
Características dos testes

Somente testes exaustivos pode mostrar que o
programa é livre de defeitos. Entretanto, testes
exaustivos são impossíveis.
Teste da Caixa Branca


É um método de projeto de casos de teste que usa uma
estrutura de controle do projeto procedimental para
derivar casos de teste.
Podem ser derivados casos de teste que:
•
•
•
•
garantam que todos os caminhos independentes dentro de
um módulo tenham sido exercitados pelo menos uma vez.
exercitem todas as decisões lógicas para valores falsos ou
verdadeiros
executem todos os laços em suas fronteiras e dentro de seus
limites operacionais.
exercitem as estruturas de dados internas para garantir sua
validade.
Teste da Caixa Branca - teste do caminho
básico


O método de caminho básico possibilita que o projetista do caso de
teste derive uma medida de complexidade lógica de um projeto
procedimental e use essa medida como guia para definir um
conjunto básico de caminhos de execução.
Grafo de fluxo: uma notação para representar o fluxo de controle.
Cada construção estruturada tem um símbolo de grafo
correspondente.
SEQUENCE
IF
WHILE
UNTIL
CASE
Teste da caixa branca - caminhos
independentes

Qualquer caminho através do programa que introduza pelo
menos um novo conjunto de instruções de processamento
ou uma nova condição.
Grafo de Fluxo
Conjunto Básico para o grafo de fluxo
1
2,3
6
7
4,5
8
9
10
11
Caminho 1: 1-11
Caminho 2: 1-2-3-4-5-10-1-11
Caminho 3: 1-2-3-6-8-9-10-1-11
Caminho 4: 1-2-3-6-7-9-10-1-11
Teste da caixa branca - caminhos
independentes



É uma métrica de Software que proporciona uma medida
quantitativa da complexidade lógica de um programa.
Quando usado no contexto do método de teste do caminho básico,
o valor computado da complexidade ciclomática define o número
de caminhos independentes do conjunto básico de um programa
e oferece um limite máximo para o número de testes que deve ser
realizado para garantir que todas as instruções sejam executadas
pelo menos uma vez.
A complexidade ciclomática é computada numa das 3 formas:
1- Número de regiões do grafo de fluxo.
2- V(G) = (Número de Ramos) - (Número de nós) + 2
3- V(G) = (Número de Nós Predicativos) + 1
Teste da caixa branca - caminhos
independentes - Exemplo de complexidade
Ciclomática

Complexidade Ciclomática
Grafo de Fluxo
1
1- O Grafo de fluxo tem 4 regiões.
2,3
2- V(G) = 11ramos - 9 nós + 2 = 4
6
7
4,5
8
3- V(G) = 3 Nós predicativos + 1 = 4
A complexidade do grafo de fluxo é 4.
9
10
11
A complexidade ciclomática indica o
número de casos de teste que devem
ser projetados para garantir a cobertura
de todas as instruções de um programa
Exemplo completo - teste da caixa
Branca
Procedimento Maior (A:vetor; T:inteiro;
var MAX:inteiro);
Variáveis I,M inteiro
Início
1- M
A[ 1];
2- I
2;
3- enquanto I<= T faça
4- se A[I] > M
5então M
A[I];
6I
I + 1;
7senão I
I +1;
8- fim se
9- fim enquanto
10MAX
M;
fim do procedimento;
1- Grafo de fluxo
1,2
3
R1
7
4
R2
8
9
10
R3
5,6
Exemplo completo - teste da caixa
Branca - (cont.)
1,2
2. Determinar a complexidade ciclomática
3
1- Número de regiões no grafo = 3
2- V(G) = 9 ramos - 8 nós + 2 = 3
3- V(G) = 2 nós predicativos +1 = 3
==> A complexidade ciclomática é 3
3. Identificar os caminhos independentes
caminho 1: 1,2,3,10
caminho 2: 1,2,3,4,5,6,8,9,3
caminho 3: 1,2,3,4,7,8,9,3
R1
7
4
R2
8
9
10
R3
5,6
Exemplo completo - teste da caixa
Branca
4. Fazer Casos de Teste para cada caminho encontrado:
Casos de teste
Caminho 1: 1,2,3,10
Caminho 2: 1,2,3,4,5,6,8,9,3
Caminho 3: 1,2,3,4,7,8,9,3
Entrada
A=(1,3)
T =0
Saída Esperada
MAX =1
A = (1,3)
T=2
MAX = 3
A = (3,1)
T=2
MAX = 3
Exemplo 2- teste da caixa Branca
Lógica composta - E
1
1- Grafo de fluxo
2
3
10
12
11
13
4
5
6
8
Procedimento médio;
define variáveis;
1- i= 0; te=0;tv=o;s=0;
2- enquanto valor[i] <> E
3te <0
4- te = te +1
5- Se valor[i] >= min E
6valor[i] <= max
7tv= tv + 1;
8- fim se
9- fim enquanto
10- se tv >0
11- media = s/tv;
12- Senao media = -999;
13- Fim se
fim do procedimento;
9
7
SE a OU b então x senão y
a
b
y
x
x
Lógica composta - OU
Teste da Caixa Branca - exercícios
/* calc.c */
1.
main()
2.
{
3.
float num1, num2;
4.
char op;
5.
while (1) { /* sempre verdadeiro */
6.
printf(“Digite um numero, operador, numero\n”);
7.
scanf(“%f %c %f”, &num1, &op, &num2);
8.
if (op==`+`)
9.
printf(“ = %f,num1 + num2);
10.
Else
11.
If (op==´-´ )
12.
Printf(“ = %f, num1 - num2);
13.
Else
14.
If (op==’*’)
15.
Printf (“ = %f”, num1+ num2);
16.
Else
17.
If(op ==’/’)
18.
Printf(“ = %f”,num1/num2);
19.
Printf(“\n\n”);
20.
}
21.
}
Teste da Caixa Preta
Concentram-se nos requisitos funcionais do software.
O teste da caixa preta procura descobrir erros nas seguintes
categorias:
1- funções incorretas ou ausentes
2- erros de interface
3- erros nas estruturas de código
4- erros de desempenho
5- erros de inicialização ou término
Teste da Caixa Preta (Teste Funcional)
Input test data
I
Inputs causing
anomalous
behaviour
e
System
Output test results
Oe
Outputs which reveal
the presence of
defects
Particionamento de Equivalência




É um método de teste que divide o domínio de entrada de um
programa em classes de dados a partir das quais os casos de teste
podem ser derivados.
O particionamento de equivalencia procura definir um caso de teste
que descubra classes de erros, reduzindo assim o número total de
casos de teste que devem ser desenvolvidos.
O projeto de casos de teste para o particionamento de equivalencia
baseia-se numa avaliação de classes de equivalencia para uma
condição de entrada.
Uma classe de equivalencia representa um conjunto de estados
válidos ou inválidos para condições de entrada. Típicamente pode
ser um valor numérico, um intervalo de valores, um conjunto de
valores relacionados ou uma condição booleana.
Particionamento de Equivalência

As classes de equivalência podem ser definidas de acordo com as
seguintes diretrizes:
1- Se uma condição de entrada especificar um intervalo, uma classe de
equivalência e duas classes inválidas são definidas.
2- Se uma condição de entrada exigir um valor específico, uma classe de
equivalência válida e duas classes de equivalência inválidas são
definidas.
3- Se uma condição de entrada especificar um membro de uma conjunto,
uma classe de equivalência válida e uma classe de equivalência
inválida são definidas.
4- Se uma condição de entrada for booleana, uma classe de equivalência
válida e uma classe de equivalência inválida são definidas.
Equivalence partitioning
Invalid inputs
System
Outputs
Valid inputs
Particionamento de Equivalência


As entradas e saídas do sistema são particionadas em "conjuntos
de equivalencia".
EXEMPLO:
•
•

Se a entrada é um inteiro de 5 dígitos entre 10.000 e 99.999,
as classes de equivalencia são:
<10.000, entre 10.000 e 99.999 , > 99.999
Temos 3 conjuntos de equivalência:
Duas classes inválidas: valores < 10.000
valores > 99.999
Uma classe válida: valores >= 10.000 e <= 99.999
Procure fazer casos de teste para cada classe de equivalencia
Particionamento de Equivalencia
3
4
Less than 4
7
11
10
Between 4 and 10
More than 10
Number of input values
9999
10000
Less than 10000
Input values
50000
100000
99999
Between 10000 and 99999
More than 99999
Análise do Valor Limite




A análise do valor limite (BVA - Boundary Values Analysis) é uma
técnica de projetos de casos de teste que complementa o
particionamento de equivalência.
Em vez de selecionar qualquer elemento da classe de
equivalência, a BVA leva a seleção de casos de teste nas
"extremidades" da classe (por razões que não são completamente
claras, um número maior de erros tende a ocorrer nas fronteiras do
domínio de informação)
Em vez de se concentrar somente nas condições de entrada, a
BVA deriva casos de teste também no domínio de saída.
Para o exemplo anterior teríamos casos de teste adicionais com os
valores: 00000, 09999, 10000, 99999, 10001
Download

3 - Objetivo Sorocaba