Las pruebas de sistemas son las pruebas de software de extremo a extremo basadas en el rendimiento de todo un sistema. Estas pruebas de extremo a extremo incluyen aspectos de pruebas funcionales, pruebas no funcionales, pruebas de interfaz, pruebas de estrés y pruebas de recuperación.
Imagine que está mirando un sistema de software bajo un microscopio, comenzando en el nivel más extremo de aumento, con la unidad. Este es el componente básico del sistema de software. A continuación, la vista se amplía hacia afuera para incluir el siguiente nivel de ampliación: los módulos creados por esas unidades individuales. Finalmente, al alejar completamente la vista, se llega al nivel del sistema. En este nivel de ampliación, puede verse todo dentro del sistema y cómo todos los componentes creados por esos módulos trabajan juntos.
En cierto modo, las pruebas de sistemas son como esa vista microscópica, pero con una diferencia clave. La prueba de sistemas son una forma de pruebas de caja negra, lo que significa que los evaluadores están menos interesados en la vista de los componentes involucrados en su ensamblaje que en la funcionalidad general del sistema. Desde este tipo de perspectiva de “pasar/fallar”, el comportamiento del sistema solo es digno de mención en este contexto en lo que se refiere al rendimiento del sistema. (Las pruebas de caja blanca permiten una mayor visibilidad de la naturaleza de los componentes dentro de un sistema).
Las pruebas de sistemas 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 de la industria
Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.
Consideremos la cuenta regresiva que precede a los lanzamientos espaciales. Si bien todos recuerdan la dramática cuenta regresiva de 10 pasos antes del encendido y el despegue, menos recuerdan las numerosas verificaciones departamentales que solicita el jefe de vuelo y responde afirmativamente como "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 muchos otros asuntos. Se consulta a cada departamento y cada jefe de departamento responde a su vez.
Del mismo modo, las pruebas de sistemas pueden considerarse la lista de verificación final que precede al lanzamiento de un nuevo sistema de software. Se completó la última ronda de limpieza de errores de software conocidos. Y al igual que las históricas listas de verificación que originaron los primeros pioneros del espacio, todo se reduce a un paso final de cada "departamento" incluido dentro de las pruebas de sistemas.
Cada consulta está sombreada en términos de la funcionalidad del sistema:
Cuando hablemos de las pruebas de sistemas, naturalmente nos encontraremos con el tema de las dependencias, que son relaciones que existen dentro de los casos de prueba. En tales 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 implicar funcionalidad, entornos de pruebas o políticas de seguridad e incluso pueden afectar todo el proceso de prueba 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 deficiencias, errores o requisitos faltantes, ya que determina la funcionalidad general de la aplicación de software.
Las pruebas del sistema generalmente se realizan 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 abarcan los aspectos funcionales y no funcionales del sistema. Como se basan tanto en las áreas estrictamente funcionales como en las que no son funcionales, abordan aspectos tan amplios como la usabilidad, la seguridad y el rendimiento.
Uno de los principales propósitos de las pruebas del sistema es que permite verificar que la programación de un software se puede traducir a un programa utilizable. Sin embargo, el objetivo general de las pruebas de sistemas es garantizar que el software que se evalúa sea capaz de satisfacer los requisitos empresariales de los usuarios que lo utilizarán.
El proceso de prueba tiene como objetivo reflejar el mismo entorno de producción que se utilizará, para garantizar que el software funcione según lo 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 que se llevan a cabo los casos de prueba, se pueden localizar y corregir los defectos en el software.
Las pruebas de sistemas se pueden clasificar según uno de tres grupos principales. El primero, las pruebas funcionales, se refiere al rendimiento del sistema, pero no busca una respuesta más profunda más allá de saber si el software funciona según lo prometido. 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 una gran cantidad de variables pertinentes, como la seguridad del sistema, la experiencia de usuario y los aspectos relacionados con el 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 de sistemas no funcionales:
Otros tipos de pruebas de sistemas son útiles a pesar de no entrar en las categories de pruebas de funcionamiento o pruebas de no funcionamiento. Estas son algunas de las más notables de estas metodologías:
Si bien el proceso de prueba de sistemas proporciona las pruebas de rendimiento de caja negra más completas disponibles, la realización de pruebas de sistemas no está exenta de problemas potenciales:
Los requisitos que las pruebas del sistema deben satisfacer son numerosos, ya sean requisitos comerciales endémicos de esa organización, requisitos funcionales exclusivos de ese software o requisitos específicos que pueden aplicarse a su operación. De hecho, nunca parece haber una escasez de requisitos del sistema que los sistemas operativos deben absorber. Los requisitos que cambian con frecuencia pueden afectar al sistema y dejarlo con un conjunto incompleto de casos de prueba.
A nadie le sorprende que los plazos puedan causar estragos en un entorno empresarial. Los plazos son legendarios por causar impactos severos cuando los horarios de trabajo chocan con las expectativas del calendario. La presión de los plazos en el desarrollo de software se manifiesta en que, a menudo, las pruebas del sistema adecuadas y exhaustivas se descuidan 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 en el vacío ni sin esfuerzo. Requiere el trabajo calificado de los equipos de prueba, herramientas de prueba para ayudar en ese trabajo y un presupuesto adecuado para permitirlo 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 niega, es posible que ejerza un impacto negativo en la cobertura de prueba que resulta de las pruebas de sistemas de esa aplicación o productos de software.
Durante el proceso de prueba se pueden evaluar muchas vulnerabilidades potenciales, pero el personal de ingeniería de software solo puede realizar esas evaluaciones si cuenta con el apoyo y el control del entorno de prueba en el que trabaja. 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 errores de software que necesitan reparación, a menudo tienen más dificultades para reproducir esos errores más adelante.
Cuando su tarea implica el aseguramiento de la 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 con cualquier empresa, los problemas de comunicación generan malentendidos y crean un entorno de producción en el que los defectos pueden escapar a la detección y arraigarse dentro de los sistemas operativos.
Las técnicas de prueba varían y los resultados de las pruebas son de todo tipo, desde datos de prueba fáciles de entender hasta conjuntos de datos amplios y complejos 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 contrapartes de producción. La estrategia de pruebas que se implementa durante el proceso de desarrollo de software debe considerar la mejor manera de abordar estos problemas.
watsonx.ai permite a los equipos de desarrollo de aplicaciones integrar perfectamente la IA en sus flujos de trabajo. Desde la creación de modelos hasta su despliegue, este completo kit de herramientas da soporte a todo el ciclo de vida de la IA.
Utilice una plataforma para el desarrollo de aplicaciones de mainframe, pruebas, demostración y entrenamiento en hardware x86.
Descubra la plataforma de desarrollo de aplicaciones móviles de IBM para diseñar, crear prototipos y comercializar aplicaciones de manera rápida y sencilla.