SlideShare uma empresa Scribd logo
1 de 79
Breve introducción a
Gracias!




12/11/12    Breve introducción a PHPUnit   2   / 81
Sobre mi

           Moisés Gallego
           Programador en Bodaclick
           Miembro de Symfony-Madrid
           Twitter:
             @moisesgallego
           Blogs:
             moidev.com / fotux.es


12/11/12                Breve introducción a PHPUnit   3   / 81
¿Sobre qué trata la
            charla?


12/11/12     Breve introducción a PHPUnit   4   / 81
¿Sobre qué trata la charla?
      ●    Conceptos básicos de Testing




12/11/12                  Breve introducción a PHPUnit   5   / 81
¿Sobre qué trata la charla?
      ●    Conceptos básicos de Testing
      ●    Conceptos básicos sobre TDD




12/11/12                  Breve introducción a PHPUnit   6   /1
                                                             8
¿Sobre qué trata la charla?
      ●    Conceptos básicos de Testing
      ●    Conceptos básicos sobre TDD
      ●    Funcionalidades de PHPUnit




12/11/12                  Breve introducción a PHPUnit   7   / 81
¿Sobre qué trata la charla?
      ●    Conceptos básicos de Testing
      ●    Conceptos básicos sobre TDD
      ●    Funcionalidades de PHPUnit
      ●    Ejemplos




12/11/12                  Breve introducción a PHPUnit   8   / 81
¿Sobre qué NO
           trata la charla?


12/11/12        Breve introducción a PHPUnit   10   / 81
¿Sobre qué NO trata la charla?



                 Venderos la moto




12/11/12             Breve introducción a PHPUnit   11   / 81
¿Sobre qué NO trata la charla?




12/11/12             Breve introducción a PHPUnit   12   / 81
¿Sobre qué NO trata la charla?



                   “Evangelizar”




12/11/12             Breve introducción a PHPUnit   13   / 81
¿Sobre qué NO trata la charla?




12/11/12             Breve introducción a PHPUnit   14   / 81
Testing


12/11/12    Breve introducción a PHPUnit   15   / 81
“Even good programmers make
          mistakes. The difference
     between a good programmer and
        a bad programmer is that the
      good programmer uses tests to
       detect his mistakes as soon as
                  possible.
                                               PHPUnit manual


12/11/12        Breve introducción a PHPUnit               16   / 81
¿Qué es el testing?




           Simplemente pruebas



12/11/12          Breve introducción a PHPUnit   17   / 81
¿Qué es el testing?

                          a   s
                    á tic
              tom
           Au




12/11/12                              Breve introducción a PHPUnit   18   / 81
¿Qué es el testing?

                          a   s




                                                                     Ma
                    á tic




                                                                        n
                                                                       ua
              tom




                                                                        les
           Au




12/11/12                              Breve introducción a PHPUnit            19   / 81
¿Qué es el testing?

                          a   s




                                                                     Ma
                    á tic




                                                                        n
                                                                       ua
              tom




                                                                        les
           Au




            Funcionales


12/11/12                              Breve introducción a PHPUnit            20   / 81
¿Qué es el testing?

                          a   s




                                                                      Ma
                    á tic




                                                                         n
                                                                        ua
              tom




                                                                         les
           Au




            Funcionales                                              Regresión




12/11/12                              Breve introducción a PHPUnit               21   / 81
¿Qué es el testing?

                          a   s




                                                                                 Ma
                    á tic




                                                                                    n
                                                                                   ua
              tom




                                                                                    les
           Au




                                                                            g ra c ió n
                                                                     Inte
            Funcionales                                                         Regresión




12/11/12                              Breve introducción a PHPUnit                          22   / 81
¿Qué es el testing?

                          a   s




                                                                                 Ma
                    á tic




                                                                                    n
                                                                                   ua
              tom




                                                                                    les
           Au

                     Carga




                                                                            g ra c ió n
                                                                     Inte
            Funcionales                                                         Regresión




12/11/12                              Breve introducción a PHPUnit                          23   / 81
¿Qué es el testing?

                          a   s




                                                                                 Ma
                    á tic                       ETC




                                                                                    n
                                                                                   ua
              tom




                                                                                    les
           Au

                     Carga




                                                                            g ra c ió n
                                                                     Inte
            Funcionales                                                         Regresión




12/11/12                              Breve introducción a PHPUnit                          24   / 81
¿Qué es el testing?

                          a   s




                                                                                 Ma
                    á tic                       ETC




                                                                                    n
                                                                                   ua
              tom




                                                                                    les
           Au

                     Carga
                          Unitarias                                              c ió n
                                                                     Inte   g ra
            Funcionales                                                         Regresión




12/11/12                              Breve introducción a PHPUnit                          25   / 81
¿Qué son las pruebas
                unitarias?



12/11/12         Breve introducción a PHPUnit   26   / 81
''Una prueba unitaria es una forma
               de probar el correcto
         funcionamiento de un módulo de
         código. Esto sirve para asegurar
           que cada uno de los módulos
            funcione correctamente por
                    separado''
                                                  Wikipedia



12/11/12           Breve introducción a PHPUnit         27    / 81
Caractéristicas de los tests unitarios
      ● Automatizables
      ● Completos


      ● Repetibles || Reutilizables


      ● Independientes




12/11/12             Breve introducción a PHPUnit   28   / 81
Ok. Eso es testing.
           ¿TDD no es lo mismo?


12/11/12          Breve introducción a PHPUnit   29   / 81
No!
12/11/12   Breve introducción a PHPUnit     30   / 81
Testing

           Diseño
           Diseño



                    Implementación
                     Implementación



                                                      Test
                                                      Test

12/11/12               Breve introducción a PHPUnit          31   / 81
TDD

           Diseño
           Diseño



                    Test
                    Test


                                                   Implementación
                                                    Implementación


12/11/12            Breve introducción a PHPUnit                     32   / 81
“Desarrollo guiado por pruebas, o
      Test-driven development (TDD)
     es una práctica de programación
     que involucra otras dos prácticas:
     Escribir las pruebas primero (Test
           First Development) y
      Refactorización (Refactoring)...


12/11/12         Breve introducción a PHPUnit   33   / 81
...El propósito del
           desarrollo guiado por
           pruebas es lograr un
            código limpio que
                 funcione...

12/11/12          Breve introducción a PHPUnit   34   / 81
...La idea es que los
     requisitos sean traducidos
     a pruebas... se garantizará
     el software cumple con los
        requisitos que se han
              establecido”

12/11/12      Breve introducción a PHPUnit   35   / 81
Bendita Wikipedia
12/11/12       Breve introducción a PHPUnit   36   / 81
El mantra del desarrollo TDD




12/11/12            Breve introducción a PHPUnit   37   / 81
Hasta aquí la teoría
        sobre testing.


12/11/12     Breve introducción a PHPUnit   38   / 81
¿Qué es PHPUnit?


12/11/12        Breve introducción a PHPUnit   39   / 81
Software para crear y ejecutar test
                de manera automática




12/11/12               Breve introducción a PHPUnit   40   / 81
Test manual sin PHPUnit




12/11/12         Breve introducción a PHPUnit   41   / 81
¿Que ventajas
              nos da
             PHPUnit?
12/11/12       Breve introducción a PHPUnit   42   / 81
Aserciones
                -
           Assertions


12/11/12     Breve introducción a PHPUnit   43   / 81
Veamos algunos
       ejemplos sencillos de
           aserciones


12/11/12      Breve introducción a PHPUnit   44   / 81
assertFalse




12/11/12   Breve introducción a PHPUnit   45   / 81
assertFalse




12/11/12   Breve introducción a PHPUnit   46   / 81
assertNull




12/11/12   Breve introducción a PHPUnit   47   / 81
assertContains




12/11/12     Breve introducción a PHPUnit   48   / 81
assertEquals




12/11/12    Breve introducción a PHPUnit   49   / 81
40 posibles aserciones sin incluir
                   sus negaciones




12/11/12              Breve introducción a PHPUnit   50   / 81
¿Qué mas testean las aserciones?
      ●    Cadenas de texto
      ●    Excepciones
      ●    Ficheros
      ●    Arrays
      ●    Objetos && Clases
      ●    JSON && XML
      ●    ...


12/11/12                 Breve introducción a PHPUnit   51   / 81
Anotaciones


12/11/12      Breve introducción a PHPUnit   52   / 81
Test doubles


12/11/12      Breve introducción a PHPUnit   53   / 81
Tests doubles




           Mocks && Stubs



12/11/12      Breve introducción a PHPUnit   54   / 81
- Los Stubs proporcionan respuestas
     predefinidas a ciertas llamadas durante
     los tests, sin responder a cualquier otra
     cosa para la que no hayan sido
     programados.

     - Los Mocks son objetos
     preprogramados con expectativas que
     conforman la especificación de lo que
     se espera que reciban las llamadas.

12/11/12            Breve introducción a PHPUnit   55   / 81
Esta charla es introductoria




12/11/12           Breve introducción a PHPUnit   56   / 81
Esta charla es introductoria




                  No filosófica
12/11/12           Breve introducción a PHPUnit   57   / 81
“Cuando necesitamos
          testear algo que
       depende de un objeto
      ajeno al test que vamos
             a realizar...

12/11/12      Breve introducción a PHPUnit   58   / 81
...ese objeto no debe
           crearse realmente, ya
               que rompería el
            principio “unitario”...

12/11/12           Breve introducción a PHPUnit   59   / 81
...para eso creamos
           objetos “falsos” que se
               comportan como
            deberían los reales...

12/11/12           Breve introducción a PHPUnit   60   / 81
...Ese es el cometido de
       los mocks y los stubs”


12/11/12     Breve introducción a PHPUnit   61   / 81
...Ese es el cometido de
       los mocks y los stubs”
                                            Yo mismo con mis propias palabras




12/11/12     Breve introducción a PHPUnit                                 62    / 81
A ver si con un
           ejemplo lo
      comprendemos mejor


12/11/12    Breve introducción a PHPUnit   63   / 81
Test doubles




12/11/12    Breve introducción a PHPUnit   64   / 81
Cobertura de código
                    -
             Code coverage


12/11/12         Breve introducción a PHPUnit   65   / 81
Nos muestra cuanto y qué código
           está cubierto por nuestros tests.
               Muy útil para ver código
            “deprecated” y posibles bugs.




12/11/12              Breve introducción a PHPUnit   66   / 81
Code Coverage




12/11/12     Breve introducción a PHPUnit   67   / 81
Offtopic

           KATA



12/11/12   Breve introducción a PHPUnit   68   / 81
Offtopic

           KATA



12/11/12   Breve introducción a PHPUnit   69   / 81
"Talk is cheap. Show me the code."
                              - Linus Torvalds




12/11/12              Breve introducción a PHPUnit   71   / 81
Conclusión


12/11/12     Breve introducción a PHPUnit   72   / 81
El testing mola




12/11/12        Breve introducción a PHPUnit   73   / 81
No hay que ser
           cuadriculados



12/11/12       Breve introducción a PHPUnit   74   / 81
TDD a veces no
              es la opción
             correcta para
            todo proyecto.
12/11/12        Breve introducción a PHPUnit   75   / 81
Requiere tiempo


12/11/12        Breve introducción a PHPUnit   76   / 81
Y sobre todo


12/11/12      Breve introducción a PHPUnit   77   / 81
Mucha disciplina
12/11/12       Breve introducción a PHPUnit   78   / 81
GRACIAS!

           Estos aplausos son para vosotros, por aguantar sin dormir




12/11/12                      Breve introducción a PHPUnit             79   / 81
¿Alguna
           pregunta?
             (y que sea sencilla)




12/11/12     Breve introducción a PHPUnit   80   / 81
¿Donde encontrar el código?
      ●    Mi github
           –   https://github.com/mgallego
      ●    Slideshare
           –   http://www.slideshare.net/moisesgallego




12/11/12                      Breve introducción a PHPUnit   81   / 81

Mais conteúdo relacionado

Destaque

How to test models using php unit testing framework?
How to test models using php unit testing framework?How to test models using php unit testing framework?
How to test models using php unit testing framework?satejsahu
 
PHP Unit-Testing With Doubles
PHP Unit-Testing With DoublesPHP Unit-Testing With Doubles
PHP Unit-Testing With DoublesMihail Irintchev
 
B M Social Media Fortune 100
B M Social Media Fortune 100B M Social Media Fortune 100
B M Social Media Fortune 100Burson-Marsteller
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit TestingMike Lively
 
HIMNARIO BAUTISTA letras de 530 himnos
HIMNARIO BAUTISTA letras de 530 himnosHIMNARIO BAUTISTA letras de 530 himnos
HIMNARIO BAUTISTA letras de 530 himnosKirosaludPerú
 

Destaque (6)

How to test models using php unit testing framework?
How to test models using php unit testing framework?How to test models using php unit testing framework?
How to test models using php unit testing framework?
 
Stub you!
Stub you!Stub you!
Stub you!
 
PHP Unit-Testing With Doubles
PHP Unit-Testing With DoublesPHP Unit-Testing With Doubles
PHP Unit-Testing With Doubles
 
B M Social Media Fortune 100
B M Social Media Fortune 100B M Social Media Fortune 100
B M Social Media Fortune 100
 
Advanced PHPUnit Testing
Advanced PHPUnit TestingAdvanced PHPUnit Testing
Advanced PHPUnit Testing
 
HIMNARIO BAUTISTA letras de 530 himnos
HIMNARIO BAUTISTA letras de 530 himnosHIMNARIO BAUTISTA letras de 530 himnos
HIMNARIO BAUTISTA letras de 530 himnos
 

Último

CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptxCamuchaCrdovaAlonso
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...Ars Erótica
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONamelia poma
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 

Último (20)

CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 

Breve introducción a TDD con Phpunit

  • 2. Gracias! 12/11/12 Breve introducción a PHPUnit 2 / 81
  • 3. Sobre mi Moisés Gallego Programador en Bodaclick Miembro de Symfony-Madrid Twitter: @moisesgallego Blogs: moidev.com / fotux.es 12/11/12 Breve introducción a PHPUnit 3 / 81
  • 4. ¿Sobre qué trata la charla? 12/11/12 Breve introducción a PHPUnit 4 / 81
  • 5. ¿Sobre qué trata la charla? ● Conceptos básicos de Testing 12/11/12 Breve introducción a PHPUnit 5 / 81
  • 6. ¿Sobre qué trata la charla? ● Conceptos básicos de Testing ● Conceptos básicos sobre TDD 12/11/12 Breve introducción a PHPUnit 6 /1 8
  • 7. ¿Sobre qué trata la charla? ● Conceptos básicos de Testing ● Conceptos básicos sobre TDD ● Funcionalidades de PHPUnit 12/11/12 Breve introducción a PHPUnit 7 / 81
  • 8. ¿Sobre qué trata la charla? ● Conceptos básicos de Testing ● Conceptos básicos sobre TDD ● Funcionalidades de PHPUnit ● Ejemplos 12/11/12 Breve introducción a PHPUnit 8 / 81
  • 9. ¿Sobre qué NO trata la charla? 12/11/12 Breve introducción a PHPUnit 10 / 81
  • 10. ¿Sobre qué NO trata la charla? Venderos la moto 12/11/12 Breve introducción a PHPUnit 11 / 81
  • 11. ¿Sobre qué NO trata la charla? 12/11/12 Breve introducción a PHPUnit 12 / 81
  • 12. ¿Sobre qué NO trata la charla? “Evangelizar” 12/11/12 Breve introducción a PHPUnit 13 / 81
  • 13. ¿Sobre qué NO trata la charla? 12/11/12 Breve introducción a PHPUnit 14 / 81
  • 14. Testing 12/11/12 Breve introducción a PHPUnit 15 / 81
  • 15. “Even good programmers make mistakes. The difference between a good programmer and a bad programmer is that the good programmer uses tests to detect his mistakes as soon as possible. PHPUnit manual 12/11/12 Breve introducción a PHPUnit 16 / 81
  • 16. ¿Qué es el testing? Simplemente pruebas 12/11/12 Breve introducción a PHPUnit 17 / 81
  • 17. ¿Qué es el testing? a s á tic tom Au 12/11/12 Breve introducción a PHPUnit 18 / 81
  • 18. ¿Qué es el testing? a s Ma á tic n ua tom les Au 12/11/12 Breve introducción a PHPUnit 19 / 81
  • 19. ¿Qué es el testing? a s Ma á tic n ua tom les Au Funcionales 12/11/12 Breve introducción a PHPUnit 20 / 81
  • 20. ¿Qué es el testing? a s Ma á tic n ua tom les Au Funcionales Regresión 12/11/12 Breve introducción a PHPUnit 21 / 81
  • 21. ¿Qué es el testing? a s Ma á tic n ua tom les Au g ra c ió n Inte Funcionales Regresión 12/11/12 Breve introducción a PHPUnit 22 / 81
  • 22. ¿Qué es el testing? a s Ma á tic n ua tom les Au Carga g ra c ió n Inte Funcionales Regresión 12/11/12 Breve introducción a PHPUnit 23 / 81
  • 23. ¿Qué es el testing? a s Ma á tic ETC n ua tom les Au Carga g ra c ió n Inte Funcionales Regresión 12/11/12 Breve introducción a PHPUnit 24 / 81
  • 24. ¿Qué es el testing? a s Ma á tic ETC n ua tom les Au Carga Unitarias c ió n Inte g ra Funcionales Regresión 12/11/12 Breve introducción a PHPUnit 25 / 81
  • 25. ¿Qué son las pruebas unitarias? 12/11/12 Breve introducción a PHPUnit 26 / 81
  • 26. ''Una prueba unitaria es una forma de probar el correcto funcionamiento de un módulo de código. Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado'' Wikipedia 12/11/12 Breve introducción a PHPUnit 27 / 81
  • 27. Caractéristicas de los tests unitarios ● Automatizables ● Completos ● Repetibles || Reutilizables ● Independientes 12/11/12 Breve introducción a PHPUnit 28 / 81
  • 28. Ok. Eso es testing. ¿TDD no es lo mismo? 12/11/12 Breve introducción a PHPUnit 29 / 81
  • 29. No! 12/11/12 Breve introducción a PHPUnit 30 / 81
  • 30. Testing Diseño Diseño Implementación Implementación Test Test 12/11/12 Breve introducción a PHPUnit 31 / 81
  • 31. TDD Diseño Diseño Test Test Implementación Implementación 12/11/12 Breve introducción a PHPUnit 32 / 81
  • 32. “Desarrollo guiado por pruebas, o Test-driven development (TDD) es una práctica de programación que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring)... 12/11/12 Breve introducción a PHPUnit 33 / 81
  • 33. ...El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione... 12/11/12 Breve introducción a PHPUnit 34 / 81
  • 34. ...La idea es que los requisitos sean traducidos a pruebas... se garantizará el software cumple con los requisitos que se han establecido” 12/11/12 Breve introducción a PHPUnit 35 / 81
  • 35. Bendita Wikipedia 12/11/12 Breve introducción a PHPUnit 36 / 81
  • 36. El mantra del desarrollo TDD 12/11/12 Breve introducción a PHPUnit 37 / 81
  • 37. Hasta aquí la teoría sobre testing. 12/11/12 Breve introducción a PHPUnit 38 / 81
  • 38. ¿Qué es PHPUnit? 12/11/12 Breve introducción a PHPUnit 39 / 81
  • 39. Software para crear y ejecutar test de manera automática 12/11/12 Breve introducción a PHPUnit 40 / 81
  • 40. Test manual sin PHPUnit 12/11/12 Breve introducción a PHPUnit 41 / 81
  • 41. ¿Que ventajas nos da PHPUnit? 12/11/12 Breve introducción a PHPUnit 42 / 81
  • 42. Aserciones - Assertions 12/11/12 Breve introducción a PHPUnit 43 / 81
  • 43. Veamos algunos ejemplos sencillos de aserciones 12/11/12 Breve introducción a PHPUnit 44 / 81
  • 44. assertFalse 12/11/12 Breve introducción a PHPUnit 45 / 81
  • 45. assertFalse 12/11/12 Breve introducción a PHPUnit 46 / 81
  • 46. assertNull 12/11/12 Breve introducción a PHPUnit 47 / 81
  • 47. assertContains 12/11/12 Breve introducción a PHPUnit 48 / 81
  • 48. assertEquals 12/11/12 Breve introducción a PHPUnit 49 / 81
  • 49. 40 posibles aserciones sin incluir sus negaciones 12/11/12 Breve introducción a PHPUnit 50 / 81
  • 50. ¿Qué mas testean las aserciones? ● Cadenas de texto ● Excepciones ● Ficheros ● Arrays ● Objetos && Clases ● JSON && XML ● ... 12/11/12 Breve introducción a PHPUnit 51 / 81
  • 51. Anotaciones 12/11/12 Breve introducción a PHPUnit 52 / 81
  • 52. Test doubles 12/11/12 Breve introducción a PHPUnit 53 / 81
  • 53. Tests doubles Mocks && Stubs 12/11/12 Breve introducción a PHPUnit 54 / 81
  • 54. - Los Stubs proporcionan respuestas predefinidas a ciertas llamadas durante los tests, sin responder a cualquier otra cosa para la que no hayan sido programados. - Los Mocks son objetos preprogramados con expectativas que conforman la especificación de lo que se espera que reciban las llamadas. 12/11/12 Breve introducción a PHPUnit 55 / 81
  • 55. Esta charla es introductoria 12/11/12 Breve introducción a PHPUnit 56 / 81
  • 56. Esta charla es introductoria No filosófica 12/11/12 Breve introducción a PHPUnit 57 / 81
  • 57. “Cuando necesitamos testear algo que depende de un objeto ajeno al test que vamos a realizar... 12/11/12 Breve introducción a PHPUnit 58 / 81
  • 58. ...ese objeto no debe crearse realmente, ya que rompería el principio “unitario”... 12/11/12 Breve introducción a PHPUnit 59 / 81
  • 59. ...para eso creamos objetos “falsos” que se comportan como deberían los reales... 12/11/12 Breve introducción a PHPUnit 60 / 81
  • 60. ...Ese es el cometido de los mocks y los stubs” 12/11/12 Breve introducción a PHPUnit 61 / 81
  • 61. ...Ese es el cometido de los mocks y los stubs” Yo mismo con mis propias palabras 12/11/12 Breve introducción a PHPUnit 62 / 81
  • 62. A ver si con un ejemplo lo comprendemos mejor 12/11/12 Breve introducción a PHPUnit 63 / 81
  • 63. Test doubles 12/11/12 Breve introducción a PHPUnit 64 / 81
  • 64. Cobertura de código - Code coverage 12/11/12 Breve introducción a PHPUnit 65 / 81
  • 65. Nos muestra cuanto y qué código está cubierto por nuestros tests. Muy útil para ver código “deprecated” y posibles bugs. 12/11/12 Breve introducción a PHPUnit 66 / 81
  • 66. Code Coverage 12/11/12 Breve introducción a PHPUnit 67 / 81
  • 67. Offtopic KATA 12/11/12 Breve introducción a PHPUnit 68 / 81
  • 68. Offtopic KATA 12/11/12 Breve introducción a PHPUnit 69 / 81
  • 69. "Talk is cheap. Show me the code." - Linus Torvalds 12/11/12 Breve introducción a PHPUnit 71 / 81
  • 70. Conclusión 12/11/12 Breve introducción a PHPUnit 72 / 81
  • 71. El testing mola 12/11/12 Breve introducción a PHPUnit 73 / 81
  • 72. No hay que ser cuadriculados 12/11/12 Breve introducción a PHPUnit 74 / 81
  • 73. TDD a veces no es la opción correcta para todo proyecto. 12/11/12 Breve introducción a PHPUnit 75 / 81
  • 74. Requiere tiempo 12/11/12 Breve introducción a PHPUnit 76 / 81
  • 75. Y sobre todo 12/11/12 Breve introducción a PHPUnit 77 / 81
  • 76. Mucha disciplina 12/11/12 Breve introducción a PHPUnit 78 / 81
  • 77. GRACIAS! Estos aplausos son para vosotros, por aguantar sin dormir 12/11/12 Breve introducción a PHPUnit 79 / 81
  • 78. ¿Alguna pregunta? (y que sea sencilla) 12/11/12 Breve introducción a PHPUnit 80 / 81
  • 79. ¿Donde encontrar el código? ● Mi github – https://github.com/mgallego ● Slideshare – http://www.slideshare.net/moisesgallego 12/11/12 Breve introducción a PHPUnit 81 / 81