Mariana Salaberry.
¿Qué es el testing de software?
El testing de software es una investigación técnica empírica que se realiza para proporcionar a las partes interesadas información sobre la calidad de un producto o servicio; es toda una disciplina dentro de la Ingeniería de Software y parte integral del ciclo de vida de desarrollo de soluciones informáticas.
No solo debe detectar y reportar errores, sino prevenirlos. Por ello tiene sentido que el testing participe desde el día cero, ya que ahí en las reuniones de definición de requisitos (user stories, casos de uso, etc.) el tester hará preguntas pensando en cómo probará eso luego, entonces el desarrollador ya está analizando cómo solucionar los posibles problemas que puede tener, con lo cual seguramente se evitan muchos de ellos. Eso es más económico que esperar a que alguien detecte, reporte, se corrija y se verifique.
¿Por qué es importante en el proceso de desarrollo de una solución informática?
Las pruebas son muy importantes no solo para detectar y reportar los errores en el software, sino para prevenirlos; así como para corroborar si cumple tanto con los requisitos del cliente, como con las crecientes expectativas de los usuarios, contribuyendo al equipo de desarrollo a corregir los incidentes y liberar productos de calidad.
Muchas veces el testing se ha relegado a una fase final previa a salida a producción y con un tiempo tan limitado que, en muchos casos, no puede garantizar las mejores prácticas. Sin la presencia de este, es posible que se genere un mayor costo económico y esfuerzo durante la fase de pruebas.
¿Cuál es el nivel de la industria de desarrollo y qué tan fortalecido está el proceso de testing previo?
En los últimos años ha habido un álgido movimiento de metodologías ágiles, el TDD y BDD y sus variantes, DevOps e Integración Continua.
El Informe de Calidad Mundial del año pasado reflejó los cambios “sísmicos” provocados por la pandemia, ya que las organizaciones se adaptaron para operar de forma completamente remota sin dejar de lograr resultados comerciales efectivos. Algunos de los desafíos que enfrentaron las organizaciones eran nuevos; otros, familiares, pero estaban sucediendo a un ritmo y escala sin precedentes. Por lo tanto, fue bueno poder decir que hubo claros signos de energía, entusiasmo y determinación en la respuesta de la comunidad de testing a la crisis.
Debido a esto, la mayoría de los CIOs ahora valora las pruebas más que nunca, y la marcha hacia la digitalización garantiza que la experiencia y la calidad del cliente sean de suma importancia.
Entre las prioridades crecientes que podemos mencionar, destaca la experiencia del cliente, el control de calidad que adopta prácticas ágiles y DevOps, el efecto de la evolución de los requisitos impactados por la pandemia para las aplicaciones en los nuevos métodos de implementación, y el crecimiento continuo de la Inteligencia Artificial en las pruebas continuas y las herramientas de gestión de la calidad.
Hoy los equipos en las organizaciones están buscando nuevas formas de trabajar. Buscan una flexibilidad mayor y más eficaz, y una mayor optimización sobre la marcha. Se percibe claramente que las pruebas ya no se consideran un “cuello de botella”. Además, el factor clave para llevar el producto a un nivel de calidad superior y una buena experiencia del cliente es el talento; tener un equipo con las habilidades adecuadas contribuye significativamente al éxito.
¿Qué pasos es necesario definir para un buen proceso de testing?
A pesar de que pueden existir varios puntos o elementos para definir un proceso de testing, hay algunos que son la base y no deben faltar. La primera actividad a realizar es analizar y tener claridad de los requerimientos, especificaciones del producto, funcionalidad, requisitos no funcionales, y los criterios de aceptación.
Se deben reconocer las funcionalidades que serán probadas, cuáles son las nuevas características, cuál es el impacto que tiene dentro del funcionamiento del software, si es el caso de que es integrado a una funcionalidad ya existente se debe identificar y poner énfasis en todos los elementos afectados y cómo pueden ser impactados.
Debemos definir cuál será la estrategia, metodología y los tipos de pruebas a realizar, cuáles serán más más efectivas y cuáles tendrán una cobertura que nos garantice una excelente calidad en el software. Es necesario aclarar que, a pesar de tener esta base para definir el proceso, todo dependerá del funcionamiento y complejidad del software que probaremos.
¿Qué es posible evitar y lograr aplicando técnicas para asegurar la calidad del software?
El hecho de no hacer pruebas en el sistema, página web o aplicación puede obstaculizar el funcionamiento del negocio, afectando significativamente su reputación con comentarios negativos en redes sociales y en tiendas de aplicaciones. Por ejemplo, cuando un sitio web tiene una alta concurrencia de usuarios en un CyberDay, es vital realizar pruebas de carga para detectar problemas de velocidad y estabilidad, y eliminar posibles “cuellos de botella” de rendimiento. De la misma manera, las pruebas de usabilidad son una herramienta fundamental para corregir y mejorar las aplicaciones, entender cómo interactúan los usuarios con ellas y qué tan fácil les resulta usarlas. En síntesis, una aplicación más fácil de usar genera menos problemas a los usuarios, reduciendo así las necesidades de soporte y ayuda.
¿Qué tipo de pruebas son las más comunes o claves?
En función del objetivo en el que se centran, en primer lugar, están las Pruebas de Software Funcionales que evalúan el comportamiento del sistema, subsistema o componente descrito en los requerimientos o casos de uso. Dentro de esta categoría se encuentran las Pruebas Unitarias, de Integración, de Caja Negra, de Seguridad, de Usabilidad y de Interoperabilidad.
En tanto, las Pruebas de Software no Funcionales se testean bajo carga. Además de las Pruebas de Performance y Estrés realizadas para determinar el rendimiento, la velocidad, estabilidad y escalabilidad de una aplicación de software, también se incluyen las Pruebas de Instalación, Pruebas de Confiabilidad y Pruebas de Seguridad.
Por ejemplo, las pruebas automatizadas pueden extender la cobertura y el alcance para hacer que el trabajo manual del equipo de QA se invierta en las pruebas que requieren mayor dedicación y atención al detalle.
Estamos observando un gran cambio cultural. Al igual que en nuestro día a día, donde todo el mundo quiere y espera que se cumplan los pedidos al día siguiente o el mismo día, en los negocios la gente quiere que su código se entregue de inmediato y listo para usar. Es por eso que estamos viendo un movimiento hacia las pruebas continuas, donde nuestro objetivo es prevenir defectos, en lugar de encontrarlos. Es una nueva mentalidad, en la que la Ingeniería de Calidad ya no es una disciplina separada y distinta, sino que se fusiona con el proceso general de desarrollo de software.
¿Qué enfoques son tendencia en testing de software?
Vemos una brecha cada vez mayor entre aquellos que están abriendo camino en la adopción ágil y de DevOps y aquellos que recién están comenzando. Las organizaciones han adoptado prácticas de desarrollo ágil: los gerentes pueden pensar que están manejando talleres ágiles, pero sus equipos pueden no verlo de esa manera. Existe una nueva visión cuya tendencia es que la calidad sea responsabilidad de todos los equipos ágiles; y estamos viendo una mayor comprensión entre los desarrolladores de lo que se necesita para realizar pruebas de código verdaderamente efectivas. Antes, los desarrolladores y las personas de QE (Ingeniería de Calidad) no entendían las implicaciones de la carga de trabajo de las tareas de los demás, pero ahora todos trabajan juntos, por lo que la comprensión es mejor. Pueden ver cuáles serán las consecuencias de una acción en otras partes del proceso. Esto es un cambio realmente positivo.
¿Cómo repercute un adecuado testing de cara a los usuarios del software desarrollado?
La mayor ventaja de realizar un testing de calidad es que mantenemos una buena experiencia de usuario. De la misma manera, aumenta la satisfacción del cliente que, a su vez, aporta al software una buena reputación. Si se está comercializando un producto o servicio seguramente el producto se venderá a una escala mayor; un adecuado testing asegura la satisfacción del usuario final, quien de seguro volverá a hacer uso y a ocupar nuestro software.