Asegurando la calidad con testing manual y automatizado

¿Cómo influye el software en la sociedad digital? ¿Cómo aseguramos la calidad implementando Testing Manual y Automatizado?

A medida que la tecnología avanza se van produciendo cambios en nuestra sociedad digital cada vez más integrada, el software se convierte en una parte esencial de nuestras vidas. Sin embargo, para que el software sea realmente útil, debe funcionar de manera fluida y sin fallos. Un software defectuoso puede tener consecuencias desastrosas, especialmente en una era donde la experiencia del usuario está en el centro de atención. Un software de baja calidad puede provocar fallos operativos, rendimiento ineficiente, usuarios frustrados y tiempos de respuesta lentos. En casos extremos, como el fallo del software del Boeing 737 Max, estas irregularidades pueden incluso resultar en tragedias, como la pérdida de 346 vidas. Este es uno de los tantos ejemplos de fallos con impacto en vidas humanas, tenemos los casos de impacto sociales, económicos, ambientales, etc.

Los errores técnicos de codificación pueden llevar a fallos funcionales y, en última instancia, al fracaso del proyecto. Más allá de las pérdidas monetarias, los fallos de software también afectan la imagen de marca.

En todas estas situaciones la participación del agile tester es crucial ya que a través de las mejores prácticas puede no sólo detectar de manera temprana defectos, sino que además puede recomendar mejoras en el proceso de desarrollo de software.

La evolución del testing de software: del testing convencional a la garantía de calidad

Con la rápida innovación tecnológica y la evolución de las metodologías de desarrollo y testing de software, es esencial dar un salto del testing convencional a la garantía de calidad. Aquí te cuento todo lo que necesitas saber sobre el testing de software y la garantía de calidad. Claro esta que para lograr ésto, hay que seguir capacitándose en muchas áreas.

¿Qué es el Testing de Software?

El testing de software implica la evaluación del software para confirmar su relevancia, funcionalidad y rendimiento. Ayuda a las empresas a comprender los riesgos asociados con la implementación del software. El objetivo del testing de software es determinar la precisión del software bajo suposiciones específicas. Consideramos aquí que todo esté lo suficientemente documentado en las historias de usuario como para que el equipo de desarrollo (desarrolladores y testers) puedan comenzar con su trabajo.

Tipos de Testing de Software con ejemplos prácticos

Testing de Aceptación: Verifica el funcionamiento del software y prueba su aceptabilidad en el contexto de los requisitos del negocio y el cumplimiento normativo. Por ejemplo, en un entorno de comercio electrónico, el testing de aceptación puede incluir la validación de procesos de pago y la gestión de inventarios. Para este caso es sumamemente importante que los usuarios finales estén bien comunicados y ayudarlos con el objetivo.

Testing Unitario: Prueba componentes de software de manera granular para validar el rendimiento del código del software según las expectativas. En un escenario de desarrollo ágil, un desarrollador podría realizar pruebas unitarias para verificar que una función específica de cálculo de descuentos funciona correctamente. En este caso herramientas como SonarQube puede ser de mucha utilidad no sólo para el desarrollador sino además para el equipo, pudiendo considerar incluso aplicar las buenas prácticas definidas por OWASP.

Testing de Integración: Prueba módulos de software específicos en grupos para evaluar el cumplimiento y requisitos funcionales específicos. Por ejemplo, en una aplicación bancaria, se probarían en conjunto los módulos de autenticación y transferencia de dinero para asegurar que funcionan bien en conjunto. En el plano práctico, este tipo de testing se puede conducir a través de xRay integrado a Jira Software.

Testing de Rendimiento: Ayuda a evaluar la fiabilidad, tamaño de la aplicación, estabilidad, velocidad y robustez del sistema de software. En una app de juegos, el testing de rendimiento podría evaluar cómo maneja la carga del servidor durante picos de uso. En el plano práctico, este tipo de testing lo podemos conducir mediante la herramienta JMeter. Además de tener la posibilidad de aumentar nuestro conocimiento logrando una certificación especialmente dirigida a cubrir esta área, la de performance testing.

Testing Funcional: Determina si cada componente de software está funcionando según los requisitos predeterminados. Es decir, ayuda a evaluar si el software hace lo que debería hacer. Por ejemplo, en una aplicación de salud, el testing funcional se aseguraría de que los registros médicos electrónicos se almacenen y recuperen correctamente. En el plano práctico, todo este tipo de testing lo podemos conducir a través de xRay.

