Lo que debes saber sobre las pruebas de compatibilidad

Imagina situaciones comunes en las que algo funciona para una persona pero no para otra. Por ejemplo: Romina le dice a su amiga Andrea: “A ver, pruébate este jean para ver cómo te queda, porque a mí me queda largo y no lo quiero remangar”. Andrea responde: “A mí me queda bien”. “Lo que pasa es que soy más alta que vos”.

Estas discrepancias, que tal vez todos hemos experimentado alguna vez, son análogas a los desafíos de compatibilidad en el mundo del software. En este artículo, profundizaré la importancia de las pruebas de compatibilidad, cómo abordarlas y por qué son cruciales para asegurar que tu aplicación ofrezca una experiencia positiva en una variedad de entornos y dispositivos.

Con seguridad te estarás preguntando qué tendrá que ver esto con las pruebas de compatibilidad, pero…¿Cuántas veces pasaste por situaciones así durante tu vida? Situaciones en donde algo, o alguien, no era para vos, pero sí para otra persona u… otro dispositivo. ¿Cómo que otro dispositivo? Sí, muchas veces el software funciona muy bien en un dispositivo pero no funciona como se espera en ciertos otros tipos de dispositivos o sistemas, y esto se conoce como compatibilidad, mejor dicho, incompatibilidad del software.

En otras palabras, existen ciertas condiciones que no permiten operar de manera adecuada a nuestro software. Entre estas condiciones suelen encontrarse comúnmente la ausencia de drivers, la desactualización de ellos, malas parametrizaciones, problemas de estilo CSS, contenidos superpuestos, etc.

Nuestro trabajo como probadores de software es asegurarnos de que nuestro objeto de prueba sea, entre tantas cosas, compatible en la mayoría de los sistemas/dispositivos en donde será ejecutado.

Aclaración: estoy diciendo “…en la mayoría de los sistemas/dispositivos…” dado que es imposible garantizar el 100% de los escenarios libre de fallas.

Antes de iniciar las pruebas, debemos entender cuál será el contexto en donde se desplegará el software pero, sobre todo, entender muy bien cuál será el perfil del usuario que hará uso del mismo.

Veamos un ejemplo para este punto:

Imagina el caso de una app de juego que funciona para un usuario y no para otro. Cuando Juan intenta abrirlo en su celular esta app se cierra no logrando así ejecutarse. El celular de Juan está obsoleto porque tiene un GPU antiguo. Dado que el juego requiere capacidades gráficas avanzadas, su experiencia se ve afectada por la falta de compatibilidad con hardware más antiguo. En este contexto, el conocimiento del perfil del usuario y las capacidades del dispositivo se vuelve crucial.

Si el dev team no tiene en cuenta estas diferencias en las configuraciones de hardware y no se realizan pruebas específicas para dispositivos más antiguos, podrían perder a un segmento significativo de usuarios potenciales. Conocer el contexto, en este caso, implica entender las limitaciones y capacidades del hardware en el que se espera que funcione la aplicación, garantizando así una experiencia de juego fluida para todos los usuarios, independientemente de sus especificaciones de hardware.

¿Cómo podemos abordar este tema de incompatibilidades?

Para lograr la solución a este problema debemos crear, junto con nuestro cliente, una matriz de pruebas para limitar los escenarios que queremos testear. ¡No podemos testear todo!

Definir una matriz es una forma de enmarcar nuestro trabajo y además es una manera de garantizar al cliente qué escenarios son los que fueron cubiertos con nuestras pruebas. En ella, deberemos reflejar el contexto donde se desplegará el software y aquí es donde definimos las pruebas de compatibilidad que llevaremos a cabo (ver matriz más abajo).

Esta matriz es un paso crucial en la planificación de pruebas, ya que proporciona una estructura organizada para abordar los diversos escenarios y contextos en los que se ejecutará la aplicación. La matriz se construye identificando los diferentes sistemas operativos, versiones de hardware, navegadores web y otras variables relevantes para la aplicación en cuestión.

Por ejemplo, si estamos probando una aplicación mobile, la matriz podría incluir combinaciones de dispositivos, sistemas operativos y tipos de conexiones de red. También se puede construir teniendo en cuenta los dispositivos más comunes del mercado, los sistemas operativos más populares y/o los más recientes.

