Pruebas de Calidad de Software

Pruebas de Calidad de Software
Información sobre la plantilla
Pruebasdecalidad.png
Pruebas realizadas a los software para asegurar su calidad.
CreadorJCSC1

Pruebas de Calidad de Software. En inglés testing son los procesos que permiten verificar y revelar la calidad de un producto software. Son utilizadas para identificar posibles fallos de implementación, calidad, o usabilidad de un programa de ordenador o videojuego. Básicamente es una fase en el desarrollo de software consistente en probar las aplicaciones construidas.

Las pruebas de software se integran dentro de las diferentes fases del ciclo del software dentro de la Ingeniería de software. Así se ejecuta un programa y mediante técnicas experimentales se trata de descubrir que errores tiene.

Concepto de Calidad de Software

Existen diversas definiciones de la Calidad del Software enunciadas por varias compañías entre ellas la ISO y la IEEE que proponen normas y estándares para llevar a cabo una correcta práctica que garantice la buena ejecución de los procesos, dentro de las cuales pueden citarse: “La calidad del software es el grado con el que un sistema componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario”.

“El conjunto de características de una entidad que le confieren su aptitud para satisfacer las necesidades expresadas y las implícitas”.

En resumen a todas las definiciones dadas sobre la calidad de software se puede decir que: "Concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícitamente documentados, y con las características implícitas que se espera de todo software desarrollado profesionalmente".

Para obtener un software con calidad se requiere de la utilización de metodologías y procedimientos estándares para el desarrollo de los requerimientos, el análisis, el diseño, la implementación y, finalmente, las pruebas del software, que son el elemento fundamental para el logro de la calidad de cualquier sistema o parte integrante de éste. Las pruebas permiten nivelar la estrategia de trabajo en aras de lograr una mayor confiabilidad, mantenibilidad y facilidad de las soluciones.

Garantía de la Calidad

La Garantía de Calidad del Software como algunos autores acostumbran llamarle se define como una actividad que posibilita asegurar, proteger todo el proceso de ingeniería de software.

Es un conjunto de procedimientos, técnicas y herramientas, aplicados por profesionales, durante el ciclo de desarrollo de un producto, para asegurar que el producto satisface o excede los estándares o niveles de calidad preestablecidos. (IEEE, 1990)

Es la guía de los preceptos, de gestión y de las disciplinas de diseño para el espacio tecnológico y la aplicación de la ingeniería del software. (IEEE, 2004)

La garantía de calidad consiste en la auditoría y las funciones de información de la gestión. El objetivo de la garantía de calidad es proporcionar la gestión para informar los datos necesarios sobre la calidad del producto, por lo que se va adquiriendo una visión más profunda y segura de que la calidad del producto está cumpliendo sus objetivos. Por supuesto, si los datos proporcionados mediante la garantía de calidad identifican problemas, es responsabilidad de la gestión afrontar los problemas y aplicar los recursos necesarios para resolver los aspectos de calidad. (Pressman, 2002)

Pruebas de Software

En todo proceso de desarrollo de aplicaciones es indispensable la presencia de un proceso de Pruebas de Software que coexista y se integre con este primero para garantizar así el buen funcionamiento y la calidad del producto final. Para lograr lo antes expuesto se debe partir del concepto de que las mismas desempeñan un papel fundamental en esta disciplina.

“Las pruebas constituyen una actividad en la cual un sistema o componente es ejecutado bajo condiciones específicas, se observan o almacenan los resultados y se realiza una evaluación de algún aspecto del sistema o componente”.

Toda prueba de software desempeña un papel fundamental en el desarrollo de cualquier tipo de aplicación, pero si se estudia la mejor forma de hacerlo, siguiendo los pasos de acuerdo con los especialistas en el tema, se incrementan las posibilidades de que esta llegue a un feliz término y arroje resultados más cercanos a los esperados, permitiendo así, realizar a posteriori un mejor análisis de la situación. Para ilustrar mejor esta situación, se presentan a continuación algunos objetivos, características y principios con que deben contar las Pruebas de Software.

Objetivos de las Pruebas de Software

  • Probar si el software no hace lo que debe.
    Diagramapruebas.jpg
  • Probar si el software hace lo que no debe, es decir, si provoca efectos secundarios adversos.
  • Descubrir un error que aún no ha sido descubierto.
  • Encontrar el mayor número de errores con la menor cantidad de tiempo y esfuerzo posibles.
  • Mostrar hasta qué punto las funciones del software operan de acuerdo con las especificaciones y requisitos del cliente.

Características de las Pruebas de Software

  • Alta probabilidad de encontrar un error. El ingeniero de software debe tener un alto nivel de entendimiento de la aplicación a construir para poder diseñar casos de prueba que encuentren el mayor número de defectos.
  • No debe ser redundante. Uno de los objetivos de las pruebas es encontrar el mayor número de errores con la menor cantidad de tiempo y esfuerzo posibles, por lo cual no se deben diseñar casos de prueba que tengan el mismo propósito que otros, sino que se debe tratar de diseñar el menor número de casos de prueba que permitan probar adecuadamente el software y optimizar los recursos.
  • Una buena prueba no debería ser ni demasiado sencilla ni demasiado compleja.

Tipos de Pruebas de Software

Las pruebas en conjunto tienen como objetivo general verificar y validar un software, independientemente de las características y el entorno donde se desarrollen, además de los recursos y los factores vinculados al proceso de desarrollo. 

Funcionalidad

  1. Función: Pruebas fijando su atención en la validación de las funciones, métodos, servicios, caso de uso.
  2. Seguridad: Asegurar que los datos o el sistema solamente es accedido por los actores deseados.
  3. Volumen: Enfocada en verificando las habilidades de los programas para manejar grandes cantidades de datos, tanto como entrada, salida o residente en la BD.

Usabilidad

Prueba enfocada a factores humanos, estéticos, consistencia en la interfaz de usuario, ayuda sensitiva al contexto y en línea, asistente documentación de usuarios y materiales de entrenamiento.

Fiabilidad

  1. Integridad: Enfocada a la valoración exhaustiva de la robustez (resistencia a fallos).
  2. Estructura: Enfocada a la valoración a la adherencia a su diseño y formación. Este tipo de prueba es hecho a las aplicaciones Web asegurando que todos los enlaces están conectados, el contenido deseado es mostrado y no hay contenido huérfano.
  3. Stress: Enfocada a evaluar cómo el sistema responde bajo condiciones anormales. (extrema sobrecarga, insuficiente memoria, servicios y hardware no disponible, recursos compartidos no disponible).

Rendimiento

  1. Benchmark: Es un tipo de prueba que compara el rendimiento de un elemento nuevo o desconocido a uno de carga de trabajo de referencia conocido.
  2. Contención: Enfocada a la validación de las habilidades del elemento a probar para manejar aceptablemente la demanda de múltiples actores sobre un mismo recurso (registro de recursos, memoria).
  3. Carga: Usada para validar y valorar la aceptabilidad de los límites operacionales de un sistema bajo carga de trabajo variable, mientras el sistema bajo prueba permanece constante. La variación en carga es simular la carga de trabajo promedio y con picos que ocurre dentro de tolerancias operacionales normales.

Soportabilidad

  1. Configuración: Enfocada a asegurar que funciona en diferentes configuraciones de hardware y software. Esta prueba es implementada también como prueba de rendimiento del sistema.
  2. Instalación: Enfocada a asegurar la instalación en diferentes configuraciones de hardware y software bajo diferentes condiciones (insuficiente espacio en disco, etc.)

Fuentes