Informática Médica
Testing de Software
Clase 11: jueves 22 de octubre de 2024
17:00 a 19:00
Prof. Ing. Franco Simini, Asist. Lic. Natalia Garay-Badenian
Ayud. Téc. Carolina Arámbulo, Ayud. Br. Danel Méndez y Ayud Br. Alejandra Rial
Núcleo de Ingeniería Biomédica de las Facultades de Medicina e Ingeniería
1
[Link]
1. ¿Qué es el testing de software?
2. ¿Por qué es importante testear?
3. Tipos de pruebas de software
4. Importancia de la Documentación
2
1. ¿Qué es el testing
de software?
3
Testing de software
"Realizar una investigación técnica de un producto
bajo prueba, con el fin de brindar información
relativa a la calidad del software, a los diferentes
actores involucrados en un proyecto." *
Es investigar un producto para determinar su
calidad.
4
*Testing Computer Software, 2nd Edition, C. Kaner, J. Falk, H Q. Nguyen, Ed. Wiley, 1999
Objetivos
● Evaluar y mejorar la calidad del producto,
identificando defectos y problemas.
● Verificar el comportamiento de un programa en
funcionamiento a través de un grupo limitado de
casos de prueba, debidamente seleccionados en
relación al comportamiento esperado.
5
Funcionamiento variable
● La prueba de un programa inicia con entrada de
datos.
● La entrada de datos no es siempre suficiente para
definir una prueba: un sistema complejo y no
determinista podría tener diferentes
comportamientos con la misma entrada de datos,
dependiendo del estado en el que se encuentre.
6
Conjunto limitado de pruebas
● Cuantas más pruebas mejor
● Cada prueba cuesta tiempo y dinero
Se busca el equilibrio
7
Ejemplo: Tipos de Usuarios
● Todos caracteres alfabéticos
● Todos alfanuméricos
● Todos numéricos
● Numéricos y símbolos especiales
● Mayusculas y minusculas
● …
● Máximo 8 caracteres
8
¿Cuántas pruebas serían necesarias?
El usuario deberá ser solamente caracteres alfabéticos:
● criterio económico pruebo un usuario de cada
uno de los demás tipos
● criterio exhaustivo pruebo todas combinaciones
de caracteres, cifras y símbolos especiales :
millones de millones de pruebas
9
Selección de pruebas
● Existen diferentes tipos de pruebas (caja negra, caja
blanca, etc. )
● Esto deja espacio para que el tester aplique su
criterio de selección de pruebas con muy diferentes
grados de efectividad.
● Seleccionar la prueba más apropiada para cada
situacion es un problema complejo
● En la práctica se usa:
○ la experiencia en el diseño de pruebas
○ el análisis de riesgo 10
Esperado
El comportamiento esperado se puede comprobar
comparando los resultados obtenidos durante la prueba
con:
● las especificaciones
● el comportamiento anticipado en los
requerimientos
● mensajes de usuarios beta
11
Aplicación cotidiana
● El testing es algo que está en la vida diaria de todos
nosotros.
● Constantemente estamos comparando la calidad de
los objetos con sus requerimientos.
Ej: Un calefón con calificación energética A es mejor que uno clase C. Si
bien ambos cumplen con el requerimiento para el que fueron diseñados,
uno lo hace de manera más eficiente y económica que el otro. La
comparación doméstica es, a paridad de uso, el consumo antes y
después del cambio
12
2. ¿Por qué es
importante testear?
13
Ventajas del testing
● Detectar fallas que presenta el sistema de manera
temprana.
● Analizar las futuras fallas, cuanto antes se detecte un error,
más barato y sencillo es de solucionar
● Lograr que el software tenga la menor cantidad de errores
posibles.
Ventajas para futuros productos
Mejorar los procesos antiguos para generar una mejor producción
sin volver a repetir los mismos fallos del pasado.
14
¿Cuándo comenzar las pruebas?
● Durante el desarrollo
● Permite corregir bugs (fallos) a tiempo
● No esperar a la entrega beta para iniciar la
pesquisa de errores.
La detección y corrección temprana ahorran
dinero y tiempo de desarrollo y pruebas.
15
3. Tipos de pruebas de
Software
16
Funcional vs No Funcional
Ambas evaluan el estado de un sistema,
programa o aplicación.
17
Cuáles son requisitos funcionales y
cuáles no lo son?
Un requisito no funcional especifica características de
operación del sistema (tiempo, seguridad, cantidad de
usuarios, etc.) que deben ser evaluadas en un sistema
y no sus comportamientos específicos.
Por el contrario, un requisito funcional específica
comportamientos específicos del sistema. (Login,
Logout, Editar perfil, etc.)
18
Pruebas para requisitos funcionales
Verifican que el software cumple con su
especificación (ej. regresión, pruebas de interfaz)
19
Tipos de pruebas para requisitos
funcionales:
● Pruebas unitarias: prueba de subprogramas
● Pruebas de integración: se prueba uniendo
funciones/subprogramas de a poco
● Pruebas alfa y beta: un grupo representativo de usuarios
utilizan el programa en las instalaciones del desarrollador y
externamente respectivamente
● Pruebas de aceptación/ calificación: comprobar que se
satisfacen los requisitos para el mercado al que se destina el
software.
● Pruebas de regresión: aseguran de que las nuevas
actualizaciones de software no hayan introducido errores en las
20
funcionalidades existentes.
Pruebas para requisitos NO funcionales
Describen comportamientos accesorios y verifican
características de operación del sistema en ciertas
condiciones de entorno.
Ejemplos:
● seguridad
● de carga
● rendimiento
21
Tipos de pruebas para requisitos
NO funcionales:
● Pruebas de seguridad: libres de lagunas,
vulnerabilidades, amenazas, riesgos
● Pruebas de estrés: estabilidad del sistema
● Pruebas de rendimiento: tiempo de respuesta y
capacidad
● Pruebas de escalabilidad: cuantos más usuarios
podemos admitir
● Pruebas de instalabilidad: procedimientos para lograr
un sistema de software instalado que se pueda utilizar
22
Beneficios de las pruebas para
requisitos NO funcionales
● Tener un sistema más seguro
● Menos proclive a caer cuando la concurrencia
de usuarios aumente
● Mejor usabilidad y buen rendimiento en general
● Optimización del sistema para consumir menos
recursos y por ende que su mantenimiento sea
más económico
23
4. Importancia de la
Documentación
24
Uso de documentos para las pruebas
● Necesario en todas las fases del desarrollo de software
● Asegura la trazabilidad
● Facilita la comunicación entre los miembros del equipo
● Permite la repetición de pruebas
● Proporciona una base para el mantenimiento y mejora continua del
software.
● Proporciona una guía clara sobre los requisitos, los objetivos y las
funcionalidades del software a probar.
● Contribuye a un proceso de testing más eficiente, por lo tanto a
mayor calidad del software
25
Caso de uso
● Escenarios detallados que describen cómo un usuario
interactúa con el software y cómo este debería responder.
● Proporciona una estructura para expresar requisitos
funcionales.
● Ayudan a comprender los flujos de trabajo y las interacciones.
Ej:
CU1: Rol Cliente
CU2: Rol Empleado sucursal
26
Especificación de Requisitos de
Software (ESRE)
● Define los requisitos del software de manera detallada y precisa.
● Sirve como base para diseñar y realizar pruebas.
27
Historias de Usuario
● Breves descripciones de una funcionalidad deseada, escritas
desde la perspectiva del usuario.
● Proporcionan contexto para las pruebas y ayudan a priorizar
características.
28
¿Cómo documentar un error?
● Fecha y hora
● Detalles del sistema que estábamos utilizando: sistema operativo y
su versión, navegador, si es una app o es versión web
● Breve descripción del error
● Pasos a seguir para reproducirlo
● Resultado esperado y resultado obtenido
● Capturas de pantalla que lo evidencien
● Clasificar severidad y prioridad
29
En resumen…
● El testing de software determina la calidad del sistema
● Es importante la detección y corrección temprana de errores
● Existen dos grupos de requerimientos: Los funcionales que es
decir las acciones que debe cumplir un sistema , mientras que el
otro grupo (no funcionales) es todo aquello que concierne a cómo
opera el sistema.
● Documentar toda incidencia con la mayor cantidad de información
para poder replicarla.
30
Gracias!
31