Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* 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 Procedimento de 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.