ES KAsi UN blog

Blog de Unkasoft, donde hablamos de programación de juegos para móviles, advergaming, marketing móvil, la industria de los videojuegos, metodologías ágiles y todos aquellos temas que nos preocupan en nuestro día a día

24 septiembre 2007

Test Unitarios en J2ME

En el desarrollo de proyectos es muy importante el mantenimiento y más aun las tareas de debug asociadas tanto a la creación como al mantenimiento de cualquier proyecto. Siempre debemos crear buenos casos de prueba que permitan comprobar la validez de nuestro código según lo vamos creando, para facilitar el mantenimiento del mismo y para simplificar radicalmente la cantidad de problemas y fallos que pueda dar.

Cuando programamos en Java podemos comprobar nuestras clases utilizando JUnit; es un conjunto de clases que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera. También se utiliza en pruebas de regresión, para comprobar que el nuevo código no afecta al funcionamiento del código anterior. Este framework permite que el programador se centre en la realización de los test y en los resultados que debe obtener, gestionando los test de forma sencilla y permitiendo su ejecución automática.

Normalmente, la ejecución de test unitarios es necesaria para poder asumir la mantenibilidad de un proyecto, pues con ellos, cualquier desarrollador puede conocer cuando los cambios que está realizando afectan al resto de código del proyecto. En otras ocasiones, los test unitarios sirven como guía a otros programadores, y a uno mismo, de cómo funciona un código específico, pues un test, además de salvarnos de bugs, permite conocer qué estructura y usos tiene el propio código que se prueba.

El framework de JUnit utiliza las capacidades de reflexión en tiempo de ejecución para encontrar y ejecutar todos los test sin necesitar un test case. Sin embargo, los entornos basados en CLDC pierden la reflexión, con lo que no es posible descubrir los métodos en tiempo de ejecución, por ello, necesitamos distintas soluciones que permitan realizan test unitarios de forma sencilla para el programador.

El problema que tiene testear estas aplicaciones es que Java ME es básicamente un JDK 1.0. Hasta JUnit 3.8.X el mecanismo que usaba este framework para identificar los métodos que debía ejecutar como parte del test era la reflexión, característica que se añadió en Java 1.2 y que no está presente en Java ME. Menos esperanzas hay todavía de usar anotaciones, el mecanismo que emplean las versiones 4.0 y posteriores de JUnit, en Java ME.

La siguiente tabla resume las capacidades y características de las distintas soluciones para utilizar toda la potencia posible de JUnit sobre J2ME, a continuación se comenta brevemente cada alternativa:

Ejemplos / Complejidad

¿Ant? / ¿Maven?

¿Open source?

¿Ejecución en dispositivo?

Requerimientos

Peso (Kb)

MoMEUnit

Pocos / sencillo

Si

Si

Si

CLDC1.1

26

SonyEricsson JUnit

Muchos / complejo

Si

NO

NO. Solo con Debug-on-device

CLDC 1.0

20

J2MEUnit

Muchos / medio

Si

Si

Si

CLDC 1.1

17

JMUnit

Varios / medio

NO

Si

Si

CLDC1.0
CLDC 1.1

12,5
12,8

CLDCUnit

Pocos / sencillo?

Si / Si

Si

Si?

CLDC 1.1

?

J2MEUnit

Solo dispone de una versión del framework, compatible con CLDC11.
Parecido a JMUnit, para crear una suite de test necesitamos sobrecargar el metodo suite() utilizando la librería TestMethod. Esto hace que la creación de testsuites sea un poco más compleja

Alternativamente, como en MoMEUnit, J2MEUnit permite añadir los test o testSuites como propiedades del MIDlet para así ejecutarlos directamente sin tener que crearnos una MIDlet programaticamente. El TestRunnner MIDlet no proporciona resultados tan sencillos gráficamente, fáciles de ver, como JMUnit o MoMEUnit, pero sin embargo, en la consola proporciona más información que éstos.

MoME Unit

MoMEUnit es una herramienta muy similar a JUnit pero orientada a aplicaciones Java ME. Emplea tres métodos estandarizados en cada test, uno para preparar el test, otro para ejecutarlo y otro para realizar "limpieza". De este modo los test se hacen por clase más que por método. Aunque no es la solución óptima, los desarrolladores del framework afirman que es el mejor balance que se puede obtener.

MoME permite crear TestSuites con todos los test que queramos para ejecutaros a la vez; pero para que un Test comparta la fixture con otros es necesasrio que creemos una clase por test a ejecutar. El problema es tener tantas clases para todos los test.
La creación de los test es muy sencilla, es decir, es más fácil añadir test desde MoME que desde J2MEUnit.

SE Junit

La API de Sony Ericsson para ejecutar JUnit sobre J2ME. Dispone de mucha documentación y varios ejemplos de test. Permite utilizar directamente los test creados para JUnit 3.8.x.

SE JUnit requiere, para ejecutar los test, el emulador de SonyEricsson o cualquier otro compatible con WTK. lo más cercano a la ejecución en un dispositivo real es utilizar DebugOnDevice de SE que solo es compatible con algunos móviles SonyEricsson

El uso de SE Mobile Unit no es muy apropiado en casos específicos en los que se necesita añadir funcionalidades al código fuente que se está utilizando. Al no ser open-source puede que en ocasiones no se ajuste a las necesidades existentes.

JMUnit

Este framework es parecido a J2MEUnit en cuanto al uso que se hace de los test y cómo éstos se ejecutan. Principal problema de este framework es que no soporta Ant.

Para contruir una suite, cada clase que contenga los test deberá sobrecargar el método test() que contendrá un case para cada método (test) a ejecutar.Las clases abstractas TestCase y TestSuite heredan directamente de MIDlet, con lo que fácilmente se pueden ejecutar en el emulador o en un dispositivo real.

CLDCUnit

Parte de MicroEmulator, un emulador de J2ME basado en WTK. Permite ejecutar aplicaciones J2ME como aplicaciones stand-alone de J2SE o como applets java en el navegador Web. Es decir, permite hacer que nuestro navegador se comporte como un móvil y ejecute aplicaciones J2ME.

CLDCUnit es muy parecido a J2MEUnit y parte de su código fuente; conservando una interfaz muy semejante.

CONCLUSIÓN

Comparando las distintas APIs, las posibilidades que ofrecen y las necesidades que se requieren, pienso que destacan dos de las comentadas.:

MoMEUnit Ofrece mucha información muy usable de los test realizados. Se porta fácilmente al móvil y es compatible con Ant. Desventaja (o no), necesita que cada clase de test contenga un solo método de test utilizando mucha herencia entre clases.

JMEUnit. (futura unión entre J2MEUnit y JMUnit) JMUnit no soporta Ant pero la interfaz es parecida a la de MoMEUnit. J2MEUnit no ofrece información muy usable. Ambas framework requieren creación de test un poco compleja. J2MEUnit sí soporta Ant; es por esto que la fusión de ambas frameworks sería muy interesante (en ello estan trabajando desde hace un año más o menos).

REFERENCIAS

J2MEUnit http://j2meunit.sourceforge.net/doc.html

Unit de SonyEricsson http://developer.sonyericsson.com/getDocument.do?docId=85608

JMUnit http://sourceforge.net/projects/jmunit/

MoMEUnit http://momeunit.sourceforge.net/

CLDCUnit http://pyx4me.com/snapshot/pyx4me/pyx4me-cldcunit/index.html

Etiquetas: , , , , , ,


19 septiembre 2007

La vaca


Como muchos sabéis, soy dado a leer libros algunos más formales otros un poco menos. La biblioteca que se puede hacer de libros de gestión, liderazgo, etc, no tiene fin. Pero en la última misión, mi amigo Iván me comentó si había leído el libro de La Vaca, pensaba que había, visto o al menos, escuchado de todos ellos. Los sombreros, los peces, el queso que no sabemos donde esta, funky, las estrategias de los defines… pues me había dejado la vaca.

El libro en concreto habla sobre una historia –o leyenda urbana, ¿Quién sabe?- que comentaré brevemente, el libro en concreto esta escrito por Camilo Cruz, Ph.D. Seguro que lo podéis encontrar y echar un vistazo, antes de seguir.

Como en todas las historias hay un Maestro y un Discípulo –habitualmente orientales-, en esta el discípulo debe ilustrarse sobre romper las ataduras que hay en este mundo, las cuales impiden que tenga éxito.
Para ello acuden a un poblado donde hay una familia, que viven en una casa lúgubre y no cuentan con más riqueza que la necesaria para sobrevivir.
Su fortuna superaba a la del resto de vecinos debido a que contaban con una Vaca, algo que les daba suficiente alimento para subsistir. La vieja vaca puede proveer poco, no obstante, es el único bien de esta familia.
El maestro decide durante la noche decide, con un poco de mala uva, cortar el cuello al pobre animal –imagino que a las protectoras de animales no les haría gracia-. Pero bueno, al ser un viejo maestro nos diría: “no se ha muerto, esta en otra vida mejor”.
El discípulo, tras escandalizarse, le pregunta porque lo ha hecho sin recibir respuesta, al más estilo Bruce Lee.
Al cabo de un año vuelven, la familia reside en una bonita casa y con un gran huerto. Se acerca el maestro y el discípulo a preguntar al cabeza de familia sobre su nueva situación. El mismo, comenta que tras la desgracia de la vaca, se pusieron a cultivar el campo y ha plantearse unos cambios en su vida, que no hubieran asumido de seguir viviendo la vaca. Ese cambio hizo que mejoraran.

El libro, en concreto, trata de mostrar apoyado en esta historia como encontramos ataduras –vacas- que nos impiden seguir adelante y nos dejan en una zona de comodidad. Una cosa es totalmente cierta, si siempre hacemos las cosas de una forma, siempre lograremos el mismo resultado. En la vida hay que afrontar cambios día a día, evitar la rutina. Esos cambios, no tienen porque ser radicales, como en la historia, podemos disfrutarlos poco a poco. Hacer un poco de ejercicio, comenzar un nuevo hobby, leer un libro como hacíamos antes, plantear mejorar la forma en la que trabajamos día a día.

Si no, recordad que vendrá el maestro, verá que tienes una vaca y ya sabéis lo que pasó a la última.

Etiquetas:


17 septiembre 2007

Nueva selección de personal

Estamos haciendo una nueva selección de personal en Unkasoft, necesitamos más gente que quiera formar parte de la empresa y trabajar en nuestras oficinas. Hemos puesto la oferta en varios sitios pero también la vamos a poner aqui por si alguien se anima a venir a conocernos en persona.

Programador Senior de videojuegos.
Ubicación:
Salamanca

Puesto vacante:
Programador Senior de videojuegos

Descripción de la oferta:
Buscamos incorporar a nuestra plantilla un programador senior para el desarrollo de videojuegos móviles.
Asumirás la responsabilidad del desarrollo en todas sus fases, desde análisis del juego, programación, hasta optimización en los dispositivos finales, usando las últimas herramientas y metodologías de desarrollo.

Por nuestra parte te ofrecemos un entorno de trabajo cordial y joven, horario flexible, formacion en idiomas, tiempo de investigación personal y un plan profesional a largo plazo en una joven start-up.

Imprescindible:
* Experiencia en programación de videojuegos 2D en cualquier lenguaje y plataforma (se valorará Java, J2ME y sobre todo C/C++)
* Conocimientos de usuario de CVS o Subversion
* Gran aficionado a jugar videojuegos
* Aficionado a programar videojuegos (se valorará si has participado en proyectos personales u open source de videojuegos)
* Residir en Salamanca o alrededores.
* Inglés hablado y escrito.

También valoraremos:
* Experiencia en programación de aplicationes para teléfonos móviles
* Conocimientos de Symbian, Brew y/o Mophun
* Ejemplos de programación de videojuegos
* Conocimientos básicos de matemáticas: álgebra, geometría, trigonometría, etc.
* Conocimientos básicos de física: mecánica clásica
* Conocimientos básicos de Inteligencia artificial: máquinas de estados, lógica difusa, etc.
* Conocimientos de metodologías ágiles de desarrollo: eXtreme Programming y SCRUM
* Análisis y diseño con UML
* Procesos de calidad: CMMi
* Experiencia en pruebas unitarias con JUnit y/o J2MEUnit.

Director de Arte.

Descripción de la oferta:
Buscamos incorporar a nuestra plantilla a un profesional para dirigir el equipo de desarrollo gráfico de Unkasoft.
Asumirás la responsabilidad del producto terminado desde el punto de vista gráfico y de usabilidad.
Estarías al cargo de parte de la estética de la empresa, portal web, el portal de juegos y sobre todo del estilo gráfico de los juegos que se desarrollen.

Por nuestra parte te ofrecemos un entorno de trabajo cordial y joven, horario flexible, formacion en idiomas, tiempo de investigación personal y un plan profesional a largo plazo en una empresa emergente.

Imprescindible:
Formación en diseño gráfico, dibujo artístico o similar.
Experiencia mínima de 2 años trabajando como diseñador gráfico senior o director de arte, preferiblemente en el sector de los videojuegos. Experiencia en la utilización de Macromedia Freehand y Adobe Photoshop.
Capacidad para el trabajo en equipo. Capacidad de comunicación.
Experiencia en la gestión/coordinación de equipos de trabajo.
Residir en Salamanca o alrededores.
Inglés hablado y escrito.

También valoraremos:
Experiencia en el entorno móvil, conocimientos en formatos de imágen 2d, parametros de calidad en formatos de pantalla pequeños.
Conocimiento de Maya/XSI/3D Studio Max y Macromedia Flash.
Conocimiento de gráficos tipo pixel y pixel-art.
Dominio de dibujo, ilustración y color.
Experiencia en diseño de personajes y creación de storyboards.
Experiencia como creativo publicitario.
Conocimiento del sector de los videojuegos.

Los interesados, enviad el CV a info@unkasoft.com

Para ambos puestos es imprescindible el trabajo en nuestras oficinas de Salamanca.

04 septiembre 2007

Quedada de desarrolladores en Salamanca

Ya somos unas cuantas empresas las que nos movemos en Salamanca relacionadas con el mundo del videojuego (enne, lemonquest y unkasoft) y hace unos días se planteaba la posibilidad de hacer una quedada para conocernos en persona, vernos las jetas, hablar de temas comunes, tomar unas cervecitas, en definitiva compartir un rato agradable. Lógicamente este llamamiento no es solo para las empresas, también está destinado a todo el mundo que le interesen los videojuegos, la programación, el diseño o ninguna de estas cosas y que simplemente quiera partirnos la cara porque un juego nuestro no le funcionó.

En primer momento esta quedada surge como un "beers & blogs" aunque por mi experiencia suele ser más interesante una reunión con un sitio donde reunirse, poder enseñar trabajos, presentarse, etc, para luego pasar a algo más informal. Sea como sea seguro que lo pasamos bien.

Queda entonces por decidir el día y el lugar, cualquier día por la tarde estaría bien, aunque se podría hacer un sábado por la mañana y comer de pinchos (en Salamanca esto va de maravilla :) por ejemplo.

Se aceptan (y se esperan) sugerencias. Cuando tengamos un día decidido lo publicaremos aquí con suficiente antelación.

Etiquetas:


This page is powered by Blogger. Isn't yours?