Este post fue escrito unos años atrás. Puede tener información desactualizada y podría no reflejar mis opiniones actuales.
Durante los cerca de 4 años que tengo en el mundo del Aseguramiento de la Calidad de Software siempre me he preguntado y he intentado estar al día en cuanto técnicas, metodologías, terminología y herramientas que estan “de moda” o simplemente averiguando hacia donde va la tendencia.
Desde que empecé en esto, casi empíricamente, he encontrado dentro de varios artículos a lo largo de estos 4 años varias técnicas, términos, metodologías, pero de entre todas ellas aparece una palabra común: automatización.
Parece ser que la tendencia en este mundo de la Calidad de Software apunta hacia la automatización de los procesos de pruebas.
¿Que es Automatización?
Pero primero veamos qué es automatización enfocada a las pruebas de Software. Si hacemos una búsqueda rápida en internet, podremos encontrar varios artículos definiéndolo, pero básicamente, el término se refiere a la acción de preparar y realizar pruebas a un Software, utilizando otro software independiente al que se está probando. Palabras más palabras menos.
Bueno, podemos decir que la automatización es lo nuevo, lo actual, que es a donde la Calidad de Software se dirige. Pero primero, tenemos que preguntarnos, automatizar es lo que necesito?
¿Automatizar es para todos?
¿Queremos automatizar? ¿necesitamos automatizar? ¿para qué automatizar? ¿cuándo automatizar? ¿porqué automatizar? ¿cuánto cuesta automatizar? En la poca experiencia que tengo he llegado a una conclusión: automatizar no es para todos y no es necesario siempre. A continuación enumero algunas ventajas y desventajas por las cuales nos podemos guiar si la automatización es para nosotros, para este caso, para este proyecto o no.
Ventajas
- Ahorro de tiempo en el futuro. Aunque requiere mayor tiempo inicial, ahorra tiempo hacia el futuro, con pruebas repetitivas o tareas diarias o regulares. Ya que una vez el proceso esta listo y funcionando podemos solo correr el software y dejarlo trabajando mientras nos dedicamos a otras cosas. En este caso, puede requerir sólo mantenimiento mínimo conforme la aplicación probada cambia.
- Eliminación del tedio y el tiempo invertido en realizar pruebas. Digamos que tenemos que probar una serie de 100 casos de prueba diferentes. Podemos preparar los datos y probar todos y cada uno. Cosa que, dependiendo de la prueba, podría requerir demasiado tiempo haciéndolo manualmente.
Elimina el tedio al tester de hacer pruebas inumerables. Como en el caso anterior, al ser automático, quien está probando se puede dedicar a otras cosas mientras sus pruebas se realizan y así dedicar su tiempo en revisar resultados y buscar otros errores o problemas. - Mejor muestreo y aleatoriedad. Mejor y mayor número de pruebas. Al ocupar menor tiempo en generar un script que realice una prueba, se pueden realizar 100, 1000 o más pruebas bajo diferentes condiciones y así, tener una mejor confiabilidad en las pruebas que se realizan. Es mejor realizar pruebas con 1000 usuarios que con 100 y es mejor usar 100 fotos con diferentes tamaños, formatos, etc que con 10.
Desventajas
- Requiere mayor tiempo inicial. Al requerir en muchos casos grabar pruebas, editar o teclear scripts, debuggear, etc. Puede requerir, de inicio, una gran cantidad de tiempo. Por lo que comenzar con las pruebas, puede tomar más tiempo que haciéndolo manualmente.
- Requiere mayor inversión. Hay tanto software comercial como libre para esta tarea, por lo tanto, debemos analizar nuestras necesidades y nuestros recursos y ver qué software del que se encuentra disponible cubre completamente lo que nuestro proyecto requiere. ¿El software que voy a probar es de escritorio o es web? ¿mi personal está capacitado en este software de pruebas? ¿cuanto puedo gastar en capacitación y compra de licencias? etc., son las preguntas que debemos hacernos.
- Inversión de tiempo. Si mi software es demasiado cambiante a través del tiempo puede que no me convenga ya que voy a pasar más tiempo actualizando mis scripts que realizando las pruebas necesarias a mi software.
En conclusión, antes de decidir si utilizar la automatización y el software que vas a usar para hacerlo en tu próximo proyecto debemos de revisar lo siguiente:
- “La aplicación que quiero probar, ¿será más o menos fija durante el tiempo, por una cantidad del tiempo moderado?” Automatiza, de tal manera de que en pruebas futuras solo generes nuevos datos y comiences a probar.
- “¿Cuántas pruebas necesito hacer para este proyecto? ¿cuantos casos de prueba hay por cada prueba? o ¿con cuántos usuarios diferentes necesito probar?” Por ejemplo, si un campo tiene 80 combinaciones diferentes, definitivamente, automatiza. Si necesitas solo correr 3 pruebas, no vale la pena perder el tiempo escribiendo código, realízalas manualmente.
- “Vamos a trabajar en una aplicación que hay que estar revisando diariamente su estado”. Crea pruebas automatizadas para que puedas correrlas diariamente y te dediques a otras cosas mientras corren.
- “Mis compañeros y yo estamos trabajando en un proyecto que tiene que quedar completamente listo, probado y corregido para hoy al final del día.” ¡¿Que estás esperando?! comienza a hacer las pruebas; no pierdas tiempo en escribir pruebas, correrlas, corregirlas para hasta entonces, comenzar a probar.
En fin, hay que ponderar todos estos puntos y conocer hasta que grado te va a beneficiar esa automatización en el corto y en el largo plazo, tanto en esfuerzo como en tiempo y dinero. Asi pues, como lo dije anteriormente, la automatización no aplica, a mi manera de ver, para todos los casos. Depende del tiempo que se tenga para probar a corto y a largo plazo, del esfuerzo y dinero que quieras invertir en ello, de las habilidades de tu equipo o las tuyas propias y de las necesidades propias del proyecto. Pero, definitivamente, la automatización es una gran herramienta que puede ayudarte mucho en tus tareas diarias y ayudarte a entregar productos más “limpios”.