Teste de Software Egeharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016 Aspectos teóricos e empíricos de teste de cobertura de software Notas Didáticas do ICMC/USP (o. 31)
Tópicos da Aula Ø Teste de Software Ø Termiologia e Coceitos Básicos Ø Técicas e Critérios de Teste Ø Técicas Fucioal, Estrutural e Baseada em Erros
Itrodução Ø Garatia de Qualidade de Software Ø Cojuto de atividades técicas aplicadas durate todo o processo de desevolvimeto Ø Objetivo Ø Garatir que tato o processo de desevolvimeto quato o produto de software atijam os íveis de qualidade especificados Ø V&V Verificação e Validação
Itrodução Ø Validação: Assegurar que o produto fial correspoda aos requisitos do usuário Estamos costruido o produto certo? Ø Verificação: Assegurar cosistêcia, completitude e corretitude do produto em cada fase e etre fases cosecutivas do ciclo de vida do software Estamos costruido corretamete o produto? Ø Teste: Examia o comportameto do produto por meio de sua execução (aálise diâmica)
Termiologia Ø Egao x Defeito x Erro x Falha Saída Egao itroduz Defeito produz Erro propaga Erro Falha CAUSA CONSEQÜÊNCIA Ø Um egao itroduz um defeito o software. Ø O defeito, quado ativado, pode produzir um erro. Ø O erro, se propagado até a saída do software, costitui uma falha.
Termiologia Ø Defeito Erro Falha Ø Defeito: deficiêcia mecâica ou algorítmica que, se ativada, pode levar a uma falha Ø Istrução ou comado icorreto Ø Erro: item de iformação ou estado de execução icosistete Ø Falha: eveto otável em que o sistema viola suas especificações
Defeitos o Processo de Desevolvimeto Ø A maior parte é de origem humaa Ø São gerados a comuicação e a trasformação de iformações Ø Cotiuam presetes os diversos produtos de software produzidos e liberados (10 defeitos a cada 1000 lihas de código) Ø A maioria ecotra-se em partes do código raramete executadas
Defeitos o Processo de Desevolvimeto Ø Pricipal causa: tradução icorreta de iformações Ø Quato ates a preseça dos defeitos for revelada, meor o custo de correção do defeito e maior a probabilidade de corrigi-lo corretamete Ø Solução: itroduzir atividades de VV&T ao logo de todo o ciclo de desevolvimeto
Teste e Depuração Ø Teste Processo de executar um programa com o objetivo de revelar a preseça de erros. Cotribuem para aumetar a cofiaça de que o software desempeha as fuções especificadas. Ø Depuração Após revelada a preseça do erro, este deve ser ecotrado e corrigido.
Teste de Software Ø Fudametal em todos os ramos de egeharia Ø Software: produto da Egeharia de Software Ø Atividade essecial para ascesão ao ível 3 do Modelo CMMI/SEI Ø Atividade relevate para avaliação da característica fucioalidade (ISO 9126, ISO 25010, ISO 25041)
PROCESSOS DE AQUISIÇÃO Preparação da Aquisição Seleção do Forecedor Cotrato Moitorameto do Forecedor Aceitação do Cliete Norma ISO 12207 PROCESSOS FUNDAMENTAIS PROCESSOS DE FORNECIMENTO Proposta do Forecedor Liberação do Produto Apoio a Aceitação do Produto PROCESSOS DE DESENVOLVIMENTO Elicitação de Requisitos Aálise dos Requisitos do Sistema Projeto Arquitetural do Sistema Aálise dos Requisitos de Software Projeto do Software Costrução do Software Itegração do Software Teste do Software Itegração do Sistema Teste do Sistema Istalação do Software Mauteção do Software e do Sistema PROCESSOS DE OPERAÇÃO Uso Operacioal Apoio ao Cliete PROCESSOS DE GERÊNCIA Alihameto Orgaizacioal Gereciameto da Orgaização Gereciameto do projeto Gereciameto da Qualidade Gereciameto de Risco Medições PROCESSOS DE MELHORIA DE PROCESSO Estabelecimeto do Processo Avaliação do Processo Melhoria do Processo PROCESSOS DE RECURSOS E INFRAESTRUTURA Gereciameto de Recursos Humaos Treiameto Gereciameto do Cohecimeto Ifraestrutura PROCESSOS DE REUSO Gerecia dos Ativos Gerecia do Programa de Reuso Egeharia de Domíio PROCESSOS ORGANIZACIONAIS PROCESSOS DE CONTROLE DA CONFIGURAÇÃO Documetação Gereciameto da Cofiguração Gereciameto da resolução de problemas Gereciameto dos Pedidos de Alteração PROCESSOS DE GARANTIA DE QUALIDADE Garatia da Qualidade Verificação Validação Revisão Cojuta Auditoria Avaliação do produto PROCESSOS DE APOIO
Desafios do Teste Ø Todos já testaram algum produto de software... Quais foram os maiores desafios? Ø Algus problemas comus... Ø Não há tempo suficiete para o teste. Ø Muitas combiações de etrada para serem exercitadas. Ø Não há tempo para o teste exaustivo. Ø Dificuldade em determiar os resultados esperados para cada caso de teste. Ø Requisitos do software iexistetes ou que mudam rapidamete. Ø Não há treiameto o processo de teste. Ø Não há ferrameta de apoio. Ø Geretes que descohecem teste ou que ão se preocupam com qualidade.
Teste de Software Objetivo: revelar a preseça de erros D P? T X Ø Iexistêcia de erro: Ø Software é de alta qualidade? Ø Cojuto de casos de teste T é de baixa qualidade?
Teste de Software Ø Defeitos e erros ão revelados Ø Falhas se maifestam durate a utilização pelos usuários Ø Erros devem ser corrigidos durate a mauteção Ø Alto custo
Teste de Software Ø Falhas graves Ø Qualidade e cofiabilidade suspeitas Ø Modificação do projeto Ø Novos testes Ø Erros de fácil correção Ø Fuções aparetemete fucioam bem Ø Qualidade e cofiabilidade aceitáveis Ø Testes iadequados para revelar a preseça de erros graves Ø Novos testes
Teste de Software Ø Fases de Teste Ø Teste de Uidade Ø Idetificar erros de lógica e de implemetação em cada módulo do software, separadamete Ø Teste de Itegração Ø Idetificar erros associados às iterfaces etre os módulos do software Ø Teste de Sistema Ø Verificar se as fuções estão de acordo com a especificação e se todos os elemetos do sistema combiam-se adequadamete
Teste de Software Ø Etapas do Teste Ø Plaejameto Ø Projeto de casos de teste Ø Execução do programa com os casos de teste Ø Aálise de resultados
Teste de Software Ø Caso de teste Ø Especificação de uma etrada para o programa e a correspodete saída esperada Ø Etrada: cojuto de dados ecessários para uma execução do programa Ø Saída esperada: resultado de uma execução do programa Ø Oráculo Ø Um bom caso de teste tem alta probabilidade de revelar um erro aida ão descoberto
Teste de Software Ø Projeto de casos de teste Ø Pode ser tão difícil quato o projeto do próprio produto a ser testado Ø Poucos programadores/aalistas gostam de teste e, meos aida, do projeto de casos de teste Ø É um dos melhores mecaismos para a preveção de defeitos Ø É tão eficaz em idetificar erros quato a execução dos casos de teste projetados
Teste de Software Ø Maeira sistemática e plaejada para coduzir os testes Ø Técicas e Critérios de Teste Ø Cojuto de Casos de Teste T Ø Características desejáveis Ø Deve ser fiito Ø Custo de aplicação deve ser razoável
Técicas e Critérios de Teste Ø Critério de Teste C Ø Objetivo Ø Obter, de maeira sistemática, um cojuto T de casos de teste que seja efetivo quato à meta pricipal de teste (revelar a preseça de erros o programa) Ø Propriedades i) icluir todos os desvios de fluxo de execução ii) icluir pelo meos um uso de todo resultado computacioal iii) T míimo e fiito
Técicas e Critérios de Teste Ø Critério de Seleção de Casos de Teste Ø Procedimeto para escolher casos de teste para o teste de P Ø Critério de Adequação Ø Predicado para avaliar T o teste de P Ø T é C-adequado todo elemeto requerido por C é exercitado por pelo meos por um t, t T
Técicas e Critérios de Teste Ø Técica Fucioal Ø Requisitos fucioais do software Ø Critério Particioameto em Classes de Equivalêcia Ø Técica Estrutural Ø Estrutura itera do programa Ø Critérios Baseados em Fluxo de Dados Ø Técica Baseada em Erros Ø Erros mais freqüetes cometidos durate o processo de desevolvimeto de software Ø Critério Aálise de Mutates
Automatização da Atividade de Teste Ø Ferrametas de Teste Para a aplicação efetiva de um critério de teste faz-se ecessário o uso de ferrametas automatizadas que apóiem a aplicação desse critério. Ø Cotribuem para reduzir as falhas produzidas pela iterveção humaa Ø Aumeto da qualidade e produtividade da atividade de teste Ø Aumeto da cofiabilidade do software Ø Facilitam a codução de estudos comparativos etre critérios
Exemplos de Ferrametas de Teste Ø Critérios Estruturais: Fluxo de Dados Ø Asset, Proteste programas em Pascal Ø xsuds programas em C, C++ e Cobol Ø Poke-Tool programas em C, Cobol e Fortra Ø JaBUTi Java Bytecode Ø Critérios Baseados em Mutação Ø Mothra programas em Fortra Ø Proteum programas em C (uidade) Ø Proteum/IM programas em C (itegração) Ø Proteum/RS especificações
Técica Fucioal (Caixa Preta) Ø Baseia-se a especificação do software para derivar os requisitos de teste Ø Aborda o software de um poto de vista macroscópico Ø Evolve dois passos pricipais: Ø Idetificar as fuções que o software deve realizar (especificação dos requisitos) Ø Criar casos de teste capazes de checar se essas fuções estão sedo executadas corretamete
Técica Fucioal Ø Problema Ø Dificuldade em quatificar a atividade de teste: ão se pode garatir que partes esseciais ou críticas do software foram executadas Ø Dificuldade de automatização Ø Critérios da Técica Fucioal Ø Particioameto em Classes de Equivalêcia Ø Aálise do Valor Limite Ø Grafo de Causa-Efeito
Técica Fucioal: Exemplo Ø Particioameto em Classes de Equivalêcia Ø Divide o domíio de etrada do programa em classes de dados (classes de equivalêcias) Ø Os dados de teste são derivados a partir das classes de equivalêcia
Técica Fucioal: Exemplo Ø Passos Ø Idetificar classes de equivalêcia Ø Codições de etrada Ø Classes válidas e iválidas Ø Defiir os casos de teste Ø Eumeram-se as classes de equivalêcia Ø Casos de teste para as classes válidas Ø Casos de teste para as classes iválidas
Técica Fucioal: Exemplo Ø Especificação do programa Idetifier O programa deve determiar se um idetificador é válido ou ão. Um idetificador válido deve começar com uma letra e coter apeas letras ou dígitos. Além disso, deve ter o míimo um caractere e o máximo seis caracteres de comprimeto. Ø Exemplo abc12 (válido); cot*1 (iválido); 1soma (iválido); a123456 (iválido)
Técica Fucioal: Exemplo Ø Classes de equivalêcia Codições de Etrada Tamaho t do idetificador Classes Válidas Classes Iválidas 1 t 6 (1) t > 6 (2) Primeiro caractere c é uma letra Só cotém caracteres válidos Sim (3) Sim (5) Não (4) Não (6) Ø Exemplo de Cojuto de Casos de Teste Ø T 0 = {(a1,válido), (2B3, Iválido), (Z-12, Iválido), (A1b2C3d, Iválido)} (1, 3, 5) (4) (6) (2)
Exercício de Fixação Ø Projete casos de teste para o seguite programa, usado o critério Particioameto em Classes de Equivalêcia: Ø O programa strig solicita do usuário um iteiro positivo o itervalo etre 1 e 20 e, etão, solicita uma cadeia de caracteres desse comprimeto. Após isso, o programa solicita um caracter e retora a posição a cadeia em que o caracter é ecotrado pela primeira vez ou uma mesagem idicado que o caracter ão está presete a cadeia.
Aálise do Valor Limite Ø Complemeta o Particioameto de Equivalêcia. Ø Fote propícia a erros os limites de uma classe ou partição de equivalêcia. Partição de Equivalêcia Limites
Exercício de Fixação Ø Projete casos de teste para o seguite programa usado o critério Aálise do Valor Limite: Ø O programa strig solicita do usuário um iteiro positivo o itervalo etre 1 e 20 e, etão, solicita uma cadeia de caracteres desse comprimeto. Após isso, o programa solicita um caracter e retora a posição a cadeia em que o caracter é ecotrado pela primeira vez ou uma mesagem idicado que o caracter ão está presete a cadeia.