Para seleccionar nuestras pruebas es necesario conocer nuestra aplicación y preguntarnos lo siguiente:

  • La aplicación, ¿puede verse afectada por distintas configuraciones de hardware? Por ejemplo: cambios en el procesador, la memoria RAM o la unidad de procesamiento gráfico.
  • Nuestro software, ¿será de tipo mobile, web o de escritorio? En caso de que sea de escritorio, ¿operará con qué sistemas operativos? ¿Windows, Mac y/o Unix?
  • ¿Tendrá interacciones con otros softwares? Es decir, ¿permitirá enviar e-mails? ¿Agendar en el calendario?, etc.
  • En caso de que sea de tipo mobile. ¿Cómo se comportará con distintas conexiones de redes y sus posibles intermitencias en la señal? Por ejemplo: 4G, LTE, 5G.
  • ¿Correrá sobre un navegador o sobre más de uno? Ejemplo: Chrome, Edge, Firefox, etc. ¿Y en qué versiones?
  • Si es de tipo mobile. ¿Correrá en Android y/o iOS? ¿Y en qué versiones?

Como ven, una correcta planificación de nuestras pruebas implica que nos respondamos todas estas preguntas para entender bien el contexto de nuestra aplicación.

Una vez obtenida dicha información podemos empezar a crear nuestra matriz de compatibilidad de pruebas.

A continuación, les presento un ejemplo de matriz (reducida) para una aplicación mobile hipotética:

¿Cómo se lee esta matriz?

Leer esta matriz es bastante sencillo ya que bastará con armar nuestras condiciones de pruebas leyendo columna por columna y jugando con las combinaciones en caso de que existan. Por ejemplo: si hemos optado por ejecutar pruebas con el dispositivo Samsung Galaxy S23+, nuestras pruebas funcionales deberán correrse en las siguientes características del dispositivo:

  • Galaxy S23+ – Version Android 14 – Red LTE
  • Galaxy S23+ – Version Android 14 – Red 5G
  • Galaxy S23+ – Version Android 13– Red LTE
  • Galaxy S23+ – Version Android 13 – Red 5G

NOTA: El mayor problema que se enfrenta a la hora de realizar pruebas de tipo mobile es el inmenso abanico de combinaciones que se generan, y que en principio, debemos probar. Es responsabilidad del analista de pruebas evaluar si se ejecutarán todas las suites de pruebas para una versión de Red y para otra.

La matriz de compatibilidad sirve como una guía visual y estructurada que permite a los equipos de pruebas identificar áreas críticas para evaluar, priorizando aquellas que son más representativas del entorno del usuario. Al anticipar los posibles desafíos de compatibilidad y abordarlos de manera proactiva, las pruebas se vuelven más eficientes y efectivas, asegurando que la aplicación esté lista para brindar una experiencia coherente y sin problemas en la diversidad de entornos en los que se espera que funcione.

Tal vez, el mayor desafío para los QA´s, pasa por la rápida evolución de dispositivos y sistemas operativos que se encuentran en el mercado. A medida que surgen nuevos modelos y actualizaciones, los equipos de prueba deben adaptarse ágilmente para garantizar un rendimiento óptimo en estas plataformas emergentes.

Esta dinámica demanda una estrategia de pruebas flexible que pueda identificar rápidamente los cambios y ajustar las pruebas en consecuencia, asegurando la compatibilidad continua del software en un entorno tecnológico en constante evolución.

Conclusión:

Al igual que en la vida misma, si queremos generar una buena impresión, por lo general nos preparamos y arreglamos ¿verdad? Con nuestras aplicaciones pasa lo mismo, casi que no tenemos oportunidad de seducir 2 veces a nuestros potenciales clientes. Ellos descargan una app y si no tienen la experiencia que buscan dentro de los primeros 30 segundos es casi un hecho que la van a desinstalar, y con ellos se irá la oportunidad de crecer como empresa.

Las pruebas de compatibilidad son muy importantes ya que buscan confirmar el correcto desempeño de una aplicación en todas las plataformas. De esta manera, se garantizará que todos los clientes tengan una experiencia positiva con la misma, sin importar el entorno que utilicen. Porque al fin y al cabo, un usuario satisfecho es un usuario que vuelve y nos recomienda.


Leonardo Corrales

Profesional del Testing de Software por elección vocacional y por amor a la disciplina.

0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada.