Pruebas unitarias con phpunit

Hoy el día el desarrollo del software involucra más y más tareas no directamente relacionadas con el desarrollo de código para el producto final sino también con todo el ciclo evolutivo para gestionar este desarrollo.

Una de las tareas más importantes involucradas en la gestión de este código son las pruebas sobre el código generado. Según el modelo de desarrollo de software empleado estas pruebas pueden jugar un papel más o menos central, pero siempre importante. Los dos tipos de pruebas más empleados son los test funcionales y las pruebas unitarias. En los test funcionales se evalúa la aplicación como un todo y se comprueba que se alcanzan unos determinados resultados tras realizar una serie de acciones sobre la aplicación. En las pruebas unitarias al contrario se analiza una porción de código que pueda ser analizada de manera aislada, como por ejemplo funciones y métodos. A los que después de pasarle unos parámetros de entrada debemos obtener otros parámetros de salida claramente definidos.

Ambos tipos de pruebas pueden servir a muchos niveles en el ciclo evolutivo de la aplicación: documentación, pruebas de regresión, análisis de bugs etc

Vamos a comentar brevemente el uso de PHPUnit para el desarrollo de pruebas unitarias en PHP

PHPUnit es un paquete que podemos encontrar en PEAR, para instalarlo desde una máquina debian/ubuntu ejecutamos como root:

# apt-get update
# apt-get install php-pear

(pear instalado)

# pear upgrade pear

(actualizar a las últimas versiones de pear)

# pear channel-discover pear.phpunit.de
# pear install phpunit/PHPUnit

(phpunit instalado)

Generalmente PEAR se instalará en /usr/share/php y si has instalado PHPUnit con las líneas de antes deberías poder ver un directorio llamado precisamente PHPUnit dentro de este directorio con las fuentes de PHPUnit.

Hay que recordar que por defecto php incluye el directorio de PEAR dentro del “path” de rutas donde debe buscar ficheros a incluir con requieres o includes. Así que para incluir la librería de PHPUnit dentro de tus scripts en php basta con poner

require_once ‘PHPUnit/Framework.php’;

Ejemplo:

<?php
require_once ‘PHPUnit/Framework.php’;

class ArrayTest extends PHPUnit_Framework_TestCase
{
public function testNewArrayIsEmpty()
{
// Create the Array fixture.
$fixture = array();

// Assert that the size of the Array fixture is 0.
$this->assertEquals(0, sizeof($fixture));
}

public function testArrayContainsAnElement()
{
// Create the Array fixture.
$fixture = array();

// Add an element to the Array fixture.
$fixture[] = ‘Element’;

// Assert that the size of the Array fixture is 1.
$this->assertEquals(1, sizeof($fixture));
}
}
?>

Para ejecutar las pruebas de esta clase debemos ejecutar

$ phpunit ArrayTest.php

Si hemos grabado el script anterior con este nombre (ArrayTest.php) en el directorio actual.

phpunit es un script php que se instala con PHPUnit. Su función es buscar y ejecutar las pruebas que tengamos definidas en el fichero que le pasamos como argumento. Finalmente devolverá un informe sobre el estado de las pruebas y los errores que se ha ido encontrando. Lo aconsejable es tener preparadas incluso antes de empezar a desarrollar métodos o funciones, pruebas sobre estos y a medida que se vaya probando el código o solventando bugs en el código (incluso antes de corregir el problema) ir generando pruebas adicionales sobre las distintas partes del código. Antes de enviar nada a producción deberemos ejecutar todas las pruebas.

La realización de pruebas unitarias es mucho más compleja de lo que se presenta aquí pero este es un buen punto de partida para ir cogiendo la costumbre de realizar este tipo de tareas en proyectos más o menos críticos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *