Вы находитесь на странице: 1из 38

Tcnicas e Estratgias de Teste de Software

Engenharia de Software, Roger Pressman, Captulos 18 e 19

Organizao para a Realizao de Teste de Software


Quando o teste se inicia h um conflito de interesses:

Desenvolvedores : tm interesse de demonstrar que o programa isento de erros Os responsveis pelos testes : tm interesse em mostrar que o programa tem erros.

Do ponto de vista psicolgico:


Anlise, Projeto e Codificao de Software so tarefas construtivas Teste tarefa destrutiva

Para suprir o conflito de interesses existe o Grupo Independente de Testes (ITG). O ITG faz parte da equipe de projeto de desenvolvimento de software , no sentido de que est envolvido durante o processo de especificao e continua envolvido planejando e especificando procedimentos de teste ao longo de um grande projeto.

Tcnicas e Estratgias de Teste de Software

Erro (Defeito) e Falha


FALHA - consiste essencialmente de um evento observvel onde o sistema viola a sua especificao. ERRO (DEFEITO) - item de informao que pode levar a uma falha A atividade de teste de software um elemento de um tema mais amplo chamado Verificao e Validao (V&V). VERIFICAO - refere-se ao conjunto de atividades que garante que o software implemente corretamente um funo especfica (sem ERROS). VALIDAO - refere-se ao conjunto de atividades que garante que o software que foi construdo rastrevel s exigncias do cliente (sem FALHAS).

Tcnicas e Estratgias de Teste de Software

Objetivos da Atividade de Teste


1- A atividade de teste o processo de executar um programa com a inteno de descobrir um erro. 2- Um bom caso de teste aquele que tem uma elevada probabilidade de revelar um erro ainda no descoberto 3- Um teste bem -sucedido aquele que revela um erro ainda no descoberto. O objetivo projetar testes que descubram sistematicamente diferentes classes de erros e faam-no com uma quantidade de tempo e esforo mnimos. Se a atividade de teste for conduzida com sucesso, ela descobrir erros no software. A ATIVIDADE DE TESTE NO PODE MOSTRAR A AUSNCIA DE BUGS; ELA S PODE MOSTRAR SE DEFEITOS DE SOFTWARE ESTO PRESENTES.

Tcnicas e Estratgias de Teste de Software

Fluxo de Informaes de Teste

Se erros graves forem encontrados com regularidade => a qualidade e a confiabilidade de software so suspeitas Se erros facilmente corrigveis forem encontrados => a qualidade e a confiabilidade do software esto aceitveis ou os testes so inadequados para revelar erros graves Se no for encontrado erro => a configurao de teste no foi suficientemente elaborada e que erros esto escondidos no software
5

Tcnicas e Estratgias de Teste de Software

Tcnicas de Teste:
1- Testes Estruturais (Caixa Branca) Baseia-se num minucioso exame dos detalhes procedimentais. So testados os caminhos lgicos atravs do software, fornecendo-se casos de teste que pem prova conjuntos especficos de condies e/ou laos. 2 - Testes Funcionais (Caixa Preta) Refere-se aos testes que so realizados a partir das especificaes das interfaces (entradas e sadas) do programa. So usados para demonstrar que as funes dos softwares so operacionais, que a entrada adequadamente aceita e a sada corretamente produzida; que a integridade das informaes externas mantida. 2 - Testes Baseados em Erros Baseiam-se na incluso de erros propositais (artificiais) como forma de revelar erros existentes previamente (naturais). Fornecem indicadores para gerenciar o processo de teste (porcentagem de erros remanescentes, qualidade dos casos de testes)

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Branca


um mtodo de projeto de casos de teste que usa a estrutura de controle do projeto procedimental para derivar casos de teste. Podem ser derivados casos de teste que 1- garantam que todos os caminhos independentes dentro de um mdulo tenham sido exercitados pelo menos uma vez 2- exercitem todas as decises lgicas para valores falsos ou verdadeiros 3- executem todos os laos em suas fronteiras e dentro de seus limites operacionais 4- exercitem as estruturas de dados internas para garantir a sua validade

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Branca

Teste de Caminho Bsico


