Teste De Software Aula

28
Teste de Software SCE307 - Engenharia de Software II Simone do Rocio Senger de Souza

description

Aula de Eng. De Soft. II

Transcript of Teste De Software Aula

Page 1: Teste De Software Aula

Teste de Software

SCE307 - Engenharia de Software II

Simone do Rocio Senger de Souza

Page 2: Teste De Software Aula

Material de Apoio

Maldonado, J.C. et al. Introdução ao Teste de Software, Notas Didáticas do ICMC, n. 65, 2004.

Delamaro, M.E. et al. Introdução ao Teste de Software, 1a Ed, Elsevier, 2007.

Page 3: Teste De Software Aula

Introdução

Alguém já testou algum programa ou software?

Quais foram os maiores desafios?

Page 4: Teste De Software Aula

Introdução

Alguns problemas comuns...– Não há tempo suficiente para o teste– Muitas combinações de entrada para serem exercitadas– Dificuldade em determinar os resultados esperados para cada

caso de teste– Requisitos do software inexistentes ou que mudam rapidamente– Não há tempo para o teste exaustivo– Não há treinamento no processo de teste– Falta de ferramenta de apoio– Gerentes que desconhecem teste ou que não se preocupam

com qualidade

Page 5: Teste De Software Aula

Introdução

Por que existem falhas nos sistemas?

Quais são as causas das falhas?

Como melhorar o processo de desenvolvimento e evitar falhas?

Page 6: Teste De Software Aula

ARIANE 5

Em 1996, o veículo espacial Ariane 5 saiu do curso e explodiu segundos após o seu lançamento.

Levou uma década de desenvolvimento e custou 7 bilhões de dólares para a Agência Espacial Européia.

Causa do acidente: reutilização de componentes do veículo Ariane 4.

Page 7: Teste De Software Aula

ARIANE 5

Motivo da falha:– Erro de software no cálculo da

velocidade horizontal do foguete.• A variável que armazenava este valor tinha

64 bits (floating point) e foi erroneamente modificada para 16 bits (signed integer).

• O valor era maior que 32.767 (maior inteiro), gerando uma falha de conversão!!!

Page 8: Teste De Software Aula

O Foguete Espacial Challenger

A explosão a bordo do Challenger é uma das falhas mais notáveis da tecnologia moderna.– Em 1986, após 73 segundos do seu

lançamento, uma explosão envolveu o foguete matando 7 astronautas.

– As investigações concluíram que o problema estava em algumas juntas do motor que não estavam projetadas para a temperatura e pressão ocorrida.

Page 9: Teste De Software Aula

Motivo da falha:– A especificação da pressão não estava

de acordo com os requisitos do sistema.

– Os testes realizados foram inapropriados para detectar a falha.

O Foguete Espacial Challenger

Page 10: Teste De Software Aula

Introdução

Por que falhas desse gênero ainda ocorrem?

Qual o impacto das falhas nos softwares?– É possível garantir a qualidade do

software?

Page 11: Teste De Software Aula

Exemplo

Observe o exemplo a seguir:

Considerando o tipo inteiro com 16 bits (2 bytes), o menor valor possível seria:- 32.768 e o maior seria 32.767, resultando em 65.536 valores

diferentes possíveis

