Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1
Teste de Software
Teste de defeitos
Testar os programas para estabelecer a presena de
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 2
estabelecer a presena de defeitos no sistema
Objetivos
Entender as tcnicas de teste que so engrenadas para descobrir falhas de programa
Introduzir guias para teste de interface Entender abordagens especficas para testes
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 3
Entender abordagens especficas para testes orientados a objetos
Entender os princpios do suporte da ferramenta CASE para teste
Tpicos
Testes de componentes e de integrao Testes de defeitos Testes orientados a objetos
rea de trabalho de teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 4
rea de trabalho de teste
O processo de teste
Testes de componentes Testes de componentes de programas individuais. Usualmente os programadores assumem a responsabilidade
pelo teste de seu cdigo (exceto em caso de sistemas crticos).
Testes so derivados da experincia do desenvolvedor.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 5
Testes so derivados da experincia do desenvolvedor.
Testes de integrao Testes de grupos de componentes integrados para formar
subsistemas ou sistemas completos. Uma equipe independente de teste faz o teste de integrao. Os testes so baseados em uma especificao do sistema.
Fases do teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 6
Teste para deteco de defeitos
O objetivo de testes para a deteco de defeitos revelar defeitos nos programas.
Um teste bem sucedido aquele que revela a presena de um defeito (faz com que o
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 7
presena de um defeito (faz com que o programa se comporte de maneira anmala)
Testes mostram a presena e no a ausncia de defeitos.
Somente um teste exaustivo pode mostrar que um programa est livre de defeitos. Contudo, teste exaustivo impossvel
Os testes deviam exercitar as capacidades do sistema ao invs de seus componentes
Prioridades do teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 8
sistema ao invs de seus componentes Testar funcionalidades antigas mais
importante do que testar as novas Testar situaes tpicas mais importante do
que limitar casos de valor
Dados de teste - entradas criadas para testar o sistema.
Casos de teste - Entradas para testar o sistema e as sadas esperadas para essas entradas,
Dados de teste e Casos de teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 9
e as sadas esperadas para essas entradas, quando o sistema opera de acordo com suas especificaes.
Processo de teste para a detecode defeitos
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 10
Teste de caixa preta
Uma abordagem para testar onde o programa considerado como uma caixa-preta.
Os casos de teste para testar o programa so baseados na especificao do sistema.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 11
baseados na especificao do sistema. O planejamento dos testes podem comear nos
primeiros estgios do processo de software.
Teste de caixa preta
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 12
Particionamento de equivalncia
Dados de entrada e resultados de sada caem em diferentes classes onde todos os membros de uma classe so relacionados
Cada uma dessas classes uma partio de
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 13
Cada uma dessas classes uma partio de equivalncia onde o programa se comporta de uma maneira equivalente para cada membro da classe
Casos de teste devem ser escolhidos de cada partio.
Particionamento de equivalncia
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 14
Entradas e sadas do sistema so particionadas em conjuntos de equivalncia Se a entrada um inteiro de 5 dgitos entre 10.000 e 99.999,
parties de equivalncia so nmeros < 10.000, nmeros entre 10.000 e 99. 999 e nmeros > 99. 999
Particionamento de equivalncia
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 15
entre 10.000 e 99. 999 e nmeros > 99. 999
Escolher casos de teste nos limites das parties: 00000, 09999, 10000, 99999, 10001
Particionamento de equivalncia
Between 4 and 10Less than 4 More than 10
34 7
1110
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 16
Between 10000 and 99999Less than 10000 More than 99999
999910000 50000
10000099999
Input values
Number of input values
Especificao de uma rotina debusca
procedure Search (Key : ELEM ; T: ELEM_ARRAY;Found : in out BOOLEAN; L: in out ELEM_INDEX) ;
Pr-condio
-- a seqncia tem pelo menos um elemento
TFIRST
Algumas vezes chamado testes de caixa branca.
Derivao de casos de teste de acordo com a estrutura do programa. O conhecimento do
Teste estrutural
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 21
estrutura do programa. O conhecimento do programa usado para identificar casos de testes adicionais.
O objetivo exercitar todos os enunciados do programa.
Teste caixa branca.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 22
Binary search (Java)
Pr-condies satisfeitas, elemento chave includo na matriz
Pr-condies satisfeitas, elemento chave no includo na matriz Pr-condies no satisfeitas, elemento chave includo
Busca binria - parties equivalentes
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 24
Pr-condies no satisfeitas, elemento chave includo na matriz
Pr-condies no satisfeitas, elemento chave no includo na matriz
A entrada tem um nico valor A entrada tem um nmero mpar de valores A entrada tem um nmero par de valores
Busca binria - parties equivalentes
Equivalence class boundaries
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 25
Mid-point
Elements < Mid Elements > Mid
Busca binria casos de teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 26
Teste de caminho
O objetivo do teste de caminho assegurar que o conjunto de casos de teste permite que cada caminho do programa seja executado pelo menos uma vez
O ponto de partida para o teste de caminho um grfico de fluxo do programa, no qual os ns
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 27
grfico de fluxo do programa, no qual os ns representam as decises do programa, enquanto os arcos representam o fluxo de controle
Enunciados com condies so, dessa forma, ns no grfico de fluxo
Descreve o fluxo de controle do programa, Cada ramo mostrado como um caminho separado e loops so mostrado por setas, por uma seta fazendo a volta, de volta para o n de
Grficos de Fluxo do Programa
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 28
condio do loop Usado como base para computar a
complexidade ciclomtica Complexidade ciclomtica = Nmero de ramos
Nmero de ns +2
O nmero de testes para testar todos os enunciados de controle igual a complexidade ciclomtica
A Complexidade ciclomtica igual ao nmero de condies em um programaEste tipo de caso de teste deve ser usado com cuidado.
Complexidade ciclomtica
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 29
Este tipo de caso de teste deve ser usado com cuidado. Isso no implica na adequao do teste
Embora todos os caminhos sejam executados, todas as combinaes de caminho no so executadas
1
2
3
while bottom top
Grfico de fluxo para busca binria
4
65
7
(if (elemArray [mid]< key8
9
1, 2, 3, 8, 9 1, 2, 3, 4, 6, 7, 2 1, 2, 3, 4, 5, 7, 2 1, 2, 3, 4, 6, 7, 2, 8, 9
Caminhos independentes
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 31
1, 2, 3, 4, 6, 7, 2, 8, 9 Casos de teste devem ser projetados para
executar todos esses caminhos. Um analisador de programa dinmico pode ser
usado para verificar que os caminhos esto sendo executados
Testes de integrao
Testes feitos em sistemas completos ou subsistemas, compostos de componentes integrados.
Testes de integrao devem ser desenvolvidos
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 32
Testes de integrao devem ser desenvolvidos a partir da especificao do sistema.
A maior dificuldade a localizao de erros. Integrao incremental reduz esse problema.
Testes de integrao incremental
T2
T1A
BT2
T1A
T1
A
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 33
T3
T4
T5
C
D
T3
T4
B
C
T2
T3
B
Test sequence1
Test sequence2
Test sequence3
Abordagens para o teste de integrao
Teste de integrao top-down Comea com os componentes de alto nvel de um sistema, e
a integrao se d de cima para baixo em uma hierarquia de componentes. Componentes individuais em um nvel mais baixo na hierarquia so representados por stubs.
Teste de integrao bottom-up
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 34
Teste de integrao bottom-up Envolve integrar e testar os mdulos de nvel inferior na
hierarquia e, ento, subir na hierarquia de mdulos, at que o mdulo final seja testado.
Na prtica, a maioria das integraes envolve a combinao dessas estratgias.
Teste de integrao top-down
Level 2Level 2Level 2Level 2
Level 1 Level 1Testing
sequence . . .
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 35
Level 2stubs
Level 3stubs
Teste de integrao bottom-up
Level NLevel NLevel NLevel NLevel NTesting
sequence
Testdrivers
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 36
Level N1 Level N1Level N1
Testdrivers
Abordagens de teste
Validao da arquitetura Os testes top-down oferecem maior probabilidade de descobrir erros
na arquitetura de sistema
Demonstrao do sistema Os testes de integrao top-down permitem a demonstrao de um
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 37
Os testes de integrao top-down permitem a demonstrao de um sistema de trabalho limitado em uma fase inicial do desenvolvimento.
Implementao de teste So geralmente mais fceis com o teste bottom-up
Observao de teste Problemas com ambas as abordagens. Cdigo extra so
necessrios para observar os testes.
Ocorrem quando mdulos ou subsistemas so integrados para criar sistemas maiores.
Objetivo detectar erros devido a erros ou suposies invlidas sobre interfaces.
Testes de interface
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 38
suposies invlidas sobre interfaces. Particularmente importante para o
desenvolvimento orientado a objeto, uma vez que os objetos so definidos por suas interfaces
Teste de interfaceTestcases
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 39
BA
C
Tipos de interfaces
Interfaces de parmetros Os dados transmitidos de um processo para outro
Interfaces de memria compartilhada Bloqueio de memria compartilhado entre os processos
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 40
Interfaces de procedimento Sub-sistemas encapsulam um conjunto de processos para
serem chamados por outros sub-sistemas
Interfaces de transmisso de mensagem Sub-sistemas requerem servios de outros sub-sistemas
Erros de interface
Mau uso da Interface Um componente chamador chama outro componente e
produz um erro no uso de sua interface Ex: parmetros na ordem errada
M interpretao da Interface
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 41
M interpretao da Interface Um componente chamador cria suposies incorretas sobre o
comportamento do componente chamado
Erros de tempo O componente chamador e o chamado operam em
velocidades diferentes e informaes fora de data so acessadas
Guia de teste de Interface
Projeta testes de forma que os parmetros de um procedimento chamado esto nos extremos de suas faixas
Sempre testar parmetros indicadores com indicadores nulos
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 42
nulos Projetar testes que causem falhas no componente Usar o teste de estresse em sistemas transmissores de
mensagem Em sistemas de memria compartilhada, variar a ordem
na qual os componentes so ativados
Teste de estresse
Exercitar o sistema alm de sua carga mxima de projeto. Estressar o sistema geralmente faz com que os defeitos venham tona
Estressando o comportamento de falha de teste do sistema. Os sistemas no devem ter falhas
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 43
sistema. Os sistemas no devem ter falhas catastrficas. Testes de estresse devem checar perdas inaceitveis de servio ou dados
Particularmente relevante para sistemas distribudos que podem apresentar srias degradaes quando a rede fica sobrecarregada
Os componentes a serem testados so classes de objetos que so instanciadas como objetos.
Objetos individuais so, muitas vezes, maiores do que funes isoladas, ento a abordagem
Teste orientado ao objeto
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 44
do que funes isoladas, ento a abordagem de teste de caixa-branca deve ser estendida.
No existe um nvel superior bvio para integrao e teste top-down.
Nveis de teste
Testar operaes associadas com os objetos. Testar classes de objetos. Testar agrupamentos de objetos cooperativos.
Testar o sistema orientado a objeto completo.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 45
Testar o sistema orientado a objeto completo.
Testes de classes de objetos
A cobertura completa de testes de uma classe envolve Testar todas as operaes associadas com um objeto Estabelecimento e a interrogao de todos os atributos do
objeto
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 46
objeto Exercitar o objeto em todos os estados possveis
Herana dificulta o projeto de testes de classe de objetos, pois as informaes a serem testadas no so localizadas
Interface de objeto de uma estao meteorolgica
Cases de teste so necessrios para todas as operaes
Use um modelo de estado para identificar transies de estado para teste
identifier
reportWeather ()calibrate (instruments)test ()
WeatherStation
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 47
para teste Exemplos de seqncias de
teste Fechar Esperar Fechar
Esperar Calibrar Testar Transmitir Esperar
Esperar Coletar Esperar Resumir Transmitir Esperar
test ()startup (instruments)shutdown (instruments)
Integrao de objetos
Nveis de integrao so menos distintos em sistemas orientados a objetos.
Testes de clusters se ocupam com a integrao e teste de objetos que cooperam entre si.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 48
e teste de objetos que cooperam entre si. Clusters devem ser identificados utilizando-se
o conhecimento de suas operaes e as caractersticas do sistema implementadas por esses clusters.
Abordagens para o teste de cluster
Teste de casos de uso ou cenrio O teste baseado nas interaes de um usurio com o
sistema Tem a vantagem de testar as caractersticas do sistema como
so experimentadas pelos usurios
Teste de seqncia
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 49
Teste de seqncia Testa a resposta do sistema a eventos como processar
seqncias atravs do sistema
Teste de interao de objetos Testa seqncias de interaes de objetos que param quando
uma operao de objeto no solicita servios de um outro objeto
Teste baseado em cenrio
Identificar cenrios de casos de uso e suplement-los com diagramas de interao, que mostram os objetos envolvidos no cenrio
Considerar esse cenrio no sistema da estao
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 50
Considerar esse cenrio no sistema da estao meteorolgica onde um relatrio gerado
Coletar dados sobre o tempo:CommsController
request (report)
acknowledge ()report ()
:WeatherStation :WeatherData
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 51
summarise ()
reply (report)
acknowledge ()
send (report)
Teste da estao meteorolgica
Seqncia de mtodos executados CommsController:requerer WeatherStation:reportar
WeatherData:resumir
Entradas e sadas Entrada de pedidos de relatrio com reconhecimento
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 52
Entrada de pedidos de relatrio com reconhecimentoassociado e uma sada final de um relatrio
Pode ser testado criando dados brutos, certificando-se queso resumidos apropriadamente
Usar os mesmos dados brutos para testar o objetoWeatherData
Uma rea de trabalho de teste
O teste uma fase cara do processo. Uma rea de trabalho de teste nos d ferramentas para reduzir o tempo necessrio e o custo total do teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 53
A maioria das reas de trabalho de teste so sistemas abertos porque as necessidades do teste so especficas organizao
difcil integrar com projeto fechado e reas de trabalho de anlise
Uma rea de trabalho de teste
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 54
Tete de adaptao de rea de trabalho
Os scripts podem ser desenvolvidos para os simuladores de interface de usurio e padres para geradores de dados de teste
Sadas de testes podem precisar ser
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 55
Sadas de testes podem precisar ser preparadas manualmente para comparao
Comparadores de arquivos de propsito especial podem ser desenvolvidos
Pontos chave
mais importante testar as partes do sistema mais comumente utilizadas do que as partes que so exercitadas raramente.
Partio de equivalncia uma maneira de derivar casos de teste. Parties so conjuntos de dados onde o
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 56
de teste. Parties so conjuntos de dados onde o programa deve se comportar de maneira equivalente.
Teste de caixa preta baseado na especificao do sistema. No precisa analisar o cdigo fonte.
Teste estrutural baseia-se na anlise do programa para determinar os caminhos a serem executados e a seleo de casos de teste.
Pontos chave
Os testes de integrao testes de integrao se concentram no teste das interaes entre os componentes.
Os testes de interface testes de interface procuram descobrir defeitos nas interfaces ou nos mdulos.
Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 57
descobrir defeitos nas interfaces ou nos mdulos. Para testar as classes de objetos testar as classes
de objetos, deve-se testar todas as operaes, atributos e estados.
Sistemas orientados objetos devem ser integrados integrados em torno de clusters clusters de objetos.