presentación fitnesse
Post on 28-May-2015
1.294 Views
Preview:
DESCRIPTION
TRANSCRIPT
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!
top related