Blog

Software Testing Wheel

¿Cuáles son los diferentes factores de la calidad del software y cómo los probamos?

Factores de la Calidad del Software: ¿cómo probarlos?
Foto de Lesly Juarez en Unsplash

La calidad del software … suena vago, ¿no? Creamos una software testing wheel para representar las partes que componen el “todo” cuando nos referimos a la calidad del software.

Según las normas ISO, la calidad de un producto de software es la suma ponderada de diferentes atributos de calidad que se agrupan en varios factores de calidad. Por ejemplo, la eficiencia del desempeño es un factor que se compone de comportamiento temporal, capacidad, consumo de recursos, etc.

Factores de Calidad del Software internos vs. externos

También hay una clasificación de factores interna y externa. Los factores internos serían, por ejemplo, la capacidad de mantenimiento y todo lo que tenga que ver con la calidad del código. Se denominan factores internos porque tienen que ver con el funcionamiento interno del producto justamente porque que el usuario no los puede percibir a primera vista.

Los factores externos son aquellos de los que el usuario puede experimentar directamente, tales como:

  • Performance: los usuarios se ven afectados cuando el sistema, la web o la aplicación se ejecuta lentamente.
  • Funcionalidad: Cuando hay demasiados errores, el usuario se ve impedido al no poder interactuar o realizar transacciones.
  • Usabilidad: Los usuarios sufren cuando el producto digital no es suficientemente amigable.

Por otro lado, estos factores externos e internos no siempre son tan excluyentes. Hay muchos que son ciertamente internos y externos como la seguridad.

Otro aspecto que es realmente interesante, es que factores internos como la mantenibilidad pueden volverse externos en cualquier momento. ¿Cuándo? Pues bien, cuando el cliente solicita un pequeño cambio y el equipo de desarrollo tarda meses en implementarlo finalmente.

Es entonces cuando un incidente interno puede volverse externo. Esto podría deberse a una mala calidad del código, un mal diseño del sistema, un alto acoplamiento y baja cohesión, una mala arquitectura, un código que no es fácil de leer ni entender, etc. Estas cosas dificultan mucho la realización de cambios, lo que afecta negativamente la experiencia del cliente.

Es bien sabido que cada atributo de calidad tiene una prueba de software asociada que verifica si la calidad cumple o no con las expectativas del cliente y del usuario. Decidimos poner todas estas pruebas en la que denominamos una software testing wheel, gracias a uno de nuestros expertos en performance, Sebastian Lorenzo, a quien se le ocurrió la idea.

En la siguiente gráfica puedes observar que las pruebas pueden verse como algo que rodea y “protege” la calidad del software.

Ahora analicemos la wheel examinando cada factor de calidad (capa interna), sus atributos (capa intermedia) y las pruebas asociadas con cada factor (capa externa).

Idoneidad funcional

La idoneidad funcional se logra cuando el sistema proporciona funciones que satisfacen las necesidades requeridas e implícitas cuando se utiliza en condiciones específicas. Esto básicamente se resume en la siguiente pregunta: ¿el sistema hace lo que queremos que haga? Los tres atributos enumerados son integridad funcional, corrección y adecuación.

En otras palabras, es funcionalmente adecuado si cumple con todos los requisitos, los cubre correctamente y solo hace lo necesario y apropiado para completar las tareas descritas.

Hay varias pruebas que se incluyen en el ámbito de las pruebas funcionales, tales como: pruebas de regresión, pruebas del sistema, pruebas unitarias, prueba de procedimientos, etc.

Eficiencia de Rendimiento

La eficiencia del rendimiento se encarga de ver cómo se comporta el sistema en determinadas situaciones con diferentes tamaños de carga. Un sistema con alto desempeño es rápido, escalable y estable incluso cuando hay una gran cantidad de usuarios simultáneos.

Los tres atributos enumerados son comportamiento del tiempo, utilización de recursos y capacidad. El comportamiento del tiempo es el grado en que los tiempos de respuesta y procesamiento, y las tasas de rendimiento cumplen con los requisitos. La utilización de recursos se refiere a la cantidad de recursos que utiliza durante su funcionamiento. La capacidad se refiere al grado en que los límites máximos de un producto o parámetro del sistema cumplen con los requisitos.

Para analizar estos atributos, existen varios tipos de pruebas de performance que podemos realizar como pruebas de carga, resistencia, peak testing, volumen, etc. 

Compatibilidad

La compatibilidad se refiere al grado en que el software es compatible con el hardware previsto, el navegador, el sistema operativo, etc.

Los atributos enumerados incluyen coexistencia e interoperabilidad. Coexistencia significa el grado en el que puede funcionar de manera eficiente mientras comparte un entorno y recursos comunes con otros productos, sin un impacto perjudicial en ningún otro producto. Interoperabilidad significa el grado en que dos o más sistemas, productos o componentes pueden intercambiar información y utilizarla.

Las pruebas que se pueden realizar para garantizar estos atributos de calidad son las pruebas de conformidad, compatibilidad, interoperabilidad y conversión.

Usabilidad

La usabilidad se refiere a la facilidad con la que el usuario interactúa con la interfaz.

Los atributos de usabilidad incluyen la operatividad (el grado en que los atributos facilitan la operación y el control) y la protección contra errores del usuario (qué tan bien la interfaz protege y evita que el usuario cometa errores). Un sistema es altamente utilizable si los usuarios tienden a no cometer muchos errores, aprenden a usarlo rápidamente, realizan tareas de manera oportuna y están satisfechos con el sistema en general.

Las pruebas de usabilidad incluyen pruebas de UX y pruebas de accesibilidad (como localización e internacionalización), entre otras.

