Você está na página 1de 12

6/6/11

Motivao
!!

Teste de Software

!!

!!

Ocorrncia de falhas humanas no processo de desenvolvimento de software considervel Processo de testes indispensvel na garantia de qualidade de software Custos associados s falhas de software justificam um processo de testes cuidadoso e bem planejado

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 1

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 2

Falha, Falta e Erro


!!

Falha, Falta e Erro


!!

Falha
! ! Incapacidade do software de realizar a funo requisitada (aspecto externo) Exemplo
! Terminao anormal, restrio temporal violada

Falta
! ! Causa de uma falha Exemplo
! Cdigo incorreto ou faltando

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 3

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 4

Falha, Falta e Erro


!!

Falha, Falta e Erro

Erro
! ! ! Estado intermedirio (instabilidade) Provm de uma falta Pode resultar em falha, se propagado at a sada

Falta

Erro

Falha

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 5

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 6

6/6/11

Noo de confiabilidade
!!

Noo de confiabilidade
!!

Algumas faltas escaparo inevitavelmente


! ! Tanto dos testes Quanto da depurao

Assim, precisamos de uma referncia para decidir


! Quando liberar ou no sistema para uso uma estimativa probabilstica Mede a freqncia com que um software ir executar sem falha
! Em dado ambiente ! E por determinado perodo de tempo

!!

Falta pode ser mais ou menos perturbadora


! Dependendo do que se trate e em qual freqncia ir surgir para o usurio final

!!

Confiabilidade de software
! !

!!

Assim, entradas para testes devem se aproximar do ambiente do usurio final


Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 8

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 7

Dados e Casos de Teste


!!

Eficcia de testes
!!

Dados de Teste
! Entradas selecionadas para testar o software Dados de teste, bem como sadas esperadas de acordo com a especificao (Veredicto) Cenrios especficos de execuo

!!

Casos de Teste
! !
!!

!!

A atividade de teste o processo de executar um programa com a inteno de descobrir um erro Um bom caso de teste aquele que apresenta uma elevada probabilidade de revelar um erro ainda no descoberto Um teste bem sucedido aquele que revela um erro ainda no descoberto

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 9

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 10

O processo de teste
!!

Fases de teste

Teste de componentes
! ! ! Teste de componentes individuais de programa; Geralmente de responsabilidade do desenvolvedor do componente (exceto algumas para sistemas crticos); Os testes so derivados da experincia do desenvolvedor. Teste de grupos de componentes integrados para criar um sistema ou um subsistema; A resposabilidade de uma equipe independente de teste; Os testes so baseados em uma especificao de sistema.

!!

Teste de sistema
! ! !

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 11

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 12

6/6/11

Teste de defeitos
!!

Metas do processo de teste


!!

!!

!!

A meta do teste de defeitos descobrir defeitos em programas. Um teste de defeitos bem sucedido aquele que faz um programa se comportar de uma maneira anmala. Os testes mostram a presena e no a ausncia de defeitos.

Teste de validao
! ! Utilizado para demonstrar ao desenvolvedor e ao cliente do sistema que o software atende aos seus requisitos. Um teste bem sucedido mostra que o sistema opera conforme pretendido. Utilizado para descobrir faltas ou defeitos no software nos locais em que o comportamento no est correto ou no est em conformidade com a sua especificao; Um teste bem sucedido aquele que faz o sistema executar incorretamente e, assim, expor um defeito no sistema.

!!

Teste de defeitos
! !

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 13

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 14

O processo de testes de software


!!

Polticas de teste
Somente testes exaustivos podem mostrar que um programa est livre de defeitos. Contudo, testes exaustivos so impossveis. As polticas de teste definem a abordagem a ser usada na seleo de testes de sistema:
! ! ! Todas as funes acessadas por meio de menus devem ser testadas; As combinaes de funes acessadas por meio dos mesmos menus devem ser testadas; Onde as entradas de usurio so fornecidas, todas as funes devem ser testadas com entradas corretas e incorretas.

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 15

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 16

Teste de sistema
!!

Teste de integrao
!!

!!

!!

Envolve a integrao de dois ou mais componentes para criar um sistema ou subsistema. Pode envolver o teste de um incremento para ser entregue ao cliente. Duas fases:
! Teste de integrao a equipe de teste tem acesso ao cdigo fonte do sistema e o sistema testado medida que os componentes so integrados. Teste de releases a equipe de teste testa o sistema completo a ser entregue como uma caixa-preta.

!!

Envolve a construo de um sistema a partir de seus compontes e o teste do sistema resultante dos problemas ocorridos nas interaes entre componentes. Integrao top-down
! Desenvolver o esqueleto do sistema e preench-lo com componentes. Integrar componentes de infra-estrutura e, em seguida, adicionar componentes funcionais.

!!

Integrao bottom-up
!

!!

Para simplificar a localizao de erros, os sistemas devem ser integrados incrementalmente.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 17

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 18

6/6/11

Teste de integrao incremental


!!

Abordagens de teste
Validao de arquitetura
!
!!

O teste de integrao top-down melhor para descobrir erros na arquitetura do sistema. O teste de integrao top-down permite uma demonstrao limitada no estgio inicial do desenvolvimento. Freqentemente mais fcil com teste de integrao bottomup. Problemas com ambas as abordagens. Um cdigo extra pode ser necessrio para observar os testes.

Demonstrao de sistema
!

!!

Implementao de teste
!

!!

Observao de teste
!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 19

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 20

Teste de releases
!!

Teste caixa-preta

!!

!!

o processo de teste de um release de sistema que ser distribudo aos clientes. A meta primria aumentar a confiana do fornecedor de que o sistema atende aos seus requisitos. Teste de releases , geralmente, um teste caixa-preta ou funcional
! ! baseado somente na especificao de sistema; Os testadores no tm conhecimento da implementao do sistema.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 21

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 22

Diretrizes de teste
!!

Cenrio de teste

Diretrizes so recomendaes para a equipe de teste para auxili-los a escolher os testes que revelaro defeitos no sistema
! ! ! ! ! Escolher entradas que forcem o sistema a gerar todas as mensagens de erro; Projetar entradas que causem overflow dos buffers; Repetir a mesma entrada ou srie de entradas vrias vezes; Forar a gerao de sadas invlidas; Forar resultados de clculo a serem muito grandes ou muito pequenos.
Engenharia de Software, 8. edio. Captulo 23 Slide 23 Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 24

Ian Sommerville 2007

6/6/11

Testes de sistema
!!

Casos de uso
Casos de uso podem ser uma base para derivar os testes de um sistema. Eles ajudam a identificar as operaes a serem testadas e a projetar os casos de teste necessrios. A partir de um diagrama de seqncia associado, as entradas e sadas a serem criadas para os testes podem ser identificadas.

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 25

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 26

Diagrama de seqncia de coleta de dados meteorolgicos


!!

Teste de desempenho
Parte do teste de releases pode envolver teste de propriedades emergentes de um sistema, tais como desempenho e confiabilidade. Testes de desempenho envolve, geralmente, o planejamento de uma srie de testes onde a carga constantemente aumentada at que o desempenho do sistema se torne inaceitvel.
! ! Transes em BD Terminais

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 27

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 28

Teste de estresse
!!

Teste de estresse
!!

!!

!!

So exerccios do sistema alm de sua carga mxima de projeto. O estresse de um sistema causa, freqentemente, o surgimento de defeitos. O estresse de sistema testa o comportamento de falha, pois os sistemas no devem falhar catastroficamente. O teste de estresse verifica uma perda inaceitvel de servio ou de dados. O teste de estresse particularmente relevante para sistemas distribudos que podem exibir degradao severa quando uma rede se torna sobrecarregada.

Exemplos Pouca memria ou rea em disco, alta competio por recursos compartilhados (ex: vrios acessos/ transaes no BD ou rede) !! Exemplo: pode-se desejar saber se um sistema de transaes bancrias suporta uma carga de mais de 100 transaes por segundo ou se um sistema operacional pode manipular mais de 200 terminais remotos
!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 29

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 30

6/6/11

Tipos de teste
!!

Tipos de teste
!!

Teste de segurana e controle de acesso


! Verifica se todos os mecanismos de proteo de acesso esto funcionando satisfatoriamente Verifica a corretude dos mtodos de acesso base de dados e a garantia das informaes armazenadas

Teste de configurao ou portabilidade


! ! Verifica o funcionamento adequado do sistema em diferentes configuraes de hardware/software O que testar
! ! ! ! Compatibilidade do software/hardware Configurao do servidor Tipos de conexes com a Internet Compatibilidade com o browser

!!

Teste de integridade de dados


!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 31

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 32

Tipos de teste
!!

Tipos de teste
!!

Teste de instalao e desinstalao


