• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Symfony parte 17
 

Symfony parte 17

on

  • 829 views

Pruebas Unitarias y Pruebas Funcionales

Pruebas Unitarias y Pruebas Funcionales

Statistics

Views

Total Views
829
Views on SlideShare
823
Embed Views
6

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 6

http://gestion.poodu.cl 6

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Symfony parte 17 Symfony parte 17 Presentation Transcript

    • Symfony Parte 17 Pruebas Unitarias - Funcionales Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
    • Pruebas
Unitarias
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Unitarias
y
Funcionales:   Se utiliza en la metodología TDD o desarrollo basado en pruebas (del inglés test-driven development) . Que considera la creación de las pruebas antes del desarrollo del código de la aplicación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas: Los archivos que contienen las pruebas son php normales cuyo nombre termina en Test.php. Se encuentran ubicados en el directorio test/unit/ y test/functional del proyecto. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Recordando
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Unitarias: Las primeras dos líneas de los archivos de prueba Unitaria son: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Si no se cumpliera con el total de prueba especificado en el primera parámetro de la llamada lime_test, ejemplo: new lime_test(16, new lime_output_color()); El aviso desplegado por el sistema sería parecido a lo sgte: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Métodos
disponibles:
 Después de instanciar la clase lime_test tengo a disposición los siguientes métodos. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo
strtolowerTest: Pruebas unitarias para la función strtolower(). Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejecución
en
línea
de
comandos Ejecutamos nuestra prueba unitaria Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • miFuncionalTest
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Dis?ntas
formas
de
Ejecución Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Carga
automá?ca
de
Clases:   Hemos visto hasta ahora que los script php para pruebas unitarias incluye al comienzo llamadas a archivos con include o require, esto se debe porque la carga automática de clases no funciona. Si es necesario incluir una gran cantidad de archivos alojados dentro de un directorio, quizás desees utilizar la clase sfSimpleAutoload en vez de incluirlos uno por uno. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Al
comienzo
del
archivo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Unitarias
de
las
 clases
de
Propel
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Unitarias
de
las
clases
de
Propel:   Dado que las clases Propel dependen de muchas clases más, es necesario la carga automática de clases, la misma que utiliza nuestro proyecto symfony. Además, para este tipo de pruebas es necesario una conexión válida a la base de datos e incluir algunos datos de prueba a ella (archivos data/fixtures) Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pasos
necesarios
para
Pruebas
Unitarias
Propel: •  Obtener la carga automática, inicializando objeto de configuración. •  Obtener la conexión a la base de datos, inicializa la clase sfDatabaseManager. •  Cargar datos de prueba con la clase sfPropelData. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo
de
lo
anterior: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Pruebas
Funcionales:   Las pruebas Funcionales son las encargadas de analizar procesos, a diferencia de las pruebas unitarias que analizan métodos o funciones, o sea funcionamientos puntuales.  Es la mejor forma de probar tú aplicación de extremo a extremo, desde la petición enviada por un navegador hasta la respuesta enviada por el servidor. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    •   Las pruebas Funcionales prueban todas las capas de la aplicación: el sistema de enrutamiento, el modelo, las acciones y las plantillas.   Las pruebas Funcionales es muy similar a lo que un desarrollador hace normalmente cada vez que añade o modifica una acción. Prueba la nueva funcionalidad o la modificación en el navegador para comprobar que todo funciona, pulsándo enlaces y botones de los elementos de una página; simulando un caso de uso. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Clase
sfBrowser
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Clase
sfBrowser:
   En Symfony, las pruebas funcionales se realizan mediante un navegador especial creado con la clase sfBrowser. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Métodos
sfBrowser: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Métodos
sfBrowser
para
configurar
 comportamiento
Navegador: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Clase
sfTestFunc:onal
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Clase
sfTestFunc?onal:
   Es una clase que incorpora métodos de pruebas, ya que sfBrowser solamente nos permite navegar, ella es la responsable de analizar las peticiones y resultados de esa navegación.  Esta clase utiliza como argumento de su constructor un objeto tipo sfBrowser y delega las pruebas en objetos de tipo tester. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Interfaz
Fluida:
   Cada método de sfBrowser y sfTestFunctional devuelven un objeto $this para permitir lo que se conoce como interfaz fluida. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Contexto
de
bloque
de
tester:
   Las pruebas se ejecutan dentro de un contexto de bloque de tester. Los contextos de bloque de testers siempre empiezan por: Y terminar con: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo
contexto
bloque
tester: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Tester
request: Tester
response: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejecutando
pruebas
 Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejecutando
pruebas
Funcionales: Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Datos
de
Prueba
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Datos
de
Prueba:
   Cargar datos de prueba, si así se requiere, es más sencillo que hacerlo en las pruebas unitarias, ya que en este caso la base de datos ya ha sido inicializada por el script de inicialización de la prueba. Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Conjunto
de
Pruebas
 Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo,
ejecutando
Conjunto
pruebas
 Funcionales
de
una
aplicación:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Conjunto
de
Pruebas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Ejemplo,
ejecutando
todas
las
Pruebas:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Revisar
Ejemplo
 h@p://librosweb.es/jobeet_1_3/capitulo9/ aprendiendo_con_un_ejemplo.html
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
    • Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl