Prueba de los programas

 


Autor: Jose Alfredo Castillo - Estudiante de la UFG

Las pruebas de software son una parte integral del ciclo de vida del desarrollo de software (SDLC). Las pruebas son la forma en que puede estar seguro acerca de la funcionalidad, el rendimiento y la experiencia del usuario. Ya sea que realice sus pruebas manualmente o a través de la automatización, cuanto antes y más a menudo pueda llevar a cabo pruebas, más probable es que identifique los errores o fallas, no sólo ahorrándole a usted y a su equipo de posibles simulacros de incendio (caída del sistema) más adelante, sino también asegurándose de que su aplicación de software haya sido revisada y auditada a fondo antes de que esté frente a sus usuarios (en producción).

Una vez codificados los programas es el momento de probarlos.

Existen muchos tipos de pruebas:
  • Prueba unitaria.
  • Prueba de integración.
  • Prueba de función.
  • Prueba de desempeño.
  • Prueba de aceptación.
  • Prueba de instalación.
Ademas,  es importante considerar, que la etapa de prueba no es la primera instancia en que se localizan defectos; también las revisiones de requerimientos y diseño contribuyen a descubrir los problemas en instancias tempranas del desarrollo.

Defectos y Fallas del software

Por lo general se interpreta que el software no hace lo que especifican los requerimientos. La falla puede ser el resultado de alguna de varias razones:
  • La especificación puede ser errónea o puede haberse omitido algún requerimiento.
  • La especificación puede contener un requerimiento que es imposible de implementar con el software y el hardware preescrito.
  • El diseño del sistema puede contener un defecto.
  • El diseño del programa puede contener un defecto. ✓El código del programa puede estar errado.
Nota importante: Una falla es el resultado de uno o más defectos en algunos aspectos del sistema.

Tipos de Defectos

Una de las cosas importantes al realizar las pruebas, es saber que clase de defectos se están buscando:
  • Defectos Algorítmicos: Se produce cuando el algoritmo o la lógica de un componente no producen la salida apropiada para una entrada dada, debido a que algo esta mal en los pasos del procesamiento.
  • Defectos de Sintaxis: Se realiza mientras se buscan defectos algorítmicos. En este caso, se desea asegurar que se han utilizado apropiadamente las estructuras del lenguaje de programación.
  • Defectos de computación y de precisión: Ocurre cuando la implementación de una fórmula es errónea o no calcula el resultado con el grado requerido de exactitud. Ejemplo: Mezcla de flotantes y enteros resultado inesperado.
  • Defectos de Documentación: Es cuando la documentación no corresponde con lo que el programa realmente hace. Se tiende a confiar en la documentación al pasar de una etapa a otra y al modificar.
  • Defectos por estrés o sobrecarga: Se producen cuando las estructuras (longitud de colas, tamaño de almacenamiento temporarios (buffers), a la dimensión de tablas y así sucesivamente) se llenan hasta sobrepasar su capacidad especifica.
  • Defectos de capacidad o de limites: Ocurre cuando el desempeño del sistema se vuelve inaceptable a medida que la actividad del sistema alcanza su limite especificado. Ej.: Sistema diseñado con 32 dispositivos, se debe probar si funciona con los 32 dispositivos trabajando.
  • Defecto de rendimiento o desempeño: Ocurre cuando el sistema no opera a la velocidad preescrita por los requerimientos.
  • Defectos de sincronización o de coordinación: Al desarrollar sistemas de tiempo real, una consideración critica es la coordinación de los varios procesos que se ejecutan simultáneamente o una secuencia rigurosa definida.
  • Defectos de recuperación: Pueden ocurrir cuando se encuentra una falla y el sistema no se comporta como los diseñadores desean que lo haga, o como el lo quiere el cliente.
  • Defecto de Hardware y Software de sistemas: Cuando el hardware suministrado y el software de sistemas no trabajan realmente de acuerdo con las condiciones operativas y procedimientos documentados.
  • Defectos de estándares y procedimientos: El código será revisado para ver si se han seguido los estándares y procedimientos.

Aspectos de la Prueba


¿Quién realiza las pruebas? Muchas veces se manifiestan dificultades para separar los sentimientos personales del proceso de prueba. Por lo tanto, a menudo se utiliza un equipo de prueba independiente.

Justificación de un equipo independiente de prueba:
  • Es claro que nadie entrega su código para la prueba sino piensa que el código a sido realizado de acuerdo con la especificación, pero se puede estar demasiado apegado al código como para ser realmente objetivos y reconocer algunos de los defectos más sutiles.
  • Las pruebas pueden llevarse concurrentemente con la codificación; el equipo de prueba verifica los componentes a medida que son completados y comienza a consolidarlos mientras el plantel de programación continua codificando los demás.

Tipos de pruebas

Prueba Unitaria

El proceso es similar al que se utiliza, cuando se prueba un programa asignado como tarea en la universidad:
  1. Se examina el código, leyendo minuciosamente, tratando de localizar defectos en los algoritmos, los datos y la sintaxis.
  2. Comparar el código con las especificaciones y con el diseño hasta tener la certeza de considerar todos los casos relevantes.
  3. Finalmente se desarrollan los casos de prueba para demostrar que las entradas se convierten realmente en las salidas esperadas.
Éxito de las revisiones de código:
Jones (1991), realiza una investigación que denota la importancia de la inspección como una técnica de localización de defectos.

Prueba de Integración

Cuando se llega a un convencimiento de los componentes individuales están trabajando correctamente y se satisfacen los objetivos, se los combina en un sistema activo.

Este enfoque permite realizar pruebas desde los componentes elementales a los más generales.

Ademas, este método es útil cuando muchos de los componentes de bajo nivel son rutinas utilitarias de uso general que son invocados a menudo por otros componentes.

-------------------------------------------------------------------------------------------------------------------------
Acontinuación, comparto un video de Youtube para ampliar la explicación de esta temática:



Este tema es muy amplio, pero he tratado de explicarles los aspectos más relevantes de esta temática.
Por el momento esto seria todo; sin embargo, esperen más aportes sobre " las pruebas de los programas", seguiré publicando más foros.

Saludos.

Comentarios