Mostofreddy

RAQS – Run Automatic PHP QA Script

Comentarios 0 Tags , , , , , , , , Categorias Programacion

{lang: 'es-419'}

RAQS es un script bash que estoy haciendo que permite automatizar la ejecución de varios script de QA para PHP tales como PHPUnit, PHPloc, PHPCPD, PHP Code Sniffer, de esta forma, al cronear RAQS podemos tomar las métricas necesarias para seguir nuestros proyectos.

Actuamente esta en la versión 0.1 y algunas de sus características futuras seran:

* Almacenamiento de métricas en sqllite y mysql

* Nuevas opciones de configuración

* Integración con SimpleTest y PHP Depend

* GUI para visualización de las métricas tomadas

Para utilizarlo primero debemos bajar el proyecto del repositorio de github

git clone git://github.com/mostofreddy/RAQS.git
chmod +x raqs.sh
./raqs.sh projectName PathToProject PathToTest PathToLogs

Para ver la ayuda podemos hacer

./raqs --help

Espero que les sea de utilidad

Configurar PHPUnit facilmente

Comentarios 0 Tags , Categorias Programacion

{lang: 'es-419'}

Bueno, lo reconozco… este post es un clásico post para recordar como hacerlo en otro momento, de todas formas estoy seguro que a muchos les resultara útil.

La idea que tenía en mente era poder configurar todo lo relacionado a phpunit en un xml, la suerte es que phpunit posee este feature!

En este XML podemos indicar un monton de cosas, entre ellas definir los distintos suites de pruebas que tendrá nuestro proyecto, que tipo de log va a exportar, si colorea el código o no, si utiliza colores para mostrar el resultado en consola, el path del archivo bootStarp, etc.

El formato del xml es muy sencillo, veamos

<phpunit
         backupGlobals="false"
         backupStaticAttributes="true"
         bootstrap="/path/to/bootstrap.php"
         colors="false"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="true"
         stopOnFailure="true"
         syntaxCheck="false"
         testSuiteLoaderClass="PHPUnit_Runner_StandardTestSuiteLoader">
    <testsuites>
        <testsuite name="Nombre de la Suite 1">
            <file>pathTo/classTest.php</file>
        </testsuite>
    </testsuites>
    <logging>
        <log type="coverage-html" target="/tmp/coverage.html" charset="UTF-8" yui="true" highlight="false" lowUpperBound="35" highLowerBound="70"/>
    </logging>
    <php>
        <ini name="memory_limit" value="256"/>
        <const name="foo" value="bar"/>
        <var name="foo" value="bar"/>
    </php>
</phpunit>

Y la forma de indicarle al phpunit que archivo de configuracion usar es:


phpunit --configuration pathTo/config.xml

Como puede verse  en el nodo phpunit cada atributo representa una configuración de phpunit para su ejecución.

Luego existen otros nodos

- testsuites: aca definimos los distintos suites que tendra nuestro proyecto y las clases de teste que componen cada uno

- logging: indica que tipo log exportara phpunit, hay varias opciones:

  • coverage-html
  • coverage-xml
  • json
  • tap
  • junit

- php: aca podemos definir distintas cosas

  • variables de php.ini
  • constantes
  • variables globales

Bueno, con esto a mi me alcanza, existen otros nodos (para definir listeners por ejemplo) que los pueden buscar en el Apéndice C de la documentación de PHPUnit

PHPUnit y Code Coverage

Comentarios 2 Tags , , Categorias Programacion

{lang: 'es-419'}

Esta semana comencé a utilizar un feature de PHPUnit que nunca le había prestado atención, el Code Coverage (cobertura de código/código cubierto ¿?), la cosa es que un compañero de trabajo la estaba usando y me llama mucho la atención.

¿Por que? porque este feature indica el porcentaje de código que fue cubierto por el test unitario (wow!) esto sumado a una UI agradable y de fácil compresión (doblemente wow!) logra maravillas.

Una de las cosas que mas me agrado es que no solo muestra el % de código testeado, sino que muestra el código de la clase coloreada en verde las lineas testeadas y en rojo las no testeadas.

En fin, excelente feature de PHPUnit para los que realizamos TDD o tenemos que testear código legacy

Instalando PHPUnit en Ubuntu y Windows

Comentarios 1 Tags , Categorias Programacion

{lang: 'es-419'}

PHPUnit es un excelente Framework para realizar test untitarios de nuestras clases PHP como tambien asi de nuestras bases de datos. Además otros framework de teste se han integrado a el como es el caso de Selenium Ide (test funcionales).

Para mas detalles revisen su sitio oficial ;)

Bueno, la instalación en Ubuntu es bastante sencilla, el único inconveniente que pueden encontrar es que no posean las dependencias necesarias. PHPUnit se instala desde PEAR, por lo tanto debemos estar seguros de tener la ultima versión instalada (no saben como instalarla? vean mi otro post Instalar PHP Pear en Ubuntu)

Una vez instalado PEAR registramos los canales de PHPUnit y Symfony y luego instalamos el Framework de PHPUnit con todas sus dependecias. En mi caso tuve que registrar el canal de Symfony ya que PHPUnit utiliza la libreria YAML y no se conectaba al repositorio correctamente, al registrar el canal no tuve mas problemas


$ sudo pear channel-update pear.php.net
$ sudo pear channel-discover pear.symfony-project.com
$ sudo pear install --a phpunit/PHPUnit

Si el último comando no funciona probar con


$ sudo pear install --alldeps phpunit/PHPUnit

La instalación en windows es exactamente igual y lo hacemos desde una linea de comandos (cmd)

Como extra, podríamos instalar las dependencias de Base de datos para hace que nuestros test se conecten a la BD


$ sudo pear install pear/MDB2#mysql

Si por casualidad tienen la necesidad de desinstalar PHPUnit deben hacer


$ sudo pear unistall phpunit/PHPUnit

Espero que les sea de utilidad.

Update 21/04/2010

He instalado nuevamente phpunit y he tenido problemas ya que no estaba instalado Suhosin, al instalarlo simplemente se soluciono