Você está na página 1de 50

Teste de Software X

Mtodos Formais

Jos Amancio

Introduo

Discusso sobre testes

Testes formais

Ferramenta

Introduo

Teste uma forma operacional de checar a


corretude de um sistema atravs de experimentos
Realizar execues de um sistema com base em
determinados critrios

Linhas de execues, valores de dados,


funcionalidades, etc.

Comparar os resultados das execues com uma


especificao
Veredito: ok ou no

Introduo
Discusso: onde est a ligao entre testes e
mtodos formais ?
Alguns autores no consideram o uso de
testes como sendo aplicao de mtodos
formais
No uma tcnica exaustiva que garanta
cobrir todos os possveis erros

Introduo
Prov menos garantias do que verificao
de modelos, por exemplo
No possvel testar todas as linhas de
execuo
Com testes possvel detectar a existncia,
mas no possvel garantir a ausncia de
erros

Vantagens

Tcnicas mais precisas custam caro

Insero de novas linguagens


Difcil sincronizao de modelos com cdigo
Requerem mais especializao por parte dos
projetistas/programadores

Testes so aplicados diretamente sobre o programa


Simples e prtico: pode-se usar uma heurstica
simples para definir o que testar
Apresenta a melhor relao custo/benefcio na busca
pela melhoria da qualidade de um software

Tipos de Testes

Existem diferentes formas de classificar


testes

Considerando caractersticas do sistema

Comportamento, nvel de abstrao

Considerando estratgia do teste

Teste caixa-preta, white-box

Tipos de Testes

Diferentes nveis de abstrao

Teste de unidade: o mais baixo nvel de teste.


Pequenas partes do cdigo so testadas
separadamente
Teste de integrao: testa se diferentes partes do
cdigo trabalham bem juntas
Teste de sistema: testa o sistema como um todo

Tipos de Testes

Diferentes nveis de abstrao

Teste de aceitao: usualmente feito pelo


cliente para checar se o sistema est de acordo
Teste de regresso: aplicao de testes depois
de alguma alterao para verificar se o sistema
continua funcionando corretamente

Tipos de Testes

Diferentes aspectos do comportamento

Teste funcional ou de conformidade: o sistema


faz o que deveria fazer ? Ou seja, est de acordo
com a especificao ?
Teste de performance: o sistema executa em
tempo aceitvel ?

Tipos de Testes

Diferentes aspectos do comportamento

Teste de robustez: como o sistema reage se seu


ambiente apresentar comportamento estranho
ou indesejado ?
Teste de stress: como o sistema reage em
condies extremas ? Com um nmero grande
de usurios ou com grande quantidade de dados
?

Tipos de Testes

Diferentes aspectos do comportamento

Teste de confiabilidade: quanto podemos contar


com o correto funcionamento do sistema ?
Teste de disponibilidade: qual a disponibilidade
do sistema ?

Tipos de Testes

Estratgias de teste

Caixa-preta

White-box

Apenas a estrutura externa do sistema conhecida


A estrutura interna (cdigo) do sistema conhecida
e usada pelo testador

Grey-box

Quando parte do cdigo conhecido

O Processo de Teste

Duas fases principais

Gerao de teste

Envolve anlise da especificao e determinao de que


funcionalidade ser testada
Determinao de como ser executado o teste
Especificao de scripts de teste

Execuo de teste

Desenvolvimento de um ambiente de teste em que o script


pode ser executado
Execuo do script de teste
Anlise dos resultados

O Processo de Teste

Outras fases

Gerenciamento e manuteno
Objetivo de possibilitar aplicao de testes durante a
existncia do sistema
Manter scripts, controle de verses de
especificaes de testes, ferramentas para teste

Automao

Necessrio uso de ferramentas de suporte


Tipos de ferramentas de teste

Record & Play

Registram aes de usurios na interface (atravs de


mouse e teclado) e permitem repetir as operaes
Para testes de aceitao, por exemplo

Gerao de grandes quantidades de dados

Para testes de stress

Automao

Tipos de ferramentas de teste

Gerao de casos de testes baseados em uma


especificao formal

Para testes funcionais

Cobertura de cdigo

