Universidade Luterana d Brasil Faculdade de Infrmática Disciplina de Engenharia de Sftware Prfessr Luís Fernand Garcia www.garcia.pr.br TESTE DE SOFTWARE (Versã 2.0) 9 Teste de Sftware Imprtância Dependência ds sistemas de sftware Testes cm fatr de garantia de qualidade - CRUCIAL para garantia da QUALIDADE Custs relacinads 2002/USA 60 bilhões relacinads a falhas de sftware 2002/USA 22 bilhões pderiam ser ecmizads cas prcess de teste fsse levad mais a séri Em alguns cass = 40% de td cust d prjet Em alguns cass de sistemas especiais = 3 a 5 vezes mais que as utras fases juntas Errs clássics Estaçã climática de marte Objetiv enviar sinais à terra Desastre chcu-se cm planeta marte Mtiv BUG! Prejuíz US$ 165 milhões Airbus A320 Desastre USS Vicennes derrubu um A320 em 1988 Mtiv BUG! cnfundiu um A320 cm um F-14 Prejuíz 290 mrtes Máquinas de radiaçã Sistema de ambulância de Lndres 1992 Airbus A300 queda em 1994 264 mrtes Fg amig na guerra das Malvinas Trem parad n mei d nada err a detectar a estaçã Míssil Scud na guerra d glf err em temp real de.36s 30 mrts Expectativas Prgramas feits cm bastante cuidad 5 falhas / 1000 LOC Windws XP 45 milhões LOC 225.000 errs!
Teste de Sftware Definiçã Prcess de executar um prgrama cm bjetiv de revelar a presença de errs... Verificaçã imcmpleta Nã garante a inexistência de errs n prgrama Cars Teste cnsiste na verificaçã dinâmica d funcinament de um prgrama em um cnjunt finit de cass de teste, cuidadsamente selecinad dentr de um dmíni infinit de entradas, cntra seu funcinament esperad. Dinâmic Execuçã Finit Existem muits cass de teste Selecinad Técnicas diferem na seleçã Esperad Funcinament deve ser verificad Terminlgia Fault (falta) Causa de um mal funcinament. Failure (falha) Efeit bservável nã desejável. Err Qualquer diferença entre um valr btid, independente da sua frma de btençã, e valr tericamente crret. Exceçã Event que causa a suspensã da peraçã nrmal de um prgrama. Anmalia Qualquer cisa bservada na peraçã u dcumentaçã de um prgrama que nã está de acrd cm as expectativas, basead em dcuments u em utrs prgramas. Verificaçã Estams cnstruind cert prdut? Validaçã Estams cnstruind prdut cert? Orácul Entidade respnsável pela determinaçã ds resultads esperads em um teste Prváveis Defeits n prcess de desenvlviment de sftware A mair parte é de rigem humana humans nã sã 100% perfeits Pdem cmeçar a aparecer desde a especificaçã de requisits Especificaçã errada nã crrespnde a necessidade d cliente Especificaçã errada requisits impssíveis de implementar Sã gerads na cmunicaçã e na transfrmaçã de infrmações Cntinuam presentes ns diverss prduts de sftware prduzids e liberads (10 defeits a cada 1000 linhas de códig) A mairia encntra-se em partes d códig raramente executadas Principal causa: traduçã incrreta de infrmações Quant antes a presença d defeit fr revelada, menr cust de crreçã d efeit e mair a prbabilidade de crrigi-l crretamente Sluçã: intrduzir atividades de VV&T a lng de td cicl de desenvlviment
Tips de Falhas Algritm algritm nã prduz a saída esperada Esquecer de inicializar variáveis Teste de cndições erradas desvis de códig errad Sintaxe linguagens de prgramaçã usadas indevidamente Esquecer de pnt-e-vírgula n final da linha em Pascal Cmputaçã e precisã Errs em fórmulas matemáticas Utilizaçã errada de precisã casas decimais e etc... Dcumentaçã Códig e dcumentaçã incnsistentes Overlad sbrecarga Estur de estruturas de dads cm vetres e matrizes Falha de Limite e Capacidade Capacidade de tratament = 32 dispsitivs; Mais de 32 = err Crdenaçã e Timing Sistemas Distribuíds e de Temp Real Sistemas bancárias cntrle de transações Desempenh Velcidade d sistema nã está de acrd cm s requisits Recuperaçã Falhas em decrrência de events externs Events cm falta de luz Tlerância a falhas Hardware Nrmalmente relacinadas a DRIVERS de dispsitivs Falhas de Padrnizaçã e prcediments Padrnizaçã de cdificaçã entendiment d códig Estatísticas de Falhas uma divisã da HP - 1997 Requisits 5% Prcess/Interprcess 5% Hardware 4% Manipulaçã de dads 6% Cmputaçã 18% Outrs 11% Lógica 32% Dcumentaçã 19%
Princípis de teste nã planeje teste assumind que prgrama está crret um bm cas de teste é aquele que tem alta prbabilidade de encntrar err ainda nã descbert cas de teste bem sucedid é aquele que detecta err ainda nã descbert a prbabilidade de existência de mais errs numa parte d prgrama é prprcinal a númer de errs já descbert na mesma teste deve ser feit pr utra pessa que nã autr d prgrama dads de teste devem ser definids para dads inválids e nã-esperads determinar SEMPRE s resultads esperads verificar cuidadsamente s resultads de cada teste nunca jgue fra cass de teste, a nã ser que esteja jgand fra também seu prgrama Etapas d prcess de Teste Nã é / nã deve ser uma FASE d prcess de desenvlviment de sftware Deve ser feita em paralel cm as utras FASES d prcess Analise Teste Prjet Teste Cdificaçã Teste Planejament bjetivs Prjet de cass de teste Execuçã d prgrama cm s cass de teste Análise ds resultads Cass de teste Dads usads para testar um sftware Especificaçã de uma entrada para prgrama e a saída esperada crrespndente Um bm cas de teste tem alta prbabilidade de revelar um err ainda nã descbert Prjet de cass de teste Pde ser tã u mais difícil quant prjet d prdut testad Pucs prfissinais gstam u sabem realizar prjets de teste Deve ser finit Cust de aplicaçã tem que ser razável Testes Classificaçã Análise Estática Análise d códig-fnte sem executá-l Inspeções entender prgrama para descbrir errs Walkthrughs execuçã simulada d prgrama Análise Dinâmica Teste Simbólic Executar prgrama cm dads simbólics Predicads de caminhs utilizaçã de grafs Verificaçã Frmal Especificaçã frmal d prgrama
Prvadr de teremas Difíceis Cars Demrad Técnicas e critéris de teste Teste funcinal caixa preta requisits funcinais d sftware Teste Estrutural caixa branca estrutura interna d prgrama Técnica baseada em errs errs mais freqüentes durante prcess de desenvlviment Teste de unidade identificar errs de cada módul separadamente Cncentra-se n módul Técnicas de teste estrutural e baseada em errs Pde ser realizad em paralel Usam Driver Espécie de prgrama principal que acina módul Módul a ser testad Stub Móduls substituts cm mínim de manipulaçã de dads Móduls chamads pels móduls testads Características avaliadas Interface Dads entram e saem crretamente? Cmpatibilidade de parâmetrs? Operações sbre variáveis Cálculs incrrets? Overflw u underflw? Caminhs de execuçã imprtantes Caminhs de atendiment a errs Cndições de cntrn Teste de integraçã identificar errs assciads as interfaces entre s móduls de sftware Necessári para verificar errs crrids quand da junçã ds móduls Abrdagens Tp-dwn Bttn-Up Mista Teste de validaçã d sistema verificar se as funções estã de acrd cm a especificaçã Demnstrar a cnfrmidade cm a especificaçã Verificar se a dcumentaçã está crreta Abrdagens Teste Alfa realizad pel usuári n ambiente d desenvlvedr Teste Beta realizad pel usuári em seu própri ambiente Teste de Sistema Cnsidera sftware dentr d seu ambiente mais ampl (HW, SW, pessas) Teste de segurança Teste de estresse cndições anrmais de vlume e recurss Teste de desempenh temp de respsta
Ferramentas de Teste Us de ferramentas autmatizadas de teste que apóiam prcess de teste Reduzem as falhas intrduzidas pela intervençã humana Aument de prdutividade Facilitam estuds cmparativs entre critéris Pssíveis cnclusões A atividade de teste é fundamental n prcess de desenvlviment de sftware Qualidade d prdut Alt cust da atividade de teste Desenvlviment e aplicaçã de técnicas e critéris de teste Desenvlviment e utilizaçã de ferramentas de teste Estuds teórics e empírics para cmparar s diverss critéris Questinári 1. Qual a imprtância de se testar um sftware? 2. Se uma empresa desenvlver um sftware de frma cuidadsa, utilizands tdas as técnicas de engenharia de sftware para as fases de análise, prjet e cdificaçã, pde-se pular a fase de testes? Pr quê? 3. Cite três mtivs que pdem causar errs em um sftware. 4. Quand se diz que um teste é bem sucedid? 5. Supnha um prgrama cm 1 milhã de linhas de códig desenvlvid pr 10 prgramadres em um mês. Supnha que a fase de testes nã encntru nenhum err. Pde-se cnsiderar que prgrama está livre de errs? Ou pde-se supr que s testes nã fram bem feits? Pr quê? 6. Cite um exempl de falha na sintaxe. 7. Pr que a falha de dcumentaçã é grave? Dê um exempl. 8. Qual a diferença entre a falha de verlad e a falha de limite? 9. O que é falha de recuperaçã? 10. O que é falha de padrnizaçã? Pde ser cnsiderada uma falha grave u leve? 11. Qual é a diferença entre s testes de caixa preta e s testes de caixa branca? 12. Cite pel mens 3 tips de errs que pdem ser encntrads em testes d tip caixa preta. 13. Testes d tip caixa preta pdem ser utilizads para descbrir em que lcal d códig está err?