Testing de Compatibilidad
Que el software funcione en los entornos soportados, la matriz de compatibilidad como especificación verificable y la compatibilidad hacia atrás en APIs públicas.
Qué es
El testing de compatibilidad verifica que el software funcione correctamente en los entornos soportados: sistemas operativos, navegadores, dispositivos, tamaños de pantalla, versiones de base de datos, versiones del runtime, entornos cloud, condiciones de red. El widget de reserva que ReservaResto embebe en la web de cada restaurante podría funcionar perfecto en Chrome sobre macOS y romperse en Safari sobre iOS, por ejemplo con el date picker.
Matriz de compatibilidad
Una herramienta simple, pero efectiva: definir explícitamente qué se soporta, con versiones y con niveles de soporte. Una matriz donde todas las filas dicen “sí” no es una especificación, es la misma vaguedad de antes escrita en una tabla.
| Entorno | Versiones soportadas | Nivel | Cómo se verifica |
|---|---|---|---|
| Chrome / Edge | Últimas 2 estables | Completo | Suite E2E en cada release |
| Firefox | Últimas 2 estables | Completo | Suite E2E en cada release |
| Safari macOS | 16+ | Completo | Suite E2E en cada release |
| Safari iOS | 16+ | Completo | Suite E2E + prueba manual del date picker |
| Chrome Android | Últimas 2 estables | Completo | Suite E2E |
| Safari iOS | 15 | Degradado | Smoke test: reservar tiene que funcionar |
| Internet Explorer | — | No soportado | Se muestra un aviso y no se testea |
Cada fila responde tres preguntas que un “sí” no responde: hasta qué versión, qué significa soportar (¿todo funciona, o solo el camino crítico?) y quién lo verifica. Ese último dato es el que convierte la matriz en algo accionable: sin él, la matriz es una intención.
Backward Compatibility
Existe otro tipo de compatibilidad que aparece en sistemas y APIs: si ReservaResto expone una API pública para que partners hoteleros integren reservas, un cambio aparentemente inocuo en el contrato de la API puede romper las integraciones de los partners que todavía usan la versión anterior (v1 de un endpoint de booking contra clientes que ya migraron a v2, por ejemplo). Por eso compatibility testing es particularmente relevante en public APIs, sistemas distribuidos, arquitecturas event-driven, shared libraries y migraciones de base de datos.
