SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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
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
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
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
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
PUCRS - FACIN
Prof. Marcelo H. Yamaguti (6)
“Debug”
• Bug encontrado no Mark II:
Introdução à Engenharia de Software
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.
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.
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)
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!
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.
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
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
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.
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.
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
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
...
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
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
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
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
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
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.
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

Weitere ähnliche Inhalte

Was ist angesagt?

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de SoftwareCapgemini
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IVJoão Lourenço
 
Engenharia de software testes
Engenharia de software  testesEngenharia de software  testes
Engenharia de software testesAdilmar Dantas
 
Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoAricelio Souza
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
Teste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorTeste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorAndré Phillip Bertoletti
 
Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Adriana Telles
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Testes de Software - Fundamentos
Testes de Software - FundamentosTestes de Software - Fundamentos
Testes de Software - FundamentosLucas Amaral
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 

Was ist angesagt? (20)

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Testes de Software
Testes de SoftwareTestes de Software
Testes de Software
 
Testes Funcionais - Unidade IV
Testes Funcionais - Unidade IVTestes Funcionais - Unidade IV
Testes Funcionais - Unidade IV
 
Engenharia de software testes
Engenharia de software  testesEngenharia de software  testes
Engenharia de software testes
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de Código
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Teste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorTeste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedor
 
Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades Casos teste integração efetiva de algumas unidades
Casos teste integração efetiva de algumas unidades
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Testes de Software - Fundamentos
Testes de Software - FundamentosTestes de Software - Fundamentos
Testes de Software - Fundamentos
 
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 

Ähnlich wie Verificação e Validação

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de softwareAlex Camargo
 
Gerenciamento da Qualidade
Gerenciamento da QualidadeGerenciamento da Qualidade
Gerenciamento da QualidadeMarcelo Yamaguti
 
GOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfGOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfRodolphoCesar2
 
Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec ComIgor Rozani
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe munizMatheus de Lara Calache
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
 
Introdução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoIntrodução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoGTS-CE
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de softwareFelipe Bugov
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 

Ähnlich wie Verificação e Validação (20)

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Requisitos de software
Requisitos de softwareRequisitos de software
Requisitos de software
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Gerenciamento da Qualidade
Gerenciamento da QualidadeGerenciamento da Qualidade
Gerenciamento da Qualidade
 
GOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdfGOTEST-Aula3-Automacao-Processo-Testes.pdf
GOTEST-Aula3-Automacao-Processo-Testes.pdf
 
Testes de unidade - RP Tec Com
Testes de unidade - RP Tec ComTestes de unidade - RP Tec Com
Testes de unidade - RP Tec Com
 
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz6. apresentacao rp tec com 2018 igor rozani e felipe muniz
6. apresentacao rp tec com 2018 igor rozani e felipe muniz
 
Teste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e AplicandoTeste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e Aplicando
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Introdução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e DocumentaçãoIntrodução as Técnicas de Testes e Documentação
Introdução as Técnicas de Testes e Documentação
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
4 engenharia de software
4   engenharia de software4   engenharia de software
4 engenharia de software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 

Mehr von Marcelo Yamaguti

Mehr von Marcelo Yamaguti (6)

Gerenciamento de Configuração
Gerenciamento de ConfiguraçãoGerenciamento de Configuração
Gerenciamento de Configuração
 
Gerenciamento de Projetos
Gerenciamento de ProjetosGerenciamento de Projetos
Gerenciamento de Projetos
 
Implementação
ImplementaçãoImplementação
Implementação
 
Projeto de software
Projeto de softwareProjeto de software
Projeto de software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 

Verificação e Validação

  • 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. 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. 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. 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. 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. PUCRS - FACIN Prof. Marcelo H. Yamaguti (6) “Debug” • Bug encontrado no Mark II: Introdução à Engenharia de Software
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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