Innovando que es gerundio

Entradas clasificadas como ‘Django’

Okkum Feature Manager Beta

2 Abril 2009 · 4 comentarios

Hoy hemos terminado la versión 0.1 de Okkum Feature Manager, esta aplicación nos permite gestionar los proyectos de acuerdo a los principios de la metodología que nosotros mismo hemos creado para adaptar la FDD a la norma ISO 15504 y nuestra propia idiosincracia. Esto de las metodologías es como las licencias Open Source, no eres nadie en el mundo de la tecnología si no tienes la tuya propia. Nosotros todavia no hemos sacado la licencia, pero no dudeis que todo llegará.

Las principales características de la aplicación, además de que esta desarrollada sobre Django con mucho AJAX (JQuery) son:

  • multiproyecto,
  • multidioma,
  • basado en funcionalidades (como unidad mínima de planificación),
  • las funcionalidades se agrupan en Conjuntos,
  • los conjuntos, a su vez, se agrupan en Superconjuntos,
  • cada funcionalidad tiene 5 posibles estados (iniciado, codificado, documentado, testeado, aprobado),
  • cada funcionalidad tiene una estimación temporal,
  • la aplicación calcula automáticamente el grado de realización del proyecto,
  • las funcionalidades se asignan a un usuario,
  • las funcionalidades se planifican temporalmente en iteraciones,
  • el usuario tiene un panel de “sus labores” que contiene las funcionalidades que tiene asignadas,
  • cada proyecto tiene integrada una Wiki para la gestión de la documentación interna,
  • la mayor parte del trabajo puede realizarse en dos pantallas, debido al uso intensivo de JQuery que nos permite desde reordenar las prioridades de un conjunto arrastrando las funcionalidades, hasta asignar una funcionalidad a una iteración arrastrando y soltando.

Es un resumen aproximado de lo que hemos hecho hasta ahora, en poco más de quince días y con una sola programadora, Isa, la productividad de django es espectacular y la calidad es la más beneficiada al usar un framework contrastado. Además, Marta, ha realizado un diseño impresionante, así que es una herramienta útil, potente, sencilla y bonita ¿Se puede pedir más?

La idea, como ya he dicho en otras ocasiones es liberar el código de la aplicación enseguida que sea más estable y hayamos depurado algunos detalles, lo cual es cuestión de unas cuantas semanas (puede que incluso un mes o dos) de uso intensivo en nuestra empresa.

Categorías: Django · okkum
Etiquetado: , ,

GFO, Gestión Funcionalidades by Okkum

3 Marzo 2009 · Dejar un comentario

OkkumFeatureManager

OkkumFeatureManager

En el último apunte comenté que habiamos decidido adaptar un mix de metodologías agiles a nuestra gestión de proyectos. Hemos cogido la metodología FDD y la norma ISO 15504, las hemos metido dentro de la coctelera y el resultado ha sido GFO. El trabajo de casar la norma con nuestra metodología no esta completa, pero avanza a buen ritmo. Lo que avanza a mejor ritmo todavía gracias a Django es nuestra herramienta de gestión de proyectos basada en GFO (como me gusta esto de tener nuestras propias siglas, no eres nadie en el mundo de la tecnología sino las tienes, nosotros como somos más web 2.0, le poniamos nombres a las cosas, por ejemplo Hawai a nuestra web de tramitación de vacaciones, aunque la tentación ha sido irresistible esta vez). (más…)

Categorías: Django · okkum
Etiquetado: , , , , , , ,

Testing con Django (más alla de unittest)

16 Febrero 2009 · Dejar un comentario

Django tiene una serie de utilidades muy interesantes para el testeo de webs desarrolladas con el framework, podemos aprender sobre como usarlas aquí. En la documentación de Django, menciona además dos utilidades para testeo desde el navegador Twill y Selenium. Así, que ni corto ni perezoso, he dedicado varias horas del fin de semana a probar estas dos aplicaciones. Mi primera impresión con ambas fue: “esto es imprescindible”. Twill y Selenium son un lenguaje de comandos para realizar las acciones más habituales de navegación web, que nos permiten ejecutar una secuencia de forma automática sobre una página.

