Presentación Fitnesse

Preview:

DESCRIPTION

Presentación sobre FITNesse brindada a personal del CES (Centro de Ensayos de Software) el 11/05/07-19horas-Salón de Posgrados- Instituto de Computación, Facultad de Ingeniería UDELAR, Montevideo, Uruguay,

Citation preview

FITNesseFITNesse

Alejandro Araújo

Una herramienta para Una herramienta para

-Pruebas de aceptación -Pruebas de aceptación ejecutablesejecutables

-Mejorar la colaboración en -Mejorar la colaboración en el desarrollo de software.el desarrollo de software.

FITNesseFITNesseAgendaAgenda

• FITFIT• PresentaciónPresentación• CaracterísticasCaracterísticas• Implementaciones Implementaciones

• FiTNesse FiTNesse • Presentación Presentación • DemostraciónDemostración• CaracterísticasCaracterísticas• ExtensionesExtensiones

• ValoraciónValoración

• FIT :FIT : Marco de trabajo para pruebas integradas Marco de trabajo para pruebas integradas de aceptaciónde aceptación

• Creador: Ward CunninghamCreador: Ward Cunningham• Sitio: fit.c2.com Sitio: fit.c2.com • Libro: FIT for developing softwareLibro: FIT for developing software

“FIT es una herramienta para mejorar la colaboración en el desarrollo de software, desde etapas tempranas, entre clientes, programadores y testers. Permite que todos los actores conozcan que debería hacer el software y lo que hace; comparando automáticamente los resultados actuales con los esperados por los clientes.” (W.Cunningham, http://fit.c2.com/?WelcomeVisitors)

FIT: Presentación

• Lee tablas que contienen información para la prueba y los resultados esperados. (Dirigido por datos y palabras claves).

• Cada tabla es interpretada por una clase (“Fixture”)• Compara el resultado de correr el programa bajo prueba

con los ejemplos suministrados en las tablas.

(NC State University)

Características

Características

• Fixtures básicas originalesFixtures básicas originales • ColumnFixture• ActionFixture• RowFixture

• FitLibrary FitLibrary (Extensión creada por R.Mudridge)(Extensión creada por R.Mudridge)

• DoFixture• Otras fixtures (p/ej SetupFixture)

• Programado en Java con FitServers en varios lenguajes

• Reflection

““Toda implementación de Toda implementación de FIT debe instrumentar FIT debe instrumentar las tres fixtures básicas”las tres fixtures básicas”

(J.Shoares)(J.Shoares)

Características

• ColumnFixtureColumnFixtureSi el total de la compra es mayor que $ 1000 se Si el total de la compra es mayor que $ 1000 se realizará un 5% de descuento.realizará un 5% de descuento.

Caso de prueba

Clase

Método a invoca

r

Variable

Características – Fixtures básicas – Fixtures básicas

Resultado de la prueba“Simple test data pattern”

• ColumnFixtureColumnFixture

Caso de prueba

Características – Fixtures básicas – Fixtures básicas

SUT

Método a invoca

r

Variable

Clase

(V.Lagsma)

• ActionFixtureActionFixtureUn usuario de chat se conecta; crea una sala e ingresa. Un usuario de chat se conecta; crea una sala e ingresa. Otro usuario se conecta e ingresa a la misma sala. Se debe Otro usuario se conecta e ingresa a la misma sala. Se debe comprobar que la sala tiene dos ocupantes.comprobar que la sala tiene dos ocupantes.

Caso de prueba Resultado de la prueba

Características – Fixtures básicas – Fixtures básicas

Fixture

“Actor” = Clase a instanciar

Métodos

“Process-Sequence Pattern”

• ActionFixtureActionFixture

Características – Fixtures básicasCaracterísticas – Fixtures básicas

(V.Lagsma)

• RowFixtureRowFixtureLos ocupantes de la sala de chat “Lotr” son los usuarios Anna y Luke

Caso de prueba

Resultado de la prueba

Características – Fixtures básicas

• DoFixtureDoFixtureUn usuario se conecta al servidor, crea una sala de chat y entra a dicha sala. Se verifica que sea el único ocupante.El usuario se desconecta. Se verifica que la sala está vacía

Caso de prueba

Resultado de la prueba

Características – FitLibrary

• DoFixtureDoFixtureBuscará por reflection los nombres de los métodos que obtiene concatenando los valores en las columnas impares. Pasa como argumentos los valores de las columnas pares.

Caso de prueba

userCreatesRoom(anna, lotr)

userInRoom(lotr)

Características – FitLibrary

Implementaciones de FITImplementaciones de FIT

• FITNesse

• AutAt Eclipse• FitRunner Eclipse• ¿WinFitRunner ?• ZiBreve (¿futuro?)

. . .. . .

FITNesseFITNesseAgendaAgenda

• FITFIT• PresentaciónPresentación• CaracterísticasCaracterísticas• Implementaciones Implementaciones

• FiTNesseFiTNesse • Presentación Presentación • DemostraciónDemostración• CaracterísticasCaracterísticas• ExtensionesExtensiones

• ValoraciónValoración

• Wiki + FITWiki + FIT• Creadores: M.Martin; R.Martin• Sitio: www.fitnesse.orgwww.fitnesse.org• Arquitectura:

FITNesse

(http://www.cs.aau.dk/~ivan/SOE2007/MM6.pdf)

Demostración FITNesse

Agenda:Agenda:

• Ejecución de fixtures básicas en FitNesseEjecución de fixtures básicas en FitNesse• ColumnFixture• ActionFixture• RowFixture

• Ejecución de conjunto de pruebas en FitNesseEjecución de conjunto de pruebas en FitNesse• Ejecución en Eclipse con plugin FitNesseEjecución en Eclipse con plugin FitNesse

Duración: Duración: 10 minutos.10 minutos.

• Wiki de FITNesseWiki de FITNesse

• Creación y edición simple de páginasCreación y edición simple de páginas

• Jerarquía (SubWiki)Jerarquía (SubWiki) • ParentPage.SubPage

• Las páginas contienen, entre otros:Las páginas contienen, entre otros:• Pruebas en tablas html• Conjuntos de pruebas• Marcadores

• !Path (ClassPath) • !define

• “Condimentos”

Características

• Wiki de FITNesseWiki de FITNesse

• Páginas de cabeceras y pie; setup y Páginas de cabeceras y pie; setup y teardown teardown

• Propiedades por páginaPropiedades por página (Test, Suite, Seguridad, Editable,

…)• Seguridad (read, write, test)Seguridad (read, write, test)• SímbolosSímbolos (notación =Sim? y Sim=)• VersionadoVersionado (simple)

CaracterísticasCaracterísticas

• Wiki de FITNesseWiki de FITNesse

• Importación y vínculos simbólicosImportación y vínculos simbólicos

Características

FitNesse Central

FitNesse Local

FitNesse Local

FitNesse Local

Integración y extensiones

• Eclipse• ConFIT (bandxi ) )• FitClipseFitClipse

Integración y extensiones

• Selenium

Ej. P.Vlagsma

Integración y extensiones

• Selenium

STIQ (StoryTestIq)

Integración y extensiones

|!-fitnesse.SeleniumRunner-!|

|Set server to|localhost|and port to|4444|and browser to|*firefox|and domain to|http://www.google.com|

Selenium wrapper

public class SeleniumRunner extends DoFixture {Selenium seleniumInstance = null;public SeleniumRunner() {}

public boolean SetServerToAndPortToAndBrowserToAndDomainTo (String server, int port, String browser, String domain) {

seleniumInstance = new DefaultSelenium(server, port, browser, domain);

seleniumInstance.start();return true;}

Cory Foy http://www.cornetdesign.com/2006/09/fitnesse-selenium-wrapper.html

Integración y extensiones

public boolean TheUserClosesTheBrowser() {seleniumInstance.close();return true;

}public boolean TheUserNavigatesToTheURL(String url) {

seleniumInstance.open(url);return true;

}

|The user navigates to the URL|http://www.google.com||The page has the title|Google||The page has an element named|q||The page has an element named|btnG||The user Types|Cory Foy|in the field named|q||The user clicks on the button named|btnG||The user closes the browser|

Selenium wrapper

Integración y extensiones

• Abbot• Cobertura• DbFit• WebFixture• Patang• Spring• Watir-Watij• . . .

• OtrasOtras

FITNesseFITNesseAgendaAgenda

• FITFIT• PresentaciónPresentación• CaracterísticasCaracterísticas• Implementaciones Implementaciones

• FiTNesse FiTNesse • Presentación Presentación • DemostraciónDemostración• CaracterísticasCaracterísticas• ExtensionesExtensiones

• Valoración Valoración

Ventajas Ventajas • Consolida las pruebas en un wiki• EATDD (Ejemplifica – Documenta)• Código libre• Tabular • Código en lenguaje de la aplicación• Dirigido por palabras claves y datos• Útil también en prueba unitaria

• Inicializar y restaurar• Combinatoria

• No se detiene ante el primer error• No es necesaria programación para escribir y ejecutar pruebas

Desventajas - ProblemasDesventajas - Problemas • Consolida las pruebas en un wiki(Falta de integración con ambiente de desarrollo)

• Programación en lenguaje de la aplicación• Conocimiento interno de la aplicación• Esperar a que finalicen todas las pruebas• Curva de aprendizaje• Gran cantidad de tablas y fixtures • Reelaboración (Refactoring) • Integración continua • Versionado muy pobre• ¿Gestión del proceso?

(Eclipse)

(¿ZiBreve?)(CruiseControl)(SubVersion)(VersionOne-FItClipse)

Recomendaciones (?)Recomendaciones (?)• Incluir los requerimientos de fixtures al Incluir los requerimientos de fixtures al

planificar cada iteraciónplanificar cada iteración• Protocolo para utilización en equipoProtocolo para utilización en equipo• Documentar las pruebas en las páginas wikiDocumentar las pruebas en las páginas wiki• Instrumentar el versionadoInstrumentar el versionado• Definir nomenclatura y “gramática”Definir nomenclatura y “gramática”• Evitar tablas de acciones extensas Evitar tablas de acciones extensas • Sustituir ActionFixture por DoFixtureSustituir ActionFixture por DoFixture• Integrar con otras herramientasIntegrar con otras herramientas• Integrar con ambiente de desarrolloIntegrar con ambiente de desarrollo• Organizar pruebas en conjuntos (suites)Organizar pruebas en conjuntos (suites)• Patrones (BOCD)Patrones (BOCD)

BibliografíaBibliografía• Adzic, Gojko “Getting Fit with Net” www.gojko.net/fitnesse/fitnesse.pdf• Adzic, GojKo “DbFit” http://gojko.net/fitnesse/dbfit/reference/• Aquino, Mario FIT, http://www.ociweb.com/jnb/jnbDec2005.html• BandXI International, “ConFit", http://www.bandxi.com/fitnesse/index.html• Cory Foy http://www.cornetdesign.com/2006/09/fitnesse-selenium-wrapper.html• Cunninghan W, "Welcome Visitors. FIT", http://fit.c2.com/• Eclipse http://www.eclipse.org• FITClipse http://ebe.cpsc.ucalgary.ca/ebe/Wiki.jsp?page=FitClipse• Glover A "Resolve to get FIT Try FIT and JUnit for a requirements testing workout!"

http://www-128.ibm.com/developerworks/java/library/j-cq02286/• Jain N "Running FitNesse Inside the Container", http://www.jroller.com/page/njain?

entry=running_fitnesse_inside_the_container• http://tech.groups.yahoo.com/group/fitnesse/• Kare S, Marius T "AutAT:tool for automatic acceptance testing", tesis

maestría,BUCS, Dep.of Computer Science, Norwegian Univ.Science and Technology • Miller, J "Create a Testing DSL with FitNesse and Selenium",

http://codebetter.com/blogs/jeremy.miller/archive/2006/07/15/147400.aspx• Mugridge R, Cunningham W, "Fit for Developing Software: Framework For Integrated

Tests", Prentice Hall, 2005• Selenium http://www.openqa.org/selenium/• STIQ • Vettrivel V "FIT and Eclipse: Testing with the Extended FIT Eclipse plug-in",

http://www-128.ibm.com/developerworks/aix/library/au-fiteclipse/• Vlagsma P. "FitBook Examples ported to .NET 2.0",

http://www.vlagsma.com/fitnesse/Default.aspx• Welcome to FitNesse, http://www.fitnesse.org• Rick Mugridge http://www.zibreve.org

Story Test Iq http://storytestiq.sourceforge.net/

FITNesseFITNesse

¿Preguntas?¿Preguntas?

¡Muchas gracias!¡Muchas gracias!

Recommended