En la actualidad los sistemas de producción son más ágiles que nunca. El mercado manda y los ciclos de desarrollo son cada vez más cortos. Por ello es importante que las empresas cuenten con un sistema de calidad que permita ciclos más cortos a la vez que se mantiene la excelencia.
Aquí es donde entra en juego el Quality Assurance (QA), que podríamos traducir como garantía de calidad o aseguramiento de calidad. Es un enfoque de calidad basado en los procesos (más que en el producto) cuya filosofía es hacer todo lo necesario para que el resultado final cumpla los requisitos de calidad, asegurando la repetibilidad del proceso.
El QA ofrece una serie de metodologías, herramientas y mecanismos para facilitar esta tarea y asegurar tanto un producto como procesos de calidad. Si hablamos de desarrollo de software, una parte fundamental de dicho proceso es el testing. En muchos casos, la automatización del proceso de testing puede ser la solución para reducir el plazo de go-to-market.
Pero ¿en qué consiste el testing automático?


¿Qué es el testing automático?
El testing automático no es más que la aplicación de la automatización a los procesos de testing. No siempre es posible alcanzar los plazos previstos haciendo testing de forma manual, por lo que es necesario optar por este tipo de soluciones para ganar agilidad y reducir los plazos de lanzamiento de software.
En Centum somos expertos en QA y en este tipo de procesos, que desarrollamos de acuerdo al siguiente esquema:
Pasos para implantar un sistema de testing automático.
Toma de requisitos.
La tarea de análisis y definición de los requisitos es fundamental para el desarrollo de una buena automatización. Así, en esta fase inicial se documentarán los procesos actuales (manuales) lo mejor posible para definir el modelo de requisitos, cómo se realizan los test manuales, cómo se desea que sea el proceso automático, etc.
Toda esta información obtenida tanto de la documentación como del personal responsable definirá el marco sobre el que comenzar a desarrollar la automatización del testing. A partir de esta fase se elaborará el plan de pruebas a realizar.
Creación del testplan.
En base al testplan actual y a toda la información obtenida en la fase anterior se crea el nuevo testplan. Este testplan debe definir a nivel máquina cómo serán las pruebas a realizar, por lo que una parte importante en este punto es definir los parámetros que guiarán el testing.
Estos parámetros o KPIs deben ser objetivos, medibles y relevantes para el test. Es decir, que ofrezcan resultados relevantes pero que al mismo tiempo sean viables para la automatización. Se crearán los casos de pruebas con sus pasos (steps). Durante la fase de diseño también se especificarán los datos de entrada necesarios para que los casos de pruebas definidos puedan ser ejecutados (ya sea buscando el éxito de la prueba, o bien el fallo).
Conversión del testplan a KPIs automatizables.
Como hemos comentado en el paso anterior, es fundamental definir unos buenos KPIs que se ajusten a los test a realizar, pero también que sean adecuados para el proceso de optimización (objetivos y medibles de forma automática). El objetivo es que las pruebas que se diseñen puedan encontrar los posibles defectos en el software en el menor tiempo posible y de forma óptima en cuanto a uso de recursos.
Creación de scripts.
En este paso se trabajará en el propio desarrollo de los test a realizar, escenarios, casos, así como todos los scripts que se usarán en el proceso de testing.
Proceso iterativo de ejecución del testing y ajuste de scripts.
En esta fase se ejecutarán las pruebas diseñadas anteriormente siguiendo los procesos establecidos. Una parte importante en esta fase es también la detección de situaciones anómalas no contempladas previamente.
Cuando el resultado objetivo de una prueba no sea el esperado se reportará para que el equipo de desarrollo tenga constancia de dicho error y se realicen las modificaciones oportunas. La continua comunicación entre los miembros del equipo asegurará que se realicen todas las pruebas adicionales necesarias para corregir los defectos hasta que el resultado sea el buscado.
Informe del testing automático y recolección de evidencias.
Una vez que el testing se ha completado se genera un informe con toda la información relevante, resultados y conclusiones sobre el proceso.
Integración con sistemas de bugtracking.
Como último paso en el proceso de automatización, el nuevo plan de testing se integrará con los sistemas de seguimiento de errores (sistemas bugtracking) para asegurar la calidad en el proceso de desarrollo del software, detectando los posibles defectos que aparezcan.


Ventajas de implementar un sistema de testing automático.
La automatización de los procesos de testing busca principalmente acortar los tiempos que necesitan estos procesos, manteniendo un alto nivel de calidad, pero permitiendo plazos de desarrollo más cortos. Esa es su principal ventaja, pero no es la única.
Estas son algunas de las principales ventajas que su organización puede obtener mediante el testing automático.
Acortar tiempos de testing.
De 15 días a unas pocas horas, permitiendo probar todo el sistema cada día. Esto hará que su organización sea más productiva, eficiente y ágil para desarrollar productos, realizar lanzamientos, dar respuesta a los usuarios, etc.
Optimizar costes.
La reducción de tiempo de testing se traduce también en una reducción de costes, lo que permite realizar pruebas más exhaustivas dentro del presupuesto. Esto ocurre especialmente a medida que se avanza en los procesos de automatización de testing. La mano de obra necesaria también se optimizará, contribuyendo a la reducción de costes de la organización.
Mejorar la calidad.
El sistema permite la detección y solución de fallos antes de que lo hagan los clientes, convirtiéndose en un excelente sistema de monitorización que aumentará la fiabilidad técnica de los procesos y operación de los equipos.
Mayor competitividad.
Reducción de plazos, optimización de costes, mejora de la calidad… todo ello se traduce en un beneficio global que es un mejor posicionamiento de su empresa en un sector muy competitivo.