32
FITNesse FITNesse Alejandro Araújo Una herramienta para Una herramienta para -Pruebas de aceptación -Pruebas de aceptación ejecutables ejecutables -Mejorar la colaboración en el -Mejorar la colaboración en el desarrollo de software. desarrollo de software.

Presentación Fitnesse

Embed Size (px)

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

Page 1: Presentación Fitnesse

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.

Page 2: Presentación Fitnesse

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

Page 3: Presentación Fitnesse

• 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

Page 4: Presentación Fitnesse

• 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

Page 5: Presentación Fitnesse

Características

Page 6: Presentación Fitnesse

• 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

Page 7: Presentación Fitnesse

• 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”

Page 8: Presentación Fitnesse

• ColumnFixtureColumnFixture

Caso de prueba

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

SUT

Método a invoca

r

Variable

Clase

(V.Lagsma)

Page 9: Presentación Fitnesse

• 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”

Page 10: Presentación Fitnesse

• ActionFixtureActionFixture

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

(V.Lagsma)

Page 11: Presentación Fitnesse

• 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

Page 12: Presentación Fitnesse

• 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

Page 13: Presentación Fitnesse

• 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

Page 14: Presentación Fitnesse

Implementaciones de FITImplementaciones de FIT

• FITNesse

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

. . .. . .

Page 15: Presentación Fitnesse

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

Page 16: Presentación Fitnesse

• 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)

Page 17: Presentación Fitnesse

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.

Page 18: Presentación Fitnesse

• 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

Page 19: Presentación Fitnesse

• 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

Page 20: Presentación Fitnesse

• 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

Page 21: Presentación Fitnesse

Integración y extensiones

• Eclipse• ConFIT (bandxi ) )• FitClipseFitClipse

Page 22: Presentación Fitnesse

Integración y extensiones

• Selenium

Ej. P.Vlagsma

Page 23: Presentación Fitnesse

Integración y extensiones

• Selenium

STIQ (StoryTestIq)

Page 24: Presentación Fitnesse

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

Page 25: Presentación Fitnesse

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

Page 26: Presentación Fitnesse

Integración y extensiones

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

• OtrasOtras

Page 27: Presentación Fitnesse

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

Page 28: Presentación Fitnesse

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

Page 29: Presentación Fitnesse

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)

Page 30: Presentación Fitnesse

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)

Page 31: Presentación Fitnesse

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/

Page 32: Presentación Fitnesse

FITNesseFITNesse

¿Preguntas?¿Preguntas?

¡Muchas gracias!¡Muchas gracias!