• No se han encontrado resultados

Gu´ıa para introducir cambios en la herramienta

4. Estudio del estado del arte

5.6. Gu´ıa para introducir cambios en la herramienta

Con esta informaci´on se pretende nutrir al desarrollador de los conocimientos necesarios para que ´este pueda sumar nuevas funcionalidades a la herramienta o modificar las ya existentes.

5.6.1. Agregando nuevos eventos y componentes en los clientes

Para agregar un nuevo evento al dise˜no e implementaci´on de un cliente de Fastest, se debe realizar lo siguiente:

Crear una clase que herede de la claseEvent.

Si hay alg´un componente interesado en el evento, modificar el archivo de configuraci´on cuyo nombre y ubicaci´on, respecto al directorio ra´ız de la distribuci´on de Fastest (ver Secci´on6.2), es

lib/conf/eventtable.conf.

En la versi´on actual de Fastest, este archivo est´a compuesto por las siguientes l´ıneas:

specLoaded client.blogic.testing.ttree.TTreeGen manageEvent tTreeRequested client.blogic.testing.ttree.TTreeGen manageEvent tTreeGenerated client.blogic.management.Controller manageEvent

allTCasesRequested client.blogic.testing.tcasegen.TClassExtractor manageEvent tCaseRequested client.blogic.testing.tcasegen.TCaseGenClient manageEvent tCaseRequested client.blogic.management.Controller manageEvent

tCaseGenerated client.blogic.management.Controller manageEvent allTCasesGenerated client.blogic.management.Controller manageEvent

tCaseStrategySelected client.blogic.testing.tcasegen.TCaseGenClient manageEvent

donde puede notarse que en cada una se indica el nombre del evento, el nombre de la clase del com- ponente interesado en el evento (con la ruta completa del paquete Java que la contiene) y el nombre del m´etodo que debe invocarse al anunciarse el evento. El componente interesado en un evento debe ser necesariamente heredero deIIComponent.

Por lo tanto, para agregar un nuevo componente a los clientes de Fastest es necesario crear un heredero de IIComponent y agregar una l´ınea apropiada al archivo de configuraci´on de la tabla de eventos, una por cada evento de inter´es. El nuevo m´odulo deber´a implementar cada uno de los m´etodos que est´en interesados en alg´un evento de forma tal que pueda reaccionar apropiadamente al anunciarse el evento asociado.

CAP´ITULO 5. DESCRIPCI ´ON DE FASTEST 67

5.6.2. Agregando nuevas t´acticas de testing

Para lograr agregar una nueva t´actica de testing el desarrollador debe simplemente crear una nueva clase que implemente la interfazTactic, la cual se describe a continuaci´on:

Module Tactic

imports OpScheme, TClass

exportsproc applyTactic(i TClass): List(TClass) setOriginalOp(iOpScheme)

getOriginalOp(): OpScheme setOriginalOp(iOpScheme) getOriginalOp(): OpScheme parseArgs(i String): Bool

Para implementar esta interfaz hay que tener en cuenta lo siguiente:

La subrutina applyTacticdevuelve la lista de clases de prueba (instancias de TClass) que se obtienen al aplicar la t´actica a la clase de prueba que se pasa como argumento. Si la t´actica no genera nuevas clases de prueba para la clase de prueba dada, la subrutina devuelve la lista vac´ıa. La subrutina setOriginalOpsimplemente establece una referencia, en el estado del m´odulo, al esquema de la operaci´on (instancia de OpScheme). getOriginalOp devuelve una referencia al esquema de operaci´on.

La subrutinasetSpec establece una referencia, en el estado del m´odulo, a la especificaci´on del sistema a testear (instancia de Spec, proveniente del framework CZT). getSpec devuelve una referencia a la especificaci´on.

La subrutina parseArgs permite parsear los par´ametros que el usuario ingres´o al agregar la t´actica, utilizando el comando addtactic (ver Secci´on 6.3.5). parseArgs toma la cadena con todos los par´ametros y si ´estos son correctos, modifica el estado de la clase correspondiente y devuelvetrue. Si no son correctos, devuelve false.

