Verificação e Validação Sistemas possuem restrições de qualidade e confiabilidade Qualidade de sw: satisfação dos requisitos funcionais, de desempenho e normas explicitamente declarados. Redução de custos e aumento da qualidade e confiabilidade nos processo e produto de sw Estima-se que 40% a 50% do esforço de desenvolvimento de sistemas são empregados em atividades de verificação e validação
Verificação e Validação (V&V) Em Engenharia de Software (IEEE 1012): Validação: estamos construindo o produto certo? o software faz o que o usuário requisitou? Verificação: estamos construindo o produto corretamente? o software está de acordo com sua especificação?''
Verificação e Validação Validação: Confirmar por testes e com provas objetivas que requisitos particulares para um determinado uso foram cumpridos. Busca provar que o software implementa cada um dos requisitos corretamente e completamente ou seja, tenta responder à pergunta: O produto correto foi construído?
Verificação e Validação Verificação: Confirmar por testes e com provas objetivas que requisitos especificados foram cumpridos. Visa garantir que os produtos de uma dada fase implementam em sua totalidade as entradas para aquela fase, ou seja, tenta responder à pergunta: O produto foi construído corretamente?
Verificação Existem duas técnicas fundamentais de verificação de software: Dinâmica: implica em execução do código=> TESTES; Estática: análises e inspeções sem execução do código
Teste de Software é o processo de executar programas usando casos de teste, com o objetivo de encontrar defeitos, em um ambiente controlado. Caso de teste = dado de teste + saída esperada É uma atividade essencial para se garantir a qualidade do software. É uma das últimas atividades que fará a revisão do produto.
Teste de Software Falhas em sistemas críticos Ariane 5 (erro em uma conversão de ponto flutuante de 64 bits para inteiro de 16 bits) Therac 25 Titan IV e Titan IV b Boeing 757 na Colombia 7
Teste de Software Pode gastar 40% do esforço de desenvolvimento Objetivos do teste: Revelar erros ainda não descobertos 8
Teste de Software Características de um bom teste Tem alta probabilidade de encontrar um erro Não é redundante Não deve ser muito simples nem muito complexo 9
Estratégias de Teste 10
Estratégias de Teste Terão sucesso quando os testadores de sw: Quantificarem requisitos do produto antes do teste. Definirem explicitamente os objetivos do teste. Desenvolverem um perfil para cada categoria de usuário. Desenvolverem um plano de teste: teste de ciclo rápido (2% do trabalho de projeto) de incrementos de funcionalidade e/ou qualidade passíveis de experimentação. 11
Estratégias de Teste... Criarem sw robusto, projetado para testar a si próprio: diagnosticar e manipular certas classes de erros: abordagem antidefeitos acomodar teste automático e teste de regressão. Usarem revisões técnicas eficazes antes do teste: descobrir erros, avaliar estratégias e casos de teste. Desenvolverem abordagem de melhoria contínua: métricas coletadas no teste usadas no controle estatístico 12
Estratégias de Teste Teste de unidade realizado na menor unidade de projeto de software: o componente ou módulo é um auxiliar para a codificação. exame do projeto: auxilia a estabelecer casos de testes tem como objetivo testar: a lógica interna de processamento as estruturas de dados no escopo do componente 13
Teste de Unidade São testados: interfaces, estruturas lógicas de dados, condições limites, caminhos independentes e caminhos de manipulação de erros. + fluxo de controle, fluxo de dados 14
Teste de Unidade Teste de fronteira Falhas no n-ésimo elemento de um conjunto de tamanho n, na i-ésima repetição de um laço com i repetições, no valor máximo ou mínimo permitido: Valor logo abaixo de n, i, max e min Valor igual a n, i, max e min Valor logo acima de n, i, max e min 15
Teste de Unidade Para realizar o teste de unidade é necessária a implementação de: pseudocontrolador (driver): simula o módulo do sistema que chama o módulo a ser testado pseudocontrolado (stub): simula o módulo do sistema que é chamado pelo módulo a ser testado SIMPLICIDADE 16
Estratégias de Teste Uma prática eficiente, vinda do desenvolvimento ágil é projetar o teste antes de iniciar a implementação do módulo. 17