SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
Manteniendo la casa limpia:
  Probando y depurando
    aplicativos en PHP


    Jesús M. Castagnetto, Ph.D.

            Latinoware 2008
   30 de Octubre – 1 de Noviembre, 2008

      Parque Tecnológico Itaipu (PTI)
         Foz do Iguaçu PR/Brasil

                         Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
             Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Agenda
●   El sufrimiento del programador y
    cómo disminuirlo
●   Depuración de código y perfiles de
    rendimiento del aplicativo.
●   Pruebas unitarias.
●   Pruebas de carga y estrés.


                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Programar es una mezcla
de ciencia, ingeniería y arte.
                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
No es suficiente
                    el conocer la
                    teoría, técnicas
                    y conceptos.

                    Necesitamos
                    aprender de la
                    experiencia de
                    otros.

            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Las buenas prácticas surgen del
conocimiento comunitario, y nos
ayudan a evitar los problemas
comunes, para así concentrarnos
en los que son importantes.
                        Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
            Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Problema: Estamos por finalizar
un proyecto y el nuevo código no
se integra como se planeó.




                        Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
            Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Problema: Hemos implementado
un algoritmo complejo y no da los
resultados esperados.



                                                                        ?
¿      “Pero ésta es la versión simplificada
          para el público en general...”
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Problema:
                        Error aleatorio
                        pero crítico.
                        Proyecto con
                        decenas de
                        miles de líneas
                        de código.
                        Tienes poco
                        tiempo y no lo
                        escribiste tú.
            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Problema:
                    El aplicativo
                    funciona muy
                    lento y no
                    sabemos dónde
                    comenzar a
                    optimizar.


            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Soluciones
                                que no son
                                soluciones.

                                Causan más
                                dolor y
                                problemas
            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¿Soluciones o Problemas?
●   El expresivo: Usa echo, print(),
    print_r(), var_dump(), etc., hasta
    encontrar el problema.
●   El silencioso: Silencia código
    comentándolo hasta que funciona.
    Luego activarlo de a pocos y reza
    mucho para que funcione.
●   El rectificador: Escribe código que
    “arregle” el problema causado.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¿Soluciones o Problemas?
●   El inconstante: Prueba varias librerías
    o rutinas, aun sin justificación, con la
    esperanza de que alguna de éstas dé
    el resultado esperado.
●   El copista: Usa algo como Google
    Code Search para encontrar código
    que puede que funcione, sin
    entender lo que hace.

                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¿Soluciones o Problemas?
●   El maestro de vudú: “Tengo que
    poner esta constante acá, luego haré
    las operaciones así y asá, y en este
    orden, pues la otra vez funcionó”.
●   El marquetero: “Redefine” el
    problema para que sea una
    “característica” positiva o nueva, y
    no algo que necesita arreglo.

                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Solución: Usar la herramienta
correcta para el trabajo.




                         Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
             Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Soluciones
●   Usar depuradores de
    código.
●   Hacer un perfil de
    uso del aplicativo.
●   Emplear técnicas de
    prueba de código.
●   Probar al aplicativo
    como un todo para
    ver su “resistencia”.
                               Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                   Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Depurador de código
●   Herramienta
    para probar y
    encontrar
    errores en la
    ejecución de
    software.
●   Rastrea cambios
    en variables,
    puede detener la
    ejecución, etc.
                                Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                    Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Analizador del rendimiento
●   Captura el perfil de comportamiento
    de una pieza de software.
●   Permite conocer exactamente qué
    partes son los cuellos de botella.
●   Muestra el comportamiento real de
    las diversas partes, lo que a veces no
    corresponde a lo que habíamos
    diseñado o modelado.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pruebas unitarias
●   Probar en forma independiente los
    componentes de un aplicativo.
●   Se prueba a varios niveles de detalle,
    desde una función o método, hasta
    toda una clase o colección de éstas.
●   Las pruebas deben ser independientes
    del resto, para poder ser compuestas
    en forma coherente.

                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pruebas de carga
          ●    Trata de descubrir el
               comportamiento de un
               aplicativo frente a
               diferentes niveles de
               demanda.
          ●    Nos da una idea de
               cuan escalable es el
               software, y cuáles son
               sus límites prácticos.
                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pruebas de estrés
