Você está na página 1de 48

Testes viso geral

Vanilson Burgio

Roteiro

Introduo a testes de Software


Tipos de teste;
Tcnicas de teste;
Plano de Teste;
Casos de teste;
Revises formais.

Introduo a Testes de
Software

O que testar?

Introduo
O desenvolvimento de sistemas de software envolve
uma srie de atividades de produo onde
oportunidades para injeo de falhas humanas so
enormes [Pressman, 2007]

Enquanto existir software existir erro

Testar um software nada mais do que descobrir,


de forma sistemtica, erros embutidos durante a
construo deste software

O que testar?
Testede
desoftware
software ooprocesso
processode
de execuo
execuode
deum
um
Teste
produtopara
para determinar
determinarse
se ele
eleatingiu
atingiu suas
suas
produto
especificaes eefuncionou
funcionoucorretamente
corretamenteno
no
especificaes
ambientepara
paraooqual
qualfoi
foiprojetado
projetado
ambiente

Objetivo
Revelarfalhas
falhasem
emum
umproduto,
produto,para
paraque
queas
ascausas
causasdessas
dessas
Revelar
falhassejam
sejamidentificadas
identificadaseepossam
possamser
sercorrigidas
corrigidaspela
pelaequipe
equipe
falhas
dedesenvolvimento
desenvolvimentoantes
antesda
daentrega
entregafinal
final
de

Testar um processo de execuo de um programa com a


inteno de encontrar um erro

Um bom caso de teste aquele que possui uma alta


probabilidade de encontrar erros ainda no descobertos

Um teste bem sucedido aquele que realmente descobre um


erro ainda no conhecido

Ento...

Se eu testei um software e no encontrei


erros significa que meu software est
correto, ou seja, livre erros!

Verdadeiro ou Falso?

Conceitos Bsicos

Caso de Teste: descreve uma condio particular a ser testada e


composto por valores de entrada, restries para a sua execuo e um
resultado ou comportamento esperado

Procedimento de Teste: uma descrio dos passos necessrios para


executar um caso (ou um grupo de casos) de teste

Critrio de Teste: serve para selecionar e avaliar casos de teste de


forma a aumentar as possibilidades de provocar falhas ou, quando isso
no ocorre, estabelecer um nvel elevado de confiana na correo do
produto

Critrio de Cobertura dos Testes: permitem a identificao de partes do programa que


devem ser executadas para garantir a qualidade do software e indicar quando o mesmo foi
suficientemente testado

Critrio de Adequao de Casos de Teste: avalia se os casos de teste definidos so


suficientes ou no para avaliao de um produto ou uma funo

Critrio de Gerao de Casos de Teste: define as regras e diretrizes para gerao dos
casos de teste de um produto que esteja de acordo com o critrio de adequao definido
anteriormente

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Defeitos no desenvolvimento de
Software

Os defeitos normalmente so introduzidos na transformao de informaes


entre as diferentes fases do ciclo de desenvolvimento de um software

Tipos de Teste de
Software

Tipos de teste de software

O planejamento dos testes deve ocorrer em diferentes nveis e


em paralelo ao desenvolvimento do software

Tipos de teste de software

O planejamento dos testes deve ocorrer em diferentes nveis e


em paralelo ao desenvolvimento do software

Tipos de teste de software

O planejamento dos testes deve ocorrer em diferentes nveis e


em paralelo ao desenvolvimento do software

Tipos de teste de software

O planejamento dos testes deve ocorrer em diferentes nveis e


em paralelo ao desenvolvimento do software

Tipos de teste de software

Teste de Unidade (testes unitrios). Tem por objetivo explorar a menor


unidade do projeto, procurando provocar falhas ocasionadas por defeitos
de lgica e de implementao em cada mdulo, separadamente. O
universo alvo desse tipo de teste so os mtodos dos objetos ou mesmo
pequenos trechos de cdigo

Teste de Integrao: visa provocar falhas associadas s interfaces entre


os mdulos quando esses so integrados para construir a estrutura do
software que foi estabelecida na fase de projeto

Teste de Sistema: avalia o software em busca de falhas por meio da


utilizao do mesmo, como se fosse um usurio final. Dessa maneira,
os testes so executados nos mesmos ambientes, com as mesmas
condies e com os mesmos dados de entrada que um usurio utilizaria
no seu dia-a-dia de manipulao do software. Verifica se o produto satisfaz
seus requisitos

Tipos de teste de software

Teste de Aceitao: so realizados geralmente por um restrito


grupo de usurios finais do sistema. Esses simulam operaes
de rotina do sistema de modo a verificar se seu comportamento est
de acordo com o solicitado.

Teste de Regresso: Teste de regresso no corresponde a um


nvel de teste, mas uma estratgia importante para reduo de
efeitos colaterais
Consiste em se aplicar, a cada nova verso do software ou a cada ciclo,
todos os testes que j foram aplicados nas verses ou ciclos de teste
anteriores do sistema.
Pode ser aplicado em qualquer nvel de teste

Tcnicas de Teste de
Software

Tcnicas de teste de software

Atualmente existem muitas maneiras de se testar um software

Existem as tcnicas que sempre foram muito utilizadas em sistemas


desenvolvidos sobre linguagens estruturadas que ainda hoje tm grande valia
para os sistemas orientados a objeto

Apesar de os paradigmas de desenvolvimento serem diferentes, o objetivo


principal destas tcnicas continua a ser o mesmo: encontrar falhas no software.

As tcnicas de teste so classificadas de acordo com a origem das


informaes utilizadas para estabelecer os requisitos de teste. As tcnicas
existentes so:

Tcnica funcional (Caixa preta)


Tcnica estrutural (Caixa branca)

