Teste de Software Técnicas para a validação de sistemas de software

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto de Sistemas I
Advertisements

ENGENHARIA DE SOFTWARE Garantia de Qualidade de Software
Adélia Barros Testes de Software Adélia Barros
Estratégias de Teste de Software
ISO Processos do Ciclo de Vida do Software
Fundamentos de Engenharia de SW
Débora da Silva Orientadora: Maria Inés Castiñeira
Técnicas de Teste de Software
Teste de Software.
Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 8 Defeitos e falhas de software Especificação errada: pode não.
Engenharia de Software
Processos de Software Introdução
Tópicos Motivação para teste Por que algumas empresas não testam
Professor Sílder Lamas Vecchi
INTRODUÇÃO A INFORMÁTICA
Teste de Software Parte 3.
Professora: Aline Vasconcelos
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Técnicas de Teste de Software
Abordagem Estratégica ao Teste de Software
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Integração de Produto Marleson Filipe.
Introdução aos conceitos de Teste de Software
Desafios do desenvolvimento de software
Fundamentos de Engenharia de SW
Fundamentos de Engenharia de SW
Métodos de Testes de Software
Planejamento e Projeto de Testes
Engenharia de Software com o RUP - Workflow de Testes Parte I
Teste de Sistemas de Software
Qualidade Qualidade é um dos principais objetivos da Engenharia de Software. Muitos métodos, técnicas e ferramentas são desenvolvidas para apoiar a produção.
Processo de Aquisição Adilson de Almeida Cezar Meriguetti
Etapas do Projeto DC.IC.15 Data Revisão: 07/04/2017 Início Fim
TESTES DE SOFTWARE Qualidade de software Professores: Juliano Bedin Juliano Bedin Sara Priscila Dutkwicz Leandro Bovi.
Engenharia de Software Teste de Software Parte 1 Prof. Luís Fernando Garcia
Marcio de Carvalho Victorino Processo Unificado. Unidade VI: Teste.
Documentação de Software
Teste de Software Conceitos iniciais.
ANÁLISE ESTRUTURADA DE SISTEMAS
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Engenharia de Software II
Gestão de defeitos.
Introdução a Teste de Software
Qualidade no Desenvolvimento de Software Wolley W. Silva Baseado nas notas de aula dos professores Tatuo e Daisy.
Teste de Integração, Sistema e Aceitação
Teste de Sistemas de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Engenharia de Software
Testes de SW Aula 24.
Engenharia de Software
Processo e Qualidade.
Estimativa, Teste e Inspeção de Software
Verificação e Validação
Professor: Ygor Colen Morato
Engenharia de Software
Engenharia de Software
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Gerenciamento da Qualidade
Estimativa, Teste e Inspeção de Software
Teste de Software Equipe: Camila Debora Elis. Definição "Teste é um processo de executar um programa ou sistema com a finalidade de encontrar erros.“
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Engenharia de Produtos
Teste de Unidade. Originalmente esse termo é definido como um teste capaz de analisar uma unidade de trabalho, que a IEEE define como: “Atividade capaz.
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
CMMI Capability Maturity Model Integration
Transcrição da apresentação:

Teste de Software Técnicas para a validação de sistemas de software Ana de Alencar Price Instituto de Informática - UFRGS

Tópicos a serem Abordados Certificação de Software Príncipios do Teste Estratégias de Teste Teste Funcional Teste Estrutural Teste Simbólico Teste de Software Orientado a Objetos Ferramentas de apoio ao Teste

Bibliografia G. Myers. The Art of Software Testing R. Pressman. Software Engineering R. Fairley: Software Engineering Concepts W. Hetzel. The Complete Guide to Software Testing Artigos de periódicos: Transactions on Software Engineering IEEE Software Comm. Of The ACM

Avaliação de Qualidade de Software Fatores de qualidade correto, confiável completo, consistente, preciso eficiente, factível Técnicas de Certificação Análise Estática Análise Dinâmica = Teste Teste Simbólico Verificação Formal => Software Correto

Análise Estática análise do código fonte sem executá-lo Inspeções entender o programa para descobrir erros Walkthroughs execução simulada do programa

Teste de Software “Teste consiste em executar o programa com a intenção de encontrar erros” [Myers] verificação incompleta não garante a inexistência de erros no programa pode ser usado para mostrar a presença de erros, mas nunca sua ausência [Dijkstra]