●   Busca encontrar los
    límites de respuesta
    de un aplicativo.
●   Se trata de llegar más
    allá del uso normal.
●   Observa:
    recuperación de
    errores, degradación
    de la respuesta, etc.
                              Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                  Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pruebas...
muchas pruebas
●   Funcionalidad.
●   Seguridad.
●   Cobertura/uso del
    código.
●   Regresión.
●   Usabilidad y
    accesibilidad.
●   Compatibilidad, etc.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug (www.xdebug.org)




                     Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
         Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug - Características

Una herramienta multifacética:
●   Depurador de código (Debugger).
●   Analizador de perfil de rendimiento
    (Profiler).
●   Analizador de cobertura de uso del
    código (Code Coverage)
●   Sesiones interactivas de análisis.

                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug: Depuración
●   Rastreo completo de los cambios de
    valores de variables y sus contextos.
●   Listado completo de las llamadas a
    funciones, incluyendo parámetros,
    uso de memoria, etc.
●   Protección contra recursión infinita.
●   Puede guardar los resultados a un
    archivo para un análisis detallado.

                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug: Rendimiento
●   Permite el análisis del rendimiento de
    cada componente del aplicativo.
●   Acumula los tiempos de ejecución de
    cada función y método, así como
    cuantas veces que fueron llamados.
●   Los datos son almacenados en un
    formato que puede visualizarse con
    KCacheGrind, WinCacheGrind o
    MacCallGrind.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug: Uso del código
●   Se puede analizar la cobertura del
    código: cuánto del código se usa en
    realidad y qué partes nunca se
    emplean.
●   El análisis es dependiente del tipo de
    ejecución y proceso que se esté
    probando.


                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Xdebug: Juega bien con otros
●   Podemos iniciar una sesión de
    depuración en forma remota.
●   Soporta los protocolos GDB y DBGp
    para depuración.
●   Esto le permite acceder a una gran
    variedad de herramientas de
    depuración remota, en múltiples
    plataformas, con interfaz gráfica o de
    línea de comandos.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
PHPUnit (www.phpunit.de)




                     Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
         Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pruebas, no print()'s

 “Cada vez que estén tentados a
 escribir un comando print o una
 expresión de depuración, escriban
 una prueba unitaria”
                                               Martin Fowler




                         Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
             Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pasos básicos
●   Escribe una prueba antes o
    inmediatamente después de escribir
    tu código.
               class Foo {
                ...
               }
     class FooTest extends
      PHPUnit_Framework_TestCase {
      ...
     }
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Pasos básicos
●   Cada prueba es un método público
    llamado testXYZ.
          class Foo {
           function boing() {}
          }
    class FooTest extends
     PHPUnit_Framework_TestCase {
     public function testBoing(){}
    }
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Mentiras “blancas”
●   Cuando las pruebas requieren
    interacción con otros componentes o
    sistemas, se pueden usar objetos que
    simulen estos (Mock Objects).
●   PHPUnit provee ayuda en la creación
    de objetos de este tipo, hasta el
    punto de generar uno con sólo
    métodos específicos simulados.

                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Automatizando el proceso
●   PHPUnit tiene la opción de integrarse
    con Selenium, para pruebas
    instrumentadas de aplicativos web.
●   Existen también herramientas que lo
    integran dentro un sistema de
    integración continua:
            phpUnderControl
         (www.phpundercontrol.org)
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Recomendaciones
●   Las pruebas deben usar las funciones
    de aserciones que provee PHPUnit:
    assertEquals(), assertTrue(), etc.
●   Organizar las pruebas en un conjunto
    relacionado.
●   Probar lo importante, lo que puede
    rendir dividendos en información.


                                 Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                     Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Selenium
(selenium.openqa.org)




                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¿Qué es Selenium?
●   Un sistema de pruebas de aplicativos
    web, simple, portable y extensible.
●   Las pruebas pueden ser escritas
    como tablas en HTML, o en varios
    lenguajes de programación, y
    ejecutados en un navegador web.
●   Puede automatizarse usando una
    herramienta de pruebas (ej. PHPUnit)
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Selenium

