You are on page 1of 12

6/6/11

1
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 1
Teste de Software
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 2
Motivao
! 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 3
Falha, Falta e Erro
! Falha
Incapacidade do software de realizar a funo
requisitada (aspecto externo)
Exemplo
Terminao anormal, restrio temporal violada
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 4
Falha, Falta e Erro
! Falta
Causa de uma falha
Exemplo
Cdigo incorreto ou faltando
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 5
Falha, Falta e Erro
! Erro
Estado intermedirio (instabilidade)
Provm de uma falta
Pode resultar em falha, se propagado at a sada
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 6
Falha, Falta e Erro
Falta Erro Falha
6/6/11
2
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 7
Noo de confiabilidade
! Algumas faltas escaparo inevitavelmente
Tanto dos testes
Quanto da depurao
! Falta pode ser mais ou menos perturbadora
Dependendo do que se trate e em qual freqncia
ir surgir para o usurio final
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 8
Noo de confiabilidade
! Assim, precisamos de uma referncia para
decidir
Quando liberar ou no sistema para uso
! Confiabilidade de software
uma estimativa probabilstica
Mede a freqncia com que um software ir
executar sem falha
Em dado ambiente
E por determinado perodo de tempo
! Assim, entradas para testes devem se
aproximar do ambiente do usurio final
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 9
Dados e Casos de Teste
! Dados de Teste
Entradas selecionadas para testar o software
! Casos de Teste
Dados de teste, bem como sadas esperadas de
acordo com a especificao (Veredicto)
Cenrios especficos de execuo
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 10
Eficcia de testes
! 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 11
O processo 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 sistema
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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 12
Fases de teste
6/6/11
3
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 13
Teste de defeitos
! 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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 14
Metas do processo de teste
! 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.
! Teste de defeitos
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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 15
O processo de testes de software
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 16
! 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.
Polticas de teste
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 17
Teste de sistema
! 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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 18
Teste de integrao
! 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.
! Integrao bottom-up
Integrar componentes de infra-estrutura e, em seguida,
adicionar componentes funcionais.
! Para simplificar a localizao de erros, os sistemas
devem ser integrados incrementalmente.
6/6/11
4
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 19
Teste de integrao incremental
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 20
Abordagens de teste
! Validao de arquitetura
O teste de integrao top-down melhor para descobrir erros
na arquitetura do sistema.
! Demonstrao de sistema
O teste de integrao top-down permite uma demonstrao
limitada no estgio inicial do desenvolvimento.
! Implementao de teste
Freqentemente mais fcil com teste de integrao bottom-
up.
! Observao de teste
Problemas com ambas as abordagens. Um cdigo extra pode
ser necessrio para observar os testes.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 21
Teste de releases
! 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 22
Teste caixa-preta
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 23
Diretrizes 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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 24
Cenrio de teste
6/6/11
5
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 25
Testes de sistema
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 26
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 27
Diagrama de seqncia de coleta de
dados meteorolgicos
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 28
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 29
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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 30
Teste de estresse
! 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
6/6/11
6
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 31
Tipos de teste
! Teste de segurana e controle de acesso
Verifica se todos os mecanismos de proteo de
acesso esto funcionando satisfatoriamente
! Teste de integridade de dados
Verifica a corretude dos mtodos de acesso base
de dados e a garantia das informaes
armazenadas
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 32
Tipos de teste
! 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
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 33
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
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 34
Tipos de teste
! 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 35
Teste de componentes
! 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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 36
Teste de classe de objeto
! 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.
6/6/11
7
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 37
Interface de objeto da estao
meteorolgica
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 38
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 39
! 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.
Teste de interfaces
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 40
Teste de interfaces
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 41
Tipos de interfaces
! Interfaces de parmetros
Os dados so passados de um procedimento para outro.
! Interfaces de memria compartilhada
Um bloco de memria compartilhado entre procedimentos
ou funes.
! Interfaces de procedimentos
Um subsistema engloba um conjunto de procedimentos para
serem chamados por outros subsistemas.
! Interfaces de passagem de mensagem
Os subsistemas solicitam servios de outros subsistemas.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 42
Erros de interface
! Mau uso de interface
Um componente chamador chama um outro componente e
faz mau uso de sua interface, por exemplo, parmetros em
ordem errada.
! Mau entendimento de interface
Um componente chamador considera suposies sobre o
comportamento do componente chamado que esto
incorretas.
! Erros de timing
Os componentes chamado e chamador operam em
velocidades diferentes, e informaes desatualizadas so
acessadas.
6/6/11
8
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 43
Diretrizes de teste de interfaces
! 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.
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 44
Projeto de casos de teste
! 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 45
Teste baseado em requisitos
! 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 46
Requisitos do LIBSYS
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 47
Testes do LIBSYS
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 48
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.
6/6/11
9
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 49
Particionamento de equivalncia
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 50
Parties de equivalncia
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 51
Especificao de rotina de busca
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 52
! Entradas que esto de acordo com as pr-
condies.
! 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.
Rotina de busca parties de
entrada
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 53
Diretrizes de teste (seqncias)
! 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 54
Rotina de busca parties de
entrada
6/6/11
10
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 55
! 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).
Teste estrutural
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 56
Teste estrutural
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 57
! 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.
Busca binria parties de
equivalncia
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 58
Busca binria parties de
equivalncia
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 59
Busca binria casos de teste
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 60
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.
6/6/11
11
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 61
Fluxograma da rotina de busca
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 62
! 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.
Caminhos independentes
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 63
Complexidade ciclomtica
(McCabe)
! 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
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 64
Complexidade ciclomtica
CFG1 CFG2
CFG3
V(g)= 1 2 + 2 = 1
V(g)= 5 6 + 2 = 1
V(g)= 8 6 + 2 = 4
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 65
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
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 66
Complexidade ciclomtica
! 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
6/6/11
12
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 67
Automao de teste
! 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 68
Um workbench de testes
Ian Sommerville 2007 Engenharia de Software, 8. edio. Captulo 23 Slide 69
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.

You might also like