SlideShare uma empresa Scribd logo
Teste de Software SCE307 - Engenharia de Software II Simone do Rocio Senger de Souza
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.
Introdução Alguém já testou algum programa ou software? Quais foram os maiores desafios?
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
Introdução Por que existem falhas nos sistemas? Quais são as causas das falhas? Como melhorar o processo de desenvolvimento e evitar falhas?
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.
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!!!
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.
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
Introdução Por que falhas desse gênero ainda ocorrem? Qual o impacto das falhas nos softwares? É possível garantir a qualidade do software?
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); }
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); }
Exemplo Quais valores escolher ?   Não revelam o erro ! int blech(int j) {   j = j - 1;  // deveria ser j = j + 1   j = j / 30000;   return(j); } -1 -1 -32000 1 1 32000 0 0 42 0 0 1 Saída obtida Saída esperada Entrada
Nenhum dos casos de testes anteriores revelou o erro . Somente quatro valores do intervalo de entrada válido revelam o erro: Exemplo 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??? 0 1 29999 0 1 30000 -1 0 -29999 -1 0 -30000 Saída obtida Saída esperada Entrada
Teste Exaustivo Exemplo: Para testar um programa que calcula x y Domínio de entrada (x,y) inteiros 2 n  * 2 n  (n = n. de bits) 32 bits   2 64  = 18446744073709551616 valores possíveis 1 milissegundos = 5.849.424 séculos!!
Objetivo do Teste Revelar a presença de erros Inexistência de erro Software é de alta qualidade? T é de baixa qualidade? ? D P X T
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 3 o   lado
Exemplo Existe c.t. para triângulo escaleno válido? Existe c.t. para triângulo isósceles válido? Existe c.t. para triângulo eqüilátero válido? Existem pelo menos 3 c.t. para isósceles válido contendo a permutação dos mesmos valores? Existe c.t. com um valor zero? Existe c.t. com um valor negativo? Existe c.t. em que a soma de 2 lados é igual ao terceiro lado? Para o item 7, tem um c.t. para cada permutação de valores?
Exemplo Existe c.t. em que a soma de 2 lados é menor que o terceiro lado? Para o item 9, tem um c.t. para cada permutação de valores? Existe c.t. para os 3 valores iguais a zero? Existe c.t. com valores não inteiros? Existe c.t. com número de valores errados, por exemplo, 2 valores ao invés de 3? Para cada c.t. você especificou a saída esperada para a entrada projetada?
Exemplo: Questões baseadas em erros encontrados em implementações deste programa!!!
Teste de Software A qualidade da atividade de teste está fortemente ligada à qualidade do conjunto de casos de teste Como selecionar casos de teste?
 
Técnicas de Teste Teste Funcional Teste Estrutural Teste Baseado em Erros
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)
Exemplo: Teste Funcional Exemplo de Conjunto de Casos de Teste: T 0  =  {(a1,Válido), (2B3, Inválido),    (Z-12, Inválido), (A1b2C3d, Inválido)} 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)
Alguns Critérios de Teste Estrutural Critérios de Fluxo de Controle Testar todos os comandos Testar todos desvios condicionais Testar todos os caminhos básicos Critérios de Fluxo de Dados Testar todo uso a partir de uma definição de variável
Exemplo: Teste Estrutural int main() { /*1*/  int p=1, divisor, cont, num;  /*1*/  printf(&quot;Digite um inteiro positivo: &quot;); /*1*/  scanf(&quot;%d&quot;,&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(&quot;\nO inteiro %d &quot;,p); /*8*/    if (cont == 2)  /*9*/   printf(&quot;e' primo\n&quot;); /*10*/    else /*10*/   printf(&quot;nao e' primo\n&quot;); /*11*/    p++; /*11*/  } /*12*/  return 0; /*12*/ }
Exercício: Teste Estrutural

Mais conteúdo relacionado

DOC
01 avaliação de conhecimento de trabalho em altura rev 02
PPT
Testes de Sofware
PDF
UnP Eng. Software - Aula 28
PDF
algoritmo construção
PPTX
Estrutura de decisão switch case
PPTX
Estrutura de decisão switch case
PDF
Teste de Mutação
01 avaliação de conhecimento de trabalho em altura rev 02
Testes de Sofware
UnP Eng. Software - Aula 28
algoritmo construção
Estrutura de decisão switch case
Estrutura de decisão switch case
Teste de Mutação

