viernes, 8 de enero de 2021

¿Que es el Testing?

 

¿Que es el Testing?


En los siguientes artículos platicaremos un poco de que es el testing en el entorno empresarial para desarrollo de tecnología, por ejemplo testing web y testing mobile, estaremos enfocados en como funciona, donde se encuentra y si es realmente necesario, con la finalidad de ampliar el conocimiento e ir profundizando poco a poco en los conceptos que involucra el testing.

El testing es una parte muy importante a la hora de estar desarrollando sistemas, puede ir desde hacer una revisión de rutina, hasta ejecuciones de regresiones. Pero el testing no solo es “ejecutar unas pruebas y reportar resultados”, eso solo es una pequeña parte de todo lo que involucra el testing. 

       Pero entonces… ¿que es testing? Es la prueba integrada de un sistema donde se valida la calidad del producto desarrollado de inicio a fin encontrado anomalías (defects) que no corresponden a los requerimientos y se encuentran funcionando de manera errónea en nuestro sistema. 

      Para poder entender de una mejor manera el testing, revisaremos algunos de sus objetivos:

·        Prevenir defectos revisando la documentación del proyecto, (ejemplo: Requerimientos, user stories, diseño y codificación).

·        Verificar que todos los requerimientos del sistema se cumplan de manera correcta y sean claros.

·        Confirmar que la aplicación cumpla con las expectativas del Stakeholders y sea funcional para los usuarios finales.

·        Crear seguridad en el nivel de calidad de las pruebas.

·    Encontrar defectos y fallas en el sistema para reducir el riesgo de operación en producción y mejorar la calidad de nuestro software.

·     Brinda información a los Stakeholders para permitirles tomar decisiones mas acertadas y poder tener un mejor producto final.


Los objetivos del testing pueden variar dependiendo del proyecto, la profundidad a la cual se quiere revisar los componentes y el tipo de life cycle model que se está usando para desarrollar el software.

Para finalizar esta sección veamos la diferencia entre Testing y Debuggin son dos actividades que son similares, pero son realizados por diferentes equipos.


El Testing se realiza por el equipo de calidad con la finalidad de encontrar posibles fallas que son causadas por defectos en la aplicación/sistema.

El Debuggin se realiza por el equipo de desarrollo, con la finalidad de buscar, analizar y reparar (Fix) los defectos en el código.

Como podemos apreciar, el testing se encarga de evaluar el software y su funcionamiento a nivel aplicación, mientras que el debuggin se encarga de encontrar los defectos a nivel codigo.

Esto es un ciclo, por lo cual, una vez que el equipo de testing reporto un defecto y el equipo de desarrollo lo arreglo, el equipo de testing vuelve a realizar sus pruebas para confirmar que el defecto fue arreglado y que la aplicación esta funcionando de manera correcta.

En la Imagen 1 podemos encontrar de manera general como funciona este ciclo, mas adelante revisaremos a detalle cada sección que implica el testing y como esta involucrado en una gran parte del desarrollo del software.

Imagen 1 || Fuente: Luis Fernández


Como información complementaria podemos agregar los siguientes ejemplos.

      Pero entonces… ¿qué es testing? Es la prueba integrada de un sistema donde se valida la calidad del producto desarrollado de inicio a fin encontrado anomalías (defectos) que no corresponden a los requerimientos y se encuentran funcionando de manera errónea en nuestro sistema.

 

      Como introducción tenemos que la tecnología hoy en día está en todos lados, un ejemplo tu celular, pero eso es lo cotidiano, también podemos ver la tecnología implementada en bancos, aviones, hospitales, carros, entre muchos otros. Entonces… ¿cómo estamos seguros de que funcionan de manera correcta?

 

      Para contestar esta pregunta necesitamos entender un poco más sobre lo que provocan estos problemas. Algo muy común que nos encontramos día a día es que no siempre nuestras aplicaciones o programas no funcionan como deberían, y a esto se le puede llamar Defecto o Bug.

      El defecto o bug (más conocido por este último nombre) es el mal funcionamiento del software que usualmente lo detona un error humano. ¿Pero que conlleva este “defecto” ?, ¿Qué tan grave es? Todos los defectos se pueden categorizar con un nivel de prioridad y nivel severidad, con esto es medible su impacto. Por lo cual nosotros podemos tener diferentes niveles de impacto que varía desde bajo a alto. Y ¿qué puede impactar? Algunos puntos que se ven afectados son los siguientes.

 