Múltiples
herramientas
con un mismo
objetivo: facilitar
la prueba de los
aplicativos web.

                           Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
               Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Selenium IDE
●   Es una extensión para Firefox que
    permite el grabar, editar y depurar
    pruebas.
●   Puede seleccionar elementos de la
    página en forma selectiva.
●   Puede completar automáticamente
    código o selecciones.
●   Guarda pruebas en HTML o Ruby.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Selenium RC
●   Un servidor escrito en Java que
    acepta comandos para el navegador
    a través HTTP.
●   Se usa para realizar pruebas
    automáticas empleando cualquiera
    de los lenguajes de programación
    populares (PHP, Java, Python, etc.)
●   Puede iniciar selectivamente un
    navegador y ejecutar las pruebas.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Selenium Grid
●   Un sistema para ejecutar pruebas en
    paralelo, en múltiples máquinas y en
    ambientes heterogéneos.
●   Permite ejecutar múltiples copias de
    Selenium RC, en la misma o múltiples
    plataformas.
●   Integra y controla estas múltiples
    instancias, haciéndolas parecer como
    una sola, simplificando el manejo.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
The Grinder (grinder.sf.net)




                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Características
●   Permite ejecutar pruebas de carga y
    estrés en forma distribuida.
●   Puede hacer pruebas usando
    múltiples protocolos: HTTP, Servicios
    Web (SOAP, REST), JDBC, etc.
●   Usa Jython para la escritura y
    automatización de las pruebas.
●   Los resultados se ven gráficamente.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Tipos de pruebas

Pruebas de carga
●   Si puede soportar una carga/uso
    determinado, con un tiempo de
    respuesta especificado.
●   Útil para la comparación de sistemas,
    algoritmos y/o librerías
    (benchmarking).


                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Tipos de pruebas

Pruebas de capacidad
●   La carga máxima que puede soportar
    el sistema antes de una falla total.
Pruebas funcionales
●   Probar si el aplicativo tiene el
    comportamiento esperado.


                              Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                  Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Tipos de pruebas

Pruebas de estrés
●   Es una prueba de carga, pero
    ejecutada por un periodo extendido.
●   Permite la evaluación de estabilidad
    y confiabilidad de un aplicativo, bajo
    un carga dada por un tiempo
    determinado.


                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Arquitectura (The Grinder)
                                     ●    Contextos:
                                          Multi-hilos,
                                          multi-procesos
                                     ●    Sistema
                                          distribuido
                                     ●    Escalable



                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Manejo y control (The Grinder)
 ●   Coordinación y vigilancia de los
     procesos.
 ●   Consolidación de resultados entre
     múltiples instancias.
 ●   Puede acumular estadísticas de lo
     que se le pida y reportarlas.
 ●   Registros son almacenados para
     posterior análisis.
                              Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                  Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Creación de pruebas
(The Grinder)
●   Puede grabar las interacciones de
    usuarios reales y usarlas como base
    para ejecutar pruebas.
●   Usa Python (Jython), lo que le
    permite ser flexible y expresivo.
●   La pruebas se pueden parametrizar y
    contener rutas de decisión o lazos de
    ejecución.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Charlas relacionadas
●   “Pog nunca mais! - ténicas e macetes
    para o desenvolvimento em php”
    Paulino Michelazzo
●   “Integração continua com
    cruisecontrol e phpundercontrol”
    Diego Tremper
●   “Qualidade no desenvolvimento de
    software com PHPUnit” Diego
    Tremper
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Otros recursos
●   OWASP (www.owasp.org)
    Comunidad enfocada en el problema
    de asegurar la seguridad de
    aplicativos web.
●   PHP Security Consortium
    (phpsec.org)
    Todo acerca de seguridad de
    aplicativos escritos en PHP.

                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Otros recursos
●   SimpleTest (simpletest.org)
    Otra opción para hacer pruebas
    unitarias en PHP.
●   Zend Studio (www.zend.com)
    Un IDE comercial que incluye
    depurador, gestor de proyectos, etc.
●   Open source software testing tools
    (www.opensourcetesting.org)
    Lista de aplicativos para pruebas
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¡Gracias/Obrigado!

