+54 911 66509220

Noticias

Noticias
11 Jun 2015

Un vistazo a Codeception

/
Creado por
/
Comentarios0

En estos días me lancé al testing de una aplicación web desarrollada en PHP. Esta aplicación se conecta a una Api Rest, y la Api consulta una base de datos MongoDB.

Investigando sobre herramientas de testing, dí con Codeception. Como reza su página:

codeconception mobile testing

Y promete facilitar la codificación de pruebas unitarias, funcionales, de aceptación. Además se puede testear Apis (REST y SOAP), Base de Datos (incluyendo MongoDB!!!), y más.

era todo lo que necesitaba en una sola herramienta !! toda una promesa Codeception.

La instalación es realmente muy sencilla, en pocos minutos ya estamos escribiendo código.

Con la instalación se crea una carpeta llamada tests, y dentro de esta carpeta se crea una estructura básica para codificar pruebas unitarias, funcionales y de aceptación. Con esto ya podemos arrancar.

La clave de Codeception son sus actores, Codeception entiende los test como acciones que ejecuta una persona. Entonces, un UnitTester ejecuta acciones y testea código, un FunctionalTester, es un tester calificado que prueba la aplicación en su conjunto, y un AcceptanceTester interactúa con la interfaz.

Como podemos ver estos actores tienen diferentes capacidades. Estas capacidades también se pueden extender, es decir podemos agregar más acciones a las que tienen por defecto.

Veamos el caso de un test de aceptación. Vamos a testear el clásico Login, para crear el test se ejecuta el comando:
php codecept.phar generate:cept acceptance login
Esto generará el test llamado loginCept.php, ya que todos los test tienen la extensión Cept, y esta se agrega automáticamente.

Luego podríamos escribir algo así:

<?php
include ‘_bootstrap.php’;
$I = new AcceptanceTester($scenario);
$I->wantTo(‘Ingresar al sitio’);
$I->amOnPage(‘/Login’);
$I->fillField(‘Usuario[usuario]’, admin);
$I->fillField(‘Usuario[clave]’, 123456);
$I->click(‘login’);
?>

Con este ejemplo podemos ver algunas cosas:
– Primero que la sintaxis es muy sencilla ya que Codeception piensa que cualquier usuario debería poder escribir un test de aceptación.
– Segundo, algo que dije al principio, Codeception entiende los test como acciones de un usuario.
– Tercero, que codeception entiende php y está orientado a objetos

Las opciones para correr los tests son bastante amplias, se pueden guardar (opcional) en archivos xml o html, se puede correr una suite, o un test específico, etc. El resultado sería algo más o menos así:

codeconception mobile testing

Si necesitáramos extender las acciones de un usuario, algo que seguramente vamos a necesitar, por ejemplo para testear una api, o una bd, etc. Esto se hace extendiendo el módulo deseado (rest, mongodb, webdriver, etc)

Por ejemplo, para añadir el módulo REST:

class_name: FunctionalTester
modules:
enabled: [Filesystem, FunctionalHelper, REST]
config:
REST:
url: https://api.mercadolibre.com/

Esto se hace en el archivo de configuración de cada suite, en este caso en functional.suite.yml. Codeception automáticamente hace un build y agrega los método de REST al actor FunctionalTester.php), con esto ya estamos en condiciones de invocar a los método que provee el módulo REST

He dado un pantallazo de esta herramienta que me ha sido de gran utilidad, hay mucho más para ver, pero excede el objetivo de este post. Espero les sirva.

Mariela Vargas
https://ar.linkedin.com/pub/mariela-vargas/11/17b/785/en

___

Leave a Reply

Your email address will not be published. Required fields are marked *

*

* Copy This Password *

* Type Or Paste Password Here *

20,315 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.