·         Reputación de la empresa.

·         Dinero.

·         Tiempo.

·         Vidas.

 

Estos son solo los puntos generales e incluso el último punto puede que no lo creas, pero desglosemos punto por punto.

 

Reputación de la empresa – Supongamos que eres cliente de un banco, y en ese banco ocurre una situación global donde el sistema no rastrea correctamente las transacciones y muchos usuarios ven cargos extras o movimientos que ellos no hicieron. Es algo que puede ocurrir y algo muy sencillo puede hacer perder al banco la credibilidad, seriedad y lo más importante, la confianza de sus clientes. Algo así ocurrió en el 2012 con Knight Capital donde un fallo de software ejecuto de manera incorrecta transacciones de manera descontrolada, provocando una perdida de aproximadamente 500 millones de dólares en menos de 1 hora, aunado a esto, la compañía perdió credibilidad, haciendo que el valor de sus acciones en la bolsa pasase de valer de 4 dólares a menos de un dólar, brutal ¿cierto?.

 

Dinero – Nada como el ejemplo anterior por la cantidad de dinero perdida, pero tenemos otro ejemplo, nos remontamos a 1962, donde la NASA perdió 150 millones de dólares en el desastre del “Mariner 1”, ¿Qué ocurrió?, bueno en esta ocasión la transcripción del código fue errónea, faltando un guion que provoco que el sistema de navegación del Mariner 1 tratara de corregir un rumbo que no existía de manera automática, desatando el desastre. ¿Quién lo diría? Una línea que cambio todo.

 

Tiempo – Este punto también es importante, ya que, en relación con el defecto, uno puede perder tiempo tratando de encontrar algo que pudo identificarse con sus debidas pruebas en habientes de calidad, incrementando el costo de identificación y reparación del problema. O rastreando tu producto, en este ejemplo tenemos al problema de Intel, en el año de 1994 un fallo de diseño en un procesador Pentium, provoco una pérdida de 475 millones de dólares, No se diga del tiempo que se perdió con el Marine 1, pero bueno, aprendieron de este error para el Marine 2.

Vidas – No siempre se trata de dinero, en el 2003 un misil Patriot de USA derriba por accidente un avión de sus aliados británicos, dejando 14 fallecidos. Esto recordando al incidente de 1991 donde el sistema de defensa Patriot fallo al rastrear un ataque, dejando como baja 28 soldados. El reporte por parte del gobierno fue un problema en el sistema, entre mas tiempo estaba activo el sistema menos preciso era.


    Glosario:

·   Testing es el proceso llevado acabo por el equipo de calidad para confirmar la evaluación y valoración de un sistema.

·        Debuggin es el proceso llevado acabo por el equipo de desarrollo para buscar y encontrar errores.

·     Stackholders son las personas que están involucradas con el proyecto, con la finalidad de poder guiar el desarrollo de una aplicación/sistema que cumpla con las expectativas con las cuales fue planeada. Pueden existir diferentes tipos de Stackholders, que ayudan a determinar cual es la mejor manera de crear la aplicación.


Te invito a dejar tus comentarios para mejorar la información.

Gracias.

 

Autor: Luis Eduardo Fernández Rocha (Contacto LinkedIn) 

Para descargar el documento online da click aqui
Blog: raknarrok.blogspot.com
Autor: Luis Eduardo Fernández Rocha (Contacto LinkedIn)





No hay comentarios.:

Publicar un comentario