Articulo de referencia

FitNesse

{{cite web|url=http://fitnesse.org/FitNesseDownload|title=FrontPage.Download|website=fitnesse.org|access-date=2023-07-06}} "},"programming language":{"wt":"[[Java (programming l...

FitNesse es un servidor web , una wiki y una herramienta de pruebas automatizadas para software . Se basa en el marco de pruebas integradas de Ward Cunningham y está diseñado para dar soporte a las pruebas de aceptación en lugar de las pruebas unitarias, ya que facilita una descripción detallada y legible del funcionamiento del sistema.

FitNesse permite a los usuarios de un sistema desarrollado introducir datos con un formato especial (accesible incluso para personas sin conocimientos de programación). Estos datos se interpretan y se generan pruebas automáticamente. El sistema ejecuta dichas pruebas y devuelve el resultado al usuario.

La ventaja de este enfoque es la rápida retroalimentación de los usuarios. El desarrollador del sistema que se va a probar debe proporcionar cierto soporte (clases llamadas "fixtures", que cumplan con ciertas convenciones).

FitNesse está escrito en Java (por Micah Martin con la ayuda de Robert C. Martin y otros [ 3 ] ). Inicialmente, el programa solo era compatible con Java, pero con el tiempo se han añadido versiones para otros lenguajes ( C++ , Python , Ruby , Delphi , C# , etc.).

Principios de FitNesse

FitNesse como método de prueba

FitNesse se diseñó originalmente como una interfaz altamente usable basada en el marco de trabajo Fit. Por lo tanto, su objetivo es brindar soporte a un estilo ágil de pruebas de caja negra, tanto de aceptación como de regresión. En este estilo de pruebas, los evaluadores funcionales de un proyecto de desarrollo de software colaboran con los desarrolladores para crear un conjunto de pruebas.

Las pruebas de FitNesse se basan en el concepto de prueba de caja negra, donde el sistema bajo prueba se considera una caja negra y se evalúa en función de las salidas generadas en respuesta a entradas predeterminadas. Un evaluador funcional se encarga de diseñar las pruebas desde una perspectiva funcional y expresarlas dentro de la herramienta FitNesse, mientras que el desarrollador de software se encarga de conectar la herramienta FitNesse al sistema bajo prueba para que FitNesse pueda ejecutar la prueba y comparar la salida real con la esperada.

La idea que subyace a este método de prueba, tal como se describe en Fit for Developing Software , es que la colaboración forzada entre evaluadores y desarrolladores mejorará la comprensión mutua del sistema y los requisitos, al obligar a ambos grupos a desarrollar un lenguaje común a medida que aprenden a comunicarse entre sí.

FitNesse como herramienta de prueba

En Fitnesse, las pruebas se describen como acoplamientos de entradas y salidas esperadas. Estos acoplamientos se expresan como variaciones de una tabla de decisión . La herramienta FitNesse admite varias de estas variaciones, desde tablas de decisión literales hasta tablas que ejecutan consultas o que expresan scripts de prueba (es decir, un orden literal de los pasos que deben seguirse para obtener un resultado). La forma más genérica es una tabla de formato libre que los diseñadores de pruebas pueden interpretar de cualquier manera. Sin embargo, todas las pruebas se expresan en forma de tabla.

FitNesse se centra por completo en la creación sencilla de pruebas, lo que permite a los evaluadores y desarrolladores concentrarse en crear pruebas de alta calidad en lugar de perderse en los aspectos técnicos de la ejecución de una prueba. Dada la forma en que funciona FitNesse, la creación sencilla de pruebas implica tres factores:

  • Crear tablas fácilmente.
  • Traducir fácilmente tablas en llamadas al sistema bajo prueba.
  • Permite una documentación de las pruebas sencilla y flexible.

Para cumplir con estos requisitos, FitNesse utiliza el mecanismo wiki. Los wikis permiten crear páginas HTML de forma rápida y sencilla, y simplifican especialmente la representación de tablas. Estas características hacen del lenguaje WikiWiki una opción ideal para la interfaz de usuario de FitNesse: por un lado, permite la creación de tablas con formato libre, y por otro, limita el contenido de dichas tablas a texto sencillo.

Esto significa que el lenguaje WikiWiki puede manejar cualquier formato de tabla que se requiera para una prueba específica y, al mismo tiempo, limita el contenido de dichas tablas a texto alfanumérico que se puede convertir fácilmente en una llamada a un programa informático. Finalmente, dado que cada prueba en FitNesse es una página wiki, es posible insertar cada tabla de prueba dentro del texto wiki; esto permite que un evaluador funcional incluya texto descriptivo con un diseño adecuado de forma rápida.

FitNesse como herramienta de software

FitNesse es una herramienta desarrollada en Java y distribuida como un único archivo JAR ejecutable . El ejecutable incluye un motor wiki, un servidor web integrado, un motor de pruebas y todos los recursos (imágenes, hojas de estilo , etc.) necesarios para crear un sitio web con el estilo propio de FitNesse.

FitNesse se centra en la facilidad de uso como herramienta de pruebas. Por ello, incluye todos los componentes necesarios: al ejecutarse, la herramienta inicia un servidor web integrado que permite exponer las páginas de prueba localmente o a través de Internet con la misma facilidad. El servidor integrado es muy ligero y puede ejecutarse tanto en un portátil como en un servidor completo.

Al iniciarse, la herramienta despliega su propio motor Wiki en su servidor integrado. Este motor Wiki también se centra en la simplicidad, lo que significa que no requiere una base de datos para funcionar ; simplemente crea una colección de páginas Wiki basadas en archivos que son interpretadas por el motor Wiki y servidas por el servidor web integrado.

La wiki predeterminada creada por la herramienta incluye la guía de usuario de FitNesse y algunos ejemplos. El repositorio de documentos predeterminado se crea con todo lo necesario para publicar una wiki predeterminada al estilo de FitNesse (es decir, todas las imágenes, hojas de estilo, archivos JavaScript , etc., se crean junto con el repositorio básico de páginas wiki).

El motor wiki es bastante básico, pero ofrece todas las funciones básicas comunes en este tipo de motores: un buscador , historial de revisiones por página y una vista general de archivos. También ofrece algunas operaciones de refactorización que permiten eliminar, mover y renombrar archivos. Además, el motor wiki ofrece algunas funciones específicas para pruebas, como botones estándar para ejecutarlas, formas de definir páginas de prueba individuales y conjuntos de pruebas, y una vista general histórica de los resultados para el análisis de tendencias. Finalmente, el motor ofrece algunas funciones de seguridad básicas para bloquear páginas y proteger el acceso a la wiki.

Ejecución de pruebas

Las pruebas dentro del sistema FitNesse constan de cuatro componentes por prueba:

  • La página wiki que expresa la prueba como una tabla de decisión.
  • Un motor de pruebas que interpreta la página wiki.
  • Un entorno de prueba , que es invocado por el motor de pruebas y que a su vez invoca el sistema que se está probando.
  • El sistema bajo prueba, que está siendo probado.

De estos componentes, el equipo de desarrollo de software produce dos: la página wiki y el fixture (por supuesto, también produce el sistema bajo prueba, pero desde el punto de vista de la prueba de caja negra, solo dos). La página wiki incluye algún tipo de tabla de decisiones que expresa una prueba. Por ejemplo, podría expresar pruebas para un componente que realiza una división (el ejemplo se basa en el que se da en el Ejemplo de dos minutos de FitNesse):

El vínculo entre el motor de pruebas genérico y el sistema bajo prueba se establece mediante un fragmento de código Java llamado fixture. En el caso de la tabla anterior, este código podría verse así:

public class DivisionComponentTest extends ColumnFixture { private double num ; private double denom ;public void setNumeratorValue ( double numerator ) { num = numerator ; }public void setDenominatorValue ( double denominator ) { denom = denominator ; }public double result ( ) { return SystemUnderTest.divide ( num , denom ) ; } }

La correspondencia entre la página wiki y el fixture es una conversión directa a formato camel case . Esta correspondencia se aplica a todos los encabezados de tabla y se utiliza para identificar el nombre de la clase del fixture, así como sus métodos. Un encabezado que termina en un signo de interrogación se interpreta como un valor que se leerá del fixture; los demás encabezados se consideran entradas para el fixture. Los métodos del fixture se invocan en el orden de las columnas de la tabla de decisiones, de izquierda a derecha.

Probando motores

El mapeo propiamente dicho, tal como se describe anteriormente (así como la invocación de los métodos de configuración), lo realiza un motor de pruebas. FitNesse admite dos de estos motores: el motor Fit y el motor SLIM.

Adaptar

Más que un motor de pruebas, Fit es un marco de pruebas en sí mismo. Combina funcionalidades para ejecutar pruebas, interpretar páginas wiki y generar páginas de salida. FitNesse se desarrolló originalmente en torno a Fit como interfaz de usuario, lo que inspiró el nombre de la herramienta.

Fit es un framework que combina muchas responsabilidades en las pruebas, en lugar de separarlas claramente. El desarrollador de software paga un precio por esto, ya que los fixtures para el motor Fit deben heredar de las clases base del framework Fit. Esto puede resultar inconveniente en Java, puesto que el framework limita la única oportunidad que tiene el desarrollador para heredar clases. Además, implica que un fixture, por su naturaleza, es una construcción compleja. Estas consideraciones han llevado al equipo de FitNesse a migrar al motor de pruebas SLIM en los últimos años.

DELGADO

SLIM (Simple List Invocation Method) es una alternativa a Fit. El motor SLIM es una implementación del protocolo Slim , archivado el 6 de diciembre de 2014 en Wayback Machine . En lugar de combinar todos los elementos de las pruebas basadas en wiki, el motor SLIM se concentra únicamente en invocar el fixture; se ejecuta como un servidor independiente al que el motor wiki de FitNesse invoca de forma remota. La interpretación de la página wiki y la generación de la página de resultados ahora forman parte del motor wiki.

El motor SLIM permite crear fixtures mucho más ligeros, que son simples POJO . Estos fixtures no necesitan extender ni usar ninguna clase del framework, lo que simplifica su diseño y permite al diseñador concentrarse en llamar al sistema bajo prueba de la manera correcta y más sencilla posible. Además, mantiene abierta la herencia, lo que permite a los desarrolladores de fixtures crear jerarquías si es necesario.

Véase también

Bibliografía

  • Apto para el desarrollo de software: Marco de trabajo para pruebas integradas por Rick Mugridge; Ward Cunningham ( ISBN) 978-0-321-26934-8) publicado por Prentice Hall en junio de 2005
  • Desarrollo .NET guiado por pruebas con FitNesse por Gojko Adzic ( ISBN) 978-0-9556836-0-2) publicado por Neuri Limited (28 de febrero de 2008)
  • Phillip A. Laplante: Ingeniería de requisitos para software y sistemas, Auerbach Publications, Boca Raton, FL, 2009, págs.  166–167, ISBN 978-1420064674

Referencias

  1. "FrontPage.Download" . fitnesse.org . Consultado el 6 de julio de 2023 .
  2. Martin, Robert C. "Encabezado de licencia" . Repositorio de código fuente de FitNesse . GitHub . Consultado el 4 de julio de 2012 .
  3. Robert, Martin. "Las tres reglas del TDD" . butunclebob.com . Consultado el 23 de agosto de 2019 .
  • Sitio web de la herramienta
  • Repositorio de código fuente
  • Idiomas compatibles con FitNesse
  • Grupo de discusión dedicado a FitNesse.
  • Presentación de FitNesse