O mtodo de caminho bsico possibilita que o projetista do caso de teste derive uma medida de complexidade lgica de um projeto procedimental e use essa medida como guia para definir um conjunto bsico de caminhos de execuo. GRAFO DE FLUXO ou GRAFO DE PROGRAMA: uma notao para representar o fluxo de controle. Cada construo estruturada tem um smbolo de grafo correspondente.

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Branca - Teste de Caminho Bsico

Caminho Independente
Qualquer caminho atravs do programa que introduza pelo menos um novo conjunto de instrues de processamento ou uma nova condio. Grafo de Fluxo Conjunto Bsico para o Grafo de Fluxo Caminho 1: 1-11 Caminho 2: 1-2-3-4-5-10-1-11 Caminho 3: 1-2-3-6-8-9-10-111 Caminho 4: 1-2-3-6-7-9-10-111

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Branca - Teste de Caminho Bsico

Complexidade Ciclomtica
uma mtrica de software que proporciona uma medida quantitativa da complexidade lgica de um programa. Quando usado no contexto do mtodo de teste de caminho bsico, o valor computado da complexidade ciclomtica define o nmero de caminhos independentes do conjunto bsico de um programa e oferece um limite mximo para o nmero de testes que deve ser realizado para garantir que todas as instrues sejam executadas pelo menos uma vez. A complexidade ciclomtica computada numa das 3 formas seguintes: 1- O nmero de regies do grfico de fluxo. 2- V(G) = E-N+2 onde E o nmero de ramos do grafo e N o nmero de ns do grafo de fluxo G 3- V(G) = P+1 onde P o nmero de ns predicativos (ns que contm uma condio) contidos no grafo de fluxo G
Tcnicas e Estratgias de Teste de Software 10

Teste de Caixa Branca - Teste de Caminho Bsico

Exemplo de Complexidade Ciclomtica


Grafo de Fluxo Complexidade Ciclomtica 1- O grafo de fluxo tem 4 regies 2- V(G) = 11 ramos - 9 ns + 2 = 4 3- V(G) = 3 ns predicativos + 1 = 4 A Complexidade Ciclomtica do grafo de fluxo 4

O valor de V(G) oferece um limite mximo no nmero de testes que deve ser projetado e executado para garantir a cobertura de todas as instrues de programa.
Tcnicas e Estratgias de Teste de Software 11

Teste de Caixa Branca - Teste de Caminho Bsico

Derivando Casos de Teste - Passos do Mtodo


1. Usando o projeto ou o cdigo como base trace um grafo de fluxo correspondente
procedimento MAIOR(A:VETOR; T:inteiro; var MAX:inteiro); variaveis I,M:inteiro Inicio M A[1]; I2; enquanto I T faa se A[I] > M ento MA[I] II+1 seno II+1 fim se fim enquanto MAXM; fim do procedimento 12

12345678910 -

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Branca - Teste de Caminho Bsico

Derivando Casos de Teste - Passos do Mtodo


2. Determine a Complexidade Ciclomtica do grafo de fluxo resultante Complexidade Ciclomtica 1- O grafo de fluxo tem 3 regies 2- V(G) = 9 ramos - 8 ns + 2 = 3 3- V(G) = 2 ns predicativos + 1 = 3 A Complexidade Ciclomtica 3

Tcnicas e Estratgias de Teste de Software

13

Teste de Caixa Branca - Teste de Caminho Bsico

Derivando Casos de Teste - Passos do Mtodo