Tcnicas de teste de software

Teste Estrutural Caixa-branca


avalia o comportamento interno do componente de software
trabalha diretamente sobre o cdigo fonte do componente de software

teste de condio;
teste de fluxo de dados;
teste de ciclos;
teste de caminhos lgicos
Complexidade ciclomtica

exemplo bem prtico desta tcnica: uso da ferramenta livre JUnit

Tcnicas de testes caixa-branca

Testes de caminhos lgicos

Notao de grafo de fluxo


Complexidade ciclomtica
Derivando casos de teste
Matriz de grafo

Testes de estrutura de controle


Teste de condio
Teste de fluxo de dados
Teste de loops

Tcnicas de teste de software

Teste Funcional Caixa-preta


o componente de software a ser testado abordado como se
fosse uma caixa-preta
no se considera o comportamento interno do mesmo
dados de entrada so fornecidos, o teste executado e o
resultado obtido comparado a um resultado esperado
previamente conhecido
o componente de software a ser testado pode ser: um mtodo,
uma funo interna, um programa, um componente, um conjunto
de programas e/ou componentes ou mesmo uma funcionalidade

Tcnicas de teste de software

Outras tcnicas
Outras tcnicas de teste podem e devem ser utilizadas de acordo
com necessidades de negcio ou restries tecnolgicas

teste de desempenho
teste de usabilidade
teste de carga
teste de stress
teste de confiabilidade
teste de recuperao.

Plano de Testes

Processo de teste

Exemplo baseado no RUP (Rational Unified Process)

Nosso foco agora!

Plano de testes

Objetivo
identificar e descrever os testes que sero
executados e implementados
plano de testes possuir os requisitos para o
teste e as estratgias de teste

O projetista de teste o responsvel pelo


planejamento dos testes

Planejar testes

Tcnicas que asseguram o levantamento adequado


de informaes desta atividade

entrevistas
questionrios
monitoramento de funes

Planejar testes

Atividades:

Selecionar requisitos a testar


Definir prioridades
Planejar testes de regresso
Definir estratgia dos testes
Definir o registro dos resultados dos testes e defeitos descobertos
Definir recursos humanos
Definir cronograma de testes
Realizar checklist

Plano de Testes
(ver exemplo de modelo)

Casos de Teste
(Projetar Testes)

Processo de teste

Exemplo baseado no RUP (Rational Unified Process)

Nosso foco agora!

Projetar testes

Objetivo
Detalhar o projeto dos casos de testes o
suficiente para que no haja dvida ou
ambigidade, de modo que possa ser feitas a
implementao e posterior execuo

Planejar testes

Artefatos de entrada
Documento de Requisitos
Especificao de Casos de Uso
Plano de Testes
Lies aprendidas

Artefatos de sada
Modelo de testes
Casos de teste
Procedimentos de teste

Projetar testes

Passos:

Identificar casos de teste


Descrever casos de teste
Identificar casos de teste a serem automatizados
Definir massa de dados

Casos de teste

Identificar casos de teste


Alm dos requisitos que sero testados, deve-se definir
tambm quais testes sero realizados para os requisitos
selecionados (casos de teste)
A identificao dos casos de teste feita por meio da
anlise dos fluxos de eventos dos diferentes cenrios
possveis para os casos de uso
Para cada cenrio deve-se ter, no mnimo, um caso de teste
correspondente.
A anlise dos requisitos no-funcionais tambm deve gerar
casos de testes

Projetar testes

Descrever casos de teste


Este passo tem como objetivo descrever os casos de testes
identificados na fase de planejamento. Essa descrio deve conter:
Condio inicial para execuo: Descrever qual a configurao do
ambiente em que esse caso de teste ser executado e qual o estado
inicial do sistema para que possa ser executado corretamente e
outras pr-condies, como "deve existir um cliente cadastrado na
base de dados".
Passos especficos do teste a ser executado: Passos que devem
ser executados para a correta execuo do caso de teste. Pode
incluir referncias a rotinas comuns ou outros casos de teste.

Projetar testes

Descrever casos de teste


Essa descrio deve conter ainda:
Resultados esperados: Quais os critrios de sucesso do
teste (pode ser um valor especfico ou algo mais genrico,
como "Observar que a aplicao montou uma tela contendo a
mensagem 'Cadastro realizado com sucesso' e que o banco foi
alterado").
Condio final de execuo: O estado que o sistema deve
estar ao trmino da execuo. Por exemplo, "a execuo
deste caso de teste deve manter a base de dados inalterada".

Documento de casos de
teste
(Ver exemplo de modelo)

Revises formais

Custo de desenvolvimento / Esforo

Motivao

Quando artefatos defeituosos so produzidos....

Iniciativas devem ser realizadas no sentido de encontrar e corrigir defeitos to logo sejam introduzidos

Uma abordagem que tem se mostrado eficiente nesse sentido: reviso dos artefatos produzidos ao longo do processo de desenvolvimento de software

Geramos retrabalho para corrigir defeitos


custo de retrabalho para correo de defeitos aumenta na medida que o processo de desenvolvimento progride

Qualidade

Tempo /
Produtividade

Inspeo de Software

Inspeo de software um tipo particular de reviso que


pode ser aplicado a todos os artefatos de software e possui
um processo de deteco de defeitos rigoroso e bem definido

Inspees de Software nos Diferentes Artefatos

Inspeo de Software

Processo tradicional de inspeo envolve:

planejamento da inspeo
indivduos revisando um determinado artefato
um encontro em equipe para discutir e registrar os defeitos
a passagem dos defeitos para o autor do artefato para que
possam ser corrigidos
uma avaliao final sobre a necessidade de uma nova
inspeo

Exemplo de questo