Mais procurados (20)

PPT
Algoritmos Aula 06
PPT
Algoritmo 04 - Estruturas de decisão
PPTX
Tratamento de exceções
PPT
Introducao logica
PPTX
JAVA - Controle de programa
PDF
Técnicas de modelagem de teste (parte 1)
PDF
Validação e Testes de Software - MOD2
PPTX
Tratamento de exceções em Java
PPTX
Aula 3 técnicas de teste de software1
PPT
Canais Síncronos
PDF
Técnicas de modelagem de teste (parte 2)
ODP
Java 13 Excecoes
ODP
6 excecoes
PPTX
Variaveis
PDF
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
PDF
Tratamento de exceções em Java
PPTX
PPTX
PPTX
Excecoes em Java
PPT
Tratamento de exceções java
Algoritmos Aula 06
Algoritmo 04 - Estruturas de decisão
Tratamento de exceções
Introducao logica
JAVA - Controle de programa
Técnicas de modelagem de teste (parte 1)
Validação e Testes de Software - MOD2
Tratamento de exceções em Java
Aula 3 técnicas de teste de software1
Canais Síncronos
Técnicas de modelagem de teste (parte 2)
Java 13 Excecoes
6 excecoes
Variaveis
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Tratamento de exceções em Java
Excecoes em Java
Tratamento de exceções java
Anúncio

Destaque (20)

PDF
Pratica 1 LabBD
PDF
Aula Marketing
PPT
Teste De Software Aula
PDF
Vis Infovis
PDF
Rendering
ODP
Programa CG tosco
PDF
Aula Empreendedores
PDF
Teoria da Computacao
PPTX
Aula 5 de Arquitetura de Computadores
PDF
Teoria da Computacao Cap 2
PDF
Teoria da Computacao Cap 1
PPTX
Algoritmos - Arquivos Parte 2
PPTX
Aula 6 de Arquitetura de Computadores
PPT
Confianca Noemi
PPTX
Aula 4 de Arquitetura de Computadores
PDF
Modelos de Iluminacao
PPT
Teste Regressão
PDF
Manual laser htm compact
PPTX
Laser Fisioterápico
PDF
Testes Funcionais - Unidade IV
Pratica 1 LabBD
Aula Marketing
Teste De Software Aula
Vis Infovis
Rendering
Programa CG tosco
Aula Empreendedores
Teoria da Computacao
Aula 5 de Arquitetura de Computadores
Teoria da Computacao Cap 2
Teoria da Computacao Cap 1
Algoritmos - Arquivos Parte 2
Aula 6 de Arquitetura de Computadores
Confianca Noemi
Aula 4 de Arquitetura de Computadores
Modelos de Iluminacao
Teste Regressão
Manual laser htm compact
Laser Fisioterápico
Testes Funcionais - Unidade IV
Anúncio

Semelhante a Aula18 Teste Software (20)

PDF
Aula18_V&VTesteSoftware.pdf
PDF
Introdução a testes de sofwtare
PPTX
Aula sobre Verificação, validação de Teste de software
PDF
Livro Introdução ao Teste de Software.pdf
PPTX
Fundamentos de testes de Software
PDF
Aula07_TesteSoftware_Parte1_semResposta.pdf
PDF
Aula09_TesteSoftware_Parte1_apremdeeghku
PDF
Aula - Teste de Software
PDF
Verificação e Validação
PDF
Testes de Software & Ferramentas de Testes
PDF
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
PPTX
Testes de Software - Módulo 2
PPTX
Modulo 2
PPTX
Teste de Software
PPT
Testes De Software - Uma Visão Geral
PDF
Atividades de Teste e Cobertura de Código em Java
PPTX
Eng de testes
PDF
Introdução a Programação Orientada a testes
PPT
Teste de Software - Bluesoft Labs
Aula18_V&VTesteSoftware.pdf
Introdução a testes de sofwtare
Aula sobre Verificação, validação de Teste de software
Livro Introdução ao Teste de Software.pdf
Fundamentos de testes de Software
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula09_TesteSoftware_Parte1_apremdeeghku
Aula - Teste de Software
Verificação e Validação
Testes de Software & Ferramentas de Testes
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Testes de Software - Módulo 2
Modulo 2
Teste de Software
Testes De Software - Uma Visão Geral
Atividades de Teste e Cobertura de Código em Java
Eng de testes
Introdução a Programação Orientada a testes
Teste de Software - Bluesoft Labs

