El objeto de este artículo es presentar el framework de pruebas Fitnesse.
Introducción
Fitnesse es un IDE que utiliza un servidor Wiki para interactuar con FIT (Framework for Integrated Test).
FIT es una herramienta open-source diseñada para automatizar pruebas que requiere la colaboración de dos equipos: el equipo funcional (usuarios, perfiles de negocio) y el equipo de desarrollo.
El equipo funcional realiza tablas HTML con los casos de negocio que son proporcionadas a FIT, que se encarga de dar colores a la tabla en función del resultado de la prueba. La principal ventaja del uso de Fitnesse como IDE para FIT es la facilidad que ofrece para diseñar y organizar los wikis.
El equipo de desarrollo se encarga de desarrollar los fixtures que permiten al equipo funcional diseñar las tablas HTML.
Arquitectura
El servidor Wiki de Fitnesse requiere un segundo componente para poder ejecutar las pruebas. Este componente, no viene incluido en el software fitnesse, y existen varias implementaciones para diferentes lenguajes de programación.
Aunque inicialmente, sólo se podía trabajar con FIT, posteriormente apareció una segunda alternativa, Slim, para establecer la conexión entre los wikis de Fitnesse y el software de pruebas que ejercita el Software Under Test (SUT) a través de los fixtures. Esta segunda alternativa es más ligera y es la que ha terminado imponiéndose, por lo que se recomienda el uso de implementaciones Slim en lugar de FIT.
Instalación
La instalación del servidor FitNesse es muy sencilla. Basta con descargar la última versión de la web oficial www.fitnesse.org y ejecutar el jar indicando con el parámetro –p el puerto en el que se quiere arrancar el servidor Wiki.
*Ejemplo con la versión 20140201:
java -jar fitnesse-standalone.jar -p 20003
La primera vez que se ejecuta genera un nuevo directorio FitNesseRoot dónde se almacenarán los distintos casos de test también llamados wikis.
Al acceder con un navegador web al puerto indicado en la máquina que se ha ejecutado el comando anterior, se presenta la página de inicio de Fitnesse, en la que se puede encontrar toda la documentación necesaria para aprender a utilizar la herramienta y familiarizarse con las wikis.
El siguiente paso sería descargar el servidor Fit o Slim seleccionado para poder empezar a implementar los Fixtures que se encargan de invocar al sistema bajo pruebas y realizar las validaciones pertinentes.
Diseño de Casos de Test, Fixtures, Wikis
Cada escenario, caso de test, o Wiki se puede editar directamente en el navegador Web, añadiendo a la URL del servidor fitneese (isceni:20003/ en el ejemplo anterior) el nombre del wiki, con una única restricción: el nombre debe contener al menos 2 mayúsculas no consecutivas.
El contenido editado en el Wiki, se almacena en el directorio FitNesseRoot con el mismo nombre que se le da al Wiki. Este directorio contendrá un fichero de texto content.txt con el contenido del Wiki que se muestra al pulsar el botón Edit y otro fichero properties.xml con las propiedades que se pueden editar desde el Botón Tools > Properties.
La sintaxis de edición de los wikis es bastante sencilla y permite generar links, incluir otros wikis, añadir test suites, definir diferentes formatos de texto, etc.
Para indicar que un Wiki es de tipo Slim se debe definir la siguiente variable:
!define TEST_SYSTEM {Slim}
La sintaxis de los fixtures es distinta en función del tipo de fixture, y no es el objeto de este documento, pero en la mayoría se define como una tabla con acciones y/o validaciones.
Esto permite a usuarios de negocio o perfiles funcionales definir pruebas con la lógica de negocio.
Los distintos tipos de Fixture que ofrece Slim son:
Decision Table | Implementa una tabla de decisión, con parámetros de entrada y salida. |
Query Table | Proporciona los resultados esperados de una consulta. |
Subset Query Table | Proporciona un subconjunto de los resultados esperados de una consulta. |
Ordered query Table | Proporciona los resultados de una consulta, en la que el orden es importante. |
Script Table | Permite realizar distintas acciones y validaciones. Es el Fixture que proporciona mayor funcionalidad. |
Table Table | Tabla genérica |
Import | Permite añadir un Nuevo path al classpath (Java) |
Comment | Este tipo de tabla permite añadir comentarios |
Scenario Table | Permite definer una tabla que puede ser invocada desde otras. |
Library Table | Permite instalar fixtures disponibles para todas las wikis (casos de test). |
Define Table Type | Permite definir el tipo de Tabla o Fixture de un fixture dado. |
Estos Fixtures deben tener una implementación en el port que se realice de SLIM para cada lenguaje de programación.
Los programadores que se encarguen de proporcionar fixtures deberán generar código en base a estas implementaciones (heredando de estas clases, en el caso de lenguajes Orientados a Objetos) para validar el funcionamiento del SUT mediante wikis que hagan uso de estos fixtures.
Ventajas
La principal ventaja de esta herramienta, si la comparamos con otras similares como Junit, es que permite que perfiles funcionales o de negocio puedan definir y modificar fácilmente casos de Test sin necesidad de tener conocimientos de programación.
Esta herramienta se presenta como colaborativa, ya que requerirá la interacción de los encargados de especificar los casos de test o wikis, con los programadores que se encarguen del mantenimiento de los fixtures.
Aunque el propio fitnesse gestiona las versiones de cada Wiki, se puede decidir gestionar el directorio FitNesseRoot en alguna herramienta de control de cambios como SVN. Para ello bastaría con gestionar los ficheros content.txt y properties.xml anteriormente mencionados.
Inconvenientes
Uno de los principales inconvenientes es que no todos los lenguajes de programación están soportados, si bien al tratarse de código libre, cualquier persona es libre de realizar la implementación y extender si lo necesita los tipos de fixtures disponibles.
Para obtener más información sobre la herramienta se puede consultar la web www.fitnesse.org
Más información:
Ignacio Hernández Fito– Test Lead Senior – Sogeti España
0 comments on “FitNesse”