garantia de qualidade · 2017. 5. 5. · garantia de qualidade (software quality assurance –sqa)...
TRANSCRIPT
![Page 1: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/1.jpg)
Garantia de Qualidade
Teste de Software
Profa Rosana Braga
Material produzido por docents do Labes e revisadopor Simone Souza
Disciplina: Engenharia de Software
ICMC/USP
![Page 2: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/2.jpg)
DEFINIÇÃO
CONSTRUÇÃO
MANUTENÇÃO
PRODUTO DE SOFTWARE
O Processo de Engenharia de Software
Entendimento Modificação Revalidação
Projeto Codificação Teste
Análise de SistemaPlanejamento do ProjetoEngenharia de Requisitos
• Gerenciamento de Configuração
• Aplicação de Métricas
• Acompanhamento e Controle do Projeto
• Gerenciamento de Risco
• Gerenciamento de Reutilização
• Atividades de SQA
• Documentação
Atividades de Apoio
Atividades de SQA
![Page 3: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/3.jpg)
Garantia de Qualidade(Software Quality Assurance – SQA)
Conjunto de atividades técnicas aplicadas
durante todo o processo de desenvolvimento.
Dentre as atividades de SQA estão as
atividades de verificação e validação de
software.
– minimizar a ocorrência de erros e riscos
associados.
• Detectar a presença de erros nos produtos de software.
![Page 4: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/4.jpg)
Verificação e Validação
Verificação
– Garantir consistência, completitude e corretitude
do produto em cada fase e entre fases
consecutivas do ciclo de vida do software.
• Verificar se os métodos e processos de desenvolvimento
foram adequadamente aplicados.
Estamos construindo certo o produto?
![Page 5: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/5.jpg)
Verificação e Validação
Validação
– Assegurar que o produto final corresponda
aos requisitos do usuário.
Estamos construindo o produto certo?
![Page 6: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/6.jpg)
Verificação e Validação
SQA: Atividades de V&V– Envolvem atividades de análise estática e de
análise dinâmica.
– Análise Estática• Revisões Técnicas Formais
– Inspeções
– Walkthrough
– Peer Review
– Análise Dinâmica• Simulações
• Testes
Atividades
Complementares
![Page 7: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/7.jpg)
O Processo de Engenharia de SoftwareAtividades Genéricas
DEFINIÇÃO
CONSTRUÇÃO
MANUTENÇÃO
SOFTWARE PRODUTO
Entendimento
Modificação
Revalidação
Projeto
Codificação
Teste
Análise de Sistema
Planejamento do Projeto
Engenharia de Requisitos
• Gerenciamento de Configuração
• Aplicação de Métricas
• Acompanhamento e Controle do Projeto
• Atividades de SQA
• Produção e
Preparação de
Documentos
• Gerenciamento de Risco
Atividades para
Garantir a Qualidade
TesteSQA: Teste
![Page 8: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/8.jpg)
Introdução
Alguém já testou algum programa ou
software?
Quais foram os maiores desafios?
![Page 9: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/9.jpg)
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 não documentados ou que mudam
rapidamente.
– 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 10: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/10.jpg)
Introdução
Por que existem defeitos nos sistemas?
Quais são as causas das falhas?
Como melhorar o processo de desenvolvimento e evitar falhas?
![Page 11: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/11.jpg)
Exemplo
Observe o exemplo a seguir:
int blech(int j) {
j = j - 1; // deveria ser j = j + 1
j = j / 30000;
return(j);
}
![Page 12: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/12.jpg)
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
![Page 13: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/13.jpg)
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);
}
Exemplo
![Page 14: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/14.jpg)
Nenhum dos casos de testes anteriores revelou o erro.
Somente quatro valores do intervalo de entrada válido revelam o erro:
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???
Exemplo
![Page 15: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/15.jpg)
Objetivo do Teste
Revelar a presença de defeito
Inexistência de saída errada
Software é de alta qualidade?
T é de baixa qualidade?
?D P
XT
![Page 16: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/16.jpg)
Exemplo: gerar casos de teste para
testar o programa TRI
O programa TRI 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 equilátero.
Condição: a soma de dois lados tem que se maior que o terceiro lado.
![Page 17: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/17.jpg)
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 equilá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 18: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/18.jpg)
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 19: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/19.jpg)
Exemplo
Questões baseadas em erros
encontrados em implementações do
programa TRI!!!
![Page 20: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/20.jpg)
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 21: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/21.jpg)
Teste de Software
Etapas de teste
Técnicas de teste
– Critérios de teste
Fases de teste
![Page 22: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/22.jpg)
Etapas de Teste
Planejamento.
– Desenvolvimento Plano de Testes.
Projeto de casos de teste.
– Seleção e aplicação de critérios.
Execução do programa.
Análise de resultados.
![Page 23: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/23.jpg)
Técnicas de Teste
Teste Funcional
Teste Estrutural
Teste Baseado em Defeitos
![Page 24: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/24.jpg)
Teste Funcional
Funcional (Caixa Preta)
– Os testes são baseados exclusivamente na especificação
do programa.
– Nenhum conhecimento de como o programa está
implementado é requerido.
– Não precisa ter o programa para derivar os testes
Principais critérios:
– Particionamento em classes de equivalência.
– Análise do valor limite.
![Page 25: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/25.jpg)
Exemplo: Teste Funcional
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 26: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/26.jpg)
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(4)
Não(5)
Sim(6)
Não(7)
Exemplo de Conjunto de Casos de Teste:
• T0 = {(a1,Válido), (2B3, Inválido),
(Z-12, Inválido), (A1b2C3d, Inválido), Ø}
t < 1
(3)
![Page 27: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/27.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
O conjunto T0 é suficiente para testar o programa?
• T0 = {(a1,Válido), (2B3, Inválido),
(Z-12, Inválido), (A1b2C3d, Inválido), Ø}
![Page 28: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/28.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Execução do caso de teste: (a1,Válido)
Alguns comandos
não foram
executados!
![Page 29: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/29.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Execução do caso de teste: (2B3, Inválido)
O comando em
/*06*/ não foi
executado pelos
casos de teste.
![Page 30: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/30.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Execução do caso de teste: (Z-12, Inválido)
![Page 31: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/31.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Todos os comandos
foram executados e as
saídas esperadas foram
obtidas!
![Page 32: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/32.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Pode-se afirmar que o
programa está correto?
![Page 33: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/33.jpg)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
Existe um defeito não
detectado!!!!!!!
![Page 34: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/34.jpg)
![Page 35: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/35.jpg)
Teste de Software
Não é possível garantir
que o software está
livre de defeitos!!!
– Permite aumentar a
confiança de que, para
os valores testados, o
programa está correto!
![Page 36: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/36.jpg)
Técnicas de Teste
Teste Funcional
Teste Estrutural
Teste Baseado em Erros
![Page 37: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/37.jpg)
Teste Estrutural
Estrutural (Caixa Branca)
– Os testes são baseados na estrutura interna do
programa, ou seja, na implementação do mesmo.
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.
![Page 38: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/38.jpg)
Exemplo: Teste Estrutural/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length, valid_id;
/* 01 */ length = 0;
/* 01 */ printf ("Digite identificador\n");
/* 01 */ printf ("seguido por <ENTER>: ");
/* 01 */ achar = fgetc (stdin);
/* 01 */ valid_id = valid_starter (achar);
/* 01 */ if (valid_id)
/* 02 */ length = 1;
/* 03 */ achar = fgetc (stdin);
/* 04 */ while (achar != '\n')
/* 05 */ {
/* 05 */ if (!(valid_follower (achar)))
/* 06 */ valid_id = 0;
/* 07 */ length++;
/* 07 */ achar = fgetc (stdin);
/* 07 */ }
/* 08 */ if (valid_id && (length >= 1) && (length < 6) )
/* 09 */ printf ("Valido\n");
/* 10 */ else
/* 10 */ printf ("Invalido\n");
/* 11 */ }
3
4
5
7
8
11
10 9
6
2
1
![Page 39: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/39.jpg)
Técnicas de Teste
Teste Funcional
Teste Estrutural
Teste Baseado em Defeitos
![Page 40: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/40.jpg)
Teste Baseado em Defeitos
Baseado nos defeitos mais comuns
cometidos pelos programadores.
Critério Análise de Mutantes
Mutantes
P1
Pn
P3P2
P4
Operadoresde MutaçãoP
Programaem Teste
![Page 41: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/41.jpg)
Exemplo: Teste Baseado em
Defeitos
main () {
int valor, num, fat;
fat= 1;
scanf("%d",&valor);
num = valor;
if (num >= 0) {
while (num > 1) {
fat = fat * num;
num--; }
printf("%d\n",fat); }
else
printf("Erro!\n"); }
main () {
int valor, num, fat;
fat= 1;
scanf("%d",&valor);
num = valor;
if (num <= 0) {
while (num > 1) {
fat = fat * num;
num--; }
printf("%d\n",fat); }
else
printf("Erro!\n"); }
Programa Fatorial Mutante Morto
![Page 42: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/42.jpg)
main () {
int valor, num, fat;
fat= 1;
scanf("%d",&valor);
num = valor;
if (num >= 0) {
while (num > 1) {
fat = fat * num;
num--; }
printf("%d\n",fat); }
else
printf("Erro!\n"); }
main () {
int valor, num, fat;
fat= 1;
scanf("%d",&valor);
num = valor;
if (valor >= 0) {
while (num > 1) {
fat = fat * num;
num--; }
printf("%d\n",fat); }
else
printf("Erro!\n"); }
Programa Fatorial Mutante Equivalente
Exemplo: Teste Baseado em
Defeitos
![Page 43: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/43.jpg)
Teste Baseado em Defeitos
Teste de mutação
– Um dos melhores critérios de teste
– Alto custo de aplicação
– Necessidade de ferramenta de apoio
– Necessidade de estratégias de teste
![Page 44: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/44.jpg)
Fases do Teste
Teste de Unidade
Teste de Integração
Teste de Sistema
![Page 45: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/45.jpg)
Teste de Unidade
Cada unidade do programa é
explorado separadamente... Identificar erros de lógica e de implementação.
Critérios de teste utilizados:
– Critérios de Fluxo de Controle
– Critérios de Fluxo de Dados
– Critério Análise de Mutantes
![Page 46: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/46.jpg)
Fases do Teste
Teste de Unidade
Teste de Integração
Teste de Sistema
![Page 47: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/47.jpg)
Teste de Integração
A
B C
ED
• Testar a comunicação entre as
unidades funcionais do sistema
• Formas de comunicação:
• parâmetros de entrada.
• Retorno por meio de parâmetros de
entrada (passagem por referência).
• Variáveis globais.
• Comandos return.
![Page 48: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/48.jpg)
Teste de Integração
driver
stubs
Unidade A
driver
stubs
Unidade B
driver
stubs
Unidade C
Teste de Unidade Teste de Integração
Unidade A
Unidade B Unidade C
Conexão A-B Conexão A-C
![Page 49: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/49.jpg)
Teste de Integração
A
B C
ED
• Como testar a conexão entre A-B:
• Testar pontos em que A chama B
• Testar pontos dentro de B que usam
dados enviados por A (relacionados com
as variáveis de comunicação).
![Page 50: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/50.jpg)
Teste de Integração
int valid_s (char ch) {
/*1*/ if (((ch >= 'A') && (ch < 'Z')) || ((ch >= 'a') && (ch <= 'z')))
/*2*/ return (1);
/*3*/ else return (0); }
int valid_f (char ch) {
/*1*/ if (((ch >= 'A') && (ch <= 'Z')) || ((ch >= 'a') && (ch <= 'z'))
|| ((ch > '0') && (ch <= '9')))
/*2*/ return (1);
/*3*/ else return (0); }
![Page 51: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/51.jpg)
Fases do Teste
Teste de Unidade
Teste de Integração
Teste de Sistema
![Page 52: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/52.jpg)
Teste de Sistema
Após integrar (e testar!) todos os
componentes do software...– O software deve ser capaz de funcionar
apropriadamente no ambiente para o qual foi
projetado.
Como garantir isso?– O software irá interagir com outros elementos
(outros sistemas, SO, BD, hardware...)
![Page 53: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/53.jpg)
Teste de Sistema
Teste de Recuperação
– Garantir que o sistema é
tolerante a falhas.
– Força o software a falhar e
verifica se a recuperação é
adequadamente realizada.
![Page 54: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/54.jpg)
Teste de Sistema
Teste de Segurança
– Verifica se os mecanismos de proteção
de um sistema estão de fato
protegendo-o.
– O testador tenta de todas as maneiras
invadir o sistema.
– Com o tempo e recursos suficientes,
um bom teste de segurança vai acabar
invadindo o sistema.
• Cabe ao projetista do software tornar o
custo da invasão maior que o valor da
informação obtida!
![Page 55: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/55.jpg)
Teste de Sistema
Teste de Estresse
– Projetados para verificar o
funcionamento do software frente
a situações anormais.
• Quanto é possível “judiar” do sistema
até que ele falhe?
– Testa o sistema com volume e
frequência anormal de recursos
• Ex: Quantos usuários conectados um
sistema aguenta??
![Page 56: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/56.jpg)
Teste de Sistema
Teste de Desempenho
– Ideal para sistemas de tempo
real.
– Verifica se o sistema responde
as requisições feitas de acordo
com o tempo esperado
– Identificar os pontos de gargalo
do sistema.
![Page 57: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/57.jpg)
Documentação dos Testes
– Os testes realizados devem ser
documentados!
• Plano de testes
• Projeto de casos de teste
• Relatórios da execução dos testes
– Norma IEEE Std 829-1998.
![Page 58: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/58.jpg)
Ocorre como consequência de um teste bem-sucedido (que encontrou um erro!).
A Atividade de Depuração
casos de teste
depuração
Execução dos casos de teste
Resultado Incorreto!
Causas suspeitas
Teste adicionais
Causas identificadas
correções
Teste de regressão
![Page 59: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/59.jpg)
Pode apresentar dois resultados:
– A causa será encontrada, corrigida e
removida.
– A causa não será descoberta: pode-se
suspeitar de uma causa, projetar um caso
de teste e trabalhar interativamente para
corrigir o erro.
A Atividade de Depuração
![Page 60: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/60.jpg)
A depuração é uma das partes mais
frustrantes da programação.
– Aborrecimento por cometer enganos.
Elevada ansiedade e pouca disposição para
aceitar a possibilidade de erros.
Considerações Psicológicas
![Page 61: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/61.jpg)
Objetivo: descobrir e corrigir a causa de um erro.
É atingido combinando avaliação sistemática,
intuição e sorte!
Três categorias:
– Força bruta ( “printf()” ).
– Rastreamento.
– Eliminação da causa.
Abordagens à Depuração
![Page 62: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/62.jpg)
A correção do bug pode introduzir outros
defeitos.
Perguntas que devem ser feitas:
– A causa do bug é reproduzida em outra parte do
programa? (padrão de lógica errôneo).
– Qual “bug seguinte” poderia ser introduzido pelo
reparo que estou prestes a fazer?
– O que poderíamos ter feito para eliminar este bug
desde o princípio?
Correção do bug
![Page 63: Garantia de Qualidade · 2017. 5. 5. · Garantia de Qualidade (Software Quality Assurance –SQA) Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento](https://reader036.vdocuments.com.br/reader036/viewer/2022081622/613718c60ad5d20676486641/html5/thumbnails/63.jpg)
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.