int blech(int j) { j = j - 1; // deveria ser j = j + 1 j = j / 30000; return(j);}

Page 12: Teste De Software Aula

Exemplo

Observe o exemplo a seguir:

Haverá tempo suficiente para se criar 65.536 casos de teste?– E para programas maiores? Quantos casos de teste serão

necessários?

int blech(int j) { j = j - 1; // deveria ser j = j + 1 j = j / 30000; return(j);}

Page 13: Teste De Software Aula

Exemplo

Quais valores escolher ?

Entrada Saída esperada

Saída obtida

1 0 0

42 0 0

32000 1 1

-32000 -1 -1

Não revelam o erro !

int blech(int j) { j = j - 1; // deveria ser j = j + 1 j = j / 30000; return(j);}

Page 14: Teste De Software Aula

Nenhum dos casos de testes anteriores revelou o erro. Somente quatro valores do intervalo de entrada válido revelam o erro:

Exemplo

Entrada Saída esperada

Saída obtida

-30000 0 -1

-29999 0 -1

30000 1 0

29999 1 0

int blech(int j) { j = j - 1; // deveria ser j = j + 1 j = j / 30000; return(j);}

Qual a chance de tais valores serem selecionados???

Page 15: Teste De Software Aula

Teste Exaustivo

Exemplo:– Para testar um programa que calcula xy

– Domínio de entrada (x,y) inteiros• 2n * 2n (n = n. de bits)• 32 bits 264 = 18446744073709551616

valores possíveis• 1 milissegundos = 5.849.424 séculos!!

Page 16: Teste De Software Aula

Objetivo do Teste

Revelar a presença de erros

Inexistência de erroSoftware é de alta qualidade?

T é de baixa qualidade?

?D P

XT

Page 17: Teste De Software Aula

Exemplo

O programa lê três valores inteiros que representam os lados de um triângulo. A partir dos valores, o programa informa se os lados formam um triângulo isósceles, escaleno ou eqüilátero

– Condição: a soma de 2 lados tem que se maior que o 3o lado

Page 18: Teste De Software Aula

Exemplo

1. Existe c.t. para triângulo escaleno válido?2. Existe c.t. para triângulo isósceles válido?3. Existe c.t. para triângulo eqüilátero válido?4. Existem pelo menos 3 c.t. para isósceles válido

contendo a permutação dos mesmos valores?5. Existe c.t. com um valor zero?6. Existe c.t. com um valor negativo?7. Existe c.t. em que a soma de 2 lados é igual ao

terceiro lado?8. Para o item 7, tem um c.t. para cada permutação de

valores?

Page 19: Teste De Software Aula

Exemplo

9. Existe c.t. em que a soma de 2 lados é menor que o terceiro lado?

10. Para o item 9, tem um c.t. para cada permutação de valores?

11. Existe c.t. para os 3 valores iguais a zero?

12. Existe c.t. com valores não inteiros?

13. Existe c.t. com número de valores errados, por exemplo, 2 valores ao invés de 3?

14. Para cada c.t. você especificou a saída esperada para a entrada projetada?

Page 20: Teste De Software Aula

Exemplo:

Questões baseadas em erros encontrados em implementações deste programa!!!

Page 21: Teste De Software Aula

Teste de Software

A qualidade da atividade de teste está fortemente ligada à qualidade do conjunto de casos de teste

– Como selecionar casos de teste?

Page 22: Teste De Software Aula
Page 23: Teste De Software Aula

Técnicas de Teste

Teste Funcional Teste Estrutural Teste Baseado em Erros

Page 24: Teste De Software Aula

Exemplo: Programa Identifier

O programa deve determinar se um identificador é válido ou não em Silly Pascal. Um identificador válido deve começar com uma letra e conter apenas letras ou dígitos. Além disso, deve ter no mínimo 1 caractere e no máximo 6 caracteres de comprimento.

– Exemplo:abc12 (válido); cont*1 (inválido);

1soma (inválido);a123456 (inválido)

Page 25: Teste De Software Aula

Exemplo: Teste Funcional

Tamanho t do identificador

Condições de Entrada Classes Válidas Classes Inválidas

1 t 6(1)

Primeiro caractere c é uma letra

Só contém caracteres válidos

t 6(2)

Sim(3)

Não(4)

Sim(5)

Não(6)

Exemplo de Conjunto de Casos de Teste:• T0 = {(a1,Válido), (2B3, Inválido),

(Z-12, Inválido), (A1b2C3d, Inválido)}

Page 26: Teste De Software Aula

Alguns Critérios de Teste Estrutural

Critérios de Fluxo de Controle1. Testar todos os comandos

2. Testar todos desvios condicionais

3. Testar todos os caminhos básicos Critérios de Fluxo de Dados

1. Testar todo uso a partir de uma definição de variável

Page 27: Teste De Software Aula

Exemplo: Teste Estruturalint main() {/*1*/ int p=1, divisor, cont, num; /*1*/ printf("Digite um inteiro positivo: ");/*1*/ scanf("%d",&num);/*2*/ while (p <= num)/*3*/ {/*3*/ cont = 0;/*4*/ for (divisor=1; divisor <= p; divisor ++)/*5*/ {/*5*/ if (p % divisor == 0) /*6*/ cont++; /*7*/ }/*8*/ printf("\nO inteiro %d ",p);/*8*/ if (cont == 2) /*9*/ printf("e' primo\n");/*10*/ else/*10*/ printf("nao e' primo\n");/*11*/ p++;/*11*/ }/*12*/ return 0;/*12*/ }

Page 28: Teste De Software Aula

Exercício: Teste Estrutural