Verificação e Validação

126 visualizações

Publicada em

Verificação e Validação de Software

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
126
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Verificação e Validação

  1. 1. Prof. Marcelo H. Yamaguti (1) Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Prof. Marcelo H. Yamaguti Introdução à Engenharia de Software DESENVOLVIMENTO DE SOFTWARE Verificação e Validação
  2. 2. PUCRS - FACIN Prof. Marcelo H. Yamaguti (2) Referências • Estude para aprofundamento no conteúdo: – SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. São Paulo: Pearson, 2011. – Capítulo 8 – PFLEEGER, Shari Lawrence. Engenharia de Software: teoria e prática. 2ª ed. São Paulo: Prentice-Hall, 2004. - Capítulos 8 e 9 – IEEE. Guide to the Software Engineering Body of Knowledge. SWEBOK. Version 3. IEEE Computer Society. 2014. – Chapter 4 Introdução à Engenharia de Software
  3. 3. PUCRS - FACIN Prof. Marcelo H. Yamaguti (3) Teste • Teste: – Técnica de avaliação da correção do software. – E. Dijkstra: “Os testes podem mostrar apenas a presença de erros, não a sua ausência”. Implementação Introdução à Engenharia de Software Software implementado Teste Software testado Defeitos encontrados
  4. 4. PUCRS - FACIN Prof. Marcelo H. Yamaguti (4) Conceitos • Verificação e Validação: – Verificação: avalia se software atende aos requisitos definidos (“Estamos construindo o produto da maneira correta?”). – Validação: avalia se o software atende às expectativas do cliente (“Estamos construindo o produto certo?”) • Erro, Defeito, Falha: – Erro: é o resultado de um engano humano. Ex.: interpretação incorreta de um requisito, programação com uso de tipo de dado incorreto. – Defeito (bug): é a inclusão do erro no software. Ex.: programação de lógica incorreta, tipo de variável incorreto. – Falha: é a execução anormal do software devido aos defeitos. Ex.: software não cumpre os requisitos definidos, software para a sua execução anormalmente (“fatal error”) ou trava (“entra em loop”, “pendura”). Introdução à Engenharia de Software
  5. 5. PUCRS - FACIN Prof. Marcelo H. Yamaguti (5) Conceitos • Teste, Depuração, Manutenção corretiva: – Teste: atividade de avaliar a correção do software em busca de falhas. – Depuração (debugging)*: atividade de localizar o defeito no software. – Manutenção corretiva: atividade de remover o defeito do software. • Curiosidade: conta-se que o termo “bug” (inseto) deve-se ao fato de que um programa no computador Mark II (a relés) parou de funcionar e descobriu-se que a causa era um inseto que impedia o fechamento de um relé. Assim que o inseto foi retirado, o programa voltou a funcionar... Introdução à Engenharia de Software
  6. 6. PUCRS - FACIN Prof. Marcelo H. Yamaguti (6) “Debug” • Bug encontrado no Mark II: Introdução à Engenharia de Software
  7. 7. PUCRS - FACIN Prof. Marcelo H. Yamaguti (7) Processo de teste • Exemplo de processo de teste de software: Introdução à Engenharia de Software Adaptado de Sommerville, 2011.
  8. 8. PUCRS - FACIN Prof. Marcelo H. Yamaguti (8)Engenharia de Software Níveis de teste de software • Níveis de teste: – Teste de unidade: módulos do sistema. – Teste de integração: inter-relacionamentos entre os módulos. – Teste de sistema: sistema completo.
  9. 9. PUCRS - FACIN Prof. Marcelo H. Yamaguti (9)Engenharia de Software Níveis de teste de software • Teste de unidade: – É executado em nível de módulo do programa. – Cada módulo (função, sub-rotina, classe) é testado como uma unidade independente. – Metas: • verificar a execução de cada módulo • percorrer os caminhos lógicos • verificar conjuntos de dados (válidos e inválidos)
  10. 10. PUCRS - FACIN Prof. Marcelo H. Yamaguti (10)Engenharia de Software Níveis de teste de software • Teste de unidade: – Problema: Um teste exaustivo pode possuir um custo muito elevado. Por exemplo: suponha um módulo que trabalhe com dois parâmetros: um número inteiro qualquer e outro real apenas positivo. Desta forma um teste exaustivo deve prever todas as combinações possíveis, supondo que sejam possíveis 65534 valores inteiros e 1,7x1038, o número de combinações possíveis seria em torno de 1,11x1043, se cada teste desde módulo levasse apenas um nanosegundo (10-9s) - um bilionésimo de segundo - o teste levaria apenas 353.000.000.000.000.000.000.000.000 (ou 3,53 x 1026 ) anos, para apenas um módulo!
  11. 11. PUCRS - FACIN Prof. Marcelo H. Yamaguti (11)Engenharia de Software Níveis de teste de software • Teste de integração: – Verifica a correção da comunicação entre módulos. – Metas: • verificar se cada módulo funciona adequadamente dentro da estrutura de controle. • checar a interface entre os módulos. – Diretrizes principais: • Abordagem top-down para estrutura de controle e correção das funções de alto nível. • Abordagem bottom-up para teste de módulos que possuem interface ou lógica complexa.
  12. 12. PUCRS - FACIN Prof. Marcelo H. Yamaguti (12)Engenharia de Software Níveis de teste de software • Teste de integração top-down: – funções e módulos de alto nível são testados primeiro. – requer stubs ou módulos fantasmas que são chamados pelos módulos em teste. Problema: os módulos stub podem ser codificados com erro! Módulo stub Módulo em teste Módulo stub
  13. 13. PUCRS - FACIN Prof. Marcelo H. Yamaguti (13)Engenharia de Software Níveis de teste de software • Teste de integração bottom-up: – módulos de nível mais baixo são integrados e testados primeiros. – requer skeletons ou acionadores (módulos que chamam os módulos em teste). Problema: o módulo acionador pode ser codificado com erro! Módulo em teste Módulo acionador Módulo em teste
  14. 14. PUCRS - FACIN Prof. Marcelo H. Yamaguti (14) Níveis de teste de software • Teste de sistema: – Etapas de teste de sistema: Introdução à Engenharia de Software Adaptado de Pfleeger, 2004.
  15. 15. PUCRS - FACIN Prof. Marcelo H. Yamaguti (15)Engenharia de Software Teste de sistema • Teste funcional: – Avaliar o sistema completo visando verificar erros na implementação da especificação. – Diretrizes: • requisitos e especificações funcionais devem ser usados para construir os casos de teste. • testar o sistema em três etapas: 1) casos normais ou ideais. 2) casos extremos: limites de valores amplo, volume grande de valores. 3) exceções: valores inválidos.
  16. 16. PUCRS - FACIN Prof. Marcelo H. Yamaguti (16) Teste de sistema • Teste de desempenho: – Avaliação do software conforme outros requisitos solicitados. – Exemplos de teste de desempenho: • Stress • Recuperação • Regressão • Usabilidade • ... Introdução à Engenharia de Software
  17. 17. PUCRS - FACIN Prof. Marcelo H. Yamaguti (17)Engenharia de Software Teste de sistema • Teste de regressão: – Testar de na nova versão, as funcionalidades anteriores continuam corretas. – A cada nova funcionalidade (ou módulo) verifica-se o efeito nos anteriores. – Problema: o número de testes cresce aritmeticamente. A B A B C A B C D ...
  18. 18. PUCRS - FACIN Prof. Marcelo H. Yamaguti (18)Engenharia de Software Teste de sistema • Teste de aceitação: – Teste pelos (ou representante dos) clientes ou usuários em ambiente de homologação. – Foco em validação. – É um teste da satisfação do usuário em um ambiente (próximo) de utilização real. – Exemplos: • protótipos semi-acabados • versões beta
  19. 19. PUCRS - FACIN Prof. Marcelo H. Yamaguti (19) Teste de sistema • Teste de instalação: – Teste realizado pelos clientes ou usuário no software instalado (implantado) no ambiente real do usuário (ambiente de produção). – Com a aceitação pelo cliente, o sistema será formalmente entregue. Introdução à Engenharia de Software
  20. 20. PUCRS - FACIN Prof. Marcelo H. Yamaguti (20)Engenharia de Software Seleção de dados para teste • Tipos de dados de teste: 1. construídos (simulados) 2. reais modificados (valores, volume) 3. reais • Método de seleção: 1. uso normal ou ideal 2. teste de partes complexas 3. tratamento de erros
  21. 21. PUCRS - FACIN Prof. Marcelo H. Yamaguti (21)Engenharia de Software Técnicas de testes • Manuais: – teste de mesa (simulação em papel do código) – walkthrough – inspeção • Automáticos: – analisador (compilador) de código – verificadores de estrutura – analisador de dados – verificador de sequência – geradores de casos de teste
  22. 22. PUCRS - FACIN Prof. Marcelo H. Yamaguti (22) Automação de testes • Automação de testes: – Utilizar ferramentas de software para apoiar o teste de um programa. – Pode ocorrer em vários níveis, desde o teste unitário ao teste de sistema. – Facilita o teste de regressão. Introdução à Engenharia de Software
  23. 23. PUCRS - FACIN Prof. Marcelo H. Yamaguti (23) Automação de testes • TDD (Test Driven Development): – Metodologia ágil que privilegia a definição dos testes antes da codificação do software. Introdução à Engenharia de Software Adaptado de Sommerville, 2011.
  24. 24. Prof. Marcelo H. Yamaguti (24) Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Prof. Marcelo H. Yamaguti Introdução à Engenharia de Software DESENVOLVIMENTO DE SOFTWARE Verificação e Validação

×