! ! Verifica a correta instalao e desinstalao do sistema para diferentes plataformas de hardware/ software e opes de instalao O que testar
! Compatibilidade do hardware e software ! Funcionalidade do instalador/desinstalador sob mltiplas opes/condies de instalao ! GUI do programa instalador/desinstalador

Teste de documentao
! Verifica se a documentao corresponde informao correta e apropriada:
! online ! escrita ! help sensvel ao contexto

!!

Teste de ciclo de negcios


! Garante que o sistema funciona adequadamente durante um ciclo de atividades relativas ao negcio

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 33

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 34

Teste de componentes
!!

Teste de classe de objeto


!!

!! !!

Teste de componente ou unitrio o processo de teste de componentes individuais isolados. um processo de teste de defeitos. Os componentes podem ser:
! ! ! Funes individuais ou mtodos de um objeto; Classes de objeto com vrios atributos e mtodos; Componentes compostos com interfaces definidas usadas para acessar sua funcionalidade.

A abrangncia do teste completo de uma classe envolve


! ! ! Teste de todas as operaes associadas com um objeto; Atribuir e interrogar todos os atributos de objeto; Exerccio do objeto em todos os estados possveis.

!!

A herana torna mais difcil o projeto de testes de classe de objeto quando as informaes a serem testadas no so localizadas.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 35

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 36

6/6/11

Interface de objeto da estao meteorolgica


!!

Teste da estao meteorolgica


Necessidade de definir casos de teste para o relatarClima, calibrar, testar, iniciar, desativar. Usando um modelo de estado, identificar as seqncias de transies de estado a serem testadas e as seqncias de eventos que causam essas transies. Por exemplo:
! Aguardando ! Calibrando ! Testando ! Transmitindo ! Aguardando

!!

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 37

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 38

Teste de interfaces
!!

Teste de interfaces

!!

Os objetivos so detectar defeitos devido a erros de interface ou suposies invlidas sobre interfaces. particularmente importante para o desenvolvimento orientado a objetos quando os objetos so definidos pelas suas interfaces.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 39

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 40

Tipos de interfaces
!!

Erros de interface
!!

Interfaces de parmetros
! Os dados so passados de um procedimento para outro. Um bloco de memria compartilhado entre procedimentos ou funes. Um subsistema engloba um conjunto de procedimentos para serem chamados por outros subsistemas.

Mau uso de interface


! Um componente chamador chama um outro componente e faz mau uso de sua interface, por exemplo, parmetros em ordem errada. Um componente chamador considera suposies sobre o comportamento do componente chamado que esto incorretas. Os componentes chamado e chamador operam em velocidades diferentes, e informaes desatualizadas so acessadas.

!!

Interfaces de memria compartilhada


!
!!

Mau entendimento de interface


!

!!

Interfaces de procedimentos
!

!!

Interfaces de passagem de mensagem


! Os subsistemas solicitam servios de outros subsistemas.

!!

Erros de timing
!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 41

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 42

6/6/11

Diretrizes de teste de interfaces


!!

Projeto de casos de teste


!!

!!

!! !!

!!

Projetar testes de tal modo que os parmetros para um procedimento chamado estejam nos limites extremos de suas faixas. Testar sempre os parmetros de ponteiro com ponteiros nulos. Projetar testes que causem a falha do componente. Usar teste de estresse em sistemas de passagem de mensagem. Em sistemas de memria compartilhada, variar a ordem na qual os componentes so ativados.

!!

!!

Envolve o projeto de casos de teste (entradas e sadas) usados para testar o sistema. A meta do projeto de casos de teste criar um conjunto de testes que sejam eficazes em validao e teste de defeitos. Abordagens de projeto:
! ! ! Teste baseado em requisitos; Teste de parties; Teste estrutural.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 43

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 44

Teste baseado em requisitos


!!

Requisitos do LIBSYS

!!

Um princpio geral de engenharia de requisitos que os requisitos devem ser testveis. O teste baseado em requisitos uma tcnica de teste de validao onde voc considera cada requisito e deriva um conjunto de testes para esse requisito.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 45

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 46

Testes do LIBSYS
!!

Teste de parties
Dados de entrada e resultados de sada caem freqentemente em classes diferentes, onde todos os membros de uma classe so relacionados. Cada uma dessas classes uma partio de equivalncia ou domnios onde o programa se comporta de maneira equivalente para cada membro da classe. Casos de teste devem ser escolhidos a partir de cada partio.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 48

!!

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 47

6/6/11

Particionamento de equivalncia

Parties de equivalncia

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 49

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 50

Especificao de rotina de busca


!!