Calculam o percentual do cdigo executado durante


o teste com base em critrios

Caminhos percorridos, variveis percorridas, comandos


percorridos, etc.

Para testes white-box

Utilizao de Testes

Em muitos casos, na prtica, testes tm sido


utilizados de maneira intuitiva

Os casos de teste no so definidos com base


em uma metodologia rigorosa
Programadores definem e executam os testes

Porm existem muitas pesquisas na rea a


fim de possibilitar o retorno de resultados
mais confiveis

Utilizao de Testes

H um custo associado aplicao de testes


de forma sistemtica

Equipe de testadores
Utilizao de ferramentas
Tempo para implementao/execuo de testes

Testes X Mtodos Formais

Apesar dos custos, teste a mais barata e


mais utilizada tcnica de validao de
sistemas

Sempre utilizada

Alm disso, a prtica de desenvolvimento


de software atualmente exige processos
confiveis

Testes X Mtodos Formais


precisamos de melhorar a qualidade do
software
Isso acontece atravs da aplicao de
tcnicas de validao com certo nvel de
rigor
Testes + base matemtica

Testes X Mtodos Formais

Testes formais

Gerao de casos de testes a partir de especificaes


formais

Inserir especificaes formais para utilizarmos testes


Adotar especificaes formais utilizadas em outras tcnicas de
verificao formal que estejam sendo aplicadas

Anlise de cobertura de cdigo

Avaliao do percentual de cdigo executado fornece maior


confiabilidade com base em argumentos formais

Testes Withe-box

Em testes de unidade, um caso de teste


corresponde a um caminho de execuo
Quase nunca possvel checar todas as situaes
com todos os valores possveis
Testes so feitos com base em critrios de
cobertura

Permite executar menos casos de testes com maior


probabilidade de encontrar erros

Testes Withe-box

Cobertura de statements

Cada comando executvel (atribuio, entrada,


sada, etc) aparece em pelo menos um caso de
teste

Cobertura de caminho

Cada caminho executvel aparece em algum


caso de teste

Testes Withe-box

Cobertura de condio

Cada predicado aparece em um caso de teste


avaliado para true

Cobertura de caminho/condio

Requer que, tanto os caminhos como a


condio sejam cobertas

Testes Withe-box

Cobertura de condio mltipla

Cada combinao de predicados deve aparecer


no conjunto de casos de teste

Cobertura de caminhos executveis

Requer que todos os caminhos executveis


sejam considerados nos casos de teste

Testes Withe-box

Exemplo
y=y+1

y=y+1
se x = y e z > w
x = x 1

x=yez>w
verdade
x = x -1

falso

Testes Withe-box

Cobertura de statements

Cobertura de caminho

{x=2, y=2, z=4, w=3}


{x=2, y=2, z=4, w=3}
{x=3, y=3, z=5, w=7}

Cobertura de condio

{x=3, y=3, z=5, w=7}


{x=3, y=4, z=7, w=5}

Testes Withe-box

Cobertura de caminho/condio

{x=2, y=2, z=4, w=3}


{x=3, y=3, z=5, w=7}
{x=3, y=4, z=7, w=5}

Cobertura de condio mltipla

{x=2, y=2, z=4, w=3}


{x=3, y=3, z=5, w=7}
{x=3, y=4, z=7, w=5}
{x=3, y=4, z=5, w=6}

Testes Withe-box

Determinados critrios englobam incorporam


outros

Cobertura de caminho engloba cobertura de statements


Cobertura de caminho/condio engloba cobertura de
caminho

Temos agora formas de medir cobertura e inferir


confiabilidade dos casos de testes

Chances de implementar um conjunto menor de casos


de testes com maior probabilidade de encontrar erros
Pelo menos temos uma chance de avaliar o nvel de
confiabilidade dos casos de teste

Testes Caixa-preta
Comumente chamado de teste funcional ou
teste de conformidade
No h conhecimento da estrutura interna
do sistema

Temos apenas o sistema


E esperamos dele um determinado
comportamento

Como associar estratgias deste tipo a


mtodos formais ?

Testes Caixa-preta

Framework para testes baseado em especificaes


