testes oo aspectos avançados em engenharia de software aula 6 fernanda campos dcc/ufjf

Download Testes OO Aspectos Avançados em Engenharia de Software Aula 6 Fernanda Campos DCC/UFJF

Post on 17-Apr-2015

104 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Slide 1
  • Testes OO Aspectos Avanados em Engenharia de Software Aula 6 Fernanda Campos DCC/UFJF
  • Slide 2
  • Teste de software A fase de teste, no processo de desenvolvimento de software, tem papel crtico na garantia da qualidade. Essa fase fornece subsdios para identificar problemas e mensurar a qualidade dos produtos. A atividade de teste deve resultar em parmetros que nos permitam avaliar o grau de confiana de um sistema.
  • Slide 3
  • Teste de software necessrio testar um sistema OO em uma variedade de nveis diferentes para descobrir erros que podem ocorrer medida que classes colaboram umas com as outras e subsistemas se comunicam entre si. Teste OO estrategicamente similar ao teste de sistemas convencionais, mas taticamente diferente.
  • Slide 4
  • Teste de software O teste OO pode comear pela reviso dos modelos da anlise e do projeto. Uma vez gerado o cdigo, comea uma srie de testes para exercitar operaes de classes e verificar se existem erros quando uma classe colabora com outra. medida que as classes so integradas para formar um subsistema, o teste baseado em uso aplicado. Finalmente, casos de uso so usados para descobrir erros em nvel de validao do software. Teste OO enfoca a seqncia de operaes para exercitar os estados de uma classe.
  • Slide 5
  • Para que testar? Qualidade: Cdigo testado mais confivel Como saber se o recurso funciona sem testar? Coragem para mudar: De que adianta a OO isolar a interface da implementao se o programador tem medo de mudar a implementao? Como saber se ainda funciona aps refatoramento? Saber quando o projeto est pronto. Testes so requisitos executveis. Escreva-os antes. Quando todos rodarem 100%, o projeto est concludo!
  • Slide 6
  • Todos sabem: testes devem ser escritos; Poucos o fazem, e por qu no ? Sndrome da pressa Isto cria um crculo vicioso Como quebrar este ciclo: criando um ambiente simples de testes. Depois de fazer os primeiros testes, o hbito vem para ficar. Problema com testes (e a soluo) menos testes menos produtividade menos estabilidade mais presso
  • Slide 7
  • Testar Depurar Simplificando Depurar - o que se faz quando se sabe que o programa no funciona; Testar - tentativas sistemticas de encontrar erros em programa que voc acha que est funcionando. Testes podem mostrar a presena de erros, no a sua ausncia (Dijkstra)
  • Slide 8
  • Teste de software Duas tcnicas podem ser utilizadas para realizar teste de software: teste funcional e teste estrutural. O teste funcional, tambm chamado teste de "caixa- preta", testa o sistema do ponto de vista do usurio, isto , no considera a estrutura interna ou a forma de implementao do sistema. Este o nico tipo de teste possvel quando no se dispe do cdigo-fonte. O teste estrutural, tambm chamado de teste de "caixa- branca", procura exercitar todas as partes do cdigo- fonte de um sistema. Dessa forma, necessrio ter o cdigo-fonte disponvel, para controlar o que foi e o que no foi testado.
  • Slide 9
  • Teste enquanto voc escreve cdigo Se possvel escreva os testes antes mesmo de escrever o cdigo uma das tcnicas de XP quanto antes for encontrado o erro melhor !!
  • Slide 10
  • Tcnicas bsicas Teste o cdigo em seus limites; Teste de pr e ps condies; Uso de premissas (assert); Programe defensivamente; Use os cdigos de erro.
  • Slide 11
  • Teste o cdigo em seus limites Para cada pequeno trecho de cdigo (um lao, ou if por exemplo) verifique o seu bom funcionamento; Tente uma entrada vazia, um nico item, um vetor cheio, etc.
  • Slide 12
  • Testes sistemticos Teste incrementalmente durante a construo do sistema aps testar dois pacotes independentemente teste se eles funcionam juntos Teste primeiro partes simples tenha certeza que partes bsicas funcionam antes de prosseguir testes simples encontram erros simples teste as funes/mtodos individualmente
  • Slide 13
  • Testes Sistemticos Conhea as sadas esperadas conhea a resposta certa para programas mais complexos valide a sada com exemplos conhecidos compiladores - arquivos de teste; numricos - exemplos conhecidos, caractersticas; grficos - exemplos, no confie apenas nos seus olhos.
  • Slide 14
  • Testes Sistemticos Verifique as propriedades invariantes alguns programas mantm propriedades da entrada nmero de linhas tamanho da entrada freqncia de caracteres
  • Slide 15
  • Testes Sistemticos Compare implementaes independentes os resultados devem ser os mesmos se forem diferentes pelo menos uma das implementaes est incorreta Cobertura dos testes cada comando do programa deve ser executado por algum teste
  • Slide 16
  • Automao de testes Testes manuais tediosos, no confiveis Testes automatizados devem ser facilmente executveis
  • Slide 17
  • Automao de testes Teste de regresso automticos comparar a nova verso com a antiga verificar se os erros da verso antiga foram corrigidos verificar se novos erros no foram criados
  • Slide 18
  • Automao de testes Crie testes autocontidos testes que contm suas prprias entradas e respectivas sadas esperadas O que fazer quando um erro encontrado? se no foi encontrado por um teste faa um teste que o provoque
  • Slide 19
  • Arcabouo de testes As vezes para se testar um componente isoladamente necessrios criar um ambiente com caractersticas de onde este componente ser executado
  • Slide 20
  • Testes de estresse Testar com grandes quantidades de dados gerados automaticamente erros comuns: overflow nos buffers de entrada, vetores e contadores Exemplo: ataques de segurana
  • Slide 21
  • Tipos de teste white box testes feitos por quem conhece (escreveu) o cdigo black box testes sem conhecer o cdigo usurios encontram novos erros pois usam o programa de formas que no foram previstas
  • Slide 22
  • Teste OO O processo de teste de software OO apresenta algumas vantagens em relao ao procedural, entre as quais cita-se: Mtodos e interfaces de classes so explicitamente definidos; Menos casos de testes para cobertura do software; Reutilizao de casos de teste devido presena da caracterstica de herana.
  • Slide 23
  • Teste OO Existem desvantagens como: A avaliao da corretude da classe dificultada pela presena do encapsulamento de informaes; O gerenciamento do teste dificultado pelos mltiplos pontos de entrada (mtodos) de uma classe; As interaes entre os objetos so expandidas pelo polimorfismo e pela ligao dinmica.
  • Slide 24
  • Tipos de testes em software OO testes das classes testes de interaes testes de regresso teste do sistema e sub-sistemas teste de aceitao testes de implantao
  • Slide 25
  • Anlise de Riscos Anlise de Riscos ajuda a planejar quais testes devem ser feitos Um risco - ameaa ao sucesso de um projeto riscos do gerenciamento do projeto testes no ajudam muito riscos do negcio testes da funcionalidade riscos tcnicos testes de unidades, das classes, componentes, etc.
  • Slide 26
  • Dimenses do Processo de Testes Quem cria os testes? Os desenvolvedores? Uma equipe especializada em testes? Ambos? Quais partes so testadas? Todas? Nenhuma? Ou s as de alto risco? Quando os testes sero realizados? Sempre? Rotineiramente? No final do projeto?
  • Slide 27
  • Dimenses do Processo de Testes Como ser feito? Baseado no que o software faz ou em como o software faz? Os testadores conhecem a implementao ou s a interface? Quanto de testes o adequado?
  • Slide 28
  • Papis no Processo de Testes Testador de classes Testador da Integrao testa as interaes entre objetos Testador do sistema conhece o domnio e capaz de verificar a aplicao como um todo ponto de vista do usurio do sistema Gerente do Processo de Testes coordena e escalona os testes e as pessoas
  • Slide 29
  • Planejamento de Testes Muitas vezes esquecido ou no considerado pelos gerentes de projeto Atividades de planejamento: Escalonamento das atividades de testes Estimativas de custo, tempo e pessoal necessrio para realizar os testes Equipamento necessrio
  • Slide 30
  • Planejamento de Testes Atividades de planejamento: Definio do nvel de cobertura: quanto maior, mais cdigo ser exigido. mtricas para avaliar eficcia de um conjunto de testes cobertura do cdigo cobertura das ps-condies cobertura dos elementos do modelo
  • Slide 31
  • Testes das Classes (unidades) Uma maneira o peer-review Errar humano Testes automatizados so melhores Testes automatizados devem cobrir alguns casos normais o maior nmero possvel de casos limtrofes
  • Slide 32
  • Testes das Interaes Objetos podem interagir de 4 formas diferentes: um objeto passado como parmetro para outro objeto numa chamada de mtodo um objeto devolve uma referncia para outro objeto numa chamada de mtodo um mtodo cria uma instncia de outro objeto um mtodo usa uma instncia global de outra classe (normalmente evitado)
  • Slide 33
  • Casos: Teste das interaes Chamadas de mtodos 2 abordagens: Programao defensiva O receptor verifica os parmetros Programao por contrato A mensagem verificada antes do envio
  • Slide 34
  • Casos: Teste das interaes Subclasses/superclasses Use o diagrama de classes para identificar quais testes de regresso devem ser realizados quando uma classe alterada ou uma