testes de sistemas concorrentes: uma abordagem formal paulo eduardo e silva barbosa março de 2004...

56
Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans – University of Twente

Upload: isabel-assuncao-aranha

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Testes de Sistemas Concorrentes:

Uma abordagem formal

Paulo Eduardo e Silva BarbosaMarço de 2004

Testing Concurrent Systems: A Formal Approach

Jan Tretmans – University of Twente

Page 2: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

IntroduçãoUltimamente muita pesquisa foi dedicada à área

de métodos formaisA prática corrente de checagem de corretude é

baseada em uma abordagem mais informalA combinação de testes e métodos formais nem

sempre é feita

Page 3: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

IntroduçãoPouca gente imagina como uma mão lava a

outraAs mãos sujas dos testesA mão limpa e matemática dos métodos de

verificação formal

Page 4: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

IntroduçãoAs visões estão mudandoPesquisas acadêmicas com testes estão

evoluindo e mesmo o verificador mais formal admite que um sistema verificado formalmente ainda deve ser testado

Métodos formais são cada vez mais usados, uma especificação formal pode ser benéfica durante um teste, dando-lhe maior suporte

Page 5: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

PropósitosDiscutir como testes podem ser executados

baseados em especificações formaisComo obter vantagens em termos de precisão,

claridade e consistência do processo de testes pela adoção de uma abordagem formal

Page 6: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Tópicos da discussãoCasamento entre métodos formais e testesA necessidade de ambosUma especificação formal verificada é um bom ponto

de partida para testesTestes formais são um bom ponto de partida para

introduzir métodos formais no desenvolvimento de software

Page 7: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Estrutura da apresentaçãoDiscussão informal sobre testes de software clássicosApresentação de um framework geral e formal para testes

utilizando métodos formaisFaz uma discussão mais específica desse framework com o

formalismo dos sistemas de transições rotuladosDiscutimos o suporte ferramental e apresentamos um

exemplo de aplicaçãoDiscussão de fontes e perspectivas

Page 8: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Discussão informal sobre testes de software

clássicos

Page 9: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Testes de softwareApresentação da abordagem clássicaA especificação é a base do testeOrdens dos testesTestes podem ser aplicados em diferentes níveis

de abstraçãoTeste black-box ou funcionalTeste white-boxTeste grey-box

Page 10: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Fases do processo de testes

Geração dos testesExecução dos testes

Outras atividades importantes:GerenciamentoManutenção

Page 11: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Automação dos testesTeste é um candidato ideal para automaçãoFerramentas record and playbackFerramentas de cobertura de código

Critérios:Todos os caminhosTodos os statementsTodas as combinações de uso

Page 12: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Framework para testes formais

Page 13: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Framework para testes formais

É apresentado um framework para uso de métodos formais em testes de conformidade

Testa com relação à sua especificação formal do seu comportamento funcional

O mais importante é que liga o mundo informal das implementações, testes e experimentações com o mundo formal das especificações e modelos

Page 14: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Conceitos abordados no framework

ConformidadeObservações e testesTestes de conformidadeSuas extensões

Page 15: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

ConformidadeNecessitamos de implementações e especificaçõesAs especificações são formais. Universo de especificações é

denotado por SPECSImplementações são os sistemas que iremos testar. Denotamos

por IUT pertencentes a IMPSIUT conforms-to s expressa que IUT é uma correta

implementação da especificação s.Formalmente sobre implementações, uma implementação IUT

IMPS pode ser modelado por um objeto formal Iiut MODS

Isso é chamado como hipóteses de teste

Page 16: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Hipóteses de testeExpressam conformidade por uma relação formal entre

modelos de implementações e especificaçõesIUT IMPS é dita correta com relação a

s SPECS, IUT conforms-to s, sss Iiut MODS de IUT é imp-relacionado com s: Iiut imp s.

Uma relação de implementação imp MODS X SPECS

Page 17: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Observações e TestesO comportamento de uma IUT é investigado

fazendo experimentos na implementação e observando as suas reações

casos de testes e execução de testes

Page 18: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Casos de testes e execução de testes

Considere casos de testes formalmente pertencentes a um domínio TESTS

Requer um procedimento para executar um caso de teste t a uma IUTDenotada por EXEC(t,IUT)O que acontece durante a execuçãoA execução de um teste irá levar em um conjunto de observações,

subconjunto de OBSFunção de observação:

Obs: TESTS X MODS P(OBS) obs(t,Iiut) formalmente modela a execução do teste real EXEC(t,IUT)

Page 19: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Hipóteses de TestesSeu significado:

Para todas as implementações reais que estamos testando, assume-se que existe um modelo, tal que se colocássemos a IUT e o modelo em black boxes e fizéssemos todos os experimentos possíveis em TESTS, não conseguiríamos distinguir entre a real IUT e o modelo

Page 20: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Funções de veredito vtUsualmente interpretamos observações de testes em

termos de certo ou erradoVt: P(OBS) {fail, pass}

Isso é extendido como uma suíte de testes:

Uma implementação falha em uma suíte de testes se ela não passa:

Page 21: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Testes de conformidadeEnvolve saber se uma implementação está

conforme respeito a uma relação de implementação imp com sua especificação

Uma suíte de testes com essa propriedade é chamada completa

Page 22: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Pode distinguir entre as implementações conformes e não-conformes

É um requerimento muito forte para Testes práticos

Implicações soundImplicações exhaustiveness

Page 23: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Mostrar soundness

Page 24: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Se a propriedade de completude for provada no nível dos modelos, e se tivermos base que as hipóteses de testes valem, então a conformidade de uma implementação com respeito a sua especificação pode ser decidida por meio de um procedimento de testes

Page 25: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Derivação de testesEntão, uma atividade importante passa a ser

dividir os algoritmos no qual produzem suítes de testes sound e/ou completos de uma especificação dada uma relação de implementação

Deve produzir suítes de testes sound para alguma especificação s

Page 26: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

ExtensõesArquitetura de testes: define o ambiente no qual

uma implementação é testadaIntrodução da técnica de cobertura: a cada

implementação errônea detectada por uma suíte de testes, é atribuido um valor e depois esses valores são integrados

Page 27: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Sistemas de transição rotulados

De que consisteSeu formalismo modela comportamento de processos

(especificações, implementações e testes)Serve como modelo semântico para várias linguagens

formais

Page 28: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Sistemas de transição rotulados

Os domínios formais SPECS, MODS e TESTS serão agora algum tipo de sistema de transição

Sua teoria de testes não serve para testes de conformidade

Em vez de começar com uma especificação e encontrar uma suíte de testes, define relações de implementação

Page 29: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

ExemploDada uma classe de testes:Um sistema de transição p é equivalente a um q se algum

caso de teste em uma classe leva às mesmas observações com p e q

Uma vez que as relações de implementação tenham sido definidas, o teste de conformidade inclui encontrar o algoritmo de derivação de testes em que as suítes de testes possam ser derivadas de uma especificação que sejam sound e tentem ser mínimos

Page 30: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Teoria ioco-testingUsa os dois tipos de testesSua relação de implementação é definida como no slide

anteriorDerivação de testes a partir de especificações é feito do

resultado de um algoritmo de derivação de testes sound ou exaustivo

Page 31: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

EspecificaçõesUtilizamos sistemas de transições rotulados ou alguma

linguagem formal com a semântica de sistemas de transições rotulados

Devemos conhecer as ações do sistema de transição e deve ser particionado em entradas e saídas (Li e Lu)

LTS(L) – sobre ação do alfabeto LSPECS := LTS(Li U Lu)

Page 32: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Implementações e seus modelos

Implementações são modeladas por uma classe especial de sistemas de transição chamados input-output transition systems (IOTS)

IOTS(Li, Lu) classe com entradas Li e saída LuMODS := IOTS(Li, Lu)IMPS são os programas que podem ser

modelados por IOTS

Page 33: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Relação de implementação

ioco ⊆ IOTS(Li,Lu) X LTS(Li U Lu)Observação de refutação ∉ LTESTS = LTS(L U {})Enquanto observando um processo, uma

transição rotulada com só pode ocorrer se nenhuma outra é possível

O observador sabe que o processo não pode executar nenhuma das ações que ele oferece

Page 34: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Operador paraleloÉ o tradicional operador paralelo de

sincronização extendido com a regra

É chamado refutação em pré-ordem

Page 35: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Relação de implementação mais fraca

(conf)É uma modificação do teste em pré-ordem

restringindo todas as observações para os traces que estão contidos na especificação s

Facilita os testes porque deixa de considerar o vasto conjunto complementar

Faz apenas o que deve fazerA teoria dos testes canônicos baseia-se nessa

abordagem

Page 36: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Teste em pré-ordem para autômatos entrada/saída

É requisitado que as entradas estejam sempre habilitadas

Page 37: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Relação iocoSegue os princípios dos testes em pré-ordem

com testes que possam refutar ações na refutação em pré-ordem

Entradas estão sempre habilitadasA distinção com o IOA é a restrição dos traces

apenas das especificações como em conf

Page 38: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Definição semi-formal da relação ioco

p after σ é o conjunto de estados onde o sistema de transições p pode após executar o trace σ

out(p after σ) é o conjunto de ações de saída após p after σ

Um estado p é quiescente se não pode ocorrer ação de saída

Page 39: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Uma ação δ, indicando quiescencia deve ocorrer apenas se existe um estado quiescente em p after σ

Straces(s) são traces de suspensão da especificação, onde δ vai ocorrer com entradas e saídas normais

Page 40: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

A relação de implementação escolhida é a ioco: imp := ioco

Uma implementação é ioco-correta com respeito a especificação s se i nunca produz uma saída na qual não poderia ser produzida por s na mesma situação, após o mesmo trace de suspensão

Então i deve ser apenas quiescente, não produzir saídas se s for também

Page 41: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 1

Page 42: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 1Dois IOTS com Li = {?but} e Lu{!liq,!choc}not( r1 ioco r2) pois:out(r1 after ?but δ ?but) = {!liq, !choc},Enquanto out (r2 after ?but δ ?but) = {!choc}

Page 43: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

TestesTESTS é instanciado também com sistemas de

transições, mas adicionamos um rótulo extra θ para detecção de refutação

Retringimos testes para sistemas determinísticos com comportamento finito

Os estados terminais são pass ou fail

Page 44: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

TestesPara cada estado não-terminal s de um test case que

init(s) = {a} para algum a ∈ Li, ou init = Lu U {θ}init(t) é o conjunto de ações iniciais de tO comportamento de cada test case é descrito por uma

árvore finitaO rótulo especial θ ∉ L U {δ} será usado para

detectar estados quiescentes de uma implementaçãoNormalmente é um tipo de time-out

Page 45: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 2

Page 46: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

ObservaçõesSão logs de ações, traces sobre L U {θ}OBS := (L U {θ})*Função de observação: Composição

sincronizada paralela de t e i terminando em um estado final de t

Page 47: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 3Para r1 temos três observações com t do

exemplo 2:

Page 48: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

VereditosÉ atribuído a um conjunto de observações O

OBS é pass se todos os traces em O leva ao estado terminal pass do test case

Page 49: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 4No exemplo 3, como o estado terminal de t para

a segunda vez é fail, o veredito de r1 é fail.O veredito de r2 é pass

Page 50: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Execução de testesEXEC(t, IUT) deve expressar a semântica

expressa por obs(t, Iiut) e estabelece as hipóteses de testes

Page 51: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Derivação de testesAlgoritmo que especifica a derivação dos test cases de

uma especificação de um sistema de transição rotulado para a relação de implementação ioco

“;” denota um prefixo de ação“+” denota escolha“” denota escolha generalizadaS after a denota o conjunto de estados que podem ser

alcançados de algum estado em S via uma ação a

Page 52: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Algoritmo derivação de testes ioco

Seja s uma especificação com estado inicial s0S é um conjunto não-vazio de estados com

inicialmente S = {s0}Um test case t é obtido de S por um número

finito de recursões de uma das três escolhas não-determinísticas

Page 53: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Algoritmo derivação de testes ioco

Page 54: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Sobre o algoritmoDada uma especificação s LTS(L1 U L2)É provado que este algoritmo produz apenas

casos de testes sound (que nunca produzem fail enquanto testando uma implementação ioco-conforming

Formalmente, seja der alguma função satisfazendo o algoritmo não-determinístico, então:

Page 55: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Alguma implementação não-conforme pode ser sempre detectada por caso de teste gerado por esse algoritmo

Seja Ts o conjunto de todos os casos de testes que podem ser gerados pelo algoritmo de s, então:

Page 56: Testes de Sistemas Concorrentes: Uma abordagem formal Paulo Eduardo e Silva Barbosa Março de 2004 Testing Concurrent Systems: A Formal Approach Jan Tretmans

Exemplo 5Usando o algoritmo de derivação ioco-test, o caso de

teste t da figura 2 pode ser derivado da especificação r2 na figura 1

Isso é consistente com a figura 1 e exemplo 4:R1 not ioco r2, r2 ioco r2 (reflexiva) e vt(obs(t,r1)) =

fail e vt(obs(t,r2)) = passO caso de teste t foi usado para detectar que r1 não é

ioco-correct com respeito a r2