formais (Jan Tretmans)
apresentado um framework para uso de mtodos
formais em testes de conformidade
Testar o comportamento com relao
especificao formal do sistema
O mais importante que liga o mundo informal
das implementaes, testes e experimentaes com
o mundo formal das especificaes e modelos

Conceitos abordados no
Framework
Conformidade
Observaes e testes
Testes de conformidade
Suas extenses

Conformidade
Necessitamos

de implementaes e
especificaes
As especificaes so formais. Universo de
especificaes denotado por SPECS
Implementaes so os sistemas que iremos
testar. Denotamos por IUT
IMPS o conjunto de todos os IUTs

Conformidade
IMPS X SPECS, assim
IUT conforms-to s expressa que IUT uma
correta implementao da especificao s.
Implementaes so objetos fsicos,
diferente das especificaes. No
possibilitam argumentao formal: dificulta
definir conforms-to
conforms-to

Conformidade
que todo IUT IMPS pode ser
modelado por um objeto formal Iiut
MODS, onde MODS o universo de
modelos
Isso chamado como hipteses de teste
Observao:a hiptese de teste apenas
assume que um modelo Iiut existe, mas no
que ele conhecido a priori
Assumimos

Hipteses de teste
Permite

argumentar sobre implementaes como se


elas fossem objetos formais
Assim podemos expressar conformidade atravs de
uma relao formal entre modelos de
implementaes e especificaes
A relao de implementao ser chamada de imp
MODS X SPECS

Hipteses de teste
IMPS dita correta com relao a s
SPECS (IUT conforms-to s), sss Iiut
MODS de IUT imp-relacionada com s

IUT

Iiut imp s

Observaes e Testes
O comportamento de uma IUT
investigado fazendo experimentos na
implementao e observando as suas
reaes
A especificao do experimento um caso
de teste e a implementao chamada de
execuo de teste

Casos de Testes e Execuo de


Testes
Considere

casos de testes formalmente


pertencentes a um domnio TESTS
Requer um procedimento para executar um caso
de teste t a uma IUT
Denotada por EXEC(t,IUT)

Casos de Testes e Execuo de


Testes
O

que acontece durante a execuo ?


A execuo de um teste ir levar em um
conjunto de observaes, subconjunto de OBS
Funo de observao:
obs: TESTS X MODS P(OBS)
obs(t, Iiut) modela formalmente a execuo do teste
real EXEC(t, IUT)

Hipteses de Testes
Seu

significado:

Para

todas as implementaes reais que estamos


testando, assume-se que existe um modelo, tal que
se colocssemos a implementao e o modelo em
caixas pretas e fizssemos todos os experimentos
possveis em TESTS, no conseguiramos
distinguir entre a implementao real e o modelo

Funes de Veredito vt

Usualmente interpretamos observaes de testes


em termos de certo ou errado
vt: P(OBS) {fail, pass}

Podemos ento introduzir a abreviao

Funes de Veredito vt

Isso extendido como uma sute de testes:

Uma implementao falha em uma sute de testes


se ela no passa:

Testes de Conformidade

Envolve saber se uma implementao est


conforme com respeito a uma relao de
implementao imp com sua especificao

Uma sute de testes com essa propriedade


chamada completa

Testes de Conformidade

possvel distinguir entre as implementaes


conformes e no-conformes
um requerimento muito forte para Testes
prticos
Precisamos enfraquecer esta declarao
Sound (parece completa) toda implementao
correta, e possivelmente alguma implementao
incorreta ser aceita

Testes de Conformidade

Testes de Conformidade

Se a propriedade de completude for provada


no nvel dos modelos, e se assumimos que
as hipteses de testes valem:

a conformidade de uma implementao com


respeito a sua especificao pode ser decidida
por meio de um procedimento de testes

Derivao de testes
Ento,

uma atividade importante passa a ser


construir algoritmos que produzem sutes de
testes sound e/ou completos a partir de uma
especificao e de uma relao de
implementao

Extenses
Arquitetura de testes: define o ambiente no
qual uma implementao testada
Introduo da tcnica de cobertura: a cada
implementao errnea detectada por uma
sute de testes, atribudo um valor e depois
esses valores so integrados