Validao de Software Professor Manoel Mendona Transparncia 2 Validao de Software Mdulo 1 Conceitos Bsicos Sobre a Disciplina Transparncia 3 Validao de Software Mdulo 1 Conceitos Bsicos Testes Revises Provas Formais Tcnicas para Avaliao da Qualidade de Produtos Transparncia 4 Validao de Software Mdulo 1 Conceitos Bsicos Instrutor Manoel Mendona Sala IM 215 Tel. 3283-6343 Horrio para alunos quarta tarde manoel.mendonca@ufba.br Transparncia 5 Validao de Software Mdulo 1 Conceitos Bsicos Site da Disciplina ... Transparncia 6 Validao de Software Mdulo 1 Conceitos Bsicos Bibliografia A Practitioner's Guide to Software Test Design by Lee Copeland ISBN:158053791x Artech House 2004 http://www.opensourcetesting.org Transparncia 7 Validao de Software Mdulo 1 Conceitos Bsicos Avaliaes Trabalhos, dois trabalhos Provas, uma ou duas Transparncia 8 Validao de Software Mdulo 1 Conceitos Bsicos Plataforma de Trabalho Java e Eclipse JUnit Outras ferramentas Transparncia 9 Validao de Software Mdulo 1 Conceitos Bsicos 0. Conceitos Bsicos Transparncia 10 Validao de Software Mdulo 1 Conceitos Bsicos 0.1 Defeitos e Falhas Defeito um problema nos requisitos, no projeto, no cdigo, na documentao ou nos casos de teste Falha um problema no funcionamento do sistema Falha: conseqncia de um defeito Transparncia 11 Validao de Software Mdulo 1 Conceitos Bsicos Defeitos e Falhas: Uma Viso Mais Completa Engano (mistake) => erro cometido cabea do eng. de software Defeito (fault) => erro inserido no software Erro (error) => execuo do erro conduzindo a um estado incorreto do software Falha (failure) => manifestao externa do erro Transparncia 12 Validao de Software Mdulo 1 Conceitos Bsicos Principais Artefatos de Software Uma Viso Simplificada Especificao de requisitos Projeto Cdigo Defeitos ocorrem em todos eles !!! Transparncia 13 Validao de Software Mdulo 1 Conceitos Bsicos Defeitos Introduzidos ao Longo do Processo de Desenvolvimento A maior parte de origem humana. So gerados na comunicao e na transformao de informaes. Permanecem presentes nos diversos produtos de software produzidos e liberados. A maioria encontra-se em partes do produto de software raramente utilizadas e/ou executadas. Transparncia 14 Validao de Software Mdulo 1 Conceitos Bsicos 0.2 Alguns Tipos de Defeitos Introduzidos Informao que fornecida e no necessria ou nunca utilizada Informao Estranha Informao contida no artefato de software ambgua, isto , vrias interpretaes podem ser derivadas da definio levando o desenvolvedor implementao correta. Ambigidade Informao contida em uma parte do artefato de software est inconsistente com outra informao no artefato de software. Inconsistncia Alguma informao no artefato de software contradiz informao do documento de outra informao no artefato de software. Fato Incorreto Informao necessria do sistema foi omitida do artefato de software. Omisso Descrio Geral Tipo de Defeito Transparncia 15 Validao de Software Mdulo 1 Conceitos Bsicos De onde os defeitos vm? Que defeitos podemos encontrar? Copyright Guilherme Travassos COPPE/UFRJ 2003 - http://www.cos.ufrj.br/~ght Conhecimento do domnio Requisitos Gerais Outro Domnio Artefatos de Software Omisso Inconsistncia Ambigidade Fato incorreto Informao estranha Tipos de Defeitos Introduzidos Transparncia 16 Validao de Software Mdulo 1 Conceitos Bsicos Defeitos Introduzidos ao Longo do Processo de Desenvolvimento Principal causa: traduo incorreta de informaes. Quanto antes a presena do defeito for revelada, menor o custo de correo do defeito e maior a probabilidade de corrigi-lo corretamente. Soluo: Introduzir atividades de V V & T ao longo de todo o ciclo de desenvolvimento. Transparncia 17 Validao de Software Mdulo 1 Conceitos Bsicos 0.3 Verificao e Validao (V&V) As atividades de avaliao de produtos so parte do tema chamado Verificao e Validao Verificao e Validao (V&V). (V&V). A definio de V&V abrange muitas das atividades s quais nos referimos como Garantia da Qualidade de Software (SQA). Transparncia 18 Validao de Software Mdulo 1 Conceitos Bsicos Verificao refere-se ao conjunto de atividades que garante que o software implementa corretamente uma funo especfica. Estamos construindo certo o produto? Transparncia 19 Validao de Software Mdulo 1 Conceitos Bsicos Validao refere-se ao conjunto de atividades que garante que o software que foi construdo rastrevel s exigncias do cliente. Estamos construindo o produto certo? Transparncia 20 Validao de Software Mdulo 1 Conceitos Bsicos 0.4 Garantia da Qualidade de Software Mtodos de Engenharia de Software: proporcionam a base a partir da qual a qualidade construda. Revises Tcnicas Formais: ajudam a garantir a qualidade do produto produzido como uma conseqncia de cada passo da engenharia de software. Medio: ajudam a controlar cada elemento da configurao de software. Transparncia 21 Validao de Software Mdulo 1 Conceitos Bsicos Garantia da Qualidade de Software (cont.) Padres e Procedimentos: ajudam a garantir a uniformidade. Garantia de Qualidade de Software (SQA): pe em prtica uma filosofia de qualidade total. Teste: a qualidade pode ser avaliada. Transparncia 22 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 23 Validao de Software Mdulo 1 Conceitos Bsicos Teste de Software Transparncia 24 Validao de Software Mdulo 1 Conceitos Bsicos Teste 1 Introduo 2 Contexto 3 Organizao para Realizao de Testes 4 Executando Teste 5 Depurando Software 6 Tcnicas de Teste Transparncia 25 Validao de Software Mdulo 1 Conceitos Bsicos 1. Introduo 1.1 Engenharia de Software e Teste 1.2 O qu teste 1.3 Objetivos da Atividade de Teste 1.4 Erros e as atividades de teste Transparncia 26 Validao de Software Mdulo 1 Conceitos Bsicos 1.1 Engenharia de Software e Teste 1- Fase de Definio ("o que") - Anlise do sistema - Planejamento do projeto de software - Anlise de requisitos 2- Fase de Desenvolvimento ("como") - Projeto de software - Codificao - Realizao de testes Realizao de testes 3- Fase de Manuteno ("alteraes") Transparncia 27 Validao de Software Mdulo 1 Conceitos Bsicos 1.2 O Qu Teste 1. a atividade de teste o processo de executar um programa com a inteno de descobrir um erro 2. um bom caso de teste aquele que tem uma elevada probabilidade de revelar um erro ainda no descoberto 3. um teste bem-sucedido aquele que revela um erro ainda no descoberto. Transparncia 28 Validao de Software Mdulo 1 Conceitos Bsicos 1.3 Objetivos da Atividade de Teste Objetivo: projetar testes que descubram sistematicamente diferentes classes de erros e faam-no com uma quantidade de tempo e esforo razovel. Se a atividade de teste for conduzida com sucesso, ela descobrir erros no software. A atividade de teste no pode mostrar a ausncia de bugs. Ela s pode mostrar se defeitos de software esto presentes. Transparncia 29 Validao de Software Mdulo 1 Conceitos Bsicos 1.4 Erros e as Atividades de Teste Se erros graves forem encontrados com regularidade, isto implica que a qualidade e a confiabilidade de software so suspeitas. Se erros facilmente corrigveis forem encontrados, isto implica que a qualidade e a confiabilidade do software esto aceitveis ou os testes so inadequados para revelar erros graves Se no for encontrado erro isto implica que a configurao de teste no foi suficientemente elaborada e erros esto escondidos no software Transparncia 30 Validao de Software Mdulo 1 Conceitos Bsicos 1.5 O Processo de Teste Transparncia 31 Validao de Software Mdulo 1 Conceitos Bsicos 2. Contexto 2.1 Princpios Bsicos 2.2 Estratgia de Teste 2.3 Verificao e Validao 2.4 Garantia de Qualidade de Software Transparncia 32 Validao de Software Mdulo 1 Conceitos Bsicos 2.1 Princpios Bsicos Teste um conjunto de atividades que pode ser planejado antecipadamente e realizado sistematicamente. - o planejamento e a realizao das atividades de teste definem a estratgia de testes de software. - uma estratgia de teste de software define tcnicas de projeto de casos de teste e mtodos de teste especficos para cada etapa do processo de engenharia de software. Transparncia 33 Validao de Software Mdulo 1 Conceitos Bsicos 2.2 Estratgia de Teste de Software Uma Estratgia de Teste Estratgia de Teste deve acomodar testes de baixo nvel e testes de alto nvel, deve oferecer orientao ao profissional, deve oferecer um conjunto de marcos de referncia ao administrador e deve ser mensurvel. Transparncia 34 Validao de Software Mdulo 1 Conceitos Bsicos Caractersticas das Estratgias de Teste (a) a atividade de teste inicia-se no nvel de mdulos e prossegue "para fora", na direo da integrao de todo o sistema diferentes tcnicas de teste so apropriadas a diferentes pontos de tempo. a atividade de teste realizada pela equipe de desenvolvimento do software e para grandes projetos por um grupo de teste independente. Transparncia 35 Validao de Software Mdulo 1 Conceitos Bsicos Caractersticas das Estratgias de Teste (b) as atividades de teste e de depurao so atividades diferentes, mas a depurao deve ser acomodada em qualquer estratgia de teste. deve oferecer um conjunto de marcos de referncia ao administrador e deve ser mensurvel. Transparncia 36 Validao de Software Mdulo 1 Conceitos Bsicos 2.3 Verificao e Validao (V&V) A atividade de teste de software um elemento de um tema mais amplo chamado Verificao e Validao Verificao e Validao (V&V). (V&V). A definio de V&V abrange muitas das atividades s quais nos referimos como Garantia da Qualidade de Software (SQA). Transparncia 37 Validao de Software Mdulo 1 Conceitos Bsicos Verificao refere-se ao conjunto de atividades que garante que o software implementa corretamente uma funo especfica. Estamos construindo certo o produto? Transparncia 38 Validao de Software Mdulo 1 Conceitos Bsicos Validao refere-se ao conjunto de atividades que garante que o software que foi construdo rastrevel s exigncias do cliente. Estamos construindo o produto certo? Transparncia 39 Validao de Software Mdulo 1 Conceitos Bsicos 2.4 Garantia da Qualidade de Software Mtodos de Engenharia de Software: proporcionam a base a partir da qual a qualidade construda. Revises Tcnicas Formais: ajudam a garantir a qualidade do produto produzido como uma conseqncia de cada passo da engenharia de software. Medio: ajudam a controlar cada elemento da configurao de software. Transparncia 40 Validao de Software Mdulo 1 Conceitos Bsicos Garantia da Qualidade de Software (cont.) Padres e Procedimentos: ajudam a garantir a uniformidade. Garantia de Qualidade de Software (SQA): pe em prtica uma filosofia de qualidade total. Teste: a qualidade pode ser avaliada. Transparncia 41 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 42 Validao de Software Mdulo 1 Conceitos Bsicos 3. Organizao para Realizao de Testes 3.1 Desenvolvedores x Testadores 3.2 Como as pessoas vem os testes 3.3 O Grupo Independente de Teste 3.4 Etapas do Teste de Software 3.5 Critrios para Concluso de Testes Transparncia 43 Validao de Software Mdulo 1 Conceitos Bsicos 3.1 Desenvolvedores x Testadores Quando o teste se inicia h um conflito de interesses: Desenvolvedores: interesse em demonstrar que o programa isento de erros. Responsveis pelos testes: interesse em mostrar que o programa tem erros. Transparncia 44 Validao de Software Mdulo 1 Conceitos Bsicos 3.2 Como as Pessoas Vem os Testes Do ponto de vista psicolgico, as pessoas vem os testes com uma tarefa destrutiva: Anlise, Projeto e Codificao de Software so tarefas construtivas Teste tarefa destrutiva pois visa descobrir problemas Transparncia 45 Validao de Software Mdulo 1 Conceitos Bsicos 3.3 Grupo Independente de Teste Para suprir o conflito de interesses existe o Grupo Grupo Independente de Testes Independente de Testes (ITG). ITG faz parte da equipe de projeto de desenvolvimento de software, no sentido de estarem envolvidos durante o processo de especificao e continuam planejando e especificando procedimentos de teste ao longo de um grande projeto. Transparncia 46 Validao de Software Mdulo 1 Conceitos Bsicos 3.4 Etapas do Teste de Software +Testes de Unidade: cada mdulo testado individualmente garantindo que ele funcione adequadamente. Utiliza as tcnicas de teste de caixa branca caixa branca. +Testes de Integrao: os mdulos so montados ou integrados para formarem um pacote de software. Utiliza principalmente as tcnicas de teste de caixa preta caixa preta. +Testes de Alto Nvel (validao e sistema): Os critrios de validao estabelecidos durante a anlise de requisitos so testados. Verifica tambm se todos os elementos combinam-se adequadamente e se a funo/ desempenho global do sistema conseguida. Utiliza as tcnicas de caixa preta caixa preta. Transparncia 47 Validao de Software Mdulo 1 Conceitos Bsicos Etapas do Teste de Software Transparncia 48 Validao de Software Mdulo 1 Conceitos Bsicos 3.5 Critrios para Concluso de Teste Quando realizamos testes, como saber se j testamos o suficiente? Respostas pragmticas: CVoc jamais ter completado a atividade de teste; a carga simplesmente transfere-se do projetista para o cliente. CQuando estiver sem tempo ou sem dinheiro. Transparncia 49 Validao de Software Mdulo 1 Conceitos Bsicos Um Modelo Emprico (a) Modelo Logartmico do Tempo de Execuo de Poisson: intensidade de erros real pode ser traada em relao a curva prevista. Transparncia 50 Validao de Software Mdulo 1 Conceitos Bsicos Um Modelo Emprico (b) Transparncia 51 Validao de Software Mdulo 1 Conceitos Bsicos 4 Executando Testes 4.1 Nveis de Testes 4.2 Teste de Unidade 4.3 Teste de Integrao 4.4 Teste de Validao 4.5 Teste de Sistema Transparncia 52 Validao de Software Mdulo 1 Conceitos Bsicos 4.1 Nveis de Teste ;Teste de Unidade: concentra-se em cada unidade do software, de acordo com o que implementado no cdigo fonte. ;Teste de Integrao: concentra-se no projeto e na construo da arquitetura de software. ;Teste de Validao: em como o software que foi construdo validado em relao aos requisitos de software. ;Teste de Sistema: o software e outros elementos do sistema so testados como um todo. Transparncia 53 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 54 Validao de Software Mdulo 1 Conceitos Bsicos 4.2 Teste de Unidade Os Testes de Unidade concentram-se em cada unidade do software, de acordo com o que implementado no cdigo fonte. Transparncia 55 Validao de Software Mdulo 1 Conceitos Bsicos O Que Testado (a) Ca interface com o mdulo testada para ter a garantia de que as informaes fluem para dentro e para fora da unidade de programa que se encontra sob teste Ca estrutura de dados local examinada para ter a garantia de que dados armazenados temporariamente mantm sua integridade durante todos os passos de execuo. Transparncia 56 Validao de Software Mdulo 1 Conceitos Bsicos Cas condies de limite so testadas para ter a garantia de que o mdulo opera adequadamente nos limites estabelecidos para demarcarem ou restringirem o processamento. Ctodos os caminhos independentes atravs da estrutura de controle so exercitados para ter a garantia de que todas as instrues de um mdulo foram executadas pelo menos uma vez. O Que Testado (b) Transparncia 57 Validao de Software Mdulo 1 Conceitos Bsicos Ctodos os caminhos de tratamento de erros so testados. O Que Testado (c) Interface Estruturas de dados locais Condies limite Caminhos independentes Caminhos de tratamento de erros Casos de Teste Transparncia 58 Validao de Software Mdulo 1 Conceitos Bsicos O Ambiente de Teste de Unidade (a) Uma vez que o mdulo no um programa individual, um software driver e/ou stub deve ser desenvolvido para cada unidade de teste. Transparncia 59 Validao de Software Mdulo 1 Conceitos Bsicos O Ambiente de Teste de Unidade (b) =Driver na maioria das aplicaes um programa principal que aceita dados de caso de teste, passa tais dados para o mdulo a ser testado e imprime os dados relevantes. =Stub ou programa simulado - serve para substituir mdulos que estejam subordinados (chamados pelo) ao mdulo a ser testado. Usa a interface do mdulo subordinado, pode fazer manipulao de dados mnima, imprime verificao de entrada e retorna. Transparncia 60 Validao de Software Mdulo 1 Conceitos Bsicos O Ambiente de Teste de Unidade (c) Driver mdulo a ser testado Stub 1 Stub 2 Resultados Interface Estruturas de dados locais Condies limites Caminhos execuo Caminhos de tratamento de erros casos de teste Transparncia 61 Validao de Software Mdulo 1 Conceitos Bsicos 4.3 Teste de Integrao Os Testes de Integrao concentram-se no projeto e na construo da arquitetura de software, almejam descobrir erros associados a interfaces interfaces. O objetivo , a partir dos mdulos testados ao nvel de unidade, integr-los, e testar se a estrutura de programa construda foi aquela determinada pelo projeto. Transparncia 62 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 63 Validao de Software Mdulo 1 Conceitos Bsicos Abordagens Integrao no incremental: (abordagem big-bang) o programa completo testado como um todo e o resultado o caos. Quando erros so encontrados, a correo difcil porque o isolamento das causas complicado pela vasta amplitude do programa inteiro. Integrao incremental: o programa construdo e testado em pequenos segmentos, onde os erros so mais fceis de serem isolados e corrigidos; as interfaces tm maior probabilidade de serem testadas completamente e uma abordagem sistemtica ao teste pode ser aplicada. Transparncia 64 Validao de Software Mdulo 1 Conceitos Bsicos Integrao Top-Down (a) Os mdulos so integrados movimentando-se de cima para baixo, atravs da hierarquia de controle, iniciando-se do mdulo de controle principal. Os mdulos subordinados ao mdulo de controle principal so incorporados estrutura de uma maneira depth-first (primeiro pela profundidade) ou breadth-first (primeiramente pela largura). Transparncia 65 Validao de Software Mdulo 1 Conceitos Bsicos Integrao Top-Down (b) Transparncia 66 Validao de Software Mdulo 1 Conceitos Bsicos Passos do Processo de Integrao Top-Down (a) 1. o mdulo de controle usado como um driver de teste e os stubs so substitudos para todos os mdulos diretamente subordinados ao mdulo de controle principal. 2. dependendo da abordagem de integrao escolhida, os stubs subordinados so substitudos, um de cada vez por mdulos reais. 3. testes so realizados medida que cada mdulo integrado. Transparncia 67 Validao de Software Mdulo 1 Conceitos Bsicos 4. durante a concluso de cada conjunto de testes, outro stub substitudo pelo mdulo real. 5. teste de regresso - (realizao de todos ou de alguns dos testes anteriores) pode ser realizado a fim de garantir que novos erros no tenham sido introduzidos. Passos do Processo de Integrao Top-Down (b) Transparncia 68 Validao de Software Mdulo 1 Conceitos Bsicos 4.4 Teste de Validao Os Testes de Validao concentram-se em como os requisitos estabelecidos como parte da anlise de requisitos de software so validados em relao ao software que foi construdo. Transparncia 69 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 70 Validao de Software Mdulo 1 Conceitos Bsicos Contexto Ao trmino da atividade de teste de integrao, o software est completamente montado como um pacote, erros de interface foram descobertos e corrigidos e uma srie final de testes de software - os testes de validao testes de validao - pode iniciar- se. Transparncia 71 Validao de Software Mdulo 1 Conceitos Bsicos Princpios (a) A validao bem sucedida quando o software funciona de uma maneira razoavelmente esperada pelo cliente. A Especificao de Requisitos de Software Especificao de Requisitos de Software contm os critrios de validao critrios de validao que formam a base para uma abordagem ao teste de validao. A validao do software realizada por meio de uma srie de testes de caixa preta que demonstram a conformidade com os requisitos. Transparncia 72 Validao de Software Mdulo 1 Conceitos Bsicos O plano e o procedimento de teste so projetados para garantir que: todos os requisitos funcionais so satisfeitos todos os requisitos de desempenho so conseguidos a documentao est correta outros requisitos so cumpridos: portabilidade, compatibilidade, remoo de erros e manutenabilidade Princpios (b) Transparncia 73 Validao de Software Mdulo 1 Conceitos Bsicos Reviso de Configurao Um elemento importante do processo de validao a reviso reviso de configurao de configurao ou auditoria O propsito dessa reviso garantir que todos os elementos da configurao de software tenham sido adequadamente desenvolvidos, esto catalogados e tm os detalhes necessrios para apoiar a fase de manuteno do ciclo de vida do software. Transparncia 74 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 75 Validao de Software Mdulo 1 Conceitos Bsicos virtualmente impossvel que se preveja como o cliente realmente usar/reagir a um programa (as instrues de uso podem ser mal-interpretadas, combinaes estranhas de dados podem ser irregularmente usadas, sadas que pareciam claras ao analista podem ser ininteligveis para um usurios, etc). Testes devem ser feitos para se saber isto. Existem duas famlias de testes com esta finalidade: Testes de Aceitao Testes Alfa e Testes Beta Testes Alfa e Beta x Teste de Aceitao Transparncia 76 Validao de Software Mdulo 1 Conceitos Bsicos Usado quando o software customizado para um cliente =objetiva capacitar/permitir ao usurio final a validar todos os requisitos. =pode variar de um test drive informal a uma srie de testes planejados. Teste de Aceitao Transparncia 77 Validao de Software Mdulo 1 Conceitos Bsicos Usado quando o software desenvolvido como um produto para muitos clientes, geralmente tem duas fases: Teste Alfa Teste Alfa - levado a efeito por um cliente nas instalaes do desenvolvedor. O software usado num ambiente controlado com o desenvolvedor "olhando sobre os ombros" do usurio e registrando erros e problemas de uso. Testes Alfa e Beta (a) Transparncia 78 Validao de Software Mdulo 1 Conceitos Bsicos Teste Beta Teste Beta - realizado nas instalaes do cliente pelo usurio final do software. O desenvolvedor no est presente. O cliente registra os problemas (reais ou imaginrios) que so encontrados e relata-os ao desenvolvedor a intervalos regulares. Testes Alfa e Beta (b) Transparncia 79 Validao de Software Mdulo 1 Conceitos Bsicos 4.5 Teste de Sistema O software apenas um elemento de um sistema baseado em computador mais amplo. O teste de sistema envolve uma srie de diferentes testes, cujo propsito primordial por completamente prova o sistema baseado em computador. Transparncia 80 Validao de Software Mdulo 1 Conceitos Bsicos Transparncia 81 Validao de Software Mdulo 1 Conceitos Bsicos "apontar o dedo" - quando ocorre um erro, o desenvolvedor de um elemento do sistema culpa outro pelo problema. Um Problema Clssico no Teste de Sistema Transparncia 82 Validao de Software Mdulo 1 Conceitos Bsicos O engenheiro de sistema deve antecipar os problemas potenciais da interface: 1. projetar caminhos de tratamento de erros que testem todas as informaes que chegam de outros elementos do sistema. 2. realizar uma srie de testes que simulem dados ruins ou outros erros em potencial na interface do software. 3. registrar os resultados de teste para usar como "prova" se algum lhe apontar o dedo. 4. participar do planejamento e projeto dos testes do sistema para garantir que o software seja adequadamente testado. Princpios Transparncia 83 Validao de Software Mdulo 1 Conceitos Bsicos Muitos sistemas baseados em computador precisam recuperar-se de falhas e retomar o processamento dentro de um tempo previamente especificado. Em certos casos, o sistema deve tolerar falhas, isto , o processamento de falhas no deve fazer com que uma funo global de sistema cesse. Em outros casos, uma falha do sistema deve ser corrigida dentro de um perodo previamente especificado; caso contrrio, graves prejuzos econmicos ocorrero. O teste de recuperao um teste de sistema que fora o software a falhar de diversas maneiras e verifica se a recuperao adequadamente executada. Teste de Recuperao Transparncia 84 Validao de Software Mdulo 1 Conceitos Bsicos Qualquer sistema baseado em computador que gerencie informaes delicadas ou provoque aes que possam impropriamente prejudicar (ou beneficiar) pessoas constitui um alvo para o acesso imprprio ou ilegal. O teste de segurana tenta verificar se todos os mecanismos de proteo embutidos num sistema o protegero, de fato, de acessos indevidos. Teste de Segurana (a) Transparncia 85 Validao de Software Mdulo 1 Conceitos Bsicos Durante o teste de segurana, o analista desempenha o papel de pessoa que deseja penetrar no sistema. Qualquer coisa vale! adquirir senhas mediante contatos externos atacar o sistema com software customizado projetado para derrubar quaisquer defesas que tenham sido construdas Teste de Segurana (b) Transparncia 86 Validao de Software Mdulo 1 Conceitos Bsicos desarmar o sistema, negando servio a outros provocar erros intencionalmente, esperando acess-lo durante a recuperao "folhear" atravs de dados inseguros esperando descobrir a chave para a entrada no sistema. O papel do projetista do sistema fazer com que o acesso custe mais do que o valor da informao que ser obtida. Teste de Segurana (c) Transparncia 87 Validao de Software Mdulo 1 Conceitos Bsicos 5 Depurando Software 5.5.1 O Qu depurao 5.5.2 Abordagens depurao Transparncia 88 Validao de Software Mdulo 1 Conceitos Bsicos O objetivo primordial da depurao ou debugging descobrir e corrigir a causa de um erro de software. A depurao ocorre em conseqncia de testes bem sucedidos. Embora a depurao possa e deva ser ser um processo disciplinado, ela ainda tem muito de arte. 5.5.1 O Qu Depurao Transparncia 89 Validao de Software Mdulo 1 Conceitos Bsicos O Processo de Depurao Transparncia 90 Validao de Software Mdulo 1 Conceitos Bsicos Durante a depurao, encontram-se erros que variam de brandamente perturbadores a catastrficos. medida que as conseqncias de uma falha aumentam, a presso para descobrir a causa tambm aumenta. Severidade de Erros Transparncia 91 Validao de Software Mdulo 1 Conceitos Bsicos 1) O sintoma e a causa podem ser geograficamente remotos. Estruturas altamente acopladas agravam essa situao. 2) O sintoma pode desaparecer (temporariamente) quando outro erro corrigido. 3) O sintoma pode, de fato, ser causado por no erros (por exemplo, imprecises de arredondamento). Por que a Depurao Difcil? (a) Transparncia 92 Validao de Software Mdulo 1 Conceitos Bsicos 4) O sintoma pode ser causado por um erro humano que no facilmente rastreado. 5) O sintoma pode ser resultado de problemas de temporizao, e no problemas de processamento. 6) O sintoma pode ser devido a causas que esto distribudas por uma srie de tarefas que so executadas em diferentes processadores. Por que a Depurao Difcil? (b) Transparncia 93 Validao de Software Mdulo 1 Conceitos Bsicos 1 - Fora bruta 2 - Backtracking 3 - Eliminao da Causa 5.5.2 Abordagens Depurao Transparncia 94 Validao de Software Mdulo 1 Conceitos Bsicos A categoria de depurao por fora bruta provavelmente o mtodo mais comum e menos eficiente de isolar a causa de um erro de software. Usa-se uma filosofia do tipo "deixe que o computador descubra o erro". Por exemplo, so feitas listagens de memria (memory dumps), so inseridas instrues WRITE, etc. Aplica-se o mtodo de fora bruta quando tudo o mais falha. Fora Bruta (a) Transparncia 95 Validao de Software Mdulo 1 Conceitos Bsicos Espera-se encontrar, em algum lugar do emaranhado de informaes, uma pista que possa levar causa de um erro. No obstante, a massa de informaes produzida possa levar ao sucesso, mais freqentemente ela conduz a tempo e esforo desperdiados. Deve-se gastar o raciocnio primeiro. Fora Bruta (b) Transparncia 96 Validao de Software Mdulo 1 Conceitos Bsicos Iniciando-se no local em que o sintoma foi descoberto, o cdigo fonte rastreado para trs (manualmente) at que o local da causa seja encontrado. uma abordagem que pode ser usada com sucesso em pequenos programas. Infelizmente, medida que o nmero de linhas de cdigo aumenta, o nmero de potenciais caminhos de backtracking pode tornar-se incontrolavelmente alto. Backtracking Transparncia 97 Validao de Software Mdulo 1 Conceitos Bsicos Os dados relacionados ocorrncia de erros so organizados para isolar potenciais causas. Uma "hiptese de causa" imaginada e os dados so usados para provar ou refutar a hiptese. Alternativamente, uma lista de todas as causas possveis desenvolvida e testes so realizados para eliminar cada uma delas. Se os testes iniciais indicarem que uma hiptese de causa apresenta possibilidades, os dados so refinados, numa tentativa de isolar o bug. Eliminao da Causa Transparncia 98 Validao de Software Mdulo 1 Conceitos Bsicos As abordagens de depurao podem ser complementadas com ferramentas de depurao: compiladores de depurao, auxlio rastreadores de depurao dinmicos, geradores de casos de teste automticos, geradores de dumps de memria e geradores de mapas de referncia cruzada. 5.5.3 Dicas Sobre Depurao (a) Transparncia 99 Validao de Software Mdulo 1 Conceitos Bsicos Um poderoso aliado depurao so "outras pessoas". O conceito de programao no egostica deve ser ampliado para "depurao no egostica". Dicas Sobre Depurao (b) Transparncia 100 Validao de Software Mdulo 1 Conceitos Bsicos Assim que um erro encontrado, ele deve ser corrigido, porm a correo de um erro pode introduzir outros erros. Assim, deve- se fazer 3 perguntas simples, sempre que se realizar uma "correo" que remover a causa de um erro: 1- A causa do bug reproduzida em outra parte do programa? 2- Qual "bug seguinte" poderia ser introduzido pelo reparo que se est prestes a fazer? 3- O que poderia ter sido feito para eliminar este bug desde o princpio? Dicas Sobre Depurao (c)