SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Andere mochten auch

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ú
 

Andere mochten auch (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
 

Kürzlich hochgeladen

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularMooPandrea
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Kürzlich hochgeladen (20)

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.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