Empezando con TDD – Configurando el entorno (XAMPP + ECLIPSE PDT + PHPUNIT)

Ya hemos hablado en el blog de Scrum, de kanban, de herramientas de gestión de proyectos. Ahora quiero ir un poco más allá y empezar con TDD. Últimamente he estado adentrándome en encontrar una manera de desarrollar software con calidad y creo que utilizar Test Driven Development es un buen comienzo. Así que haya vamos.

Introducción

Test Driven Development (TDD) es una técnica de diseño e implementación de software incluida dentro de la metodología XP. Se basa en la idea de desarrollar pruebas, codificar y refactorizar el código construido.

TDD se basa en la idea de realizar pruebas unitarias para el código que debemos construir.

Basándome en el libro de “diseño ágil con TDD” podemos decir que la esencia de TDD es sencilla pero ponerla en práctica correctamente es cuestión de entrenamiento, como tantas otras cosas. El algoritmo TDD sólo tiene tres pasos:

  • Escribir la especificación del requisito (el ejemplo, el test).
  • Implementar el código según dicho ejemplo.
  • Refactorizar para eliminar duplicidad y hacer mejoras.

Obviamente la obtención de un buen resultado aplicando TDD depende de realizar un conjunto de pruebas unitarias que cubran todos los casos descritos en los requisitos. Es cierto que habrá que trabajar la técnica para realizar buenos test, siendo aquí donde reside una de las mayores dificultades de este método.

Instalando el entorno: XAMPP + ECLIPSE PDT + PHP UNIT

Para empezar con TDD he decidido utilizar como lenguaje PHP, como soy usuario de Windows las herramientas que utilizaremos aquí serán Xampp para tener un servidor de aplicaciones (Apache), Eclipse como IDE para escribir código y PHPUnit para ejecutar las pruebas.

Instalar Xampp

XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl.

Lo podemos descargar aquí: http://www.apachefriends.org/es/xampp.html

Cuando esté instalado tendremos algo como esto:

Instalar Eclipse PDT

Existen muchos IDE´s para programar en PHP, incluso podemos hacerlo con un editor de texto normal. Aquí mucha gente utiliza PHP Storm, Netbeans, yo e optado por Eclipse porque su Marketplace es genial.

Lo podemos descargar aquí http://www.eclipse.org/pdt/downloads/ o, si ya tenemos eclipse instalarnos la extensión PDT utilizando el Marketplace de eclipse (en la pestaña help -> eclipse Marketplace).

Cuando nos pregunten por el workspace debemos elegir C:\xampp\htdocs

Instalar PHPUnit

PHPUnit es un entorno para realizar pruebas unitarias en el lenguaje de programación PHP. Yo he instalado PTI – PHP Tool Integration es una serie de plugin para eclipse que puedes descargar e instalar del Marketplace. Esta es su página oficial: http://www.phpsrc.org/

Configurando un par de cosillas

Configurando PEAR

Para que todo funcione a la perfección debemos configurar PEAR, así que seguiremos estos pasos:

1º Descargar Pear de aquí  http://pear.php.net/go-pear.phar  y copiarlo en C:\xampp\php folder.

2º Abrir un terminal (cmd.exe) y escribir los siguientes comandos:

 cd c:\xampp\php
 php go-pear.phar

3º Ejecutar el fichero de registro C:\xampp\php\PEAR_ENV.reg para que PEAR termine de funcionar (crea una variable de entorno)

4º para ver si todo está correcto tecleamos en el terminal algo como esto: pear config-show

Configurando Eclipse PDT

Bien ya lo tenemos casi todo montado, xampp funcionando, eclipse con PDT instalado y con el workspace como en htdocs, phpunit instalado y pear instalado, ahora solo queda configurar eclipse.

Para ello en eclipse vamos a Windows -> preferences y en la en menú escogemos “PHP Executable” y pulsamos sobre Add

Ahora le decimos a eclipse que hemos tenemos PHP instalado en c:\xampp\php

Por ultimo seleccionamos “PHP Tools” -> “Library -> PEAR y añadimos Pear

Por ultimo solo nos queda configurar PHPUnit.

Configurando PHPUnit

En Windows -> preferences nos vamos al menú de “PHP Tools”-> “PHP Unit” y escogemos las siguientes opciones

Si nos apetece podemos abrir la ventana de PHPUnit en Windows -> “show view”

Tendremos un IDE como este:

Probando que todo funciona – Creando un proyecto

Llegado aquí ya lo tenemos todo funcionando (o eso creo) ya solo nos queda probar que todo está correctamente. Arrancamos Apache, y en eclipse creamos un nuevo proyecto llamado phpunittest.

Pulsamos sobre Next y en la pestaña “Library” añadimos PEAR

Ahora tenemos que habilitar PHPUnit, para ello hacemos clic con el botón derecho sobre el proyecto y nos vamos a “properties” allí en el menú “PHP Tools” -> “PHP Unit” marcamos el tick para habilitar PHPUnit en este proyecto.

Creamos una nueva carpeta donde vamos a ir almacenando los test. Así que hacemos clic derecho encima del proyecto pulsamos new -> folder

Creando nuestro primera clase de test

Lo que hacemos es sobre la carpeta test que acabamos de crear vamos a “new” -> “php file” y le damos el nombre que queramos, por ejemplo “miprimeraprueba.php”

Creando el código de nuestra primera prueba

Lo primero que debemos hacer es crear una clase de test a la que llamaremos “miprimeraprueba”, esta clase debe extender a “PHPUnit_Framework_TesCase”.  Una vez creada la clase solo tenemos que crear nuestro primer test para ver que todo funciona correctamente.

Aquí tenemos el código:

<?php
    class miprimeraprueba extends PHPUnit_Framework_TestCase
    {
        public function test()
        {
            $this->assertTrue(true);
        }
     }

Un test se declara de la misma manera que una función, la única condición es que debe tener un assert para comprobar. Nuestro primer assert será solamente una prueba donde para saber que PHPUnit funciona a la perfección.

*Es importante guardar antes de ejecutar el test, sino no estaremos haciendo las cosas bien.

Como vemos el test falla, si cambiamos false por true, guardamos y volvemos a ejecutar el test podemos asegurar que phpunit funciona a la perfección.

Llegados a este punto ya podemos utilizar PHPUnit para empezar con TDD. En los siguientes posts iremos comentando un poco más sobre cómo ir adentrándonos en esta técnica.

Referencias

Diseño ágil con TDD http://www.dirigidoportests.com/el-libro
http://blog.loftdigital.com/running-phpunit-tests-in-eclipse-pdt

Anuncios

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s