Buscar

ESII_-5.Verificação_e_Validação

Prévia do material em texto

*
Verificação e Validação
Engenharia de Software
*
Conceitos
Verificação e Validação
Qualidade 
A característica de um processo ou produto que atinge ou excede os seus requisitos e expectativas.
 Problema
 Sistemas não satsifazem suas especificações
Erro
 Comportamento não compatível com o que foi especificado gerando resultados inesperados.
*
Conceitos
Verificação e Validação
Erros e Problemas ocorrem devido a:
Interpretações erradas de requisitos na confecção das especificações e modelos.
Interpretações erradas das especificações e modelos na implementação.
*
Verificação e Validação
Conceitos
“O Custo de encontrar e corrigir problemas de software são de 100 a 1.000 vezes maiores após a implantação”.
Custo $
Análise
Projeto
Implementação
Manutenção
implantação
*
Verificação e Validação
Objetivos
Assegurar que o software cumpra as suas especificações e atenda às necessidades dos usuário/cliente
Quando acontece
Ao longo do processo de desenvolvimento
Requisitos
Inspeções de Código
Teste de Produto
*
Verificação e Validação
Objetivos
Estabelecer confiança de que o software é adequado ao seu propósito
Função do software
Quão crítico é o software
Expectativas dos usuários
Expectativas crescentes a partir da década de 90
Ambiente de mercado
Concorrentes/Cronograma/Preço
NÃO significa completamente livre de defeitos
Bom o suficiente para seu uso pretendido
Tipo de uso determinará o grau de confiança necessário
*
Conceitos
Verificação e Validação
Validação
 Avaliação de um sistema para determinar se os requisitos especificados satisfazem as expectativas do usuário.
O software deve fazer o que o usuário deseja.
“O programa faz o que o usuário quer”
IEEE Standard 610.12-1990
“Estamos construindo o produto correto?”
Boehm, 1979
*
Conceitos
Verificação e Validação
Verificação 
Avaliação de um sistema para determinar se os produtos gerados em uma fase satisfazem às condições impostas no início da fase.
O software deve estar em acordo com a sua especificação
	As especificações do software nem sempre estão de acordo com as expectativas dos usuários
*
Verificação
“O programa (produto) cumpre com a sua especificação”
IEEE Standard 610.12-1990
“Estamos construindo o produto corretamente?”
Boehm, 1979
Verificação e Validação
Conceitos
*
Conceitos
Verificação e Validação
Devem ser feitas Verificações e Validações (V&V) continuamente, durante todo o ciclo de vida do software:
Revisões dos requisitos;
Revisões dos modelos;
Revisões das especificações;
Revisões de código;
Revisões de releases;
Etc.
*
Verificação e Validação
Técnicas
Abordagens complementares
Inspeção de software: Verificação Estática
Verificação: requisitos, diagramas, código fonte
Restrições: utilidade operacional, desempenho, confiabilidade
Verificação
Teste de software: Verificação Dinâmica
Executar implementação do software com dados de teste
Comportamento operacional/desempenho e confiabilidade são observados
Verificação e Validação
*
Conceitos
Verificação e Validação
Inspeções 
 Analisam e verificam as representações do sistema – documento de requisitos, diagramas de projeto,etc.
Podem ser suplementadas por análise automáticas.
São técnicas estáticas.
*
Conceitos
Verificação e Validação
Testes 
 Executar uma implementação do software com dados de teste. Examinam as saídas do software e seu comportamento operacional. 
Verificam se seu desempenho está conforme necessário.
São técnicas dinâmicas.
*
Conceitos
Verificação e Validação
Especificação de Requisitos
Projeto de alto nível
Especificação formal
Projeto detalhado
	 Programa
	 Protótipo
*
*
Inspeções de Software
Pré-condições
Especificação precisa disponível
Equipe familiarizada com o padrões organizacionais
Versão atualizada e completa do código (complilável) disponível
*
*
Inspeções de Software
O moderador planeja a inspeção: alocação de pessoal e de recursos necessários
O autor apresenta o programa explicando o que o mesmo se propõe a fazer
Cada membro da equipe estuda o programa procurando por erros
Os erros são apresentados pelo leitor e registrados pelo relator
O autor corrige os problemas identificados
O moderador chefe decide sobre a necessidade de conduzir outra inspeção
Checklist pode auxiliar no processo de inspeção de software
Inspeções são aprimoradas com a experiência da equipe
*
*
Inspeções de Software
*
*
Inspeções de Software
Análise estática automatizada
Ferramentas que auxiliam, de forma automatizada, a inspeção de software
Verificação e métodos formais
Representações matemáticas de software para análise de especificação
Mais utilizada em softwares críticos devido ao investimento necessário
Modelo de processo “Cleanroom”: software com defeito zero
*
Inspeções de Programas
Verificação e Validação
São importantes para identificar erros de programas – erros de lógica, anomalias de código. 
O código do programa é sistematicamente analisado por uma equipe.
Podem ser realizadas com o auxílio de ferramentas.
*
Inspeções de Programas
Verificação e Validação
Defeitos de Dados 
Todas as variáveis de programa são iniciadas antes que seus valores sejam usados?
Todas as constantes foram denominadas?
O limite superior de vetores deve ser igual ao tamanho do vetor ou ao tamanho -1 ?
Existe alguma possibilidade de overflow?
Todas as variáveis utilizadas foram declaradas?
Todas as variáveis declaradas foram utilizadas?
*
Inspeções de Programas
Verificação e Validação
Defeitos de Controle 
As condições das declarações condicionais estão corretas?
Os loops estão terminando corretamente?
As declarações compostas estão corretamente delimitadas por parênteses?
Em declarações case, todos os casos possíveis estão considerados?
*
Inspeções de Programas
Verificação e Validação
Defeitos de Entrada/Saída 
Todas as variáveis de entrada estão sendo utilizadas?
Todas as variáveis de saída têm valor atribuído?
Entradas inesperadas podem fazer com que os dados sejam corrompidos?
*
Inspeções de Programas
Verificação e Validação
Defeitos de Interface
Todas as chamadas de funções e métodos têm a quantidade correta de parâmetros?
Os tipos de parâmetros combinam?
Os parâmetros estão na ordem certa?
Todas as funções e procedimentos declarados estão sendo chamados?
Todas as condições possíveis de erro foram consideradas?
*
Planejamento de V&V
Verificação e Validação
O Planejamento de V&V deve ser iniciado no princípio do processo do desenvolvimento.
O Planejamento de Testes se concentra em estabelecer padrões para o processo de testes, não somente descrever testes.
*
Tipos de Testes
Verificação e Validação
Testes de Defeitos – destinados a revelar defeitos e inconsistências entre o programa e suas especificação. 
Testes de Validação – destinados a mostrar que o software é o que o cliente deseja.
Durante testes de validação, você encontrará defeitos e, durante testes de defeitos, será possível evidenciar o atendimento a requisitos. 
*
Tipos de Testes
Verificação e Validação
Durante os testes, defeitos aparecem, necessitando intervenções no sistema. 
O processo de localização e modificação de programas para corrigir defeitos é chamado de depuração ou debugging.
*
Depuração
Verificação e Validação
Resultados dos testes
	 Especificação
Casos de Testes
*
Estrutura de um Plano de Testes
Verificação e Validação
Processo de teste – descrição das principais fases do processo de teste.
Rastreabilidade de Requisitos – identificação e relação entre os testes e os requisitos.
Itens Testados – Especificação dos produtos a serem testados.
Cronograma de Testes
*
Estrutura de um Plano de Testes
Verificação e Validação
Procedimentode Registro de Testes – os resultados dos testes devem ser sistematicamente registrados. 
Requisitos de hardware e software – identificação das ferramentas de software necessárias e a utilização estimada de hardware.
Restrições – que restrições afetam o processo de testes?
*
Processo de Testes de Software
Verificação e Validação
Testes de Componente
 - testes de componentes individuais do sistema;
 - geralmente são de responsabilidade do desenvolvedor.
Testes de Sistema
 - testes de grupos de componentes integrados, para criar um sistema ou sub-sistema;
 - geralmente são de responsabilidade de uma equipe de testes;
*
Testes de Software
Verificação e Validação
Revelam a existência de erros, mas não a sua ausência. 
Um teste bem sucedido é um teste que descobre um ou mais erros.
Testes são a única técnica de validar requisitos não-funcionais.
*
Testes de Software
Verificação e Validação
Dados de Teste – massa de dados criada para testar o sistema. 
Casos de Teste - Situações de inputs e seus respectivos outputs que testem se o sistema opera de acordo com as especificações.
*
Processo de Testes de Software
Verificação e Validação
Casos de Teste
Dados de Teste
Resultados de teste
Relatórios de teste
*
Níveis de Testes
Verificação e Validação
Testes Unitários – teste individual de um componente ou módulo.
Testes de Integração Interna - Expoem defeitos nas interfaces e interações entre componentes. Incrementais a cada etapa do projeto.
Testes de Sistema – teste um sistema integrado, verificando se atende aos requisitos.
*
Níveis de Testes
Verificação e Validação
Testes de Integração Externa – Verifica se o sistema está integrado com sistemas externos, conforme definido.
Testes de Aceitação – Conduzido pelo usuário final ou cliente, deve validar e aceitar (ou não) o produto.
Alpha-tests – Testes em ambiente interno, simulando a realidade.
Beta-tests – Testes com um público limitado, fora do ambiente de desenvolvimento.
*
Dimensões de Testes
Verificação e Validação
Testes Funcionais – verificam se o sistema executa os requisitos funcionais.
Testes de Usabilidade – avaliam a aplicação do ponto de vista do usuário. Compreendem fatores humanos, estéticos, ajudas online, material de treinamento,etc.
*
Dimensões de Testes
Verificação e Validação
Testes de Desempenho – testam a resposta do sistema sob cargas médias e picos de carga.
Testes de Confiabilidade – normalmente requerem ferramentas especializadas, verificam a consistência e previsibilidade de fatores como integridade, estrutura, stress e volume.
Testes de Manutenibilidade – incluem testes de instalação e configuração.
*
Ferramentas de Apoio a Testes
Verificação e Validação
Gerenciadores de Testes – mantêm o acompanhamento dos dados, dos resultados esperados e dos recursos testados.
Geradores de Dados de Testes – seleciona os dados de um banco de dados ou utiliza padrões para gerar dados aleatórios.
Oráculos – geram previsões de dados esperados. Diferenças entre as saídas são evidenciadas.
*
Ferramentas de Apoio a Testes
Verificação e Validação
Comparadores de Arquivos – comparam resultados de testes relatando as diferenças.
Geradores de Relatórios – fornecem recursos de definição e de geração de relatórios para os resultados de testes.
Analisadores Dinâmicos – adicionam códigos ao programa para contar o número de vezes em que cada declaração foi executada.
*
Ferramentas de Apoio a Testes
Verificação e Validação
Simuladores
	Simuladores de alvo – simulam a máquina onde a aplicação será executada.
	Simuladores de Interface – simulam várias interações com usuários.
	Simuladores de E/S – repetem numa frequência, uma sequência de execuções.

Continue navegando