Las pruebas del sistema son las pruebas de software integrales basadas en el rendimiento de todo un sistema. Esta prueba integral incluye aspectos de pruebas funcionales, pruebas no funcionales, pruebas de interfaz, pruebas de estrés y pruebas de recuperación.
Imagine que está observando un sistema de software con un microscopio, comenzando por el nivel de aumento más extremo, la unidad. Este es el bloque de construcción básico del sistema de software. A continuación, la vista se amplía hacia el exterior para incluir el siguiente nivel de aumento: los módulos creados por esas unidades individuales. Finalmente, al alejar completamente la vista, llega al nivel del sistema. En este nivel de aumento, puede ver todo lo que hay dentro del sistema y cómo funcionan juntos todos los componentes creados por esos módulos.
En cierto modo, las pruebas del sistema son como esa vista microscópica, pero con una diferencia clave. Las pruebas del sistema son una forma de prueba de caja negra, lo que significa que los evaluadores están menos interesados en la visión de los componentes implicados en su ensamblaje que en la funcionalidad general del sistema. Desde este tipo de perspectiva de "aprobado/suspenso", el comportamiento del sistema solo es digno de mención en este contexto en la medida en que se relaciona con el rendimiento del sistema. (Las pruebas de caja blanca permiten una mayor visibilidad de la naturaleza de los componentes dentro de un sistema).
Las pruebas del sistema a menudo implican el análisis de múltiples sistemas de software separados que pueden o no funcionar al unísono dentro de un sistema de software en particular.
Boletín del sector
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Piense en la cuenta atrás que precede a los lanzamientos espaciales. Aunque todo el mundo recuerda la dramática cuenta atrás de diez pasos antes del encendido y el despegue, pocos recuerdan las numerosas comprobaciones departamentales que solicita el jefe de vuelo y que se responden afirmativamente con un "adelante". En un lanzamiento espacial típico, se consulta a los jefes de departamento sobre las operaciones planificadas, la seguridad de la misión, los sistemas de los vehículos y las condiciones meteorológicas previstas, entre muchas otras cuestiones. Se consulta a cada departamento y cada jefe de departamento responde por turnos.
De manera similar, las pruebas del sistema pueden considerarse la lista de verificación final que precede al lanzamiento de un nuevo sistema de software. Se ha completado la última ronda de limpieza de los errores de software conocidos. Y, al igual que las históricas listas de verificación que crearon los primeros pioneros espaciales, todo se reduce a una última prueba de cada “departamento” incluido en las pruebas del sistema.
Cada consulta se sombrea en función de la funcionalidad del sistema:
Cuando hablemos de las pruebas del sistema, naturalmente nos encontraremos con el tema de las dependencias, que son relaciones que existen dentro de los casos de prueba. En estas situaciones, el resultado de un caso de prueba puede depender parcial o totalmente de los resultados de otros casos de prueba. Las dependencias también pueden afectar a la funcionalidad, los entornos de pruebas o las políticas de seguridad, e incluso pueden repercutir en todo el proceso de pruebas que mantiene una organización.
Las metodologías de prueba del sistema no proporcionan una visión profunda de su funcionamiento interno (recuerde, esta es una forma de prueba de caja negra), sino que le permite saber si una aplicación en particular funciona. La idea es que las pruebas del sistema ayuden a localizar huecos, errores o requisitos faltantes, ya que determinan la funcionalidad general de la aplicación de software.
Las pruebas del sistema suelen realizarse después de las pruebas de integración pero antes de las pruebas de aceptación, lo que garantiza que todos los componentes funcionen juntos correctamente. Como veremos, a menudo abarca tanto los aspectos funcionales como los no funcionales del sistema. Como se basa tanto en las áreas estrictamente funcionales como en las que no son funcionales, aborda aspectos tan amplios como la usabilidad, la seguridad y el rendimiento.
Uno de los principales propósitos de las pruebas del sistema es que permiten verificar que el lenguaje de codificación de un software puede traducirse en un programa utilizable. Sin embargo, el objetivo general de las pruebas del sistema es asegurarse de que el software que se está evaluando es compatible con los requisitos empresariales de los usuarios que confiarán en él.
El proceso de prueba pretende reflejar el mismo entorno de producción que se utilizará, para garantizar que el software funciona como es necesario a pesar de las condiciones cambiantes del mundo real. Del mismo modo, los datos de prueba se crean para imitar datos y situaciones del mundo real. Una vez realizados los casos de prueba, se pueden localizar y corregir los defectos del software.
Las pruebas del sistema se pueden clasificar en uno de tres grupos principales. La primera, las pruebas funcionales, se ocupa del rendimiento del sistema, pero no busca una respuesta más profunda más allá de saber si el software funciona como se prometió. Estos son algunos de los principales tipos de pruebas funcionales:
Si bien las pruebas funcionales proporcionan información extremadamente importante, esos datos se limitan básicamente a un voto a favor o en contra basado estrictamente en si el sistema funciona como debería. Eso omite un gran número de variables pertinentes, como la seguridad del sistema, la UX y los aspectos de rendimiento.
Las pruebas no funcionales del sistema proporcionan un medio para juzgar cómo funciona el sistema. La diferencia esencial entre las pruebas funcionales y las pruebas no funcionales se puede reducir a la siguiente comparación simple:
Con eso en mente, estas son algunas de las formas clave de pruebas del sistema no funcionales:
Otros tipos de pruebas del sistema son útiles a pesar de no entrar en las categories de pruebas de funcionamiento o pruebas de no funcionamiento. Estas son algunas de las metodologías más destacadas:
Aunque el proceso de pruebas del sistema proporciona las pruebas de rendimiento de caja negra más completas disponibles, la realización de pruebas del sistema no está exenta de problemas potenciales:
Los requisitos que deben cumplir las pruebas del sistema son numerosos, ya sean requisitos empresariales propios de esa organización, requisitos funcionales exclusivos de ese software o requisitos específicos que puedan aplicarse a su funcionamiento. De hecho, nunca parece haber escasez de requisitos del sistema que los sistemas operativos deben absorber. Los requisitos que cambian con frecuencia pueden complicar un sistema y dejarlo con un lote incompleto de casos de prueba.
A nadie debería sorprenderle que los plazos puedan causar estragos en un entorno empresarial. Los plazos son famosos por crear impactos duros, ya que los horarios de trabajo chocan con las expectativas dictadas por el calendario. La forma en la que la presión de los plazos se manifiesta en el desarrollo de software es que, a menudo, las pruebas adecuadas y amplias del sistema se dejan de lado y se realizan de forma incompleta o se ignoran por completo. Esto a menudo requiere volver a probar más adelante en el ciclo de vida del desarrollo de software.
Las pruebas del sistema no se realizan de forma aislada ni sin esfuerzo. Requiere el trabajo cualificado de equipos de pruebas, herramientas de pruebas que ayuden a esa labor y un presupuesto adecuado que lo permita en primer lugar. Sin estos componentes, es fácil implementar atajos en su lugar, lo que lleva a pruebas incompletas. Y si alguna parte de esa ecuación se altera o se niega, es posible que ejerza un impacto negativo en la cobertura de prueba que resulta de las pruebas del sistema de esa aplicación o productos de software.
Muchas vulnerabilidades potenciales pueden evaluarse durante el proceso de pruebas, pero el personal de ingeniería de software solo puede realizar esas evaluaciones si cuenta con el apoyo y el control del entorno de pruebas en el que está trabajando. Cuando los evaluadores no trabajan en entornos estables, les resulta más fácil pasar por alto posibles defectos de software. Y si los evaluadores en entornos inestables encuentran fallos de software que necesitan reparación, a menudo les resulta más difícil reproducir esos fallos más adelante.
Cuando su tarea implica la garantía de calidad del software, revisar líneas de código informático es un trabajo minucioso que puede volverse tedioso y llevar mucho tiempo. Lo que puede hacer que este tipo de trabajo sea aún más desagradable es cuando se producen brechas de comunicación entre evaluadores, desarrolladores y otros stakeholders. Al igual que en cualquier iniciativa empresarial, los problemas de comunicación generan malentendidos y crean un entorno de producción en el que los defectos pueden pasar desapercibidos y arraigarse en los sistemas operativos.
Las técnicas de prueba varían y los resultados de las pruebas son de todo tipo, desde datos de prueba de simple comprensión hasta vastos y complejos conjuntos de datos que requieren una gestión más seria durante y después de la fase de prueba. El nivel de complejidad del proyecto aumenta aún más cuando los entornos de prueba no reflejan completamente sus homólogos de producción. La estrategia de pruebas que se implemente durante el proceso de desarrollo del software debe considerar la mejor manera de abordar estos problemas.
Un servicio totalmente gestionado y de inquilino único para desarrollar y entregar aplicaciones Java.
Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.
El desarrollo de aplicaciones en la nube significa crear una vez, iterar rápidamente e implementar en cualquier lugar.