¿Qué hacemos para reducir los errores y entregar un producto de calidad?.

Roger Einstoss
braintly
Published in
3 min readJun 16, 2020
Photo by Ben White on Unsplash

Antes de leer este post te recomiendo leer ¿Qué es un bug?. Teniendo en claro esa terminología podemos avanzar :)

Los errores ocurren. Es un hecho. Alguien se comió un murciélago en Wuhan y ahora está gran parte del planeta encerrado en su casa. Hablando en serio, somos humanos y nos equivocamos. Por eso en el desarrollo de software hay un proceso llamado en general “QA” mediante el cual, de forma iterativa e incremental, se realizan tests (manuales y automatizados) del software para asegurar su buen funcionamiento y calidad (QA=Quality Assurance)

En Braintly trabajamos todos los proyectos con metodología AGILE, que por cada sprint o iteración se genera un entregable, que puede no ser para el cliente necesariamente pero sí nos da un input para hacer pruebas internas. Cada entregable atraviesa un proceso de pruebas mediante las cuales nos aseguramos que la funcionalidad en cuestión se comporte como esperamos que lo haga, si esto no es así se devuelve la funcionalidad al equipo de desarrollo.

Existen muchos tipos de tests, más de 30 con seguridad, pero intentaré describir los más utilizados y claves para llegar a buen puerto con un software:

Tests Funcionales

Los tests funcionales son aquellos que se realizan de forma manual o automática para determinar que la pieza de software que se está probando produce el resultado para el cual fue desarrollado.

Para poder realizar este tipo de pruebas funcionales, es necesario diseñar los escenarios de prueba. Mediante los mismos documentamos cuál es el paso a paso para probar todos features del software. De esta forma, el proceso de testing es reproducible una y otra vez y podemos estar seguros de que siempre probamos el software completo y de la misma forma.

Una vez que tenemos los escenarios de prueba listos también se hace un checklist de las funcionalidades que forman parte del camino crítico. Estas funcionalidades deben funcionar si o si para que el software este operativo. Este checklist debe ser recorrido antes de cada nueva implementación. Si, como un avión antes de despegar. Por ejemplo, en un ecommerce, una prueba crítica sería poder hacer una compra. Un listado puede fallar, pero si no podes realizar una compra el ecommerce no sirve básicamente para nada.

Tests no funcionales

Un ejemplo de test no funcional es un test de carga o stress. Muchas veces la pregunta “Cuánta gente se banca mi sitio sin caerse” genera muchísima ansiedad en los clientes. Para responder esta pregunta existen este tipo de tests. Si bien son muy útiles lo que hacen es simular el comportamiento de los usuarios, es imposible predecirlo con exactitud.

Otro ejemplo de este tipo de tests son los tests de seguridad, que ayudan a comprender en profundidad qué tan seguro es el software.

Tests de Regresión

Un tipo de test muy común en el mundo del software son los tests de regresión, los mismos se utilizan para asegurar que una nueva funcionalidad no deje sin funcionar una vieja funcionalidad. Parece ilógico, pero un buen código se trata de reutilizar y no duplicar. Esto a veces puede producir este tipo de errores que son salvados gracias a los tests de regresión.

Otro tipo de test muy utilizado para aprobar el funcionamiento y estética de los diseños es el de test de interfaz.

Mucha información, ¿no? Y hay muchos más tipos de tests. Lógicamente no se hacen todos en todos los software, por una cuestión de costos y tiempos. Probablemente si estás desarrollando un software para un nuevo avión de BOEING hagas todos los tests (o no, miren el 737-MAX), pero si estás haciendo un software administrativo o ecommerce hagas los tests necesarios para asegurar la calidad y buen funcionamiento de ese tipo de producto.

Lo más importante es entender que el software atraviesa un proceso de pruebas y mejoras antes de salir a producción. Esto no lo convierte en infalible, no quiere decir que no puede haber ningún tipo de error, simplemente reducimos la posibilidad de aparición de los mismos lo máximo posible.

--

--

Roger Einstoss
braintly

CEO @ Braintly Software Boutique 👋 | Engineer 🤓| #AsadoAdvocate 🤗 | Creating #amazing #digital #products with #passion ❤️