Fiabilidad

La fiabilidad se refiere a la probabilidad del funcionamiento de sistemas sin fallas, durante un período de tiempo específico en un entorno determinado.

Los atributos de calidad de fiabilidad incluyen madurez (grado en el que satisface las necesidades de confiabilidad), disponibilidad (qué tan accesible es), recuperabilidad (qué tan bien puede volver a su estado anterior deseado después de una interrupción o falla) y tolerancia a fallas (qué tan bien puede operar y hacer frente a la presencia de fallas de hardware o software).

Algunas pruebas dentro del área de confiabilidad incluyen pruebas de respaldo/recuperación y pruebas de recuperación ante desastres.

Seguridad

La seguridad en el software se refiere al grado en que se protege la información y los datos para que los usuarios u otras entidades tengan el grado de acceso apropiado a los datos. En otras palabras, solo las personas que están autorizadas a acceder a los datos acceden a ellos, frustrando posibles ataques.

Los atributos de seguridad incluyen confidencialidad, integridad, no repudio, responsabilidad y autenticidad. La confidencialidad se refiere al grado en que los datos son accesibles solo para quienes tienen la autoridad para acceder a ellos, mientras que la integridad es el grado en que protege dicha confidencialidad. El no repudio se refiere a qué tan bien puede probar cuándo y dónde tuvo lugar una acción o evento para que no pueda ser repudiado (negado) más adelante. La rendición de cuentas es el grado en el que las acciones de una entidad se pueden rastrear de forma exclusiva hasta la entidad. Por último, la autenticidad es el grado en que se puede probar que un sujeto o recurso es lo que dice ser.

La seguridad es un tema crítico en la actualidad ya que cada vez más las empresas están tomando medidas para evitar multas. Algunas de las pruebas que analizan el atributo de seguridad son las pruebas de penetración, pruebas de vulnerabilidad, ethical hacking y análisis estático.

Mantenibilidad

La mantenibilidad es un factor de calidad del software bastante sencillo, se refiere a lo fácil que es mantener el sistema, es decir, analizarlo, cambiarlo y probarlo.

Los atributos asociados con la mantenibilidad son la modularidad, la reutilización, la capacidad de análisis, la modificabilidad y la capacidad de las pruebas. La modularidad se refiere al grado en que se constituye de componentes discretos, de modo que un cambio en un componente tiene un impacto mínimo en otros. La reutilización se refiere al grado en que un activo se puede utilizar en más de un sistema o en la construcción de otros activos. La capacidad de análisis se refiere a qué tan bien podemos evaluar el impacto de un cambio previsto, diagnosticar deficiencias o identificar las partes que debemos modificar. La modificabilidad es el grado en que se puede modificar sin introducir defectos o afectar la calidad existente. Por último, la capacidad de prueba se refiere a qué tan bien se pueden establecer los criterios de prueba y qué pruebas se pueden realizar para determinar si esos criterios se han cumplido (también conocido como, ¡qué fácil es para los testers hacer nuestro trabajo con esto!).

Las pruebas que están asociadas con la mantenibilidad incluyen revisión de pares, análisis estático, para lo cual, como ejemplo, podríamos usar la herramienta, sonarqube y verificaciones similares.

Portabilidad

La portabilidad se refiere a la facilidad con la que una aplicación se puede mover de un entorno a otro.

Dentro de los atributos de la portabilidad se encuentran la fácil instalación, capacidad de ser reemplazado y adaptabilidad. Se realizan pruebas de instalación para ver qué tan bien se puede instalar o desinstalar en un entorno específico. La reemplazabilidad se refiera a la capacidad de una aplicación de ser utilizada en lugar de otra con el mismo propósito y en el mismo entorno. Por su parte, la adaptabilidad se refiere a la capacidad del sistema de adaptarse a diferentes entornos.

De igual forma, existen pruebas de software para cada uno de estos atributos con la misma denominación.

La Calidad es subjetiva

Finalmente, algo muy importante a destacar como mencionábamos al inicio, es que la calidad es la sumatoria de los factores de calidad, pero no hay que olvidar que la calidad es subjetiva.

La subjetividad se refiere puntualmente a definir qué importancia tiene de cada uno de los factores. Cada usuario, grupo de usuarios, público objetivo, etc. determinará cada factor de manera diferente. Por ejemplo, para un usuario, puede ser fundamental que sea fácil de entender la aplicación (simple y fácil de usar) y, siempre que satisfaga ese requisito, es posible que no le importe si se ejecuta un poco lento. Luego, pueden haber otros usuarios que ni siquiera consideren usar una aplicación si no se ejecuta lo suficientemente rápido ni usa un consumo mínimo de recursos.

Siempre habrá variación dentro de los tipos de usuarios, a quienes debemos tener en cuenta al desarrollar y probar software. Por ejemplo, nos preocuparemos por diferentes aspectos de calidad a la hora de diseñar para niños, adolescentes, público en general, adultos mayores, etc. y en qué contextos se utilizará: en la calle, en la oficina, en casa, etc.

Como testers, tenemos el desafío de observar la software testing wheel y determinar en qué pruebas centrarnos más, según el peso de los diferentes factores que los usuarios les asignarán.


Esperamos que hayas comprendido de manera más general en qué consisten los diferentes factores de la calidad del software. ¡No dudes en compartir con tus colegas y dejarnos un comentario!


Otros contenidos relacionados

Pruebas de Usabilidad desde la mirada del Testing

Cómo crear la estrategia de pruebas adecuada para tu proyecto

3 métricas clave de Pruebas de Performance que todo tester debe conocer

14 / 166