Beruflich Dokumente
Kultur Dokumente
Jos Amancio
Introduo
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
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
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
Tipos de Testes
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
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
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
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
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
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
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
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
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
Apesar dos custos, teste a mais barata e mais utilizada tcnica de validao de sistemas
Sempre utilizada
Testes formais
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
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
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
{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
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
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
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 formalmente pertencentes a um domnio TESTS Requer um procedimento para executar um caso de teste t a uma IUT Denotada por EXEC(t,IUT)
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
Funes de Veredito vt
Testes de Conformidade
Envolve saber se uma implementao est conforme com respeito a uma relao de implementao imp com sua especificao
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