Aula18 Teste Software

  • 1. Teste de Software SCE307 - Engenharia de Software II Simone do Rocio Senger de Souza
  • 2. 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.
  • 3. Introdução Alguém já testou algum programa ou software? Quais foram os maiores desafios?
  • 4. 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
  • 5. Introdução Por que existem falhas nos sistemas? Quais são as causas das falhas? Como melhorar o processo de desenvolvimento e evitar falhas?
  • 6. 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.
  • 7. 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!!!
  • 8. 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.
  • 9. 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
  • 10. Introdução Por que falhas desse gênero ainda ocorrem? Qual o impacto das falhas nos softwares? É possível garantir a qualidade do software?
  • 11. 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); }
  • 12. 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); }
  • 13. Exemplo Quais valores escolher ? Não revelam o erro ! int blech(int j) { j = j - 1; // deveria ser j = j + 1 j = j / 30000; return(j); } -1 -1 -32000 1 1 32000 0 0 42 0 0 1 Saída obtida Saída esperada Entrada
  • 14. Nenhum dos casos de testes anteriores revelou o erro . Somente quatro valores do intervalo de entrada válido revelam o erro: Exemplo 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??? 0 1 29999 0 1 30000 -1 0 -29999 -1 0 -30000 Saída obtida Saída esperada Entrada
  • 15. Teste Exaustivo Exemplo: Para testar um programa que calcula x y Domínio de entrada (x,y) inteiros 2 n * 2 n (n = n. de bits) 32 bits  2 64 = 18446744073709551616 valores possíveis 1 milissegundos = 5.849.424 séculos!!
  • 16. Objetivo do Teste Revelar a presença de erros Inexistência de erro Software é de alta qualidade? T é de baixa qualidade? ? D P X T
  • 17. 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 3 o lado
  • 18. Exemplo Existe c.t. para triângulo escaleno válido? Existe c.t. para triângulo isósceles válido? Existe c.t. para triângulo eqüilátero válido? Existem pelo menos 3 c.t. para isósceles válido contendo a permutação dos mesmos valores? Existe c.t. com um valor zero? Existe c.t. com um valor negativo? Existe c.t. em que a soma de 2 lados é igual ao terceiro lado? Para o item 7, tem um c.t. para cada permutação de valores?
  • 19. Exemplo Existe c.t. em que a soma de 2 lados é menor que o terceiro lado? Para o item 9, tem um c.t. para cada permutação de valores? Existe c.t. para os 3 valores iguais a zero? Existe c.t. com valores não inteiros? Existe c.t. com número de valores errados, por exemplo, 2 valores ao invés de 3? Para cada c.t. você especificou a saída esperada para a entrada projetada?
  • 20. Exemplo: Questões baseadas em erros encontrados em implementações deste programa!!!
  • 21. Teste de Software A qualidade da atividade de teste está fortemente ligada à qualidade do conjunto de casos de teste Como selecionar casos de teste?
  • 22.  
  • 23. Técnicas de Teste Teste Funcional Teste Estrutural Teste Baseado em Erros
  • 24. 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)
  • 25. Exemplo: Teste Funcional Exemplo de Conjunto de Casos de Teste: T 0 = {(a1,Válido), (2B3, Inválido), (Z-12, Inválido), (A1b2C3d, Inválido)} 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)
  • 26. Alguns Critérios de Teste Estrutural Critérios de Fluxo de Controle Testar todos os comandos Testar todos desvios condicionais Testar todos os caminhos básicos Critérios de Fluxo de Dados Testar todo uso a partir de uma definição de variável
  • 27. Exemplo: Teste Estrutural int main() { /*1*/ int p=1, divisor, cont, num; /*1*/ printf(&quot;Digite um inteiro positivo: &quot;); /*1*/ scanf(&quot;%d&quot;,&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(&quot;\nO inteiro %d &quot;,p); /*8*/ if (cont == 2) /*9*/ printf(&quot;e' primo\n&quot;); /*10*/ else /*10*/ printf(&quot;nao e' primo\n&quot;); /*11*/ p++; /*11*/ } /*12*/ return 0; /*12*/ }