Uma Estratégia para Teste de Conformidade Automático em ... · PDF fileprojeto e...

Click here to load reader

  • date post

    05-Jan-2019
  • Category

    Documents

  • view

    214
  • download

    0

Embed Size (px)

Transcript of Uma Estratégia para Teste de Conformidade Automático em ... · PDF fileprojeto e...

Resumo Teste de software uma atividade cara e custosa; ela

tambm propensa a erros devido a sua natureza humana. Mas, teste continua sendo o principal esforo usado na indstria de software para atingir um nvel aceitvel de qualidade para seus produtos. Uma alternativa ao teste de software o uso de tcnicas verificao formal, embora, estas tcnicas ainda no so encontradas frequentemente na indstria. Este artigo prope uma estratgia automtica de verificao para incrementar a fase de teste baseado em verificao de refinamentos, na qual os formalismos ficam escondidos dos desenvolvedores. A estratgia consiste em uma linguagem natural controlada (um subconjunto da lngua Inglesa) para descrever requisitos (que so automaticamente traduzidos na linguagem de especificao formal CSP) e extrair um modelo diretamente de um aparelho celular usando uma ferramenta como suporte; estes artefatos so normalizados em um mesmo nvel de abstrao e comparados usando o verificador de refinamentos FDR. Esta estratgia esta sendo experimentada na Motorola.

Palavras chave CSP (communicating sequential process), verificao de refinamento (refinement checking), teste de conformidade (conformance testing).

I. INTRODUO Embora, mtodos formais serem considerados difceis de

usar na prtica, modelos formais so uma tendncia atual na indstria. Estes modelos so usados, por exemplo, na anlise, projeto e teste. Em teste de software, muitas abordagens esto usando modelos formais para automatizar a gerao de casos de teste [1], bem como melhorar a qualidade do processo de teste como um todo [2].

Este trabalho o resultado da colaborao entre Motorola e o Centro de Informtica da Universidade Federal de Pernambuco. Ns estamos usando a linguagem formal CSP (Seo II-A); uma linguagem primeiramente desenvolvida para modelar sistemas concorrentes e distribudos. Tambm, usamos verificao automtica baseada em verificao de refinamentos [3] (Seo II-B), ocultando o uso de mtodos formais. Isto , desenvolvedores continuam usando seus

Os autores agradecem o suporte do Conselho Nacional de

Desenvolvimento Cientfico e Tecnolgico CNPq processo nmero 550466/2005-3.

C. Bertolini aluno de doutorado do Centro de Informtica da Universidade Feneral de Pernambuco, Recife/PE, Brasil, Caixa Postal 7851, CEP 50732-970 ([email protected]).

A. Mota professor do Centro de Informtica da Universidade Federal de Pernambuco, Recife/PE, Brasil, Caixa Postal 7851, CEP 50732-970 ([email protected]).

artefatos tradicionais e obtendo resultados sem precisar conhecer como mtodos formais funcionam. A principal motivao dessa pesquisa melhorar a produtividade reduzindo esforo atravs da automao.

Uma viso geral de nossa estratgia (Seo III) apresentada na Fig. 1. Ns consideramos duas entradas: um documento de requisitos escrito em uma Linguagem Natural Controlada---CNL1 (um subconjunto da lngua Inglesa), no qual reusamos o trabalho reportado em [4] para gerar especificaes CSP a partir do documento de requisitos (Seo III-A), e um telefone celular, onde desenvolvemos uma ferramenta chamada BxT (Seo III-B) para extrair automaticamente uma especificao CSP a partir do telefone usando uma API proprietria da Motorola chamada PTF [5] . Aps a extrao dos dois modelos, feito um ajuste do nvel de abstrao (Seo III-C). Devido a implementao possuir mais detalhes que o modelo de requisitos, e aplicamos um algoritmo proposto baseado em verificao de refinamentos, executando uma espcie de teste de conformidade, para analisar e reportar problemas encontrados (Seo III-D). Note que, a estratgia como um todo esconde o formalismo dos desenvolvedores.

Fig. 1. Viso geral da estratgia.

Finalmente, para mostrar os benefcios da nossa estratgia,

apresentado um estudo de caso (Seo IV) baseado em uma aplicao real de celular. Tambm, so considerados alguns

1 A razo para usar CNL ao invs de uma linguagem grfica, como UML, est relacionado com os artefatos usados na Motorola; Estes so descritos em Ingls.

C. Bertolini and A. Mota

Uma Estratgia para Teste de Conformidade Automtico em Sistemas Embarcados

290 IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 3, JULY 2008

trabalhos relacionados (Seo V), concluses e trabalhos futuros (Seo VI).

Desta forma, as principais contribuies do artigo so: A proposta de uma estratgia automtica para

melhorar a qualidade do teste de sistema no contexto de aplicaes para celular;

Desenvolvimento da ferramenta (BxT) para extrair o comportamento de um aparelho celular como uma especificao formal CSP;

Formalizao de como ajustar diferentes nveis de abstrao de especificaes de requisitos e implementao para permitir uma correta verificao de refinamentos;