A los organizadores del evento por la
      invitación y el entusiasmo.

  A todos ustedes por soportar mi
    “bla, bla, bla...”, sin dormirse.

       Jesús M. Castagnetto
      jmcastagnetto@php.net
        jesus@upch.edu.pe
                         Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
             Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia

Weitere ähnliche Inhalte

Andere mochten auch

Community Programs - Social Media Week 2014
Community Programs - Social Media Week 2014Community Programs - Social Media Week 2014
Community Programs - Social Media Week 2014XING AG
 
BVK 25 Jahre - Jubiläumsbroschüre
BVK 25 Jahre - JubiläumsbroschüreBVK 25 Jahre - Jubiläumsbroschüre
BVK 25 Jahre - JubiläumsbroschüreBVK
 
Un oído en el pueblo y el otro en el evangelio
Un oído en el pueblo y el otro en el evangelioUn oído en el pueblo y el otro en el evangelio
Un oído en el pueblo y el otro en el evangelioJuan Jose Gravet
 
Hyves: Mobile app development with HTML5 and Javascript
Hyves: Mobile app development with HTML5 and JavascriptHyves: Mobile app development with HTML5 and Javascript
Hyves: Mobile app development with HTML5 and Javascriptnlwebperf
 
Anti-Slavery Almanac of 1847
Anti-Slavery Almanac of 1847Anti-Slavery Almanac of 1847
Anti-Slavery Almanac of 1847S7w5Xb
 
Thomas Rau
Thomas RauThomas Rau
Thomas Rauvuvu1311
 
Control de consumo energético
Control de consumo energéticoControl de consumo energético
Control de consumo energéticoN-NOVA
 
Socialbar Stuttgart-Statement-08062010
Socialbar Stuttgart-Statement-08062010Socialbar Stuttgart-Statement-08062010
Socialbar Stuttgart-Statement-08062010npovernetzt
 
Revista jane austen portugal maio 2011
Revista jane austen portugal maio 2011Revista jane austen portugal maio 2011
Revista jane austen portugal maio 2011Adriana Sales Zardini
 
Trabajo de los silos
Trabajo de los silosTrabajo de los silos
Trabajo de los silosHypnos Stan
 
Bppt outlook energi indonesia 2013
Bppt   outlook energi indonesia 2013Bppt   outlook energi indonesia 2013
Bppt outlook energi indonesia 2013Rattapong Rattahayo
 
Didáctica en la educación social
Didáctica en la educación socialDidáctica en la educación social
Didáctica en la educación socialJerawyn Castillo
 
Hoja de informacion 9 big ant
Hoja de informacion 9 big antHoja de informacion 9 big ant
Hoja de informacion 9 big antcristianfx
 

Andere mochten auch (18)

Community Programs - Social Media Week 2014
Community Programs - Social Media Week 2014Community Programs - Social Media Week 2014
Community Programs - Social Media Week 2014
 
BVK 25 Jahre - Jubiläumsbroschüre
BVK 25 Jahre - JubiläumsbroschüreBVK 25 Jahre - Jubiläumsbroschüre
BVK 25 Jahre - Jubiläumsbroschüre
 
Curriculum nuevo1
Curriculum nuevo1Curriculum nuevo1
Curriculum nuevo1
 
Un oído en el pueblo y el otro en el evangelio
Un oído en el pueblo y el otro en el evangelioUn oído en el pueblo y el otro en el evangelio
Un oído en el pueblo y el otro en el evangelio
 
Hyves: Mobile app development with HTML5 and Javascript
Hyves: Mobile app development with HTML5 and JavascriptHyves: Mobile app development with HTML5 and Javascript
Hyves: Mobile app development with HTML5 and Javascript
 
CMSB Corporate Profile
CMSB Corporate ProfileCMSB Corporate Profile
CMSB Corporate Profile
 
Oli1
Oli1Oli1
Oli1
 
Anti-Slavery Almanac of 1847
Anti-Slavery Almanac of 1847Anti-Slavery Almanac of 1847
Anti-Slavery Almanac of 1847
 
Thomas Rau
Thomas RauThomas Rau
Thomas Rau
 