Teste Simbólico consiste em executar o programa com dados simbólicos ao invés de dados reais valores de variáveis resultam em fórmulas predicados de caminho = conjunção de condições do caminho executado predicados de caminho => deteminar dados que exercitam os caminhos lógicos do programa

Verificação Formal especificação formal do programa provador de teoremas: demonstrar matematicamente que o programa satisfaz as especificações aplicações restritas, programas pequenos provas formais são difíceis programadores não treinados possibilita a inserção de erros na demonstração cara e demorada vantagem: quando usada corretamente garante a correção ou não do programa

Custo do Teste

Custo do Teste 30-50% do custo de desenvolvimento causas: falta planejamento, tempo escasso falta metodologia inserção de novos erros ponto crucial: seleção de dados dados de teste óbvios, randômicos, viciados seleção adhoc ou randômica: segmentos de programas não testados casos de teste rigorosamente selecionados

Teste Exaustivo nodos = blocos de comandos sequenciais 1 a 20 arcos = fluxo de controle número de caminhos: 5 +(5x5)+...=1.0E14

PROBLEMA Determinar casos de teste (dados+resultados esperados) para o seguinte programa: O programa lê três valores inteiros que devem corresponder aos lados de um triângulo. Caso não sejam, o programa deve emitir a mensagem: “não é triângulo”. Caso contrário, o programa emitirá mensagem identificando o tipo de triângulo (“equilátero”, “isósceles”, ou “escaleno”). Assumir que os três valores são digitados e são inteiros.

Casos de testes para o programa do Triângulo 1) 1 caso válido para triângulo equilátero “equilátero” 2) 1 caso válido para triângulo escaleno “escaleno” 3) 3 casos válidos para triângulo isósceles “isósceles” 4) 3 casos para testar Li + Lj < Lk “não é triângulo” 5) 3 casos para testar Li + Lj = Lk “não é triângulo” 6) 3 casos para testar um dos lados = 0 “não é triângulo” 7) 3 casos para testar um dos lados < 0 “não é triângulo”

Princípios do Teste [Myers] não planeje o teste assumindo que o programa está correto um bom caso de teste é aquele que tem alta probabilidade de encontrar erro ainda não descoberto caso de teste bem sucedido é aquele que detecta erro ainda não descoberto a probabilidade de existência de mais erros numa parte do programa é proporcional ao número de erros já descoberto na mesma

Princípios do Teste [Myers] teste deve ser feito por outra pessoa que não o autor do programa dados de teste devem ser definidos para dados inválidos e não-esperados determinar SEMPRE os resultados esperados verificar cuidadosamente os resultados de cada teste nunca jogue fora casos de teste, a não ser que esteja jogando fora também seu programa

Teste de Software Objetivo: Suposição incorreta: Depuração: “Executar o programa com a intenção de descobrir erros” [Myers] Suposição incorreta: “Mostrar que o programa funciona corretamente” Depuração: “Processo para identificar, localizar e corrigir erros” custo/esforço de difícil previsão tempo para identificar um erro: minutos, horas, dias

Fluxo de informações na Fase de Teste Configuração do Sistema programa fonte correções Depuração Teste resultados erros Avaliação Teste plano/casos de teste resultados esperados análise dos erros Avaliação Qualidade Configuração de Teste modificações aceitação do sistema

Atividades do Processo de Teste determinar casos de teste escolher estratégia, critério (conclusão dos testes) selecionar dados e determinar resultados esperados executar os testes montar cenários (drivers e stubs) instrumentar programa (asserções, sinalizadores) avaliar os resultados comparar resultados computados c/esperados avaliar a satisfação do critério

Seleção de Dados de Teste atividade mais crítica do processo dados devem ser selecionados para encontrar erros teste de sucesso {Myers] => aquele que encontra erro seleção depende da estratégia de teste funcional (black-box) estrutrural (white-box) mutação

Tipos de Teste Funcional ou Caixa-preta Estrutural ou Caixa-aberta baseado na Especificação de Requisitos verifica se as funções do produto são realizadas adequadamente Estrutural ou Caixa-aberta baseado no código fonte verifica quais funções foram implementadas Mutação ou Teste baseado em erros introduzir modificações num programa P, suposto correto, criando-se mutantes, que se executados resultarem em erro, pode-se dizer que P está correto

Teste Randômico dados gerados randômicamente elevado número de dados de teste problema: determinar os resultados esperados certas condições podem não ser testadas trabalhos comprovam eficácia