Um algoritmo baseado em verificao de refinamentos para capturar todas as falhas encontradas entre requisitos e implementao.

II. ESTADO DA ARTE Esta seo apresenta conceitos bsicos sobre verificao de

modelos e a linguagem formal CSP.

A. CSP: Viso Geral A idia bsica de CSP representar o sistema com um

conjunto de processos interagindo entre si atravs de aes (eventos). O alfabeto de um processo P, representado como P, o conjunto de eventos disparados pelo processo. Para usar CSP na prtica, necessrio usar uma verso machine-readable chamada CSPM; todos os elementos de CSP usados no artigo seguem a verso CSPM. Uma vez que se tem a especificao CSPM, pode-se aplicar o verificador de refinamentos FDR [6] (Failures-Divergences Refinement). Foi usada a seguinte especificao CSP a partir do estudo de caso utilizado para introduzir CSP:

Esta especificao CSP captura o comportamento de uma implementao real de um celular. Ela inicia com a descrio do processo principal SysImpl. Este processo representa uma composio seqencial (;) entre o processo P1_Hiding e ele

mesmo. Assim, SysImpl comporta-se como P1_Hiding at uma terminao de sucesso ocorrer (ser explicado abaixo). Nesse caso, ele torna SysImpl novamente.

O operador hiding (\) usado para abstrair detalhes de um processo. Por exemplo, o processo P1_Hiding esconde os eventos goto.DTGOT_SCREEN.(IDLE_SCREEN,{}), goto.DTGOT_MENU.(MAIN_MENU,{}) do processo P1.

Um prefixo (a -> P) combina um evento e um processo para produzir um novo processo; um comportamento linear. Em steps -> goto.DTGOT_SCREEN.(IDLE_SCREEN,{}) ->..., depois ocorre steps, o evento goto o primeiro evento do comportamento resultante. Quando se tem uma escolha externa ([]), ela determina uma escolha entre dois processos. O ambiente decide qual processo ser escolhido. Por exemplo, em (P2 [] PA1) o ambiente pode escolher o processo P2 ou PA1. O processo Skip significa uma terminao de sucesso e o processo STOP significa um comportamento problemtico; um deadlock. Isto tambm serve para outros objetivos (veja seo III-D). A semntica de CSP definida em trs modelos semnticos: traces, failures e failures-divergences [3]. Este trabalho usa o modelo de traces para descrever o comportamento. o modelo mais simples e captura o que um processo pode fazer na forma de um conjunto de seqncias de eventos. Assim, para qualquer processo CSP P, a funo T(P) retorna os traces. Uma escolha no determinstica entre dois processos CSP representada como P |~| Q. Em um modelo de trace, no se pode capturar no determinismo porque T(P [] Q) = T(P |~| Q) = T(P) U T(Q). Isto til para este trabalho porque casos de teste so muito similares a traces. Sendo assim, o modelo de traces mais adequado.

Tendo os traces de um processo, podem-se verificar seus relacionamentos atravs de refinamentos. Sejam P e Q dois processos CSP, ento P [T= Q =def T(Q) T (P), ou seja, Q melhor que P se Q tem menos ou o mesmo comportamento de P. Alm disso, processos CSP podem tambm ser representados semanticamente (usando seus operadores semnticos) em termos de LTS (Labelled Transition Systems); um tipo de grafo rotulado (veja Fig. 5(a) para um exemplo de LTS).

B. Modelos e Verificao de Refinamentos Model Checking uma tcnica automtica para verificar se

um dado modelo satisfaz uma propriedade desejada. Usualmente, model checking usado para projetos de hardware, mas usado tambm para software [7]. Propriedades so escritas em formulas em lgica temporal (por exemplo, CTL ou LTL [8] ) e modelos em alguma linguagem de especificao (por exemplo, CSP e PROMELA [9]). Ento, dado uma formula em lgica temporal f e um modelo M, model checking, o qual representado como M f, significa verificar se M satisfaz f. Na pratica, isto envolve

BERTOLINI AND MOTA : IDEAS08: AN STRATEGY FOR AUTOMATIC CONFORMANCE 291

representar M e f como LTS, e executando buscas nestas estruturas. A essncia que model checking exaustivo (utiliza-se a estrutura inteira se necessrio [10] e obviamente necessita que essas estruturas sejam finita.)

Um tipo especial de model checking, chamado verificao de refinamentos, usa dois modelos escritos na mesma linguagem de especificao ao invs de lgica temporal. Seu objetivo verificar se um modelo Q melhor que outro modelo P no sentido que todas as propriedades de P so preservadas por Q. Formalmente, dado modelos P e Q, diz-se que Q refina P se P [= Q. Pode-se pensar que P um modelo que j conhecido por ter certa propriedade dada pela formula f. Assim, Q f P [= Q.

Em nossa estratgia, temos os requisitos de uma aplicao bem como sua implementao. Pode-se pensar em usar model checking tradicional atravs de PROMELA ao invs de CSP e SPIN [9] ao invs de FDR [6], mas verificao de refinamentos a escolha mais natural para verificar se uma implementao esta em conformidade com sua especificao.

Atualmente, muitas abordagens