¿Qué es el Aseguramiento de la Calidad?

El aseguramiento de la Calidad (QA), por sus siglas en inglés) es un enfoque proactivo para lograr la calidad deseada del software. Garantiza que se sigan los procedimientos adecuados durante el desarrollo y la entrega de la aplicación de software. El aseguramiento de la calidad se integra dentro del Ciclo de Vida de Desarrollo de Software (SDLC) para prevenir posibles errores en el software. Este proceso también mejora la productividad del equipo especificando los requisitos de desarrollo y los estándares de calidad.

¿Qué más podemos hacer  para asegurar la calidad?

Testing de Regresión: Asegura que cualquier cambio o actualización en el software no afecte las funcionalidades existentes. En testing automatizado, se podría utilizar Selenium WebDriver para ejecutar suites de pruebas de regresión después de cada despliegue de código.

Testing Móvil: Este test se centra en la usabilidad y el rendimiento para casos específicos de móviles, como baja batería o durante una llamada telefónica. Por ejemplo, se podría automatizar pruebas para verificar la funcionalidad de una app de mensajería durante interrupciones de señal. En el plano práctico, este tipo de testing para dispositivos android se puede conducir a través de Android Studio.

Testing de Conversión de Datos: Valida la funcionalidad de la aplicación para identificar defectos y verifica la compatibilidad entre sistemas antiguos y nuevos. En el contexto de migración de bases de datos, el testing de conversión garantizaría que los datos se transfieran correctamente sin pérdida o corrupción.

Testing de Aceptación por el Usuario (UAT): Permite a los desarrolladores de software (desarrolladores y testers) prever posibles problemas con la experiencia y el rendimiento del software. Por ejemplo, antes de lanzar una nueva versión de una plataforma de e-commerce, se realizan pruebas UAT para asegurarse de que los usuarios finales no enfrenten problemas críticos.

Diferencias entre Testing de Software y el Aseguramiento de la Calidad

El testing de software es un enfoque reactivo que identifica y corrige los errores en el software, mientras que el aseguramiento de la calidad evita problemas potenciales de software. Ambos procesos son fundamentales para garantizar una calidad de software de primer nivel.

En resumen, el aseguramiento de la calidad es la gestión general para asegurar y garantizar la realización exitosa de los objetivos de calidad del software. Cubre todas las políticas, estándares, procesos, herramientas y capacitación para lograr la calidad de software deseada. Por otro lado, el testing de software es un componente de la estrategia del aseguramiento de la calidad.

Testing de Software o Aseguramiento de la Calidad: ¿Qué Considerar?

El aseguramiento de la calidad comienza muy temprano y continúa a lo largo de todo el SDLC. En esencia, tanto el testing de software como el aseguramiento de la calidad se centran en garantizar la calidad de un sistema. Sin embargo, el enfoque no debe estar únicamente en rectificar errores, sino también en respaldar procesos y estrategias. Aquí es donde entra en juego la adopción de un modelo más dinámico de aseguramiento de la calidad.

Cómo asegurar la mejor calidad de software

Un producto de alta calidad puede mantener tu negocio competitivo en el mundo digital actual, siempre que evite incluso los errores más pequeños, ya que pueden conducir a pérdidas significativas. Con la tecnología adecuada integrada en tus productos y servicios, también es esencial invertir en una estrategia de garantía de calidad eficiente para optimizar la ejecución y lanzar productos de alta calidad al mercado.

En el contexto del programa de estudios del ISTQB CTFL v4.0, tanto el testing manual como el automatizado son esenciales para cubrir las diferentes áreas de evaluación de software. Se deben emplear técnicas adecuadas de gestión de pruebas, y la automatización puede mejorar la eficiencia y la cobertura del testing. Aprender y aplicar estas técnicas puede marcar una gran diferencia en la entrega de software de alta calidad.

Propuesta

Seguime por LinkedIn donde también publico artículos y puedes interactuar con otros miembros dejando tus comentarios y si el contenido te parece útil, puedes dejarme Like y Compartir que me ayuda y mucho. Muchas gracias

Gus Terrera

Apasionado por el agile testing y la ia.