FitNesse es un servidor web , una wiki y una herramienta de prueba automatizada para software . Se basa en Ward Cunningham 's Marco para la Prueba Integrada y está diseñado para soportar las pruebas de aceptación en lugar de la unidad de pruebas , ya que facilita la lectura de descripción detallada de la función del sistema.
Lanzamiento estable | v20201213 / 13 de diciembre de 2020 [1] |
---|---|
Repositorio | |
Escrito en | Java |
Sistema operativo | Multiplataforma |
Tipo | Automatización de pruebas |
Licencia | CPL [2] |
Sitio web | fitnesse |
FitNesse permite a los usuarios de un sistema desarrollado ingresar una entrada con formato especial (su formato es accesible para quienes no son programadores). Esta entrada se interpreta y las pruebas se crean automáticamente. Luego, el sistema ejecuta estas pruebas y la salida se devuelve al usuario. La ventaja de este enfoque es una respuesta muy rápida de los usuarios. El desarrollador del sistema que se va a probar debe proporcionar algún soporte (clases denominadas "accesorios", de conformidad con ciertas convenciones).
FitNesse está escrito en Java (por Micah Martin con la ayuda de Robert C. Martin y otros [3] ). El programa primero admitía solo Java, pero con el tiempo se han agregado versiones para varios otros lenguajes ( C ++ , Python , Ruby , Delphi , C # , etc.).
Principios de FitNesse
FitNesse como método de prueba
FitNesse se diseñó originalmente como una interfaz muy útil en torno al marco de Fit. Como tal, su intención es apoyar un estilo ágil de aceptación de pruebas de caja negra y pruebas de regresión. En este estilo de prueba, los probadores funcionales en un proyecto de desarrollo de software colaboran con los desarrolladores de software para desarrollar un conjunto de pruebas.
Las pruebas de FitNesse se basan en la notación de las pruebas de caja negra, en las que un sistema sometido a prueba se considera una caja negra y se prueba en términos de las salidas generadas 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 la salida real con la salida esperada.
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 probadores y desarrolladores mejorará la comprensión mutua del sistema y los requisitos al obligar a los dos grupos a desarrollar un lenguaje común a medida que 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 decisión literal hasta tablas que ejecutan consultas y tablas que expresan scripts de prueba (es decir, un orden literal de los pasos que se deben seguir para llegar a un resultado). La forma más genérica es una tabla de forma totalmente libre que se puede interpretar de la forma que prefieran los diseñadores de pruebas. Sin embargo, todas las pruebas se expresan en forma de una especie de tabla.
FitNesse se centra completamente en crear pruebas fácilmente, lo que permite a los probadores y desarrolladores centrarse en crear pruebas de alta calidad en lugar de perderse en la mecánica de ejecutar una prueba. Dada la forma en que funciona FitNesse, la creación de pruebas implica fácilmente tres factores:
- Creando tablas fácilmente.
- Traducir fácilmente tablas en llamadas al sistema bajo prueba.
- Permitiendo facilidad y flexibilidad en la documentación de pruebas.
Para cumplir con estos requisitos, FitNesse aprovecha el mecanismo wiki. Las wikis clásicamente permiten la creación fácil y rápida de páginas HTML y simplifican particularmente la expresión de tablas. Estas cualidades hacen que el lenguaje WikiWiki básico sea una opción ideal para una "interfaz de usuario" para FitNesse: por un lado, permite la expresión simple de tablas de forma muy libre, por otro lado, limita el contenido de esas tablas a algo bastante simple. texto. Esto significa que el lenguaje WikiWiki puede manejar cualquier forma 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 una pieza de 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 rápidamente texto descriptivo con un diseño razonable.
FitNesse como herramienta de software
FitNesse es una herramienta desarrollada en Java y enviada 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 mucho en la facilidad de uso como herramienta de prueba. Como tal, se envía con todos los componentes necesarios a bordo: una vez ejecutada, la herramienta lanza un servidor web integrado que permite que las páginas de prueba se expongan localmente o en Internet con la misma facilidad. El servidor integrado es bastante liviano y se puede ejecutar desde una computadora portátil o desde una máquina de servidor completa.
Al iniciarse, la herramienta despliega su propio motor Wiki en su servidor integrado. Este motor Wiki se centra de manera similar en la simplicidad, lo que significa que no requiere una base de datos de respaldo para ejecutarse; simplemente crea una colección basada en archivos de páginas Wiki 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 del usuario de FitNesse y algunos ejemplos. El repositorio de documentos predeterminado se crea completo con todo lo necesario para publicar un wiki predeterminado en el estilo FitNesse (es decir, todas las imágenes, hojas de estilo, archivos JavaScript, etc. se crean junto con el repositorio de páginas wiki básico).
El motor wiki es bastante básico, pero ofrece todas las facilidades básicas comunes entre los motores wiki: un motor de búsqueda , historial de revisiones por página y una descripción general del archivo. 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 de prueba, 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 instalaciones de seguridad menores para bloquear páginas y asegurar el acceso a la wiki.
Ejecución de pruebas
Las pruebas dentro del sistema FitNesse implican cuatro componentes por prueba:
- La página wiki que expresa la prueba como una tabla de decisiones.
- Un motor de pruebas, que interpreta la página wiki.
- Un accesorio de prueba , que es invocado por el motor de prueba y, a su vez, invoca el sistema bajo prueba.
- El sistema bajo prueba, que se está probando.
De estos componentes, el equipo de desarrollo de software produce dos: la página wiki y el accesorio (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 decisión 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):
Valor del numerador | Valor denominador | ¿Resultado? |
---|---|---|
10 | 2 | 5,0 |
10 | 5 | 2.0 |
5 | 2 | 2.5 |
El vínculo entre el motor de prueba genérico y el sistema bajo prueba se realiza mediante un fragmento de código Java llamado accesorio. En el caso de la tabla anterior, este código podría verse así:
público de clase DivisionComponentTest extiende ColumnFixture { privada doble num ; doble denominación privada ; public void setNumeratorValue ( numerador doble ) { num = numerator ; } public void setDenominatorValue ( doble denominador ) { denom = denominador ; } public double result () { return SystemUnderTest . dividir ( num , denom ); } }
El mapeo entre la página wiki y el accesorio es un mapeo sencillo de casos de conversión a camello . Este mapeo se aplica a todos los encabezados de la tabla y se usa para identificar el nombre de la clase de dispositivo, así como los métodos del dispositivo. Un encabezado que termina en un signo de interrogación se interpreta como un valor que se leerá del dispositivo, otros encabezados se consideran entradas al dispositivo. Los métodos del accesorio se llaman en el orden de las columnas de la tabla de decisiones, de izquierda a derecha.
Prueba de motores
El mapeo real como se describió anteriormente (así como la invocación de métodos de fijación) se realiza mediante un motor de prueba. FitNesse admite dos de estos motores: el motor Fit y el motor SLIM.
Encajar
Más que un motor, Fit es un marco de pruebas en sí mismo. Combina funcionalidad para invocar pruebas, interpretar páginas wiki y generar páginas de salida. FitNesse se creó originalmente alrededor de Fit como una interfaz de usuario, que inspiró el nombre de la herramienta.
Fit es un marco que combina muchas responsabilidades en las pruebas en lugar de separarlas de forma ordenada. 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 ser un inconveniente en Java, ya que significa que el marco reclama la única oportunidad de un desarrollador de heredar clases. También significa que un accesorio, por su naturaleza, es una construcción de peso pesado. Estas consideraciones han llevado al equipo de FitNesse en los últimos años a pasar al motor de pruebas SLIM.
DELGADO
SLIM (Método de invocación de lista simple) es una alternativa a Fit. El motor SLIM es una implementación del Protocolo Slim . En lugar de combinar todos los elementos de las pruebas basadas en wiki, el motor SLIM se concentra solo en invocar el accesorio; se ejecuta como un servidor separado que es invocado de forma remota por el motor wiki de FitNesse. La interpretación de la página wiki y la generación de la página de resultados ahora es parte del motor wiki.
El motor SLIM permite accesorios mucho más livianos que son simples POJO . No se requiere que estos dispositivos amplíen o utilicen 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 adecuada 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.
Ver también
- Desarrollo impulsado por pruebas de aceptación
- Especificación por ejemplo
- Prueba de aceptación (también conocida como prueba funcional)
- Prueba de rendimiento del software
- Pruebas de regresión
- Watir
- StoryTestIQ (STIQ) una mezcla de Selenium y Fitness wiki (tenga en cuenta: Wiki ya no existe (eliminado en 2009), se dejó aquí solo como referencia)
Libros
- Apto para el desarrollo de software: Marco para pruebas integradas por Rick Mugridge; Ward Cunningham ( ISBN 978-0-321-26934-8 ) publicado por Prentice Hall en junio de 2005
- Desarrollo de .NET basado en pruebas con FitNesse de 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, Publicaciones de Auerbach, Boca Raton, FL, 2009, págs. 166–167, ISBN 978-1420064674
Referencias
- ^ "FrontPage.FitNesseDevelopment.FitNesseRelease20201213" . fitnesse.org . Consultado el 6 de abril de 2021 .
- ^ Martin, Robert C. "Encabezado de licencia" . Repositorio de fuentes de FitNesse . GitHub . Consultado el 4 de julio de 2012 .
- ^ Robert, Martin. "Las tres reglas de TDD" . butunclebob.com . Consultado el 23 de agosto de 2019 .
enlaces externos
- Sitio web de la herramienta
- Repositorio de origen
- Idiomas admitidos por FitNesse
- Grupo de discusión dedicado a FitNesse
- Presentación FitNesse