Sie sind auf Seite 1von 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


Teste caixa-preta, white-box

Considerando estratgia do teste

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

Apenas a estrutura externa do sistema conhecida A estrutura interna (cdigo) do sistema conhecida e usada pelo testador Quando parte do cdigo conhecido

White-box

Grey-box

O Processo de Teste

Duas fases principais

Gerao de teste

Execuo 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 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

Gerao de grandes quantidades de dados

Registram aes de usurios na interface (atravs de mouse e teclado) e permitem repetir as operaes Para testes de aceitao, por exemplo Para testes de stress

Automao

Tipos de ferramentas de teste

Gerao de casos de testes baseados em uma especificao formal Cobertura de cdigo

Para testes funcionais

Calculam o percentual do cdigo executado durante o teste com base em critrios Para testes white-box
Caminhos percorridos, variveis percorridas, comandos percorridos, etc.

Utilizao de Testes

Em muitos casos, na prtica, testes tm sido utilizados de maneira intuitiva


Porm existem muitas pesquisas na rea a fim de possibilitar o retorno de resultados mais confiveis

Os casos de teste no so definidos com base em uma metodologia rigorosa Programadores definem e executam os testes

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

Alm disso, a prtica de desenvolvimento de software atualmente exige processos confiveis

Sempre utilizada

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

Anlise de cobertura de cdigo

Inserir especificaes formais para utilizarmos testes Adotar especificaes formais utilizadas em outras tcnicas de verificao formal que estejam sendo aplicadas 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

Cobertura de caminho

Cada comando executvel (atribuio, entrada, sada, etc) aparece em pelo menos um caso de teste Cada caminho executvel aparece em algum caso de teste

Testes Withe-box

Cobertura de condio

Cobertura de caminho/condio

Cada predicado aparece em um caso de teste avaliado para true Requer que, tanto os caminhos como a condio sejam cobertas

Testes Withe-box

Cobertura de condio mltipla

Cobertura de caminhos executveis

Cada combinao de predicados deve aparecer no conjunto de casos de teste 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
verdade

x=yez>w
falso

x = x -1

Testes Withe-box

Cobertura de statements

Cobertura de caminho

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

Cobertura de condio

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

Testes Withe-box

Cobertura de caminho/condio

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=2, {x=3, {x=3, {x=3, y=2, y=3, y=4, y=4, z=4, z=5, z=7, z=5, w=3} w=7} w=5} w=6}

Testes Withe-box

Determinados critrios englobam incorporam outros

Cobertura de caminho engloba cobertura de

statements

Temos agora formas de medir cobertura e inferir confiabilidade dos casos de testes

Cobertura de caminho/condio engloba cobertura de caminho 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

Como associar estratgias deste tipo a mtodos formais ?

Temos apenas o sistema E esperamos dele um determinado comportamento

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

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

de implementaes e

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
IUT

IMPS dita correta com relao a s SPECS (IUT conforms-to s), sss Iiut MODS de IUT imprelacionada com s

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

Das könnte Ihnen auch gefallen