Você está na página 1de 35

MSOO

PROCESSO DE TESTES DE SOFTWARE

Introduo

Teste um conjunto de atividades que pode ser planejado antecipadamente e realizado sistematicamente.

possvel definir um template (esqueleto), ou seja um conjunto de passos ao qual possvel alocar tcnicas de projeto de casos de teste e estratgias de teste especficos.

Objetivos do Teste
Engenharia de sistemas Requisitos Projeto
S
R D C

Estratgia de teste

Cdigo

U I
V ST

Teste de unidade
Teste de integrao Teste de validao Teste de sistema

O Processo de Teste, como qualquer outro processo deve ser revisto continuamente, de forma a ampliar sua atuao e possibilitar aos profissionais uma maior visibilidade e organizao dos seus trabalhos, o que resulta numa maior agilidade e controle operacional dos projetos de testes.

Fluxo de informaes de teste


Configurao de SW Resultados de teste Avaliao Erros Depurao Correes

Atividade de teste Configurao de teste Resultados esperados

Dados da taxa de erros Modelo de confiabilidade

Confiabilidade prevista

O processo de depurao a parte mais imprevisvel do processo de teste. Um erro que indique uma discrepncia de 0,01% entre resultados esperados e reais pode demorar uma hora, um dia ou um ms para ser diagnosticado e corrigido.

Tcnicas de Teste de Software

Conhecendo-se a funo especfica que um produto projetado deve executar, testes podem ser realizados para demonstrar que cada funo totalmente operacional (teste de caixa preta - black box)

Conhecendo-se o funcionamento interno de um produto, testes podem ser realizados para garantir que todas as engrenagens, ou seja, que a operao interna de um produto tem um desempenho de acordo com as especificaes e que os componentes internos foram adequadamente postos prova (teste de caixa branca white box)

Teste de Caixa Preta

Teste de caixa preta refere-se aos testes realizados nas interfaces do SW (a entrada adequadamente aceita e a sada corretamente produzida com a integridade das informaes externas mantida).

Teste de Caixa Branca

Teste de caixa branca baseia-se num minucioso exame dos detalhes procedimentais, atravs da definio de todos os caminhos lgicos possveis. Infelizmente estes testes apresentam problemas logsticos, uma vez que o nmero destes possveis caminhos lgicos pode ser muito grande, o que levaria a um tempo infinito. Entretanto este tipo de teste no pode ser desprezado como pouco prtico, podendo-se optar por um nmero limitado de opes

Teste de caminho bsico

uma tcnica de teste de caixa branca que 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.
Notao de grafo de fluxo: notao simples para representao do fluxo de controle, que descreve o fluxo lgico:

Seqncia
if while case

Complexidade Ciclomtica

uma mtrica de SW que proporciona uma medida quantitativa da complexidade lgica de um programa O valor computado da complexidade ciclomtica define o nmero de caminhos independentes do conjunto bsico de um programa e oferece-nos um limite mximo para o nmero de testes que deve ser realizado para garantir que todas as instrues sejam executadas pelo menos uma vez.

Complexidade Ciclomtica

Por exemplo, um conjunto de caminhos independentes, referentes figura ao lado:


caminho 1: 1-11 caminho 2: 1-2-3-4-5-10-1-11 caminho 3: 1-2-3-6-8-9-10-1-11

Ramo
2, 3 6

caminho 4: 1-2-3-6-7-9-10-1-11

4, 5

R2
7

R3 8

R1 R4
10

Regio

11

Grafo de fluxo

Viso da Qualidade

Teste x Verificao x Validao


Verificao:

Estamos construindo certo o

produto? Validao: Estamos construindo o produto certo?

Teste x Qualidade
Qualidade

um conceito mais amplo Teste gera informao sobre qualidade do produto

Estratgias de Teste de Software


Engenharia de sistemas Requisitos Projeto Cdigo S R D C U I V ST

Estratgia de teste

Teste de unidade

Teste de integrao
Teste de validao Teste de sistema

Teste de Unidade Teste de Integrao Teste de Validao Teste de Sistema

Testes de Unidade

Concentra-se no esforo de verificao da menor unidade de projeto de SW - o mdulo. Baseia-se quase sempre na tcnica de caixa branca (com menor incidncia na O.O.) e pode ser realizado em paralelo para mltiplos mdulos.

Testes de Integrao

O objetivo , a partir dos mdulos testados no nvel de unidade, construir a estrutura de programa que foi determinada pelo projeto realizando-se ao mesmo tempo, testes para descobrir erros associados a interfaces (entradas e sadas entre mdulos devem se compatibilizar).

Testes de Validao

