Engenharia de Software 1
14 - Verifica¸c˜ao e Valida¸c˜ao: Introdu¸c˜aoAlexandre de Andrade Barbosa
alexandre.barbosa@arapiraca.ufal.brObjetivos
Objetivos
Apresentar conceitos de verifica¸c˜ao e valida¸c˜ao de software Descrever o que ´e inspe¸c˜ao de software
Descrever o que ´e teste de software
Verifica¸c˜ao, valida¸c˜ao e teste de software
Exerc´ıcios, Resumo e Referˆencias
Verifica¸c˜ao est´atica e verifica¸c˜ao dinˆamica Inspe¸c˜oes de software
Teste de Software
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Introdu¸c˜ao
Por que verificar e validar?
Identificar os limites do sistema
Possibilitar que modifica¸c˜oes realizadas n˜ao tenham impacto negativo
...
Nenhum processo de V&V garante que um sistema ´
e livre de
defeitos
Verifica¸c˜ao, valida¸c˜ao e teste de software
Exerc´ıcios, Resumo e Referˆencias
Verifica¸c˜ao est´atica e verifica¸c˜ao dinˆamica Inspe¸c˜oes de software
Teste de Software
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Introdu¸c˜ao
Por que verificar e validar?
Descobrir defeitos em um sistema
Possibilitar que modifica¸c˜oes realizadas n˜ao tenham impacto negativo
...
Nenhum processo de V&V garante que um sistema ´
e livre de
defeitos
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Introdu¸c˜aoPor que verificar e validar?
Descobrir defeitos em um sistema
Avaliar se sob uma situa¸c˜ao normal o sistema se comporta como esperado
Identificar os limites do sistema
Possibilitar que modifica¸c˜oes realizadas n˜ao tenham impacto negativo
...
Nenhum processo de V&V garante que um sistema ´
e livre de
defeitos
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Introdu¸c˜aoFalhas em software s˜
ao comuns
Falhas em software
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Introdu¸c˜aoVerifica¸c˜
ao e Valida¸
c˜
ao (V&V) possuem objetivos distintos
Verifica¸c˜
ao
“Estamos construindo o produto corretamente?” O software est´a de acordo com suas especifica¸c˜oes
Valida¸c˜
ao
“Estamos construindo o produto correto?”
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Verifica¸c˜ao est´atica e verifica¸c˜ao dinˆamicaVerifica¸c˜
ao est´
atica e verifica¸
c˜
ao dinˆ
amica
Verifica¸c˜ao est´aticaObserva¸c˜ao de representa¸c˜oes est´aticas do sistema Objetivo ´e descobrir problemas nestas representa¸c˜oes Verifica¸c˜ao dinˆamica
Execu¸c˜ao do produto para observa¸c˜ao de seu comportamento Objetivo ´e mostrar o funcionamento correto da execu¸c˜ao, ou identificar defeitos na execu¸c˜ao
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Verifica¸c˜ao est´atica e verifica¸c˜ao dinˆamicaInspe¸
c˜
ao e Teste de software
Inspe¸c˜ao de software (ou revis˜oes por pares) Verifica¸c˜ao de representa¸c˜oes do software
a maioria das vezes ´e uma t´ecnica de V&V est´atica Teste de software
Requer a execu¸c˜ao de uma implementa¸c˜ao do software ´
e sempre uma atividade dinˆamica
Inspe¸
c˜
ao frenquentemente ´
e chamada de verifica¸
c˜
ao est´
atica
Teste frenquentemente ´
e chamado de verifica¸
c˜
ao dinˆ
amica
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Verifica¸c˜ao est´atica e verifica¸c˜ao dinˆamicaVerifica¸c˜ao est´atica e verifica¸c˜ao dinˆamica
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜aoInspe¸
c˜
ao
pode ser realizada sobre qualquer especifica¸c˜ao relacionada ao software
n˜ao necessita de uma vers˜ao execut´avel (por isso ´e est´atica) pode verificar, por exemplo:
se requisitos s˜ao consistentes (especifica¸c˜ao textual, diagramas de caso de uso, ...)
se o c´odigo segue um conjunto de normas (identa¸c˜ao, padr˜ao de declara¸c˜ao de vari´aveis, ...)
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Teste de SoftwareTeste
s´o pode ser realizada sobre uma vers˜ao execut´avel do software (por isso ´e dinˆamica)
o planejamento pode ocorrer muito antes de uma vers˜ao execut´avel estar pronta (ex. estrat´egia de teste em V) o teste pode ser implementado muito antes do c´odigo da aplica¸c˜ao (ex. TDD)
pode verificar: a existˆencia de bugs, a ausˆencia de bugs em um dom´ınio restrito, a quantidade de carga suportada pelo software n˜ao pode garante: a ausˆencia completa de bugs
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareInspe¸
c˜
oes de software
´E uma abordagem padronizada para revis˜ao de documentos (ex. c´odigo, requisitos, plano de testes, ...)
Especialistas examinam uma representa¸c˜ao do software em busca de defeitos
N˜AO ´e necess´ario executar o software
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareExemplos de problemas que podem ser detectados em inspe¸
c˜
oes
Diagramas com inconsistˆencias;Vari´avel n˜ao iniciada no c´odigo;
C´odigo em n˜ao conformidade com padr˜oes; ...
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareVerifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareProcesso de inspe¸c˜ao
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareAn´
alise est´
atica automatizada
Ferramentas de software que auxiliam na inspe¸c˜ao de software Marcam condi¸c˜oes errˆoneas no documento analisado
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Inspe¸c˜oes de softwareInspe¸
c˜
oes e Testes
S˜ao t´ecnicas complementares Ambas devem ser utilizadas na V&V
Uma inspe¸c˜ao pode revelar muitos defeitos simultaneamente Um teste pode identificar um defeito, mas muitos outros podem estar “ocultos”
Inspe¸c˜oes n˜ao podem verificar requisitos n˜ao funcionais (ex. desempenho, seguran¸ca, ...)
Teste podem verificar requisitos n˜ao funcionais ...
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Teste de software“Os testes podem apenas mostrar a presen¸
ca de erros, n˜
ao
sua ausˆ
encia
completa”
Verifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Teste de softwareTestes devem mostrar que o software ´
e bom o suficiente para uso
(confi´
avel)
Apenas um subconjunto de casos poss´ıveis de teste ´
e verificado
Testes exaustivos n˜ao s˜ao poss´ıveis, podem existir muitos caminhosVerifica¸c˜
ao e Valida¸c˜
ao: Introdu¸c˜
ao
Teste de softwareTestes podem ser categorizados segundo uma s´
erie de crit´
erios:
Tipos de teste segundo objetivo: Teste de valida¸c˜ao ou Teste de defeitos;Tipos de testes segundo a fase de aplica¸c˜ao: Teste de unidade, Teste de Integra¸c˜ao, Teste de Sistema ou Teste de regress˜ao Tipos de teste segundo o crit´erio de aplica¸c˜ao: Teste funcional, Teste estrutural e Teste baseado em defeito
Exerc´ıcio
Exerc´ıcio
1 O que ´e verifica¸c˜ao? O que ´e valida¸c˜ao?
2 O que ´e inspe¸c˜ao?
3 O que ´e teste de software?
Resumo
Resumo
Verifica¸c˜ao e valida¸c˜ao buscam responder as perguntas “Estamos construindo o produto corretamente?” “Estamos construindo o produto correto?” Existem duas abordagens de verifica¸c˜ao:
Inspe¸c˜oes de Software (verifica¸c˜ao est´atica) Teste de Software (verifica¸c˜ao dinˆamica)
Testes de software podem ser classificados de diversas maneiras:
Teste de sistema, Teste de integra¸c˜ao ou Teste de unidade Teste de valida¸c˜ao ou Teste de defeitos
Leitura recomendada
Ian Sommerville.
Engenharia de Software, 8a ed., 2007.
Cap´ıtulo 22 - Verifica¸c˜ao e valida¸c˜ao
Ian Sommerville.
Engenharia de Software, 8a ed., 2007.
Cap´ıtulo 22 - Verifica¸c˜ao e valida¸c˜ao Cap´ıtulo 23 - Teste de software
M. E. Delamaro, J. C. Maldonado & M. Jino
Introdu¸c˜ao ao Teste de Software, 1a ed. (2007), Editora Campus. Cap´ıtulo 1 - Conceitos b´asicos