5.6.3. Agregando comandos del lado del cliente

Para agregar un nuevo comando a la interfaz en modo texto de los clientes de Fastest, el desarrolla- dor tiene que realizar lo siguiente:

Crear una clase que implemente la interfazCommand.

Agregar una l´ınea al archivo de configuraci´on de comandos cuyo nombre y ubicaci´on, respecto al directorio ra´ız de los fuentes de Fastest, es

CAP´ITULO 5. DESCRIPCI ´ON DE FASTEST 68

La interfazCommand se especifica de la siguiente manera:

Module Command

imports ClientTextUI

exportsproc run(i ClientTextUI,i String)

donde puede notarse que cuenta con un ´unico procedimiento, y es el que debe implementar la fun- cionalidad del comando. El primer par´ametro que se le pasa al procedimiento es una referencia al objeto que representa la interfaz de usuario utilizada (instancia deClientTextUI). Mientras tanto, el segundo par´ametro contiene la cadena que ingres´o el usuario para ejecutar el comando, la cual indica los par´ametros del mismo.

Con respecto al archivo de configuraci´on de comandos mencionado, en la versi´on actual de Fastest, el mismo est´a compuesto por las siguientes l´ıneas:

loadspec = client.presentation.commands.LoadSpecCommand showspec = client.presentation.commands.ShowSpecCommand showloadedops = client.presentation.commands.ShowLoadedOpsCommand selop = client.presentation.commands.SelOpCommand showselops = client.presentation.commands.ShowSelOpsCommand unselop = client.presentation.commands.UnSelOpCommand unselallops = client.presentation.commands.UnSelAllOpsCommand addtactic = client.presentation.commands.AddTacticCommand showsch = client.presentation.commands.ShowSchCommand genalltt = client.presentation.commands.GenAllTTCommand genalltca = client.presentation.commands.GenAllTCaseCommand showtt = client.presentation.commands.ShowTTCommand reset = client.presentation.commands.ResetCommand help = client.presentation.commands.ShowHelpCommand version = client.presentation.commands.ShowVersionCommand

donde es posible apreciar que cada una de ellas es una igualdad entre dos cadenas. El miembro de la izquierda de cada igualdad es la palabra que el usuario debe tipear para ejecutar el correspondiente comando; el miembro de la derecha es la clase (con la ruta completa del paquete Java que la contiene) que implementa la funcionalidad del comando.

Cap´ıtulo 6

Utilizando Fastest

En este cap´ıtulo se presentar´a un manual de usuario con el cual es posible adquirir el conocimiento necesario para utilizar correctamente la herramienta. Previamente, se indicar´an los requerimientos de sistema y se dar´a un listado con las utilidades y documentaci´on relacionados a la aplicaci´on y que acompa˜nan a este informe.

6.1.

Requerimientos

Esta herramienta soporta los siguientes sistemas operativos:

UNIX/LINUX: las distribuciones de Linux m´as utilizadas, Solaris y FreeBSD. Windows: en sus versiones 98, XP y Vista.

y para poder utilizarla es necesario tener instaladoJava Development Kit(JDK) versi´on 1.6 o superior.

6.2.

Distribuci´on

La distribuci´on del Sistema Fastest est´a compuesta por los siguientes ´ıtems:

Archivo fastest.tar.gz: en ´el se encuentran los archivos que conforman la herramienta y que permiten ejecutarla. Estos archivos pueden utilizarse en los sistemas operativos tanto UNIX/Linux como Windows.

Binarios para Linux y Windows deJava Development Kit (JDK) versi´on 1.6. Manual de usuario, el cual es presentado en la siguiente secci´on de este informe.

Suite de especificaciones Z. Consta de una serie de especificaciones Z de distinta complejidad, que tienen como finalidad introducir al usuario en la edici´on de especificaciones Z y en la pr´actica de la generaci´on de casos de prueba abstractos.

Documento PDF “Gu´ıa de M´odulos del Sistema Fastest”: en ´el se describen la funcionalidad y los secretos de todos los m´odulos de la herramienta. Se encuentra en el archivo guia-modulos.pdf.