lunes, 17 de diciembre de 2012

Test Driven Development (TDD): Pruebas de desarrollador

.
Continuando con la serie sobre Test Driven Development (TDD), en este artículo se describen lineamientos y conceptos relacionados con las pruebas de desarrollo, práctica que es necesario dominar antes de implementar prácticas ágiles como TDD.

Antiguamente las pruebas de desarrollo se conocían como “pruebas unitarias”, sin embargo el concepto ha sido ampliado, dado que en hoy en día, cada vez más se ejecutan también pruebas integrales en los ambientes de desarrollo.

En el artículo se describen los lineamientos para implementar una práctica de pruebas de desarrollo y las cualidades que deben tener estas pruebas, en cuanto a que sean rápidas de configura y ejecutar, que sean aisladas (no dependan de pruebas previas o que deban ejecutarse en cierto orden), deben ejecutarse lo antes posible, sobre pequeñas unidades de código, entre otros aspectos.

Presentamos a continuación los lineamientos y cualidades que deben tener las pruebas de desarrollo:

1.- Concepto de pruebas de desarrollo

Las “Pruebas a nivel de desarrollo” se refiere a pruebas ejecutadas sobre el código fuente por los desarrolladores, sin la intervención de Testers especialistas. Usualmente esto se denomina “pruebas unitarias”, sin embargo, muchos desarrolladores ejecutan pruebas que van más allá de la unitaria, abarcando pruebas integrales también.

El Propósito es validar un elemento de implementación, es decir, una operación, clase o procedimiento almacenado, por medio una o un conjunto de pruebas unitarias.

Se diferencia de otras formas de pruebas en que se basa en el comportamiento esperado de unidades de código en lugar de los requisitos del sistema.

Formación en Agile Software Testing

Curso online Agile Tester


Como software tester, necesitas estar formado en técnicas de vanguardia en metodologías ágiles y software testing.

Con este curso, aprenderás cuales son los elementos de un marco de trabajo ágil, que es el Agile Testing, la metodología, sus procesos, roles y entregables.

También aprenderás a gestionar un proyecto Agile Testing en Jira, incluyendo instalación, configuración, creación del proyecto, creación de casos de prueba, consultas y seguimiento de la ejecución y reportes de incidencias (bugs).



2.- Necesidad de implementar la práctica de pruebas de desarrollo antes de implantar TDD

Se recomienda que una organización que desee implementar un enfoque TDD, establezca previamente una práctica de pruebas de desarrollo, para familiarizar al equipo de analistas programadores con los conceptos y prácticas de pruebas de Software.

Es recomendado dar formación y entrenamiento en métodos de pruebas unitarias e integrales.

3.- Las herramientas de software son críticas

El ejecutar ciclos iterativos de pruebas de desarrollo de forma rápida no es factible sino se cuenta con herramientas de automatización de pruebas unitarias.

Por ende es primordial seleccionar e implementar una herramienta e impartir formación al equipo en su uso, adaptar las prácticas al uso de la herramienta y adaptar las características especificas de la organización.

Lo mejor es hacer esto en una escala pequeña, mucho más pequeña que la base de código completa a ser escrito por un desarrollador en el curso de una iteración. Esto se puede hacer para una sola operación, un campo añadido a una interfaz de usuario, un procedimiento almacenado, etc Como la base de código está construido de forma incremental, nuevas pruebas serán escritos y pruebas existentes podrían ser revisada para probar el comportamiento adicional.

4.- Lineamientos para la implementación de una práctica de pruebas unitarias

  • Deben estar enfocadas en conseguir errores en el software, no en corregirlos.
  • Deben ejecutarse lo antes posible y frecuentemente, el costo de hacer una corrección se incrementa exponencialmente en función del tiempo que tardan en conseguirse las causas de los errores. A mayor plazo de tiempo entre programación y prueba unitaria, más difícil será conseguir la causa.
  • Deben ejecutarse sobre pequeñas unidades de código, para así localizar la causa de los errores con mayor facilidad.
  • La extensión de las pruebas debe corresponder con el riesgo para el usuario final asociado a una falla. A mayor riesgo mayor extensión deben tener las pruebas.

Por ejemplo, debe invertirse más tiempo en probar un algoritmo cuya falla pudiera poner en riesgo la seguridad (por ejemplo un sistema que mide dosis de radiaciones o que controla la navegación de una aeronave) que probar una funcionalidad para cambiar el tamaño de letra en la misma aplicación.

Contar con una práctica establecida de pruebas unitarias proporciona seguridad al equipo que podrán identificar y corregir errores rápidamente. Gracias a esto, el equipo se siente más seguro de modificar el código sin miedo a dañar algo.

5.- Cualidades que debe tener una buena prueba unitaria

  • Rápida de configurar y ejecutar.
  • Ser sencillo regresar los datos a su estado original (Limpieza de la prueba).
  • Poderse ejecutar de forma aislada, en cualquier orden.
  • Ser fácil de entender y reproducir.
  • El nombre del caso de prueba debe ser consistente con el objetivo e informativo.
  • Utilizar datos de prueba de fácil lectura y entendimiento.
  • Utilizar datos reales, aunque artificiales (no utilizar datos del ambiente de producción).
  • Tener cohesión, cada prueba se ocupa de un solo asunto.

Próximas entregas

En próximas entregas de la serie de TDD, se describirán cuales son las áreas difíciles de probar. Adicionalmente, en otra entrega describiremos el concepto de Refactoring, el cual es esencial en la Programación Extrema (XP) y en Test Driven Development.

<< Artículo anterior: TDD Como llevarlo a la práctica



¿Y tu? ¿Que opinas?

¿Que opinión tienes sobre la implementación de prácticas de pruebas unitarias e integrales a ejecutar por el mismo equipo de desarrollo? (antes de entregar al equipo de pruebas), ¿Lo has intentado?, ¿Como ha sido la adopción de los analistas programadores de los conceptos de prueba?, ¿Cual fue el resultado? ¿Que cambiarías o sugerirías?.

¿Buscas más información de metodologías ágiles?

¿Quieres obtener completamente gratis y directamente en tu correo electrónico plantillas, artículos y otros recursos de gerencia de proyectos y metodologías ágiles?, entonces presiona "suscríbete" a continuación.

Suscríbete a la lista de correo electrónico:


Vía FeedBurner, se abrirá una nueva ventana

Tambíen puedes seguirnos al Twitter @PMOInformatica o página de Facebook

¿Estás interesado en productos Amazon sobre Desarrollo Ágil de Software?












Kanban
Autor: David J Anderson
>> España (amazon.es)
>> Latinoámerica (amazon.com)
Código Limpio
Autor: Robert C. Martin
>>España(amazon.es)
>> Latinoámerica (amazon.com)
Gestión Ágil de Proyectos
Autor: Pablo Lledó
>>España(amazon.es)
>> Latinoámerica (amazon.com)
Diseño ágil con TDD
Autor: Carlos Ble Jurado
>> España(amazon.es)
>> Latinoámerica (amazon.com)



Otros artículos de esta serie

¿Desea obtener más información sobre TDD?, le invitamos a visitar también los siguientes artículos en el Blog “La Oficina de Proyectos de Informática”.

>> Test Driven Development (TDD): Ventajas y desventajas

>> Test Driven Development (TDD): 9 retos para su implementación y cómo hacerles frente

>> Test Driven Development (TDD): Desarrollo de software guiado por pruebas

Desarrollo ágil, Scrum y Test Driven Development

>> Los 5 valores de la programación extrema

>> 5 Preguntas y respuestas sobre el Feature Driven Development (FDD)

>> Plantillas Scrum: historias de usuario y criterios de aceptación

>> Scrum de Scrum: Desarrollo ágil para grandes proyectos

>> 5 métricas de desempeño para proyectos de desarrollo ágil y Scrum

>> Herramientas de software para gestión de proyectos de desarrollo ágil

>> El Desarrollo ágil en un entorno de fechas y presupuestos predefinidos

>> Los Programas de Certificación del Scrum Alliance

>> Preguntas y respuestas sobre Scrum Alliance

>> Gestión de Proyectos PMI y el Desarrollo Ágil: ¿Que tienen en común?

>> Metodologías de desarrollo ágil

No hay comentarios :

Publicar un comentario

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.