stringtranslate.com

FitNesse

FitNesse es un servidor web , una wiki y una herramienta de prueba automatizada para software . Se basa en el marco de trabajo de Ward Cunningham para pruebas integradas y está diseñado para respaldar 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 (su formato es accesible para personas que no son programadores). Estos datos se interpretan y se crean automáticamente pruebas. El sistema ejecuta estas pruebas y devuelve el resultado al usuario.

La ventaja de este enfoque es que la respuesta de los usuarios es muy rápida. El desarrollador del sistema que se va a probar debe proporcionar algún tipo de apoyo (clases denominadas "fixtures", que se ajusten a ciertas convenciones).

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

Principios de FitNesse

FitNesse como método de prueba

FitNesse fue diseñado originalmente como una interfaz muy fácil de usar en torno al marco Fit. Como tal, su intención es respaldar un estilo ágil de pruebas de caja negra, pruebas de aceptación y pruebas de regresión. En este estilo de pruebas, los evaluadores funcionales de un proyecto de desarrollo de software colaboran con los desarrolladores de software para desarrollar un conjunto de pruebas.

Las pruebas FitNesse se basan en la notación de pruebas de caja negra, en la que un sistema bajo prueba se considera una caja negra y se prueba en términos de los resultados generados en respuesta a entradas predeterminadas. Un probador funcional es responsable de diseñar las pruebas en un sentido funcional y expresarlas dentro de la herramienta FitNesse, mientras que el desarrollador de software es responsable de conectar la herramienta FitNesse al sistema bajo prueba para que FitNesse pueda ejecutar la prueba y comparar el resultado real con el esperado.

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

FitNesse como herramienta de prueba

Las pruebas se describen en Fitnesse como acoplamientos de entradas y salidas esperadas. Estos acoplamientos son variaciones expresadas de una tabla de decisiones . La herramienta FitNesse admite varias de estas variaciones, que van desde tablas de decisiones literales hasta tablas que ejecutan consultas y tablas que expresan secuencias de comandos de prueba (es decir, un orden literal de pasos que se deben seguir para llegar a un resultado). La forma más genérica es una tabla de formato totalmente libre que se puede interpretar de cualquier manera que los diseñadores de pruebas deseen. Sin embargo, todas las pruebas se expresan en forma de algún tipo de tabla.

FitNesse se centra exclusivamente en la creación sencilla de pruebas, lo que permite a los evaluadores y desarrolladores centrarse en la creación de pruebas de alta calidad en lugar de perderse en la mecánica de la ejecución de una prueba. Dada la forma en que funciona FitNesse, la creación sencilla de pruebas implica tres factores:

  1. Creando tablas fácilmente.
  2. Traducir fácilmente tablas en llamadas al sistema bajo prueba.
  3. Permitiendo facilidad y flexibilidad en la documentación de pruebas.

Para cumplir con estos requisitos, FitNesse aprovecha el mecanismo wiki. Los wikis permiten crear páginas HTML de forma fácil y rápida y simplifican especialmente la expresión de tablas. Estas cualidades hacen que el lenguaje básico WikiWiki sea una opción ideal para una "interfaz de usuario" para FitNesse: por un lado, permite la expresión sencilla de tablas de formato muy libre, y por otro lado, limita el contenido de esas tablas a un texto bastante simple.

Esto significa que el lenguaje WikiWiki puede manejar cualquier formato de tabla que se requiera para una prueba en particular y, al mismo tiempo, limita el contenido de esas tablas a texto alfanumérico que se puede mapear fácilmente en una llamada a un software. Finalmente, dado que cada prueba en FitNesse es una página wiki, es posible incrustar cada tabla de prueba dentro del texto wiki; esto permite que un evaluador funcional incluya texto descriptivo con un diseño razonable rápidamente.

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 prueba. Por ello, se entrega con todos los componentes necesarios integrados: al ejecutarse, la herramienta lanza un servidor web integrado que permite exponer las páginas de prueba de forma local o a través de Internet con la misma facilidad. El servidor integrado es bastante ligero y se puede ejecutar tanto desde una computadora portátil como desde un servidor completo.