So definidas expectativas razoveis na Especificao de Requisitos de SW, que descreve todos os atributos do SW visveis ao usurio. A validao bem-sucedida quando o SW funciona de uma maneira razoavelmente esperada pelo cliente.

Testes de Sistema

uma srie de diferentes testes, cujo propsito primordial pr completamente prova o sistema baseado em computador.

Teste de Sistema

Teste de recuperao: um teste de sistema que fora o SW a falhar de diversas maneiras e verifica se a recuperao adequadamente executada. Teste de segurana: tenta verificar se todos os mecanismos de proteo embutidos em um sistema o protegero, de fato, de acessos indevidos. Teste de estresse: executa o sistema de uma forma que exige recursos em quantidade. Essencialmente o analista tenta destruir o programa.

Teste de desempenho: idealizado para testar o desempenho de runtime do SW dentro do contexto de um sistema integrado.

Test-Driven Development (TDD)

Desenvolvimento guiado pelos testes


S escreva cdigo novo se um teste falhar Refatore at que o teste funcione Alternncia: "red/green/refactor" - nunca passe mais de 10 minutos sem que a barra do JUnit fique verde.

Tcnicas
"Fake It Til You Make It": faa um teste rodar simplesmente fazendo mtodo retornar constante Implementao bvia: se operaes so simples, implemente-as e faa que os testes rodem

Plugin JUnit (BlueJ)

Plugin JUnit (Eclipse)

Ferramentas para Testes das GUIs

Caso especfico: resposta de servidores Web Verificar se uma pgina HTML ou XML contm determinado texto ou determinado elemento Verificar se resposta est de acordo com dados passados na requisio: testes funcionais tipo "caixa-preta" Solues (extenses do JUnit) HttpUnit e ServletUnit: permite testar dados de rvore DOM HTML gerada JXWeb (combinao do JXUnit com HttpUnit) permite especificar os dados de teste em arquivos XML arquivos de teste Java so gerados a partir do XML XMLUnit extenso simples para testar rvores XML Onde encontrar: (httpunit|jxunit|xmlunit).sourceforge.net Outras: Cactus, JUnitPerf, JUnitEE

Ferramenta para Testes de Performance

JUnitPerf (www.clarkware.com)

Coleo de decoradores para medir performance e escalabilidade em testes JUnit existentes


Executa um teste e mede o tempo transcorrido Define um tempo mximo para a execuo. Teste falha se execuo durar mais que o tempo estabelecido Executa um teste com uma carga simulada Utiliza timers para distribuir as cargas usando distribuies randmicas Combinado com TimerTest para medir tempo com carga Executa o teste em um thread separado

TimedTest

LoadTest

ThreadedTest

Frameworks para Testes de Unidade

Similares ao JUnit (linguagem Java):

Python

PyUnit CppUnit PerlUnit NUnit, NUnitForms, dotUnit, EasyMock.NET, csUnit

C++

Perl

.NET

Testes envolvendo acesso a Base de Dados

Processo de Teste de Software na viso do RUP

Planejamento de Testes

Definio de uma proposta de testes baseada nas expectativas do Cliente em relao :

prazos, custos qualidade esperada

Possibilidade de dimensionar a equipe e estabelecer um esforo de acordo com as necessidades apontadas pelo Cliente.

Especificao dos Testes

Identificao dos casos de testes que devero ser construdos e/ou modificados em funo das mudanas solicitadas pelo Cliente.

Especificao dos Testes (Categorias)

Modelagem dos Testes

Identificao de todos os elementos necessrios para a implementao de cada caso de teste especificado:

modelagem das massas de testes definio dos critrios de tratamento de arquivos (descaracterizao e comparao de resultados).

Preparao do Ambiente

Conjunto de atividades que visa a disponibilizao fsica de um ambiente de testes para sofrer a bateria de testes planejadas nas etapas anteriores de forma contnua e automatizada (sem interveno humana).

Execuo dos Testes

Execuo e conferncia dos testes planejados, de forma a garantir que o comportamento do aplicativo permanece em "conformidade" com os requisitos contratados pelo Cliente.

Anlise dos Resultados

Anlise e confirmao dos resultados relatados durante a fase de execuo dos testes.

Os resultados em "no-conformidade" devero ser "confirmados" e "detalhados" para que a Fbrica de Software realize as correes necessrias.
J os em "conformidade" devero ter seu resultado "POSITIVO" reconfirmado.

Equipes de Teste

Norma IEEE 829-1998

A norma IEEE 829-1998 descreve um conjunto de documentos para as atividades de teste de um produto de software. Os documentos cobrem as tarefas de planejamento, especificao e relato de testes.

Perguntas?