En el caso de Twill, su uso es sencillo y potentente, pero requiere conocimientos de Python y se ejecuta desde linea de comandos. Selenium, es el sueño de un programador web. Es un add-on de Firefox, que graba los clicks, textos y demás acciones sobre la página y después podemos reproducirlas tantas veces como sea necesario, sin necesidad de volver a realizar el proceso, Selenium lo hace por nosotros. Además, permite realizar algunas comprobaciones, como por ejemplo que el titulo de la página es el esperado, que existe determinado texto en la página, un id, etc. Además, podemos convertir nuestros guiones a varios lenguajes, para que se usen como test unitarios, uno de ellos es Python.

Hemos empezado a usar esta herramienta para generar nuestros tests funcionales, la solución completa ofrecida por SeleniumHQ, es SeleniumIDE y Selenium Remote Control. Selenium RC, es un servidor que ejecuta los scripts de test creados desde el IDE.  Como podeis ver una solución más que completa.

Instalar la aplicación es trivial, una vez instalada, vamos a Herramientas/Selenium IDE y ponernos a grabar (botón rojo de la parte superior derecha). Todo lo que hagamos en nuestro Firefox a partir de este momento hasta que paremos la grabación (con el mismo botón rojo) queda registrado y puede volver a ejecutarse. La grabación genera un código que podemos manipular fácilmente y que nos permitirá controlar el flujo de ejecución del test.

Aqui tenemos un ejemplo (ya en python) del guión que se genera para ir desde la página de inicio de djangoproject.com hasta la primera página del tutorial (http://docs.djangoproject.com/en/dev/intro/tutorial01/#intro-tutorial01), donde comprobamos que el texto “Writing your first Django app, part 1″  esta presente.

    sel = self.selenium
    sel.open("/")
    self.assertEqual("Django | The Web framework for perfectionists with deadlines", sel.get_title())
    sel.click("link=Documentation")
    sel.wait_for_page_to_load("30000")
    self.assertEqual("Django | Django documentation | Django Documentation", sel.get_title())
    sel.click("//div[@id='s-first-steps']/ul/li[2]/a[1]/em")
    sel.wait_for_page_to_load("30000")
    self.assertEqual("Django | Writing your first Django app, part 1 | Django Documentation", sel.get_title())
    try: self.failUnless(sel.is_text_present("Writing your first Django app, part 1"))
    except AssertionError, e: self.verificationErrors.append(str(e))

Como comentaba, usaremos Selenium para crear nuestros tests funcionales, para agilizar las pruebas que hacemos al programar, para documentar las pruebas y el funcionamiento de la aplicación, pero también para test de carga, para comprobar que el tiempo de respuesta de la aplicación es aceptable y cualquier cosa más que se nos ocurra. En los últimos meses, especialmente desde que estamos inmersos en la evaluación de SPICE, estamos prestando mucha atención a la capacidad de predecir y documentar (en la medida de lo posible) nuestro trabajo, los test unitarios y funcionales son una prioridad en mi agenda, creo que Selenium se convertirá en una herramienta al nivel de Subversion o Netbeans en Okkum, simplemente parte integral de nuestra forma de trabajar.


Categorías: Django · software libre
Etiquetado: , , , ,

Pinax, acercando la web 2.0

10 Febrero 2009 · Dejar un comentario

Ya comente que estábamos realizando una comunidad virtual alrededor de Turistec, la hemos basado en Pinax, un proyecto desarrollado con django. Es una interesantisima plataforma sobre la que construir aplicaciones en las que la interacción entre los usuarios y la creación de contenidos es primordial. (más…)

Categorías: Django · open source
Etiquetado: , , , ,