Symfony
           Parte 17
 Pruebas Unitarias - Funcionales




 Rodrigo Miranda
    rmiranda@poodu.cl
contacto@rodrigomi...
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-dr...
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Pruebas:

 Los archivos que contienen las pruebas son php
 normales cuyo nombre termina en Test.php. Se
 encuentran ubicad...
Recordando





     Rodrigo Miranda
 Blog: www.rodrigomiranda.cl
Pruebas
Unitarias:

 Las primeras dos líneas de los archivos de prueba
 Unitaria son:




                      Rodrigo Mi...
Si no se cumpliera con el total de prueba
 especificado en el primera parámetro de la llamada
 lime_test, ejemplo:

  new ...
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
Ejemplo
strtolowerTest:

 Pruebas unitarias para la función strtolower().




                       Rodrigo Miranda
     ...
Ejecución
en
línea
de
comandos

Ejecutamos nuestra prueba unitaria




                      Rodrigo Miranda
             ...
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 lla...
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...
Pasos
necesarios
para
Pruebas
Unitarias
Propel:

•  Obtener la carga automática, inicializando objeto de
   configuración....
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
  ...
  Las pruebas Funcionales prueban todas las capas
  de la aplicación: el sistema de enrutamiento, el
  modelo, las accion...
Clase
sfBrowser





       Rodrigo Miranda
   Blog: www.rodrigomiranda.cl
Clase
sfBrowser:



  En Symfony, las pruebas funcionales se realizan
  mediante un navegador especial creado con la clas...
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: ww...
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 navega...
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Interfaz
Fluida:


  Cada método de sfBrowser y sfTestFunctional
  devuelven un objeto $this para permitir lo que se
  co...
Contexto
de
bloque
de
tester:


  Las pruebas se ejecutan dentro de un contexto de
  bloque de tester. Los contextos de b...
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.rodrigomirand...
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, ...
Conjunto
de
Pruebas

    Funcionales




         Rodrigo Miranda
     Blog: www.rodrigomiranda.cl
Ejemplo,
ejecutando
Conjunto
pruebas

  Funcionales
de
una
aplicación:





                   Rodrigo Miranda
           ...
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 Mi...
Preguntas?




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Upcoming SlideShare
Loading in …5
×

Symfony parte 17

673 views
600 views

Published on

Pruebas Unitarias y Pruebas Funcionales

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
673
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Symfony parte 17

  1. 1. Symfony Parte 17 Pruebas Unitarias - Funcionales Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
  2. 2. Pruebas
Unitarias
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  3. 3. 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
  4. 4. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  5. 5. 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
  6. 6. Recordando
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  7. 7. Pruebas
Unitarias: Las primeras dos líneas de los archivos de prueba Unitaria son: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  8. 8. 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
  9. 9. 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
  10. 10. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  11. 11. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  12. 12. Ejemplo
strtolowerTest: Pruebas unitarias para la función strtolower(). Rodrigo Miranda Blog: www.rodrigomiranda.cl
  13. 13. Ejecución
en
línea
de
comandos Ejecutamos nuestra prueba unitaria Rodrigo Miranda Blog: www.rodrigomiranda.cl
  14. 14. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  15. 15. miFuncionalTest
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  16. 16. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  17. 17. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  18. 18. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  19. 19. Dis?ntas
formas
de
Ejecución Rodrigo Miranda Blog: www.rodrigomiranda.cl
  20. 20. 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
  21. 21. Al
comienzo
del
archivo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  22. 22. Pruebas
Unitarias
de
las
 clases
de
Propel
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  23. 23. 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
  24. 24. 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
  25. 25. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  26. 26. Ejemplo
de
lo
anterior: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  27. 27. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  28. 28. Pruebas
Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  29. 29. 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
  30. 30.   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
  31. 31. Clase
sfBrowser
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  32. 32. Clase
sfBrowser:
   En Symfony, las pruebas funcionales se realizan mediante un navegador especial creado con la clase sfBrowser. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  33. 33. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  34. 34. Métodos
sfBrowser: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  35. 35. Métodos
sfBrowser
para
configurar
 comportamiento
Navegador: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  36. 36. Ejemplo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  37. 37. Clase
sfTestFunc:onal
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  38. 38. 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
  39. 39. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  40. 40. 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
  41. 41. 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
  42. 42. Ejemplo
contexto
bloque
tester: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  43. 43. Ejemplo: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  44. 44. Tester
request: Tester
response: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  45. 45. Ejecutando
pruebas
 Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  46. 46. Ejecutando
pruebas
Funcionales: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  47. 47. Datos
de
Prueba
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  48. 48. 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
  49. 49. Conjunto
de
Pruebas
 Funcionales
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  50. 50. Ejemplo,
ejecutando
Conjunto
pruebas
 Funcionales
de
una
aplicación:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  51. 51. Conjunto
de
Pruebas
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  52. 52. Ejemplo,
ejecutando
todas
las
Pruebas:
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  53. 53. Revisar
Ejemplo
 h@p://librosweb.es/jobeet_1_3/capitulo9/ aprendiendo_con_un_ejemplo.html
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  54. 54. Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl

×