Control de consumo energético
Control de consumo energéticoControl de consumo energético
Control de consumo energético
 
Socialbar Stuttgart-Statement-08062010
Socialbar Stuttgart-Statement-08062010Socialbar Stuttgart-Statement-08062010
Socialbar Stuttgart-Statement-08062010
 
Revista jane austen portugal maio 2011
Revista jane austen portugal maio 2011Revista jane austen portugal maio 2011
Revista jane austen portugal maio 2011
 
Identitätsorientiertes Kommunikationsmanagement, prmagazin 2011
Identitätsorientiertes Kommunikationsmanagement, prmagazin 2011Identitätsorientiertes Kommunikationsmanagement, prmagazin 2011
Identitätsorientiertes Kommunikationsmanagement, prmagazin 2011
 
documento icas
documento icasdocumento icas
documento icas
 
Trabajo de los silos
Trabajo de los silosTrabajo de los silos
Trabajo de los silos
 
Bppt outlook energi indonesia 2013
Bppt   outlook energi indonesia 2013Bppt   outlook energi indonesia 2013
Bppt outlook energi indonesia 2013
 
Didáctica en la educación social
Didáctica en la educación socialDidáctica en la educación social
Didáctica en la educación social
 
Hoja de informacion 9 big ant
Hoja de informacion 9 big antHoja de informacion 9 big ant
Hoja de informacion 9 big ant
 

Ähnlich wie Manteniendo la casa limpia: Probando y depurando aplicativos en PHP

Servicios Web en Bioinformática
Servicios Web en BioinformáticaServicios Web en Bioinformática
Servicios Web en BioinformáticaJesus Castagnetto
 
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHPConstruyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHPJesus Castagnetto
 
Influencia del Software Libre y Acceso Abierto en la Investigación Biomédica
Influencia del Software Libre y Acceso Abierto en la Investigación BiomédicaInfluencia del Software Libre y Acceso Abierto en la Investigación Biomédica
Influencia del Software Libre y Acceso Abierto en la Investigación BiomédicaJesus Castagnetto
 
Nuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaNuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaJesus Castagnetto
 
2017 Inicio del Curso Estadística y Probabilidad
2017 Inicio del Curso Estadística y Probabilidad2017 Inicio del Curso Estadística y Probabilidad
2017 Inicio del Curso Estadística y ProbabilidadZoraida Pérez S.
 
Programacion de estadistica upc
Programacion de estadistica upcProgramacion de estadistica upc
Programacion de estadistica upcsistemas2013
 
Proyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónProyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónUniversidad Católica San Pablo
 
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...Centro de e-Learning. UTN FRBA
 

Ähnlich wie Manteniendo la casa limpia: Probando y depurando aplicativos en PHP (20)

Servicios Web en Bioinformática
Servicios Web en BioinformáticaServicios Web en Bioinformática
Servicios Web en Bioinformática
 
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHPConstruyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP
Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP
 
Influencia del Software Libre y Acceso Abierto en la Investigación Biomédica
Influencia del Software Libre y Acceso Abierto en la Investigación BiomédicaInfluencia del Software Libre y Acceso Abierto en la Investigación Biomédica
Influencia del Software Libre y Acceso Abierto en la Investigación Biomédica
 
Nuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaNuevas Areas de Investigación en Química
Nuevas Areas de Investigación en Química
 
2017 Inicio del Curso Estadística y Probabilidad
2017 Inicio del Curso Estadística y Probabilidad2017 Inicio del Curso Estadística y Probabilidad
2017 Inicio del Curso Estadística y Probabilidad
 
Infochip 73
Infochip 73Infochip 73
Infochip 73
 
Infochip 74
Infochip 74Infochip 74
Infochip 74
 
Infochip 72
Infochip 72Infochip 72
Infochip 72
 
Infochip 84
Infochip 84Infochip 84
Infochip 84
 
Programacion de estadistica upc
Programacion de estadistica upcProgramacion de estadistica upc
Programacion de estadistica upc
 
Infochips 79
Infochips 79Infochips 79
Infochips 79
 
Proyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónProyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de Información
 
Creación de programa sistemas de informacion
Creación de programa sistemas de informacionCreación de programa sistemas de informacion
Creación de programa sistemas de informacion
 
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...
Una Propuesta de Transposición Didáctica para la Enseñanza de la Estadística ...
 
Infochip 80
Infochip 80Infochip 80
Infochip 80
 
lo hecho
lo hecholo hecho
lo hecho
 
Infochip 83
Infochip 83Infochip 83
Infochip 83
 
Infochip 82 - DCyT
Infochip 82 - DCyTInfochip 82 - DCyT
Infochip 82 - DCyT
 
Plan curricular 2006 de ingenieria informatica
Plan curricular 2006 de ingenieria informaticaPlan curricular 2006 de ingenieria informatica
Plan curricular 2006 de ingenieria informatica
 
Plan Curricular 2006 De Ingenieria Informatica
Plan Curricular 2006 De Ingenieria InformaticaPlan Curricular 2006 De Ingenieria Informatica
Plan Curricular 2006 De Ingenieria Informatica
 

Kürzlich hochgeladen

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 

Kürzlich hochgeladen (20)

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 

Manteniendo la casa limpia: Probando y depurando aplicativos en PHP

  • 1. Manteniendo la casa limpia: Probando y depurando aplicativos en PHP Jesús M. Castagnetto, Ph.D. Latinoware 2008 30 de Octubre – 1 de Noviembre, 2008 Parque Tecnológico Itaipu (PTI) Foz do Iguaçu PR/Brasil Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 2. Agenda ● El sufrimiento del programador y cómo disminuirlo ● Depuración de código y perfiles de rendimiento del aplicativo. ● Pruebas unitarias. ● Pruebas de carga y estrés. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 3. Programar es una mezcla de ciencia, ingeniería y arte. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 4. No es suficiente el conocer la teoría, técnicas y conceptos. Necesitamos aprender de la experiencia de otros. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 5. Las buenas prácticas surgen del conocimiento comunitario, y nos ayudan a evitar los problemas comunes, para así concentrarnos en los que son importantes. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 6. Problema: Estamos por finalizar un proyecto y el nuevo código no se integra como se planeó. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 7. Problema: Hemos implementado un algoritmo complejo y no da los resultados esperados. ? ¿ “Pero ésta es la versión simplificada para el público en general...” Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 8. Problema: Error aleatorio pero crítico. Proyecto con decenas de miles de líneas de código. Tienes poco tiempo y no lo escribiste tú. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 9. Problema: El aplicativo funciona muy lento y no sabemos dónde comenzar a optimizar. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 10. Soluciones que no son soluciones. Causan más dolor y problemas Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 11. ¿Soluciones o Problemas? ● El expresivo: Usa echo, print(), print_r(), var_dump(), etc., hasta encontrar el problema. ● El silencioso: Silencia código comentándolo hasta que funciona. Luego activarlo de a pocos y reza mucho para que funcione. ● El rectificador: Escribe código que “arregle” el problema causado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 12. ¿Soluciones o Problemas? ● El inconstante: Prueba varias librerías o rutinas, aun sin justificación, con la esperanza de que alguna de éstas dé el resultado esperado. ● El copista: Usa algo como Google Code Search para encontrar código que puede que funcione, sin entender lo que hace. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 13. ¿Soluciones o Problemas? ● El maestro de vudú: “Tengo que poner esta constante acá, luego haré las operaciones así y asá, y en este orden, pues la otra vez funcionó”. ● El marquetero: “Redefine” el problema para que sea una “característica” positiva o nueva, y no algo que necesita arreglo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 14. Solución: Usar la herramienta correcta para el trabajo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 15. Soluciones ● Usar depuradores de código. ● Hacer un perfil de uso del aplicativo. ● Emplear técnicas de prueba de código. ● Probar al aplicativo como un todo para ver su “resistencia”. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 16. Depurador de código ● Herramienta para probar y encontrar errores en la ejecución de software. ● Rastrea cambios en variables, puede detener la ejecución, etc. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 17. Analizador del rendimiento ● Captura el perfil de comportamiento de una pieza de software. ● Permite conocer exactamente qué partes son los cuellos de botella. ● Muestra el comportamiento real de las diversas partes, lo que a veces no corresponde a lo que habíamos diseñado o modelado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 18. Pruebas unitarias ● Probar en forma independiente los componentes de un aplicativo. ● Se prueba a varios niveles de detalle, desde una función o método, hasta toda una clase o colección de éstas. ● Las pruebas deben ser independientes del resto, para poder ser compuestas en forma coherente. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 19. Pruebas de carga ● Trata de descubrir el comportamiento de un aplicativo frente a diferentes niveles de demanda. ● Nos da una idea de cuan escalable es el software, y cuáles son sus límites prácticos. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 20. Pruebas de estrés ● Busca encontrar los límites de respuesta de un aplicativo. ● Se trata de llegar más allá del uso normal. ● Observa: recuperación de errores, degradación de la respuesta, etc. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 21. Pruebas... muchas pruebas ● Funcionalidad. ● Seguridad. ● Cobertura/uso del código. ● Regresión. ● Usabilidad y accesibilidad. ● Compatibilidad, etc. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 22. Xdebug (www.xdebug.org) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 23. Xdebug - Características Una herramienta multifacética: ● Depurador de código (Debugger). ● Analizador de perfil de rendimiento (Profiler). ● Analizador de cobertura de uso del código (Code Coverage) ● Sesiones interactivas de análisis. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 24. Xdebug: Depuración ● Rastreo completo de los cambios de valores de variables y sus contextos. ● Listado completo de las llamadas a funciones, incluyendo parámetros, uso de memoria, etc. ● Protección contra recursión infinita. ● Puede guardar los resultados a un archivo para un análisis detallado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 25. Xdebug: Rendimiento ● Permite el análisis del rendimiento de cada componente del aplicativo. ● Acumula los tiempos de ejecución de cada función y método, así como cuantas veces que fueron llamados. ● Los datos son almacenados en un formato que puede visualizarse con KCacheGrind, WinCacheGrind o MacCallGrind. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 26. Xdebug: Uso del código ● Se puede analizar la cobertura del código: cuánto del código se usa en realidad y qué partes nunca se emplean. ● El análisis es dependiente del tipo de ejecución y proceso que se esté probando. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 27. Xdebug: Juega bien con otros ● Podemos iniciar una sesión de depuración en forma remota. ● Soporta los protocolos GDB y DBGp para depuración. ● Esto le permite acceder a una gran variedad de herramientas de depuración remota, en múltiples plataformas, con interfaz gráfica o de línea de comandos. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 28. PHPUnit (www.phpunit.de) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 29. Pruebas, no print()'s “Cada vez que estén tentados a escribir un comando print o una expresión de depuración, escriban una prueba unitaria” Martin Fowler Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 30. Pasos básicos ● Escribe una prueba antes o inmediatamente después de escribir tu código. class Foo { ... } class FooTest extends PHPUnit_Framework_TestCase { ... } Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 31. Pasos básicos ● Cada prueba es un método público llamado testXYZ. class Foo { function boing() {} } class FooTest extends PHPUnit_Framework_TestCase { public function testBoing(){} } Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 32. Mentiras “blancas” ● Cuando las pruebas requieren interacción con otros componentes o sistemas, se pueden usar objetos que simulen estos (Mock Objects). ● PHPUnit provee ayuda en la creación de objetos de este tipo, hasta el punto de generar uno con sólo métodos específicos simulados. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 33. Automatizando el proceso ● PHPUnit tiene la opción de integrarse con Selenium, para pruebas instrumentadas de aplicativos web. ● Existen también herramientas que lo integran dentro un sistema de integración continua: phpUnderControl (www.phpundercontrol.org) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 34. Recomendaciones ● Las pruebas deben usar las funciones de aserciones que provee PHPUnit: assertEquals(), assertTrue(), etc. ● Organizar las pruebas en un conjunto relacionado. ● Probar lo importante, lo que puede rendir dividendos en información. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 35. Selenium (selenium.openqa.org) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 36. ¿Qué es Selenium? ● Un sistema de pruebas de aplicativos web, simple, portable y extensible. ● Las pruebas pueden ser escritas como tablas en HTML, o en varios lenguajes de programación, y ejecutados en un navegador web. ● Puede automatizarse usando una herramienta de pruebas (ej. PHPUnit) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 37. Selenium Múltiples herramientas con un mismo objetivo: facilitar la prueba de los aplicativos web. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 38. Selenium IDE ● Es una extensión para Firefox que permite el grabar, editar y depurar pruebas. ● Puede seleccionar elementos de la página en forma selectiva. ● Puede completar automáticamente código o selecciones. ● Guarda pruebas en HTML o Ruby. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 39. Selenium RC ● Un servidor escrito en Java que acepta comandos para el navegador a través HTTP. ● Se usa para realizar pruebas automáticas empleando cualquiera de los lenguajes de programación populares (PHP, Java, Python, etc.) ● Puede iniciar selectivamente un navegador y ejecutar las pruebas. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 40. Selenium Grid ● Un sistema para ejecutar pruebas en paralelo, en múltiples máquinas y en ambientes heterogéneos. ● Permite ejecutar múltiples copias de Selenium RC, en la misma o múltiples plataformas. ● Integra y controla estas múltiples instancias, haciéndolas parecer como una sola, simplificando el manejo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 41. The Grinder (grinder.sf.net) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 42. Características ● Permite ejecutar pruebas de carga y estrés en forma distribuida. ● Puede hacer pruebas usando múltiples protocolos: HTTP, Servicios Web (SOAP, REST), JDBC, etc. ● Usa Jython para la escritura y automatización de las pruebas. ● Los resultados se ven gráficamente. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 43. Tipos de pruebas Pruebas de carga ● Si puede soportar una carga/uso determinado, con un tiempo de respuesta especificado. ● Útil para la comparación de sistemas, algoritmos y/o librerías (benchmarking). Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 44. Tipos de pruebas Pruebas de capacidad ● La carga máxima que puede soportar el sistema antes de una falla total. Pruebas funcionales ● Probar si el aplicativo tiene el comportamiento esperado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 45. Tipos de pruebas Pruebas de estrés ● Es una prueba de carga, pero ejecutada por un periodo extendido. ● Permite la evaluación de estabilidad y confiabilidad de un aplicativo, bajo un carga dada por un tiempo determinado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 46. Arquitectura (The Grinder) ● Contextos: Multi-hilos, multi-procesos ● Sistema distribuido ● Escalable Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 47. Manejo y control (The Grinder) ● Coordinación y vigilancia de los procesos. ● Consolidación de resultados entre múltiples instancias. ● Puede acumular estadísticas de lo que se le pida y reportarlas. ● Registros son almacenados para posterior análisis. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 48. Creación de pruebas (The Grinder) ● Puede grabar las interacciones de usuarios reales y usarlas como base para ejecutar pruebas. ● Usa Python (Jython), lo que le permite ser flexible y expresivo. ● La pruebas se pueden parametrizar y contener rutas de decisión o lazos de ejecución. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 49. Charlas relacionadas ● “Pog nunca mais! - ténicas e macetes para o desenvolvimento em php” Paulino Michelazzo ● “Integração continua com cruisecontrol e phpundercontrol” Diego Tremper ● “Qualidade no desenvolvimento de software com PHPUnit” Diego Tremper Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 50. Otros recursos ● OWASP (www.owasp.org) Comunidad enfocada en el problema de asegurar la seguridad de aplicativos web. ● PHP Security Consortium (phpsec.org) Todo acerca de seguridad de aplicativos escritos en PHP. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 51. Otros recursos ● SimpleTest (simpletest.org) Otra opción para hacer pruebas unitarias en PHP. ● Zend Studio (www.zend.com) Un IDE comercial que incluye depurador, gestor de proyectos, etc. ● Open source software testing tools (www.opensourcetesting.org) Lista de aplicativos para pruebas Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 52. ¡Gracias/Obrigado! A los organizadores del evento por la invitación y el entusiasmo. A todos ustedes por soportar mi “bla, bla, bla...”, sin dormirse. Jesús M. Castagnetto jmcastagnetto@php.net jesus@upch.edu.pe Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia