domingo, 23 de octubre de 2011

Herramientas de Pruebas de Software (I)

Este tema es uno de los mas importantes dentro del desarrollo de software ya que implementando las herramientas que describiré posteriormente podemos llegar a tener un desarrollo de software de calidad y ágil.

Todas estas herramientas están catalogadas dentro de las metodologías de desarrollo ágil de software, específicamente en la de Desarrollo Dirigido por Test, por tal motivo se deben de tomar muy en cuenta a la hora de empezar con el desarrollo de cualquier tipo de software, inclusive algunas las realizamos por inercia al estar desarrollando, y desconocemos que las estamos llevando a cabo.

Primeramente hay que dejar en claro que una Técnica de Prueba es el método de prueba que se utiliza para detectar errores en el software.
Prueba podemos definirlo como el proceso de ejecutar un programa para detectar errores en su funcionamiento, es muy importante saber que una prueba debe ser extremadamente creativa y se considera un desafío para quien lleva acabo este proceso, ya que una prueba NO es realizada con el fin de comprobar que el software funciona correctamente y hace lo que debe de hacer.

Un error vendría siendo el comportamiento inesperado de un programa es decir una acción totalmente diferente a la que esperamos.

Existen dos categorías de pruebas, que se clasifican dependiendo de lo que se quiera manipular:

  • Pruebas de Verificación:  Nos sirven para ir determinando que cumpla con los requerimientos iniciales que se establecieron antes de iniciar con el desarrollo y el producto final, cuando se realizan las pruebas de verificación se debe tener mucho cuidado ya a veces es confuso y no suele ser una tarea fácil determinar si se esta construyendo el software que se estableció en los requerimientos iniciales. Cabe destacar que en estas pruebas se vuelven un poco mas complejas ya que en su mayoría requieren de procedimientos matemáticos para llevarlas acabo.
  • Pruebas de Validación: Consisten en determinar si se está construyendo el sistema correcto, por lo general estas pruebas son mas informales.

Al hablar de pruebas podemos mencionar algunas características de éstas:

  • Primero se deben de llevar acabo pruebas a nivel modular y después pruebas integrales, es decir en conjunto todos los módulos.
  • Que sea un grupo independiente quien lleve acabo las pruebas (QSA – Quality Software Assurance)
  • Por cada proyecto de software se pueden seleccionar varias técnicas de pruebas dependiendo de la complejidad del proyecto.
  • Prueba y Depuración son totalmente diferentes, sin embargo una prueba debe incluir un proceso de depuración del cual hablaremos a mas detalle en otro post.
    La prueba tiene como objetivo mostrar que un programa tiene errores, y la depuración se encarga de encontrar estos errores y corregirlos.

Las pruebas son técnicas que nos facilitan la resolución de una gran variedad de situaciones en el desarrollo de un proyecto de software podemos mencionar dos de las mas importantes:

  • Comprobar la lógica interna de los componente de software.
  • Verificar el rendimiento y comportamiento del software así como los dominios de entrada y salida.

Cerraremos esta primera parte del tema Herramientas de Pruebas con las características de Facilidad de las Pruebas:

  • Operatividad (Cuanto mejor funcione, mas eficientemente se puede probar)
    • El sistema tiene pocos errores
    • Se considera la recuperación de errores
    • Ningún error bloquea la ejecución del programa
  • Observabilidad (Lo que ves es lo que pruebas)
    • Se genera una salida distinta para cada entrada
    • Es fácil identificar una condición de error
    • Se informa de los errores internos
    • El código fuente es accesible
  • Controlabilidad (Cuando mejor podamos controlar el programa, mas se puede automatizar)
    • Los formatos son consistentes
    • Se pueden automatizar las pruebas de acuerdo a la funcionalidad
  • Capacidad de descomposición (Controlando el ámbito, se pueden aislar los problemas)
    • El sistema se construye utilizando módulos independientes
    • Se pueden probar de acuerdo a la funcionalidad
  • Simplicidad (Cuando menos sea, mas rápido se hace)
    • Simplicidad Funcional, Estructural y de Código
  • Estabilidad (cuanto menos cambios, menos instrucciones)
    • Los cambios son poco frecuentes
    • Los cambios estarán controlados
    • Los Cambios no invalidan las pruebas anteriores
  • Facilidad de comprensión ( cuanto mas información, mas inteligentes serán las pruebas)
    • El diseño se ha entendido bien
    • Las dependencias entre componentes están claras
    • Se comunican cambios de diseñ6
    • La documentación es exacta bien organizada, especifica, detalladas y accesible.

Con esto terminamos el post de hoy que es la primera parte de Herramientas de Pruebas, al ser tan extenso decidí dividirlo en 3 partes.

Quiero dar un agradecimiento a la Profra. Nubia Figueroa por brindarnos el material de aprendizaje, ya que en base a la materia que nos imparte hemos desarrollado estos temas.

No hay comentarios:

Publicar un comentario