6. An´alise dos resultados obtidos.
Figura 4.: Processo de MBT do TOM Generator
Nas pr ´oximas sec¸ ˜oes pretende-se explorar detalhadamente o processo definido na Figura
4, com ˆenfase nos detalhes t´ecnicos das validac¸ ˜oes e mutac¸ ˜oes.
3.1 m o d e l a c¸ ˜ao do sistema
O modelo do sistema ´e uma parte crucial no processo de testes baseados em modelos. No caso da interfaces gr´aficas o modelo exprime os aspectos chaves da interac¸˜ao do utilizador
com estas (Paterno,2000).
O sistema ´e definido com recurso a m´aquinas de estado, que, neste caso, representam a interac¸˜ao e navegac¸˜ao do utilizador na interface gr´afica de uma aplicac¸˜ao web. Assim, cada p´agina web ´e representada atrav´es de um estado. Em cada estado podem existir transic¸ ˜oes para novos estados, correspondentes a cliques em links para outras p´aginas, formul´arios onde o utilizador preenche com dados as informac¸ ˜oes solicitadas na p´agina e validac¸ ˜oes quando se pretende validar a existˆencia de certos elementos na p´agina web.
3.1.1 Elementos principais da m´aquina de estados
As m´aquinas de estados s˜ao modelos utilizados recorrentemente na engenharia de software. S˜ao vistas como uma forma ´util de pensar sobre o comportamento dos sistemas, desde a
fase inicial do desenho at´e ao teste de software (Belli,2001).
Para modelar o comportamento daGUIvamos recorrer aState Chart XML (SCXML), uma
3.1. Modelac¸˜ao do sistema 20
de forma limpa e organizada. Os elementos principais deSCXMLque s˜ao utilizados para
descrever a interac¸˜ao e validac¸˜ao na interface gr´afica s˜ao os seguintes:
<STATE>
´E o elemento principal do modelo e representa um estado. Os pr´oximos elementos, a apresentar, existem dentro deste elemento. Representa habitualmente uma p´agina web. Quando se est´a a preencher um formul´ario na interface gr´afica utiliza-se este elemento dentro do atual estado, criando-se assim um sub-estado.
<TRANSITION>
´E utilizado quando estamos perante um evento de transic¸˜ao entre estados. Este evento pode ter origem em cliques de links, bot ˜oes ou submiss˜ao de formul´arios. Dentro deste elemento podem existir os seguintes elementos, step, submit e error, sendo expli- cada a seguir a necessidade de utilizac¸˜ao de cada um.
<STEP>
´E utilizado quando ´e necess´ario mais do que uma ac¸˜ao para atingir um deter- minado estado. Por exemplo, quando ´e necess´ario abrir a barra de navegac¸˜ao e clicar em um link que nos leva para uma nova p´agina web. O step nesta situac¸˜ao acontece porque ´e necess´ario primeiramente haver um clique para abrir o menu.
<SUBMIT>
Quando se est´a a preencher um formul´ario s´ıncrono ´e necess´ario no final fazer a submiss˜ao ao servidor que nos leve a uma nova p´agina. Este elemento define qual o estado para o qual se vai transitar depois da submiss˜ao.
<ERROR>
A framework tem a particularidade de criar e aceitar mutac¸ ˜oes no preenchimento de formul´arios, tal como explicado mais `a frente. Caso a mutac¸˜ao escolhida interfira com o decorrer normal do teste ´e necess´ario definir neste elemento o estado para o qual se vai transitar.
<SEND>
Este elemento ´e utilizado para representar a introduc¸˜ao de informac¸˜ao do utilizador no preenchimento dos formul´arios (inputs).
<ONENTRY>
Utilizado para representar uma validac¸˜ao na entrada de uma p´agina web, isto ´e, na entrada de um estado.
<ONEXIT>
´E similar ao elemento anterior, mas a validac¸˜ao ocorre quando se est´a a sair de um determinado estado.
3.1. Modelac¸˜ao do sistema 21
Estruturalmente, os elementos descritos anteriormente podem ser combinados tal como
ilustrado no exemplo3.1, onde ´e percet´ıvel a estrutura hier´arquica da m´aquina de estados.
Nesta estrutura ainda n˜ao est˜ao representados os atributos de cada elemento.
< s t a t e ... > < s t a t e ... > < s e n d ... / > < t r a n s i t i o n ... > < s u b m i t ... / > < e r r o r ... / > < / t r a n s i t i o n > < o n e x i t ... / > < / s t a t e > < t r a n s i t i o n ... / > < o n e n t r y ... / > < o n e x i t ... / > < / s t a t e >
Listing 3.1: Exemplo da estrutura dos elementos.
3.1.2 Atributos dos elementos da m´aquina de estados
Como anteriormente referido, por si s ´o os elementos da m´aquina de estados n˜ao conseguem transmitir informac¸˜ao sobre o tipo de ac¸ ˜oes que o utilizador executa ou deve executar na interface gr´afica. Como tal, ´e necess´ario recorrer a atributos para definir essa informac¸˜ao. Nas tabelas que se seguem iremos encontrar os atributos que fazem parte de cada elemento,
e quando e como devem ser utilizados. A Tabela1, apresenta os atributos do elemento state,
as Tabelas 2 e 3, os atributos do elemento transition, a Tabela4, os atributos do elemento
send, e, finalmente, na Tabela5, s˜ao apresentados os atributos dos elementos onentry e onexit.
<state id=”” type=””> ...
</state>
id
Atributo obrigat ´orio que ´e utilizado para identificar cada estado.
type
Atributo utilizado quando se est´a a preencher um formul´ario na interface gr´afica, tomando o valor ”form”. Caso contr´ario, n˜ao ´e definido.
3.1. Modelac¸˜ao do sistema 22
<transition id=”” label=”” /> Para transic¸ ˜oes simples entre p´aginas.
id
Atributo obrigat ´orio que se utiliza como identificador da ac¸˜ao.
target O id do estado para o qual se pretende transitar. Tabela 2.: Tabela com os atributos do elemento transition.
<transition type=”” label=”” > <submit target=””/>
<error target=”” /> </transition>
G´enero de transic¸˜ao que ´e utilizado quando se est´a a modelar o preenchimento de um formul´ario na interface gr´afica. O elemento error ´e opcional, e usa-se em caso de mutac¸˜ao de falha.
type
Serve para identificar o tipo de transic¸˜ao da p´agina web, depois da submiss˜ao do formul´ario. Assume o valor de ”form” quando se preenche um formul´ario normal, ”alert” quando surge uma alert window e ”ajax” para eventos ass´ıncronos.
label
Atributo utilizado para representar identificar a ac¸˜ao de submiss˜ao de um formul´ario.
target O id do estado para o qual se pretende transitar. Tabela 3.: Tabela com os atributos do elemento transition nos formul´arios.
<send label=”” type=””
element=”” /> Correspondem `a introduc¸˜ao de informac¸˜ao nos formul´arios.
label ´E utilizado como identificador da ac¸˜ao.
type
Indica se a informac¸˜ao a ser introduzida no formul´ario ´e obrigat ´oria ou opcional. ”required’ ou ”optional” s˜ao os valores poss´ıveis.
element
Este atributo ´e somente utilizado quando a informac¸˜ao que se vai adicionar ao formul´ario ´e do tipo checkbox ou
selectbox, sendo estes os valores poss´ıveis de entrada. Tabela 4.: Tabela com os atributos do elemento send.