Teste Funcional dependente da especificação de requisitos DADOS RESULTADOS dependente da especificação de requisitos seleção de dados baseada nas condições de entrada avaliação de cobertura das funcionalidades

Teste Estrutural teste de caminho dependente do código fonte DADOS RESULTADOS teste de caminho dependente do código fonte grafo de fluxo de controle critérios de cobertura de caminhos

Estágios de Teste Teste de Unidade Teste de Integração assegurar que cada módulo funciona apropriadademente Teste de Integração montagem do software e verificação das interfaces Teste de Aceitação assegurar que o software satisfaz os requisitos do usuário Teste de Sistema integração do software com outros sistemas

Teste de Unidade teste de caixa aberta (estrutural) conduzido em paralelo para vários módulos características avaliadas interface operações sobre variáveis caminhos de execução importantes caminhos de atendimento a erros condições de contorno

Teste de Unidade: características avaliadas interface dados entram e saem corretamente número e tipo de parâmetros - compatibilidade operações sobre variáveis cálculos incorretos over/underflow, índices, etc. caminhos de execução caminhos importantes caminhos de atendimento a erros

Teste de Unidade: características avaliadas atendimento a erros rotina de erro corresponde ao erro encontrado erro causa intervenção do sistema antes do atendimento mensagem elucida causa do erro? condições de contorno testes com valores máximo, mínimo, imediatamente abaixo e acima de itens de dados e de variáveis de controle de “loops” erros comuns precedência de operadores incorreta comparações de tipos de dados diferentes terminação inexistente de ciclos erros de precisão

Ambiente para Teste de Unidade driver módulo stub stub

Cenários de Teste driver stubs módulo que chama o módulo em teste contém inicializações das variáveis globais e dos parâmetros reais da chamada stubs módulos chamados pelo módulo testado contém comandos para recebimento de parâmetros de entrada e devolução de valores de saída

Planejamento do Teste de Unidade escolha de critério de cobertura lógica selecionar caminhos de teste determinar casos de teste caso de teste dado de teste resultado esperado

Teste de Integração montagem do software com módulos já testados verificação da interface entre módulos funções parciais e global do sistema estratégias de integração topdown bottom-up mista

Integração Topdown integração parte do módulo principal para os módulos que implementam funções primitivas tipos: vertical: segundo o fluxo principal de controle horizontal: incorpora todos os módulos diretamente subordinados a cada nível

Integração Top-down módulo principal usado como driver módulos diretamente subordinados substituídos por stubs stubs são substituídos um de cada vez testes de regressão asseguram que não houve introdução de novos erros

Integração Bottom-up módulos inferiores combinados em grupos drivers são escritos para testar grupos drivers são substituídos por módulos integradores de grupos

Topdown X Bottom-up top-down bottom-up programa principal + alguns módulos = protótipo erros de interface são descobertos cedo erros em módulos critícos de níveis inferiores são descobertos tarde no início requer pouca mão-de-obra bottom-up ajuste mais fácil das necessidades de mão-de-obra ao pessoal disponível erros de interface são descobertos tarde muitos módulos precisam ser integrados antes que se tenha uma idéia do programa

Teste de Integração seleção de estratégia Teste Misto características do software cronograma do projeto enfoque combinado Teste Misto Topdown modificado Sandwich Big-bang

Teste de Integração Misto Top-down Modificado módulos críticos são testados com drivers em paralelo à integração topdown Sandwich teste realizado a partir das extremidades drivers e stubs são necessários Big-bang integração de todos os módulos ao mesmo tempo dificuldade de descobrir origem dos erros

Plano de Integração fluxo de controle do sistema estratégia de integração ordem de acoplamento determinar casos de teste gerar drivers e stubs

Testes de Aceitação e de Sistema Teste de Aceitação demonstrar conformidade com a Especificação de Requisitos testes funcional e de desempenho Teste de Sistema teste de integração com outros sistemas (software e hardware) teste de aceitação conduzido pelo usuário final

Plano de Teste do Software Conteúdo Plano de Teste de cada unidade Plano de Integração Plano para o Teste de Aceitação e de Sistema Benefícios do Plano de Teste indução ao teste sistemático facilita testes de regressão facilita manutenção facilita teste de integração quando da evolução do sistema

Considerações Finais Teste: fase fundamental no desenvolvimento de software. Teste e manutenção consomem 60% dos recursos de desenvolvimento Escassez ferramentas CASE para suporte destas fases Desenvolvimento de métodos e ferramentas Avaliação de Qualidade - parte da rotina, ao invés de procedimento especial.