3. Determine um conjunto bsico de caminhos linearmente independentes caminhos) Caminhos Caminho 1: Caminho 2: Caminho 3: 1, 2, 3, 9, 10 1, 2, 3, 4, 5, 6, 8, 3, 9, 10 1, 2, 3, 4, 7, 8, 3, 9, 10 (3

Tcnicas e Estratgias de Teste de Software

14

Teste de Caixa Branca - Teste de Caminho Bsico

Derivando Casos de Teste - Passos do Mtodo


4. Prepare os casos de teste que forcem a execuo de cada caminhos no conjunto bsico.
procedimento MAIOR(A:VETOR; T:inteiro; var MAX:inteiro); variaveis I,M:inteiro Inicio M A[1]; I2; enquanto I T faa se A[I] > M ento MA[I] II+1 seno II+1 fim se fim enquanto MAXM; fim do procedimento

Caminhos Caminho 1: 1, 2, 3, 9, 10 A=(1,3) T=0 Resultado Esperado => Max=1 Caminho 2: 1, 2, 3, 4, 5, 6, 8, 3, 9, 10 A=(1,3) T=2 Resultado Esperado => Max=3 Caminho 3: 1, 2, 3, 4, 7, 8, 3, 9, 10 A=(3,1) T=2 Resultado Esperado => Max=3
15

12345678910 -

Tcnicas e Estratgias de Teste de Software

Teste de Caixa Preta


Concentram-se nos requisitos funcionais do software, ou seja, so testes que exercitam completamente os requisitos funcionais do programa. Trata-se de uma abordagem complementar aos testes de caixa branca, com a finalidade de descobrir tipos/classes de erros (ex. tratamento incorreto de todos os dados tipo caractere).

Tipos de testes de Caixa Preta Particionamento da Equivalncia Anlise do Valor Limite

Tcnicas e Estratgias de Teste de Software

16

Teste de Caixa Preta -

Particionamento de Equivalncia
um mtodo de teste que divide o domnio de entrada de um programa em classes de dados (equivalncia) a partir das quais os casos de teste podem ser derivados. 1- Se o domnio de entrada exigir um intervalo, so definidas uma classe de equivalncia vlida e duas classes de equivalncia invlidas. 2- Se o domnio de entrada exigir um valor especfico, so definidas uma classe de equivalncia vlida e duas classes de equivalncia invlidas. 3- Se o domnio de entrada especificar um membro de um conjunto, uma classe de equivalncia vlida e uma classe de equivalncia invlida so definidas. 4- Se o domnio de entrada for booleano, uma classe de equivalncia vlida e uma classe de equivalncia invlida so definidas. Os casos de teste so definidos para cada classe de equivalncia
Tcnicas e Estratgias de Teste de Software 17

Teste de Caixa Preta -

Particionamento de Equivalncia - Exemplo


Uma aplicao bancria automatizada: O usurio pode "discar" para o banco usando seu computador pessoal, fornecer senha de 6 dgitos e seguir uma srie de comandos-chave que acionam vrias funes bancrias. O software fornecido aplicao bancria aceita dados da seguinte forma: Cdigo de rea: em branco ou nmero de 3 dgitos Prefixo: nmero de 3 dgitos que no se iniciam por 0 ou 1 Sufixo: nmero de 4 dgitos Senha: valor alfanumrico de 6 dgitos Comandos: "cheque", "depsito", "pagamento de conta", etc.

Tcnicas e Estratgias de Teste de Software

18

Teste de Caixa Preta -

Particionamento de Equivalncia - Exemplo


Diretrizes Item de Dados Cdigo de rea Prefixo Sufixo Senha Comando Domnio de Entrada boolena: o cdigo de rea pode ou no estar presente intervalo: valores definidos entre 200 e 999 intervalo: valor especificado > 200 valor: extenso de quatro dgitos booleana: uma senha pode ou no estar presente valor: string de 6 caracteres conjunto: contendo os comandos anotados acima

Tcnicas e Estratgias de Teste de Software

19

Teste de Caixa Preta -

Anlise de Valor Limite


A Anlise de Valor Limite (Boundary Value Analysis - BVA) uma tcnica de projeto de casos de teste que complementa o particionamento de equivalncia. Em vez de selecionar qualquer elemento de uma classe de equivalncia, a BVA leva seleo de casos de teste nas "extremidades" da classe (por razes que no so completamente claras, um nmero cada vez maior de erros tende a ocorrer nas fronteiras do domnio de informao) Em vez de se concentrar somente nas condies de entrada, a BVA deriva os casos de teste tambm no domnio de sada.

Tcnicas e Estratgias de Teste de Software

20

Teste de Caixa Preta -

Anlise de Valor Limite - Diretrizes


1- Se uma condio de entrada especificar um intervalo delimitado pelos valores a e b, os casos de teste devem ser projetados com valores a e b, logo acima e logo abaixo de a e b, respectivamente. 2- Se uma condio de entrada especificar uma srie de valores, os casos de teste que ponham prova nmeros mximos e mnimos devem ser desenvolvidos. Valores logo abaixo e logo acima do mnimo e do mximo tambm devem ser testados 3- Aplique as diretrizes 1 e 2 s condies de sada. Por exemplo, suponhamos que uma tabela de temperatura versus presso seja exigida como sada de um programa de anlise de engenharia. Os casos de teste devem ser projetados para criar um relatrio de sada que produza um nmero mximo (e mnimo) permissvel de entradas na tabela. 4- Se as estruturas internas de dados do programa tiverem prescrito fronteiras (por exemplo, um array tem um limite definido de 100 entradas), certifique-se de projetar um caso de teste para exercitar a estrutura de dados em sua fronteira.
Tcnicas e Estratgias de Teste de Software 21

Testes Baseados em Erros


Consiste em incluir propositalmente algum erro no programa e observar o comportamento do programa com erro comparando-o com o comportamento do programa original. Fornecem indicadores para gerenciar o processo de teste (porcentagem de erros remanescentes, qualidade dos casos de testes)

Tipos de testes baseados em erros Semeadura de Erros Anlise de Mutantes

Tcnicas e Estratgias de Teste de Software

22

Teste baseado em erros - Semeadura de Erros


1. Erros artificiais so introduzidos no programa 2. Realiza-se um caso de teste para verificar quais so erros naturais e quais so artificiais 3. Baseados na proporo erros naturais/artificiais pode-se estimar a quantidade de erros remanescentes para o conjunto de casos de teste definidos para o programa. Desta forma pode-se comparar a estimativa de erros remanescentes com a confiabilidade esperada (especificada) para o software.

Tcnicas e Estratgias de Teste de Software

23

Teste baseado em erros - Anlise de Mutantes


Esta tcnica empregada para avaliar o quanto um conjunto de casos de teste adequado para testar um dado programa. 1. Gera-se casos de teste (T) para um programa (P) 2. Verifica-se se ele funciona corretamente 3. Gera-se programa mutantes (M): programas que possuam pequenas mudanas em relao ao original 4. Verifica-se o funcionamento do mutante (M) para os casos de teste (T): caso a verificao de M apresentar resultados diferentes da verificao de P o mutante morto caso contrrio, M continua vivo e deve ser analisado 5. Anlise dos mutantes vivos o mutante M equivalente ao programa original P o caso de teste insuficiente para diferenciar M de P e novos casos de teste devem ser definidos
Tcnicas e Estratgias de Teste de Software 24

Uma de Teste de

Estratgia Software

Teste de Unidade: concentra-se em cada unidade do software, de acordo com o que implementado no cdigo fonte. Utiliza as tcnicas de teste de caixa branca e caixa preta. Teste de Integrao: concentra-se no projeto e na construo da arquitetura de software. Utiliza principalmente as tcnicas de teste de caixa preta. Teste de Validao: os requisitos estabelecidos como parte da anlise de requisitos de software so validados em relao ao software que foi construdo. Alfa- e Beta-teste. Teste de Sistema: o software e outros elementos do sistema so testados como um todo.
25

Tcnicas e Estratgias de Teste de Software

Teste de segurana e recuperao.

Tcnicas e Estratgias de Teste de Software

26

Teste de Unidade

A interface com o mdulo testada para ter a garantia de que as informaes fluem para dentro e para fora da unidade de programa que se encontra sob teste. A estrutura de dados local examinada para ter a garantia de que dados armazenados temporariamente mantm sua integridade durante todos os passos de execuco. As condies de limite so testadas para ter a garantia de que o mdulo opera adequadamente nos limites estabelecidos para demarcarem ou restringirem o processamento. Todos os caminhos independentes atravs da estrutura de controle so exercitados para ter a garantia de que todas as instrues de um mdulo foram executadas pelo menos uma vez. Todos os caminhos de tratamento de erros so testados.

Tcnicas e Estratgias de Teste de Software

27

Teste de Unidade - Ambiente

Um vez que o mdulo no um programa individual, um software driver e/ou stub deve ser desenvolvido para cada unidade de teste. Driver - na maioria das aplicaes um programa principal que aceita dados de caso de teste, passa tais dados para o mdulo a ser testado e imprime os dados relevantes. Stub ou programa simulado - servem para substituir mdulos que estejam subordinados (chamados pelo) ao mdulo a ser testado. Usa a interface do mdulo subordinado, pode fazer manipulao de dados mnima, imprime verificao de entrada e retorna.
Tcnicas e Estratgias de Teste de Software 28

Teste de Integrao
O objetivo , a partir dos mdulos testados ao nvel de unidade, construir a estrutura de programa que foi determinada pelo projeto.

Integrao Top-Down
Os mdulos so integrados movimentando-se de cima para baixo, atravs da hierarquia de controle, iniciando-se do mdulo de controle principal. Os mdulos subordinados ao mdulo de controle principal so incorporados estrutura de uma maneira depth-first (primeiro pela profundidade) ou breadth-first (primeiramente pela largura).

Tcnicas e Estratgias de Teste de Software

29

Teste de Integrao

- Integrao Top-Down

Passos do processo de integrao: 1- O mdulo de controle usado como um driver de teste e os stubs so substitudos para todos os mdulos diretamente subordinados ao mdulo de controle principal. 2- Dependendo da abordagem de integrao escolhida, os stubs subordinados so substitudos, um de cada vez por mdulos reais. 3- Testes so realizados medida que cada mdulo integrado. 4- Durante a concluso de cada conjunto de testes, outro stub substitudo pelo mdulo real. 5- Teste de regresso - (isto , a realizao de todos ou de alguns dos testes anteriores) pode ser realizado a fim de garantir que novos erros no tenham sido introduzidos. Tcnicas e Estratgias de Teste de Software 30

Teste de Validao
Ao trmino da atividade de teste de integrao, o software est completamente montado como um pacote, erros de interface foram descobertos e corrigidos e uma srie final de testes de software - os testes de validao - pode iniciar-se. A validao bem sucedida quando o software funciona de uma maneira razoavelmente esperada pelo cliente. A Especificao de Requisitos de Software contm os critrios de validao que formam a base para uma abordagem ao teste de validao. A validao do software demonstram a conformidade com os requisitos. O plano e o procedimento de teste so projetados para garantir que: todos os requisitos funcionais sejam satisfeitos todos os requisitos de desempenho sejam conseguidos a documentao esteja correta outros requisitos sejam cumpridos: portabilidade, compatibilidade, remoo de erros e manutenibilidade
Tcnicas e Estratgias de Teste de Software 31

Teste de Validao

- Reviso de Configurao

Um elemento importante do processo de validao a reviso de configurao ou auditoria. O propsito dessa reviso garantir que todos os elementos da configurao de software tenham sido adequadamente desenvolvidos, esto catalogados e tm os detalhes necessrios para apoiar a fase de manuteno do ciclo de vida do software.

Tcnicas e Estratgias de Teste de Software

32

Teste de Validao

- Testes Alfa e Beta

virtualmente impossvel que se preveja como o cliente realmente usar um programa. As instrues de uso podem ser mal-interpretadas, combinaes estranhas de dados podem ser regularmente usadas, sadas que pareciam claras ao analista podem ser ininteligveis para um usurio em campo.
SOFTWARE CUSTOMIZADO PARA UM CLIENTE

so realizados testes de aceitao, realizados pelo usurio final para capacit-lo e para validar todos os requisitos. pode variar de um test drive informal a uma srie de testes planejados. Teste Alfa - levado a efeito por um cliente nas instalaes do desenvolvedor. O software usado num ambiente controlado com o desenvolvedor "olhando sobre os ombros" do usurio e registrando erros e problemas de uso. Teste Beta - realizado nas instalaes do cliente pelo usurio final do software. O desenvolvedor no est presente. O cliente registra os problemas (reais ou imaginrios) que so encontrados e relata-os ao desenvolvedor a intervalos regulares.
33

SOFTWARE DESENVOLVIDO COMO UM PRODUTO PARA MUITOS CLIENTES

Tcnicas e Estratgias de Teste de Software

Teste de Sistema

O software apenas um elemento de um sistema baseado em computador mais amplo. O teste de sistema envolve uma srie de diferentes testes, cujo propsito primordial por completamente prova o sistema baseado em computador. Problema Clssico da atividade de teste de sistema: "apontar o dedo" - quando ocorre um erro, o desenvolvedor de um elemento do sistema culpa outro pelo problema. O engenheiro de software deve antecipar os problemas potenciais da interface: 1- projetar caminhos de tratamento de erros que testem todas as informaes que chegam de outros elementos do sistema. 2- realizar uma srie de testes que simulem dados ruins ou outros erros em potencial na interface do software. 3- registrar os resultados de teste para usar como "prova" se algum lhe apontar o dedo. 4- participar do planejamento e projeto dos testes do sistema para garantir que o software seja adequadamente testado.

Tcnicas e Estratgias de Teste de Software

34

Teste de Sistema

- Teste de Recuperao

Muitos sistemas baseados em computador precisam recuperar-se de falhas e retomar o processamento dentro de um tempo previamente especificado. Em certos casos, o sistema deve tolerar falhas, isto , o processamento de falhas no deve fazer com que uma funo global de sistema cesse. Em outros casos, uma falha do sistema deve ser corrigida dentro de um perodo previamente especificado; caso contrrio, graves prejuzos econmicos ocorrero. O teste de recuperao um teste de sistema que fora o software a falhar de diversas maneiras e verifica se a recuperao adequadamente executada.

Tcnicas e Estratgias de Teste de Software

35

Teste de Sistema

- Teste de Segurana

Qualquer sistema baseado em computador que gerencie informaes delicadas ou provoque aes que possam impropriamente prejudicar (ou beneficiar) pessoas constitui um alvo para o acesso imprprio ou ilegal. O teste de segurana tenta verificar se todos os mecanismos de proteo embutidos num sistema o protegero, de fato, de acessos indevidos. Durante o teste de segurana, o analista desempenha o papel de pessoa que deseja penetrar no sistema. Qualquer coisa vale! adquirir senhas mediante contatos externos atacar o sistema com software customizado projetado para derrubar quaisquer defesas que tenham sido construdas desarmar o sistema, negando servio a outros provocar erros intencionalmente, esperando acess-lo durante a recuperao "folhear" atravs de dados inseguros esperando descobrir a chave para a entrada no sistema. O papel do projetista do sistema fazer com que o acesso custe mais do que o valor da informao que ser obtida.
Tcnicas e Estratgias de Teste de Software 36

Ferramentas de Automatizao
Devido a complexidade dos softwares atuais, qualquer estratgia de teste sem suporte de ferramentas automatizadas tende a ser trabalhosa e propensa a enganos. Uma ferramenta de teste reduz a interveno humana nos resultados obtidos, aumentando a qualidade e a produtividade da atividade de teste. Influencia diretamente a confiabilidade do software testado. Ela deveria : 1. Produzir casos de teste que mostrassem o comportamento errado do programa; 2. Listar o erros revelados e a sua localizao; Exemplos Acadmicos: 1. PROTESTE (UFRGS) para programas em Pascal/Anlise de Fluxo de Dados 2. Mothra (UNICAMP) para programas em Fortran/Anlise de Mutantes 3. Proteum (Program Testing Using Mutants) (UNICAMP) para programas em C /Anlise de Mutantes
Tcnicas e Estratgias de Teste de Software 37

Teste de Programas O.O.


Teste de Unidade - Ok Teste de Integrao: Tcnica Incremental Hierrquica: Prope-se uma estratgia de testar cada classe individualmente, onde os casos de teste projetados para o teste de uma classe-base possam ser aproveitados para o teste das subclasses. A tcnica hierrquica pois conduzida pelo ordenamento da relao de heranas; incremental pois usa todos os resultados de testar um nvel de hierarquia anterior para reduzir esforos desnecessrios nos nveis subsequentes Teste de Sistema - Ok

Tcnicas e Estratgias de Teste de Software

38