Published 17 years ago
(updated 13 years ago)
¿Cómo sabes que el sistema funciona? Una respuesta común a esta pregunta es “porque el equipo de testing le echó un vistazo”. El problema viene al tener que determinar la extensión y profundidad de las pruebas realizadas. Si eres afortunado y trabajas en una empresa con buenos procesos, podrás acreditar lo probado a través de una lista de casos de prueba. Si trabajas en una empresa de clase mundial, entonces hay una gran posibilidad de que tengas la fortuna de tener a tu disposición herramientas para la gestión y automatización de pruebas.De acuerdo con Elfriede Dustin, las herramientas de automatización de pruebas consolidan y mejoran la efectividad de las pruebas siempre y cuando se manejen las expectativas, se entiendan las herramientas, y se seleccione una herramienta compatible con el ambiente de programación. Si necesitas probar un sistema no trivial que conste de algo más que unas cuantas pantallas y reportes, entonces es muy posible que por medio de pruebas manuales no logres realizar todas las pruebas que necesitas para verificar la calidad del sistema. Con la ayuda de herramientas de automatización puedes ejecutar más pruebas, lo cual se traduce en una mayor cobertura del sistema que se está probando.
Capers Jones, en su libro de estimación de costos de software, menciona que las pruebas de funcionalidad, regresión y rendimiento son comúnmente apresuradas (o incluso omitidas) por presiones de tiempo. Esto resulta en sistemas con baja calidad. ¿Alguna vez te has visto en la necesidad de apurar u omitir alguna de estas pruebas? ¡Por supuesto que sí! Es una práctica común en los proyectos de desarrollo.
Las compañías más exitosas automatizan sus pruebas para mejorar la flexibilidad de su equipo de desarrollo. Algunas de las metas de sus esfuerzos incluyen:
• Detectar cambios desestabilizadores en nuevas construcciones
del sistema.
• Exponer defectos de regresión tan pronto como es posible.
• Reportar problemas rápidamente porque esto facilita su corrección.
Beneficios de las pruebas automatizadas
Las herramientas de automatización no van a solucionar todos tus problemas de pruebas. Sin embargo, puedes obtener muchos beneficios con una implementación apropiada. Hablemos de algunos de estos beneficios:
• Mejor organización de las pruebas. Cuando inicias la automatización de tus pruebas, analizas de manera más estructurada. Examinas tu sistema como ingeniero, ya no de manera empírica. Al crear casos de pruebas formulas preguntas tales como: ¿es repetible esta prueba?, ¿con qué frecuencia necesito ejecutar esta prueba?, ¿tiene alguna semejanza esta prueba a pruebas existentes?, ¿cómo automatizaría esta prueba?
• Realización de un mayor número de pruebas. Algunos de los problemas hallados por la automatización, tal vez no hubieran sido encontrados utilizando solo pruebas manuales, debido a limitantes de tiempo.
• Mejoras en la comunicación con el equipo. Kaner, Bach, y Pettichord argumentan que la automatización fortalece las pruebas al proporcionar un sistema para recolectar y diseminar información de manera eficaz, proporcionando retroalimentación oportuna al equipo de programación.
• Estabilización temprana del código. Conforme encontremos los errores más temprano, tendremos más rápido una base de código estable. Esto evitará retrabajo posterior ya que no estaremos construyendo encima de un código con errores.
• Habilitación de pruebas de regresión. Con un conjunto apropiado de pruebas, y habilitados por una herramienta de automatización, cada que generamos un nuevo build de nuestro sistema de software podemos probarlo por completo. Esto es de vital importancia, ya que de acuerdo con un estudio realizado por Capers Jones, en promedio el 7% de las correcciones de defectos inyectan a su vez un nuevo defecto.
De hecho, Dustin argumenta que si las pruebas de regresión no estuvieran automatizadas, ciertas pruebas regresivas nunca serían ejecutadas, dejando grandes vacíos en los esfuerzos de prueba.
• Mayor confiabilidad en los resultados. El sistema de automatización no se cansa, nunca tiene prisa, y mientras las pruebas o su información no cambie, deben de obtener siempre el mismo resultado; son consistentes, confiables, y repetibles. Como seres humanos te cansas, preocupas, o simplemente apresuras en sacar tu trabajo a tiempo. Todo esto lleva a simples errores humanos que afectan tu capacidad de ser eficiente en pruebas rutinarias. La automatización de pruebas repetitivas que requieren una ejecución frecuente, te permite tiempo para integrar pruebas más complejas, probar nuevas funciones dentro de la aplicación y su integración con el resto del sistema.
• Capacidad para aplicar pruebas complicadas. Algunos tipos de prueba son difíciles de aplicar o muy complicadas de ejecutar de manera manual; entre esta rama podemos encontrar aquellas en las que es necesario el acceso a la base de datos para verificar que la información del sistema sea correcta, o tal vez sea preciso hacer cálculos manuales para verificar la validez de los resultados arrojados por el sistema. Muchas herramientas de automatización proporcionan estas funcionalidades. Además, los sistemas de automatización nos pueden auxiliar a introducir grandes cantidades de información, configurar la versión de prueba de la base de datos, y generar información aleatoria entre otras cosas.
Como No Justificar el Testing
Después de revisar los principales beneficios de la utilización de herramientas de pruebas automatizadas, quiero compartir con ustedes algunas recomendaciones planteadas por James Bullock acerca de lo que debemos evitar a toda costa al justificar un esfuerzo de testing hacia nuestros superiores.
• La narrativa sin fin. Una cosa es hacerle ver a nuestros superiores que sabemos de lo que estamos hablando, y otra es perderlos en los detalles técnicos. Lo que tus jefes quieren que les contestes es
¿cuánto?, ¿cómo?, y ¿dónde?; Debes estar preparado para contestar estas preguntas en forma abreviada, concreta, y veraz.
• Vender funcionalidades en lugar de beneficios. Cuando hablamos de testing se nos olvida mencionar cómo beneficia al cliente, producto, o empresa. Tendemos a hablar de todo lo que vamos a poder hacer sin mencionar los beneficios. No importa lo avanzada que sea la herramienta de automatización o ese nuevo proceso manual que deseas implementar, si no puedes ligarlo a beneficios tangibles. Necesitas identificar que el testing, ya sea automatizado o no, sí beneficia al cliente, producto o empresa.
• La solución única. A algunos de nosotros nos gusta pensar que nuestra función es la más importante en la compañía. Sin embargo, tenemos que observar nuestro trabajo como una pieza más en el ecosistema de la empresa. Esto nos facilita analizar cómo nuestra labor complementa y asiste a otras áreas. Somos más valiosos como parte integral de la empresa que como un elemento aislado de la misma.
Conclusión
Hoy en día, la automatización de pruebas es una tarea esencial para proporcionar un servicio de testing adecuado. Los sistemas que probamos han crecido tanto en tamaño como en complejidad. Necesitamos tener el tiempo de probar las nuevas funcionalidades de nuestros sistemas sin ignorar la funcionalidad previa. Una estrategia de automatización implementada apropiadamente nos ayudará a lograrlo junto con los demás beneficios mencionados en este artículo.
Referencias
[ Bullock, James. “Calculating the Value of Testing”. Software Testing
and Quality Engineering. May/June 2000 ]
[ Jones, Capers. Estimating Software Costs: Bringing Realism to
Estimating. McGraw Hill, 2007. ]
[ Dustin, Elfriede. Effective Software Testing: 50 Specific Ways to
Improve Your Testing. Addison-Wesley, 2002.]
[ Kaner, Cem; Bach, James; Pettichord, Bret. Lessons Learned in
Software Testing: A Context Driven Approach. Wiley, 2001.]
Capers Jones, en su libro de estimación de costos de software, menciona que las pruebas de funcionalidad, regresión y rendimiento son comúnmente apresuradas (o incluso omitidas) por presiones de tiempo. Esto resulta en sistemas con baja calidad. ¿Alguna vez te has visto en la necesidad de apurar u omitir alguna de estas pruebas? ¡Por supuesto que sí! Es una práctica común en los proyectos de desarrollo.
Las compañías más exitosas automatizan sus pruebas para mejorar la flexibilidad de su equipo de desarrollo. Algunas de las metas de sus esfuerzos incluyen:
• Detectar cambios desestabilizadores en nuevas construcciones
del sistema.
• Exponer defectos de regresión tan pronto como es posible.
• Reportar problemas rápidamente porque esto facilita su corrección.
Beneficios de las pruebas automatizadas
Las herramientas de automatización no van a solucionar todos tus problemas de pruebas. Sin embargo, puedes obtener muchos beneficios con una implementación apropiada. Hablemos de algunos de estos beneficios:
• Mejor organización de las pruebas. Cuando inicias la automatización de tus pruebas, analizas de manera más estructurada. Examinas tu sistema como ingeniero, ya no de manera empírica. Al crear casos de pruebas formulas preguntas tales como: ¿es repetible esta prueba?, ¿con qué frecuencia necesito ejecutar esta prueba?, ¿tiene alguna semejanza esta prueba a pruebas existentes?, ¿cómo automatizaría esta prueba?
• Realización de un mayor número de pruebas. Algunos de los problemas hallados por la automatización, tal vez no hubieran sido encontrados utilizando solo pruebas manuales, debido a limitantes de tiempo.
• Mejoras en la comunicación con el equipo. Kaner, Bach, y Pettichord argumentan que la automatización fortalece las pruebas al proporcionar un sistema para recolectar y diseminar información de manera eficaz, proporcionando retroalimentación oportuna al equipo de programación.
• Estabilización temprana del código. Conforme encontremos los errores más temprano, tendremos más rápido una base de código estable. Esto evitará retrabajo posterior ya que no estaremos construyendo encima de un código con errores.
• Habilitación de pruebas de regresión. Con un conjunto apropiado de pruebas, y habilitados por una herramienta de automatización, cada que generamos un nuevo build de nuestro sistema de software podemos probarlo por completo. Esto es de vital importancia, ya que de acuerdo con un estudio realizado por Capers Jones, en promedio el 7% de las correcciones de defectos inyectan a su vez un nuevo defecto.
De hecho, Dustin argumenta que si las pruebas de regresión no estuvieran automatizadas, ciertas pruebas regresivas nunca serían ejecutadas, dejando grandes vacíos en los esfuerzos de prueba.
• Mayor confiabilidad en los resultados. El sistema de automatización no se cansa, nunca tiene prisa, y mientras las pruebas o su información no cambie, deben de obtener siempre el mismo resultado; son consistentes, confiables, y repetibles. Como seres humanos te cansas, preocupas, o simplemente apresuras en sacar tu trabajo a tiempo. Todo esto lleva a simples errores humanos que afectan tu capacidad de ser eficiente en pruebas rutinarias. La automatización de pruebas repetitivas que requieren una ejecución frecuente, te permite tiempo para integrar pruebas más complejas, probar nuevas funciones dentro de la aplicación y su integración con el resto del sistema.
• Capacidad para aplicar pruebas complicadas. Algunos tipos de prueba son difíciles de aplicar o muy complicadas de ejecutar de manera manual; entre esta rama podemos encontrar aquellas en las que es necesario el acceso a la base de datos para verificar que la información del sistema sea correcta, o tal vez sea preciso hacer cálculos manuales para verificar la validez de los resultados arrojados por el sistema. Muchas herramientas de automatización proporcionan estas funcionalidades. Además, los sistemas de automatización nos pueden auxiliar a introducir grandes cantidades de información, configurar la versión de prueba de la base de datos, y generar información aleatoria entre otras cosas.
Como No Justificar el Testing
Después de revisar los principales beneficios de la utilización de herramientas de pruebas automatizadas, quiero compartir con ustedes algunas recomendaciones planteadas por James Bullock acerca de lo que debemos evitar a toda costa al justificar un esfuerzo de testing hacia nuestros superiores.
• La narrativa sin fin. Una cosa es hacerle ver a nuestros superiores que sabemos de lo que estamos hablando, y otra es perderlos en los detalles técnicos. Lo que tus jefes quieren que les contestes es
¿cuánto?, ¿cómo?, y ¿dónde?; Debes estar preparado para contestar estas preguntas en forma abreviada, concreta, y veraz.
• Vender funcionalidades en lugar de beneficios. Cuando hablamos de testing se nos olvida mencionar cómo beneficia al cliente, producto, o empresa. Tendemos a hablar de todo lo que vamos a poder hacer sin mencionar los beneficios. No importa lo avanzada que sea la herramienta de automatización o ese nuevo proceso manual que deseas implementar, si no puedes ligarlo a beneficios tangibles. Necesitas identificar que el testing, ya sea automatizado o no, sí beneficia al cliente, producto o empresa.
• La solución única. A algunos de nosotros nos gusta pensar que nuestra función es la más importante en la compañía. Sin embargo, tenemos que observar nuestro trabajo como una pieza más en el ecosistema de la empresa. Esto nos facilita analizar cómo nuestra labor complementa y asiste a otras áreas. Somos más valiosos como parte integral de la empresa que como un elemento aislado de la misma.
Conclusión
Hoy en día, la automatización de pruebas es una tarea esencial para proporcionar un servicio de testing adecuado. Los sistemas que probamos han crecido tanto en tamaño como en complejidad. Necesitamos tener el tiempo de probar las nuevas funcionalidades de nuestros sistemas sin ignorar la funcionalidad previa. Una estrategia de automatización implementada apropiadamente nos ayudará a lograrlo junto con los demás beneficios mencionados en este artículo.
Referencias
[ Bullock, James. “Calculating the Value of Testing”. Software Testing
and Quality Engineering. May/June 2000 ]
[ Jones, Capers. Estimating Software Costs: Bringing Realism to
Estimating. McGraw Hill, 2007. ]
[ Dustin, Elfriede. Effective Software Testing: 50 Specific Ways to
Improve Your Testing. Addison-Wesley, 2002.]
[ Kaner, Cem; Bach, James; Pettichord, Bret. Lessons Learned in
Software Testing: A Context Driven Approach. Wiley, 2001.]
- Log in to post comments