Rotina de busca parties de entrada


Entradas que esto de acordo com as prcondies. Entradas onde uma pr-condio no atendida. Entradas onde o elemento key um membro da seqncia. Entradas onde o elemento key no um membro da seqncia.

!!

!!

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 51

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 52

Diretrizes de teste (seqncias)


!!

Rotina de busca parties de entrada

!!

!!

Testar o software com seqncias que tm apenas um valor nico. Usar seqncias de tamanhos diferentes em testes diferentes. Derivar testes de tal modo que o primeiro, o mdio e o ltimo elementos da seqncia sejam acesssados.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 53

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 54

6/6/11

Teste estrutural
!! !!

Teste estrutural

!!

Algumas vezes chamado de teste caixa-branca. a derivao de casos de teste de acordo com a estrutura do programa. O conhecimento do programa usado para identificar casos de teste adicionais. O objetivo exercitar todas as declaraes do programa (no todas as combinaes de caminhos).

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 55

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 56

Busca binria parties de equivalncia


!! !!

Busca binria parties de equivalncia

!!

!!

!! !! !!

Pr-condies satisfeitas, elemento key no vetor. Pr-condies satisfeitas, elemento key no est no vetor. Pr-condies no satisfeitas, elemento key no vetor. Pr-condies no satisfeitas, elemento key no est no vetor. Vetor de entrada tem um valor nico. Vetor de entrada tem um nmero par de valores. Vetor de entrada tem um nmero mpar de valores.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 57

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 58

Busca binria casos de teste


!!

Teste de caminho
O objetivo do teste de caminho assegurar que o conjunto de casos de teste tal que cada caminho pelo programa executado pelo menos uma vez. O ponto de partida do teste de caminho um fluxograma de programa que mostra os ns que representam as decises do programa e arcos que representam o fluxo de controle. Declaraes com condies so, portanto, ns no fluxograma.

!!

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 59

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 60

10

6/6/11

Fluxograma da rotina de busca


!! !! !! !! !!

Caminhos independentes
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14 1, 2, 3, 4, 5, 14 1, 2, 3, 4, 5, 6, 7, 11, 12, 5, 1, 2, 3, 4, 6, 7, 2, 11, 13, 5, Casos de teste devem ser derivados de tal modo que todos os caminhos sejam executados. Um analisador dinmico de programa pode ser usado para verificar se os caminhos foram executados.

!!

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 61

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 62

Complexidade ciclomtica (McCabe)


!!

Complexidade ciclomtica
CFG1 CFG2 CFG3

!!

!!

Medida do nmero de caminhos independentes em um programa No depende do tamanho do cdigo, mas dos ramos na estrutura de controle medida por e n + 2, onde e a quantidade de arestas do grafo de controle e n a quantidade de ns do grafo

V(g)= 1 2 + 2 = 1

V(g)= 5 6 + 2 = 1
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 63 Ian Sommerville 2007

V(g)= 8 6 + 2 = 4
Slide 64

Engenharia de Software, 8. edio. Captulo 23

Complexidade ciclomtica
!!

Complexidade ciclomtica
!!

!!

!!

Baixa a moderada (abaixo de 20) indica um programa simples Alta (acima de 20) indica um programa complexo Muita alta (acima de 50) caracteriza um programa muito difcil de testar

!!

!!

Sinal de estrutura de controle de fluxo complicada No captura outros aspectos da dificuldade lgica que podem levar a dificuldades no teste Poucas evidncias de que uma ferramenta de previso de esforo de teste mais confivel do que linhas de cdigo

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 65

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 66

11

6/6/11

Automao de teste
!!

Um workbench de testes

!!

!!

!!

Teste uma fase dispendiosa do processo. Os workbenches de teste fornecem uma variedade de ferramentas para reduzir o tempo necessrio e os custos totais de teste. Sistemas tais como o JUnit apiam a execuo automtica de testes. A maioria dos workbenches de teste so sistemas abertos porque as necessidades de teste so especficas da organizao. Eles so, algumas vezes, difceis de integrar com workbenches de projeto e anlise fechados.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 67

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 68

Adaptao do workbench de testes


!!

!!

!!

Scripts podem ser desenvolvidos para simuladores de interface de usurio e padres para geradores de dados de teste. Sadas de teste podem ser preparadas manualmente para comparao. Comparadores de arquivos para propsitos especficos podem ser desenvolvidos.

Ian Sommerville 2007

Engenharia de Software, 8. edio. Captulo 23

Slide 69

12

Você também pode gostar