viernes, 15 de marzo de 2013

Conociendo el Proceso de Testing


En nuestro ambiente laboral escuchamos en repetidas ocasiones la necesidad de “entregar” productos y/o software de calidad, pero tenemos claro ¿qué es calidad de software?. Dos conceptos que frecuentemente se relacionan con la calidad de software son Pruebas de Software (Software Testing) y Aseguramiento de Calidad (Quality Assurance).  Al mirar la relación entre Testing y Calidad podemos denotar que es importante realizar Testing puesto que nos ayuda  a medir la calidad del software y reducir el riesgo en cualquier sistema. La calidad no sólo comprende  los aspectos del sistema o producto, también cubre los procesos y cómo éstos pueden ser mejorados.
En estas líneas voy a enfocarme en el proceso de Testing plasmando algunas ideas básicas sobre el mismo.  Iniciemos por la pregunta:

 ¿Qué es  Testing?


La percepción común del proceso de Testing consiste en correr un Script de pruebas o ejecutar la aplicación para encontrar errores, generalmente se dice que puede ser realizado por cualquier persona. En mi opinión, esta percepción no es del todo cierta, Testing es mucho más que eso;  es un proceso que incluye actividades antes, durante y después de la ejecución de pruebas, adicional mente el Testing contribuye en la búsqueda/prevención de defectos y proporciona información sobre la calidad de un sistema/aplicación para poder tener un grado determinado de confianza sobre el mismo.




Otros Conceptos: 
Error, Defecto y Fallo.

La norma IEEE 610,  define Error como: “Acción humana que produce un resultado incorrecto” por ejemplo, un error de programación.

Este “Error” va a producir un Defecto (defect, bug) en el software, que significa desperfecto en un componente o sistema; puede causar que el componente o sistema falle en desempeñar las funciones requeridas, por ejemplo una sentencia o una definición de datos incorrecta.

Si se localiza un defecto durante una ejecución puede causar un fallo en el componente o sistema. Fallo (Failure) es la manifestación física o funcional de un defecto. Si un defecto es encontrado durante la ejecución de una aplicación puede producir un fallo, es decir  la desviación de un componente o sistema respecto de la prestación, servicios o resultado esperado.

En palabras más sencillas, Testing Es:

- La prueba es un proceso, no es solamente una actividad de ejecución. 

- El proceso se lleva a cabo durante todo el ciclo de vida intentando encontrar defectos desde el inicio hasta el fin, reduciendo costos y aportando calidad.

- Actividades estáticas y dinámicas: hay pruebas donde se ejecuta el código y la aplicación que se está probando, pero igual mediante actividades estáticas se  pueden encontrar defectos, por ejemplo realizando la revisión de documentos y código.

- Es clave identificar qué vamos a probar, seleccionar condiciones de prueba, diseño de casos de prueba, así como definición clara de criterios de finalización de las mismas.

- Determinar que se cumple con los requisitos solicitados y que el software es útil al usuario y le ayuda a cumplir con sus tareas.

- La detección de defectos nos ayuda a identificar riesgos asociados al poner el software en operación, así como a mejorar  el desarrollo de procesos para no cometer errores en el futuro.


“Un error introduce un defecto, un defecto causa un fallo”

Principios del Testing


1. El testing demuestra la presencia de errores: Mediante el testing podemos demostrar  la presencia de errores, pero no la ausencia de los mismos.

2. El testing exhaustivo es imposible: Probar todas las combinaciones de entrada y condiciones es imposible (solamente en casos triviales).

3. Testing Temprano: Las actividades de prueba deben comenzar tan pronto como sea posible en el software o sistema. Las pruebas estáticas permiten prevenir que los defectos aparezcan en etapas posteriores.

4. Agrupamiento de defectos: Un pequeño número  de módulos contiene la mayoría de los defectos, éstos tienden a agruparse  en un área de código compleja y delicada.

5. Paradoja del pesticida:Si las pruebas se repiten una y otra vez con el mismo conjunto de casos de prueba ya no se encontrarán nuevos errores. Pruebas nuevas y diferentes deben ser ejecutadas para encontrar potenciales defectos.

6. Testing es dependiente del contexto: Las pruebas se realizan de manera diferente del contexto. No todos los sistemas tienen el mismo nivel de riesgo y no todos los problemas tienen el mismo impacto.

7. Falacia sobre ausencia de los errores: Al construir  un sistema y corregir los defectos no quiere decir que sea un buen sistema, éste no sirve de nada si no cumple con las necesidades y expectativas del cliente.

Otra percepción errónea en el proceso de pruebas es la siguiente: el desarrollador “construye” y el tester “destruye”, o en otras palabras que van en contra, sin embargo ambas actividades son constructivas pues están encaminadas a lograr la “calidad del software” y “satisfacción del cliente”.

Y ahora que conocen un poco más sobre el proceso de Testing, que opinan?. Quizá es hora de cambiar un poco la mentalidad y entender que no es solamente ejecutar unas pruebas funcionales; como Unidad de Testing estamos trabajando en mejorar el proceso, dando énfasis en fortalecer nuestro conocimiento del negocio en los diferentes proyectos y así dar un valor agregado a la organización.

Para finalizar, debo confesar que cuando me pidieron que escribiera el editorial no tenía claro un tema, y me dije; “por qué no contarles un poco sobre el trabajo que realizo”, espero haya sido de su agrado. Gracias !!!



Pilar Andrea Forero Sánchez
Líder Unidad de Testing
SoftManagement S.A





No hay comentarios:

Publicar un comentario