GURUDAY | Aprende a crear una matriz de prueba de software
¿Qué es una prueba de software?
Definición y Importancia
- La prueba de software es un proceso que verifica que el producto o aplicación funcione según lo esperado.
- En metodologías ágiles, se utiliza un "product backlog" para definir los requerimientos necesarios del sistema.
Desglose de Requerimientos
- Es crucial desglosar bien los requerimientos; si no se hace, puede haber riesgos significativos en el desarrollo.
- Los cambios inesperados por parte del cliente pueden generar conflictos y afectar la relación entre desarrollador y cliente.
La importancia de tener un backlog detallado
Estrategias para Definir Requerimientos
- Se recomienda tener un listado detallado de requerimientos antes de estimar tiempo y costos.
- Si el cliente no tiene tiempo para detallar sus requerimientos, podría indicar falta de interés en el proyecto.
Metodologías Ágiles
- Las iteraciones (o sprints) permiten trabajar en períodos cortos donde se definen tareas específicas con costos asociados.
- Otra opción es desarrollar un "producto mínimo viable", permitiendo futuras fases basadas en nuevas ideas del cliente.
Beneficios de las pruebas de software
Prevención y Eficiencia
- Las pruebas previenen errores antes del lanzamiento a producción, reduciendo costos y mejorando rendimiento.
Tipos de Pruebas
- Existen diferentes tipos de pruebas: aceptación, integración, unitarias, rendimiento y regresión.
Pruebas Unitarias
- Estas son realizadas generalmente por los desarrolladores para asegurar que cada componente funcione correctamente por separado.
Pruebas de Rendimiento
- Incluyen pruebas de carga y estrés para evaluar la capacidad del sistema bajo diferentes condiciones.
¿Qué es la usabilidad y cómo se mide?
Importancia de la Usabilidad
- La usabilidad se refiere a qué tan fácil e intuitivo es usar un sistema. Se relaciona con el estudio de UX/UI, que abarca la interfaz gráfica y la experiencia del usuario.
Buenas Prácticas en Pruebas de Software
- Se recomienda seguir cinco buenas prácticas en pruebas de software: prueba continua, virtualización, gestión de configuración, seguimiento de defectos y métricas/informes.
- La virtualización permite crear ambientes rápidamente, especialmente utilizando tecnologías como Docker para evitar perder tiempo en instalaciones complejas.
Herramientas para Seguimiento de Defectos
- Jira es una herramienta ampliamente utilizada para registrar y controlar defectos y requerimientos. Permite llevar un seguimiento desde la creación hasta la resolución.
- También se menciona ServiceNow como una buena opción para gestión de incidencias. Book Tracker es otra alternativa open source que puede ser útil.
¿Cómo organizar las pruebas?
Planificación de Pruebas
- Es esencial elaborar un plan de pruebas similar a un plan de trabajo diario. Este debe incluir los módulos o funcionalidades a verificar basados en los requerimientos.
Tipos de Pruebas a Ejecutar
- No siempre es necesario ejecutar todas las pruebas al 100%. Dependerá del tipo y magnitud del cambio realizado en el sistema.
Ejemplo práctico: Black Bout
Proceso Continuo de Pruebas
- Black Bout realiza continuamente evaluaciones sobre vulnerabilidades en sus sistemas. Utilizan alertas para identificar actualizaciones necesarias debido a vulnerabilidades detectadas.
Smoke Testing
- Las pruebas automatizadas conocidas como "Smoke Testing" son rápidas y verifican que el sistema funcione correctamente sin necesidad de intervención manual constante.
Estrategia según Cambios Mínimos
- En cambios menores (como ajustes estéticos), no se ejecutan todas las pruebas automatizadas; solo ciertas pruebas específicas son suficientes para garantizar funcionalidad.
Recursos Necesarios para Pruebas
Testers Manuales vs Automatizados
Introducción a la Formación en Testing y Herramientas Complementarias
Acceso a Talleres y Recursos
- Se menciona que al inscribirse en un curso, los estudiantes obtienen acceso a más de 50 talleres en línea disponibles en una biblioteca.
- Los talleres son de 2 horas y cubren temas como Jira, Git, GitHub y diseño básico de bases de datos.
- Estos talleres complementan la formación principal del curso, permitiendo a los estudiantes aprender herramientas adicionales según sus necesidades.
Importancia de la Trazabilidad en el Testing
- Se discute la pérdida común de trazabilidad entre el backlog del producto y las pruebas realizadas, donde solo se prueba un 60-70% de los requerimientos iniciales.
- La falta de una buena matriz de pruebas es identificada como una causa clave para esta pérdida; se necesita mapear requerimientos contra casos de prueba.
Desafíos en la Cultura del Testing
- Se destaca que crear un departamento nuevo sin una cultura establecida puede ser complicado; el testing debe ser visto como igual de importante que otras áreas como desarrollo o administración.
- La historia del testing manual resalta cómo las entregas apuradas llevan a situaciones estresantes para los testers, quienes deben trabajar bajo presión.
Estrategias para Mejorar el Proceso de Testing
- Es crucial cambiar la percepción dentro de las organizaciones sobre el área de testing; debe ser valorada adecuadamente para mejorar su efectividad.
- La integración temprana del testing durante el desarrollo es esencial; probar componentes incompletos presenta retos significativos.
Ejercicio Práctico: Creación de Casos y Matrices
Desarrollo Práctico
- Se propone armar casos prácticos relacionados con matrices de pruebas para aplicar lo aprendido teóricamente.
Integración con Aplicaciones Modernas
- Se menciona la popularidad actual del uso diario de WhatsApp frente al correo electrónico, sugiriendo su relevancia en aplicaciones modernas.
Uso y Pruebas API
¿Qué es una API y cómo se utiliza?
Formatos de respuesta en APIs
- Generalmente, las APIs devuelven datos en formato JSON, aunque también pueden utilizar XML y otros formatos. JSON es preferido por su agilidad y facilidad de lectura.
Importancia de las pruebas en aplicaciones
- Es crucial realizar pruebas no solo sobre la API, sino también sobre el sitio web y la aplicación móvil si se dispone de una. Esto asegura que todos los componentes funcionen correctamente.
Automatización de pruebas
- Las pruebas pueden ser automatizadas, pero primero es necesario crear una matriz de pruebas para identificar los escenarios a evaluar.
Herramientas para automatización
- Se menciona Apium como herramienta para la automatización de pruebas móviles, similar a Selenium que se usa para aplicaciones web. Permite desarrollar con Java o Python.
¿Qué lenguaje de programación elegir?
Tendencias actuales en lenguajes
- Python está en tendencia para ciencia de datos; ideal si se tiene un fondo matemático. Para entrar rápidamente al mercado laboral, Java puede ser más ventajoso.
- Aunque Python ofrece especialización y potencial salarial alto, Java abre más oportunidades laborales rápidamente debido a su demanda actual.
Comparación entre lenguajes populares
- Javascript es versátil y se utiliza tanto en frontend como backend y aplicaciones móviles (React Native). Su amplia aplicabilidad lo hace muy relevante hoy en día.
- .NET ha tardado en competir debido a su anterior modelo comercializado; ahora busca posicionarse como Open Source frente a Java.
El rol del PHP en el desarrollo web
Ventajas y desventajas del PHP
- PHP es considerado un "patito feo" pero sigue siendo un lenguaje eficaz con frameworks que permiten crear sitios web rápidamente. Ideal para pequeñas empresas.
- Sin embargo, para proyectos grandes como Amazon, PHP podría no ser suficiente; se requieren lenguajes más robustos que ofrezcan mayor escalabilidad.
Integración con WhatsApp mediante APIs
Uso práctico de WhatsApp API
- Se recomienda investigar sobre WhatsApp API para integrar servicios eficaces. Aunque hay costos asociados, permite llegar a muchos usuarios rápidamente.
¿Cómo funcionan las APIs en la automatización de servicios?
Introducción a las APIs
- Se discute la necesidad de automatizar operaciones para grandes volúmenes de usuarios, donde el método tradicional de copiar y pegar ya no es viable.
- Se menciona un ejemplo práctico con Walmart, donde al realizar una compra en línea, se recibe automáticamente un mensaje por WhatsApp con información sobre el seguimiento del pedido.
Integración y tipos de APIs
- Se plantea que Walmart utiliza una API para notificar a los clientes sin intervención manual, lo que mejora la eficiencia del servicio.
- Se diferencia entre APIs oficiales y no oficiales; las oficiales tienen más requisitos y políticas restrictivas, especialmente en plataformas como Facebook.
Limitaciones de las APIs
- Facebook puede limitar el envío de mensajes si detecta comportamientos inusuales, como enviar la misma imagen a múltiples usuarios.
- Las desventajas de usar una API oficial incluyen la imposibilidad de utilizar tu dispositivo personal después de vincularlo a la API.
Herramientas para trabajar con APIs
- Se presenta Postman como una herramienta esencial para hacer peticiones a servicios API. Es útil tanto para desarrolladores como para quienes no tienen experiencia técnica.
- Ejemplos adicionales se dan sobre otras APIs disponibles, como aquellas relacionadas con eventos deportivos (ej. Mundial de fútbol).
Ejemplos prácticos y uso común
- La API de Google Maps es mencionada como una herramienta popular que permite acceder a datos geográficos mediante un token o clave proporcionada por Google.
- Se explica cómo el uso creciente de aplicaciones puede llevar a exceder los límites gratuitos establecidos por proveedores como Google.
Demostración práctica
- El presentador muestra cómo Postman permite ver diferentes servicios disponibles en la API utilizada (WhatsApp).
- A través del uso del token proporcionado, se demuestra cómo obtener información desde WhatsApp Web utilizando esta API.
Conclusiones sobre el uso de APIs
- La importancia del acceso fácil a herramientas que permiten interactuar con diversas plataformas sin necesidad profunda en programación es enfatizada.
Gestión de Mensajes en WhatsApp a través de API
Introducción a la Gestión de Tokens
- Se menciona que el "token" se refiere al número de WhatsApp vinculado, lo que permite gestionar los servicios desde un dashboard amigable.
Envío de Mensajes Individuales
- Se explica cómo enviar un mensaje a un contacto específico utilizando una API, destacando su utilidad en situaciones como notificaciones tras compras en línea.
Envío Masivo de Mensajes
- La capacidad de enviar mensajes masivos es discutida, ejemplificando el uso para informar sobre cambios en eventos (como el Guru Day).
Riesgos Asociados al Uso No Oficial
- Se advierte sobre el riesgo de ser bloqueado si se reportan mensajes como spam. El uso del API oficial reduce este riesgo pero puede limitar la cantidad diaria de envíos.
Proceso para Enviar Mensajes Personalizados
- Se introduce un servicio llamado "Enviar mensaje personalizado a varios contactos", donde se debe subir un archivo CSV con los números y mensajes personalizados.
Ejemplo Práctico con Archivos CSV
- Se muestra cómo crear y utilizar archivos CSV generados desde Excel para facilitar el envío masivo, incluyendo ejemplos prácticos con nombres y emojis.
Visualización del Estado del Envío
- Al enviar mensajes, se puede observar el estado del envío: cuántos fueron exitosos o fallidos, proporcionando retroalimentación inmediata sobre la campaña.
Conclusiones sobre Casos de Prueba
¿Cómo estructurar un caso de prueba efectivo?
Plantilla base para casos de prueba
- Se sugiere agrupar los casos de prueba por módulo funcional, adaptando la plantilla a las necesidades específicas de cada empresa. Por ejemplo, en una tienda en línea, se pueden crear módulos para el catálogo de productos, promociones, carrito de compras y facturación.
- Cada caso de prueba debe incluir un identificador alfanumérico y un título claro. Esto ayuda a organizar y localizar fácilmente cada caso dentro del documento.
- Es importante proporcionar una descripción concisa que explique el propósito del caso de prueba. Debe ser directa y sin ambigüedades.
- Los casos de prueba pueden tener dependencias; es crucial indicar si un caso depende del éxito previo de otro (por ejemplo, el login debe ser exitoso antes de probar otras funcionalidades).
- La inicialización es clave: se deben especificar los datos necesarios para ejecutar el caso. Por ejemplo, si se vincula un número telefónico, WhatsApp debe estar instalado previamente en el dispositivo.
Detalles operativos del caso de prueba
- Se deben detallar los pasos específicos que hay que seguir durante la ejecución del caso. Esto incluye quién es responsable o propietario del módulo funcional relacionado con la prueba.
- Un ejemplo práctico se presenta al enviar archivos mediante una aplicación web; esto ilustra cómo realizar pruebas gráficas efectivas.
- También se menciona la posibilidad de utilizar Postman para realizar pruebas API, lo cual permite verificar la funcionalidad desde diferentes plataformas.
- Postman ofrece ventajas como la creación de escenarios múltiples para pruebas automatizadas basadas en peticiones previas realizadas.
Documentación y seguimiento
- Se recomienda mantener un documento separado llamado "matriz de casos de prueba", donde se registren todos los identificadores y resultados esperados. Esto facilita el seguimiento y gestión del progreso en las pruebas realizadas.
Matriz de Trazabilidad y Pruebas de Software
Importancia de los Casos de Prueba
- Se mencionan tres a cinco casos de prueba para verificar un requerimiento, destacando que esta columna es opcional pero útil para identificar versiones en sistemas de control como Git.
- La matriz de trazabilidad permite listar todos los requerimientos desde el inicio, asegurando que no se olvide ninguna funcionalidad durante las pruebas.
Ambientes de Prueba
- Es crucial especificar en qué ambiente se realizaron las pruebas (desarrollo, staging, producción), ya que esto afecta la validez del proceso.
- Las pruebas en producción son complicadas; muchas empresas solo cuentan con ambientes de desarrollo y preproducción, lo cual puede ser suficiente.
Recomendaciones sobre Ambientes
- Se sugiere que los ambientes sean gemelos para garantizar consistencia entre desarrollo, CUA (Control User Acceptance), staging y producción.
- La matriz relacionada con los requerimientos debe manejarse por separado para evitar documentos extensos y difíciles de mantener.
Ejecución y Mejora Continua
- Cada caso listado debe ejecutarse; se recomienda probar tanto casos exitosos como errores potenciales para mejorar la API.
- Un ejemplo incluye validar URLs inválidas; si una URL no existe, esto debe ser reportado como un error o mejora al soporte correspondiente.
Conclusión General