Al iniciarse, la herramienta implementa 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 de respaldo para ejecutarse; simplemente crea una colección de páginas Wiki basada 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 completo con todo lo necesario para publicar una wiki predeterminada en el estilo de FitNesse (es decir, todas las imágenes, hojas de estilo, archivos JavaScript, etc. se crean junto con el repositorio de páginas wiki básicas).

El motor wiki es bastante básico, pero ofrece todas las funciones básicas comunes entre los motores wiki: un motor de búsqueda , historial de revisiones por página y una descripción general de los 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 las pruebas, como botones estándar para ejecutar pruebas, formas de definir páginas de prueba individuales y conjuntos de pruebas y una descripción general histórica de los resultados de las pruebas para el análisis de tendencias. Finalmente, el motor ofrece algunas funciones de seguridad menores para bloquear páginas y asegurar el acceso al wiki.

Ejecución de pruebas

Las pruebas dentro del sistema FitNesse implican cuatro componentes por prueba:

De estos componentes, el equipo de desarrollo de software produce dos: la página wiki y el dispositivo (por supuesto, también produce el sistema que se está probando, 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 proporciona en el Ejemplo de dos minutos de FitNesse):

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

clase pública DivisionComponentTest extiende ColumnFixture { privada doble num ; privada doble denom ;            public void setNumeratorValue ( double numerador ) { num = numerador ; }          public void setDenominatorValue ( double denominador ) { denom = denominador ; }          público doble resultado () { devolver SystemUnderTest . divide ( num , denom ); } }        

La asignación entre la página wiki y el elemento fijo es una asignación sencilla de conversión a Camel Case . Esta asignación se aplica a todos los encabezados de tabla y se utiliza para identificar el nombre de la clase de elemento fijo, así como los métodos del elemento fijo. Un encabezado que termina en un signo de interrogación se interpreta como un valor que se debe leer del elemento fijo, mientras que otros encabezados se consideran entradas del elemento fijo. Los métodos del elemento fijo se llaman en el orden de las columnas de la tabla de decisiones, de izquierda a derecha.

Prueba de motores

El mapeo real descrito anteriormente (así como la invocación de los métodos de configuración) se realiza mediante un motor de prueba. FitNesse admite dos de estos motores: el motor Fit y el motor SLIM.

Adaptar

Fit es más que un motor, un marco de pruebas en sí mismo. Combina funciones para invocar pruebas, interpretar páginas wiki y generar páginas de resultados. FitNesse se creó originalmente en torno a Fit como interfaz de usuario, lo que inspiró el nombre de la herramienta.

Fit es un marco que combina muchas responsabilidades en las pruebas en lugar de separarlas de forma clara. El desarrollador de software paga un precio por este hecho, ya que los accesorios para el motor Fit deben heredar de las clases base del marco Fit. Esto puede resultar un inconveniente en Java, ya que significa que el marco reclama la única oportunidad del desarrollador para heredar clases. También significa que un accesorio, por su naturaleza, es una construcción pesada. Estas consideraciones han impulsado al equipo FitNesse en los últimos años a pasarse al motor de pruebas SLIM.

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 elemento de prueba; se ejecuta como un servidor independiente que es invocado de forma remota por el motor wiki FitNesse. La interpretación de la página wiki y la generación de la página de resultados ahora son parte del motor wiki.

El motor SLIM permite crear dispositivos mucho más livianos que son POJO simples . Estos dispositivos no necesitan extender ni usar ninguna clase de marco, lo que simplifica su diseño y permite que el diseñador de dispositivos se concentre en llamar al sistema bajo prueba de manera correcta y de la manera más simple posible. También mantiene abierta la ruta de herencia, lo que permite a los desarrolladores de dispositivos crear jerarquías de dispositivos si es necesario.

Véase también

Bibliografía

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 de TDD". butunclebob.com . Consultado el 23 de agosto de 2019 .

Enlaces externos