Articulo de referencia

Pruebas de fiabilidad del software

Las pruebas de confiabilidad de software son una rama de las pruebas de software que se centra en evaluar la capacidad de un software para funcionar, dadas las condiciones ambie...

Las pruebas de confiabilidad de software son una rama de las pruebas de software que se centra en evaluar la capacidad de un software para funcionar, dadas las condiciones ambientales, durante un período de tiempo determinado. Estas pruebas ayudan a descubrir muchos problemas en el diseño y la funcionalidad del software .

Descripción general

La fiabilidad del software es la probabilidad de que funcione correctamente en un entorno específico y durante un tiempo determinado. Mediante la siguiente fórmula, se calcula la probabilidad de fallo probando una muestra de todos los estados de entrada disponibles: Tiempo medio entre fallos (MTBF) = Tiempo medio hasta el fallo (MTTF) + Tiempo medio de reparación (MTTR).

Probabilidad = Número de casos fallidos / Número total de casos en consideración

El conjunto de todos los estados de entrada posibles se denomina espacio de entrada. Para determinar la fiabilidad del software, necesitamos encontrar el espacio de salida a partir del espacio de entrada y el software dados. [ 1 ]

Para las pruebas de confiabilidad, se recopilan datos de diversas etapas de desarrollo, como las etapas de diseño y operación. Las pruebas están limitadas debido a restricciones como las de costo y tiempo. Se obtienen muestras estadísticas de los productos de software para probar la confiabilidad del software. Una vez que se recopilan datos o información suficientes, se realizan estudios estadísticos. Las restricciones de tiempo se manejan aplicando fechas o plazos fijos para la realización de las pruebas. Después de esta fase, se detiene el diseño del software y comienza la fase de implementación real. Debido a las restricciones de costo y tiempo, los datos se recopilan cuidadosamente para que cada dato tenga un propósito y obtenga la precisión esperada. [ 2 ] Para lograr resultados satisfactorios de las pruebas de confiabilidad, se deben tener en cuenta algunas características de confiabilidad. Por ejemplo, el tiempo medio hasta el fallo (MTTF) [ 3 ] se mide en términos de tres factores:

  1. tiempo de funcionamiento,
  2. número de ciclos de encendido y apagado,
  3. y el tiempo del calendario.

Si las restricciones se refieren al tiempo de operación o si el enfoque está en el primer punto de mejora, se pueden aplicar aceleraciones de tiempo comprimido para reducir el tiempo de prueba. Si el enfoque está en el tiempo calendario (es decir, si hay plazos predefinidos), se utilizan pruebas de estrés intensificadas . [ 2 ] [ 4 ]

Medición

La disponibilidad del software se mide en términos de tiempo medio entre fallos (MTBF). [ 5 ]

El MTBF se compone del tiempo medio hasta el fallo (MTTF) y el tiempo medio de reparación (MTTR). El MTTF es la diferencia de tiempo entre dos fallos consecutivos y el MTTR es el tiempo necesario para reparar el fallo. [ 6 ]

METROTBF=METROTTF+METROTTR{\displaystyle MTBF=MTTF+MTTR}

La disponibilidad en estado estable representa el porcentaje de tiempo que el software está operativo.

A=METROTTFMETROTTF+METROTTR=METROTTFMETROTBF{\displaystyle A={\frac {MTTF}{MTTF+MTTR}}={\frac {MTTF}{MTBF}}}

Por ejemplo, si el MTTF es de 1000 horas para un software, entonces el software debería funcionar durante 1000 horas de operación continua.

Para el mismo software, si el MTTR = 2 horas, entonces el . METROTBF=1000+2=1002{\displaystyle MTBF=1000+2=1002}

Respectivamente,A=1000/10020,998{\displaystyle A=1000/1002\approx 0.998}

La fiabilidad del software se mide en términos de tasa de fallos ( ). λ{\displaystyle \lambda }

λ=1METROTBF{\displaystyle \lambda ={\frac {1}{MTBF}}}
R(t)=miλt{\displaystyle R(t)=e^{-\lambda \cdot t}}

La fiabilidad del software es un número entre 0 y 1. La fiabilidad aumenta cuando se eliminan errores o fallos del programa. [ 7 ] Existen muchos modelos de crecimiento de la fiabilidad del software (SRGM) ( Lista de modelos de fiabilidad del software ), incluidos los modelos logarítmico, polinómico, exponencial, potencial y en forma de S.

Objetivos de las pruebas de fiabilidad

El objetivo principal de las pruebas de fiabilidad es evaluar el rendimiento del software en condiciones dadas, sin ningún tipo de medida correctiva, utilizando procedimientos fijos conocidos y teniendo en cuenta sus especificaciones.

Objetivos secundarios

Los objetivos secundarios de las pruebas de fiabilidad son:

  1. Encontrar la estructura perceptiva de los fallos repetitivos.
  2. Para determinar el número de fallos que se producen en un período de tiempo específico.
  3. Para calcular la vida útil media del software.
  4. Para descubrir la causa principal del fallo.
  5. Verificar el rendimiento de las diferentes unidades de software después de tomar medidas preventivas.

Puntos para definir objetivos

Algunas restricciones para la creación de objetivos incluyen:

  1. El comportamiento del software debe definirse en condiciones dadas.
  2. El objetivo debe ser factible.
  3. Deben proporcionarse restricciones de tiempo. [ 8 ]

Importancia de las pruebas de fiabilidad

La aplicación del software informático se ha extendido a numerosos campos, siendo una parte esencial de los sistemas industriales, comerciales y militares. Debido a sus múltiples aplicaciones en sistemas críticos para la seguridad, la fiabilidad del software es ahora un área de investigación importante. Si bien la ingeniería de software se está convirtiendo en la tecnología de más rápido desarrollo del último siglo, no existe una medida cuantitativa, científica y completa para evaluarla. Las pruebas de fiabilidad del software se utilizan como herramienta para ayudar a evaluar estas tecnologías de ingeniería de software. [ 9 ]

Para mejorar el rendimiento del producto de software y del proceso de desarrollo de software, se requiere una evaluación exhaustiva de la fiabilidad. Probar la fiabilidad del software es importante porque resulta de gran utilidad para los gestores y profesionales del software. [ 10 ]

Para verificar la fiabilidad del software mediante pruebas:

  1. Se debe ejecutar un número suficiente de casos de prueba durante un tiempo suficiente para obtener una estimación razonable de cuánto tiempo se ejecutará el software sin fallar. Se necesitan pruebas de larga duración para identificar defectos (como fugas de memoria y desbordamientos de búfer) que tardan en provocar un fallo.
  2. La distribución de los casos de prueba debe coincidir con el perfil operativo real o previsto del software. Cuanto más a menudo se ejecute una función o un subconjunto del software, mayor será el porcentaje de casos de prueba que se le deben asignar.

Tipos de pruebas de fiabilidad

Las pruebas de confiabilidad del software incluyen pruebas de características, pruebas de carga y pruebas de regresión . [ 11 ]

Prueba de características

Las pruebas de funcionalidad verifican las características que ofrece el software y se llevan a cabo siguiendo los siguientes pasos:

  • Cada operación del software se ejecuta una sola vez.
  • La interacción entre las dos operaciones se reduce y
  • Se comprueba que cada operación se haya ejecutado correctamente.

La prueba de características va seguida de la prueba de carga. [ 11 ]

Prueba de carga

Esta prueba se realiza para comprobar el rendimiento del software bajo carga máxima. Cualquier software funciona mejor hasta cierto nivel de carga, después del cual el tiempo de respuesta comienza a degradarse. Por ejemplo, se puede probar un sitio web para ver cuántos usuarios simultáneos puede soportar sin que se degrade el rendimiento. Esta prueba es útil principalmente para bases de datos y servidores de aplicaciones . Las pruebas de carga también requieren pruebas de rendimiento del software , que comprueban qué tan bien funciona un software bajo carga. [ 11 ]

Prueba de regresión

Las pruebas de regresión se utilizan para comprobar si se han introducido nuevos errores a través de correcciones de errores anteriores. Estas pruebas se realizan después de cada cambio o actualización en las funcionalidades del software. Su periodicidad depende de la extensión y las funcionalidades del software. [ 11 ]

Planificación de pruebas

Las pruebas de confiabilidad son más costosas que otros tipos de pruebas. Por lo tanto, al realizarlas, se requiere una gestión y planificación adecuadas. Este plan incluye el proceso de prueba a implementar, datos sobre el entorno, cronograma de pruebas, puntos de prueba, etc.

Problemas en el diseño de casos de prueba

Algunos problemas comunes que surgen al diseñar casos de prueba incluyen:

  • Los casos de prueba se pueden diseñar simplemente seleccionando solo valores de entrada válidos para cada campo del software. Cuando se realizan cambios en un módulo específico, es posible que los valores anteriores no prueben las nuevas funcionalidades introducidas en la versión anterior del software.
  • Es posible que existan algunas ejecuciones críticas en el software que no estén cubiertas por ningún caso de prueba existente. Por lo tanto, es necesario asegurar que se consideren todos los tipos posibles de casos de prueba mediante una cuidadosa selección de los mismos. [ 11 ]

Mejora de la fiabilidad mediante pruebas

Los estudios realizados durante el desarrollo y el diseño del software contribuyen a mejorar la fiabilidad del producto. Las pruebas de fiabilidad se llevan a cabo esencialmente para eliminar los modos de fallo del software. Las pruebas de vida útil del producto siempre deben realizarse una vez finalizada la fase de diseño o, al menos, cuando el diseño completo esté terminado. [ 12 ] El análisis de fallos y la mejora del diseño se logran mediante pruebas.

Pruebas de crecimiento de confiabilidad

[ 12 ] Esta prueba se utiliza para verificar nuevos prototipos del software que inicialmente se supone que fallan con frecuencia. Se detectan las causas de la falla y se toman medidas para reducir los defectos. Supongamos que T es el tiempo total acumulado para el prototipo. n(T) es el número de fallas desde el inicio hasta el tiempo T. La gráfica dibujada para n(T)/T es una línea recta. Esta gráfica se llama Gráfico de Duane. Se puede obtener cuánta confiabilidad se puede ganar después de todos los demás ciclos de prueba y corregirlo.

lnorte[norte(T)T]=αlnorte(T)+b;               .....miq:1{\displaystyle {\begin{alignedat}{5}ln\left[{\frac {n\left(T\right)}{T}}\right]=-\alpha ln\left(T\right)+b;\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .....Eq:1\end{alignedat}}}

resolviendo la ecuación 1 para n(T),

norte(T)=KT1α;                   ......miq:2{\displaystyle {\begin{alignedat}{5}n\left(T\right)=KT^{1-\alpha };\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ......Eq:2\end{alignedat}}}

donde K es e^b. Si el valor de alfa en la ecuación es cero, la fiabilidad no puede mejorarse como se espera para un número determinado de fallos. Si alfa es mayor que cero, el tiempo acumulado T aumenta. Esto explica que el número de fallos no dependa de la duración de las pruebas.

Diseño de casos de prueba para la versión actual.

Si se añaden nuevas funciones a la versión actual del software, la forma de escribir un caso de prueba para esa operación es diferente.

  • Primero, planifique cuántos casos de prueba nuevos se deben escribir para la versión actual.
  • Si la nueva función forma parte de alguna función ya existente, entonces compartan los casos de prueba de las funciones nuevas y existentes entre ellas.
  • Finalmente, combine todos los casos de prueba de la versión actual y la anterior y registre todos los resultados. [ 11 ]

Existe una regla predefinida para calcular el número de nuevos casos de prueba para el software. Si N es la probabilidad de ocurrencia de nuevas operaciones para una nueva versión del software, R es la probabilidad de ocurrencia de operaciones usadas en la versión actual y T es el número de todos los casos de prueba usados ​​previamente, entonces

nortemiwTmistdoasmis(dorrminortetrmilmiasmi)=(norteR)T{\displaystyle {\begin{alignedat}{5}NewTestcases_{(currentrelease)}=\left({\frac {N}{R}}\right)*T\end{alignedat}}}

Evaluación de la fiabilidad basada en pruebas operativas

El método de pruebas operacionales se utiliza para evaluar la fiabilidad del software. En este método, se comprueba cómo funciona el software en su entorno operacional correspondiente. El principal problema de este tipo de evaluación radica en la construcción de dicho entorno operacional. Este tipo de simulación se utiliza en algunas industrias, como la nuclear y la aeronáutica. Predecir la fiabilidad futura forma parte de la evaluación de la fiabilidad.

Existen dos técnicas utilizadas para las pruebas operativas con el fin de comprobar la fiabilidad del software:

Estimación de la fiabilidad en estado estacionario
En este caso, utilizamos la retroalimentación de los productos de software ya entregados. En función de esos resultados, podemos predecir la fiabilidad futura de la próxima versión del producto. Esto es similar a las pruebas de muestreo que se realizan con productos físicos.
Predicción basada en el crecimiento de la fiabilidad
Este método utiliza la documentación del procedimiento de prueba. Por ejemplo, consideremos un software desarrollado y que estamos creando diferentes versiones nuevas de ese software. Consideramos los datos de las pruebas de cada versión y, basándonos en la tendencia observada, predecimos la fiabilidad de la nueva versión del software. [ 13 ]

Evaluación y predicción del crecimiento de la fiabilidad

Para la evaluación y predicción de la fiabilidad del software, utilizamos el modelo de crecimiento de la fiabilidad. Durante el funcionamiento del software, cualquier dato sobre sus fallos se almacena en formato estadístico y se introduce en el modelo de crecimiento de la fiabilidad. Con estos datos, el modelo puede evaluar la fiabilidad del software.

Existe abundante información sobre modelos de crecimiento de la fiabilidad, con modelos de probabilidad que pretenden representar el proceso de fallos. Sin embargo, no existe un modelo que sea el más adecuado para todas las condiciones. Por lo tanto, debemos elegir un modelo en función de las condiciones apropiadas.

Estimación de la fiabilidad basada en el funcionamiento sin fallos

En este caso, la fiabilidad del software se estima con supuestos como los siguientes:

  • Si se encuentra un defecto, ¿alguien lo va a arreglar?
  • Corregir el defecto no afectará la fiabilidad del software.
  • Cada corrección en el software es precisa. [ 13 ]

Véase también

Referencias

  1. ^ Fiabilidad del software . Hoang Pham.
  2. ^ a b E.E.Lewis (1988). "Introducción a la ingeniería de confiabilidad". Tecnología nuclear . 82 (2): 235. Bibcode : 1988NucTe..82..235K . doi : 10.13182/NT88-A34110 .
  3. ^ "MTTF" .
  4. ^ Práctica recomendada de IEEE sobre confiabilidad de software , IEEE, doi : 10.1109/ieeestd.2017.7827907 , ISBN 978-1-5044-3648-9
  5. ^ Roger Pressman (1982). Ingeniería de software: Un enfoque práctico . McGraw Hill. ISBN 978-0-07-050781-4.
  6. ^ "Enfoques para las pruebas de confiabilidad y establecimiento de objetivos para las pruebas de confiabilidad" .
  7. ^ Aditya P. Mathur. Fundamentos de las pruebas de software . Publicaciones Pearson.
  8. ^ Manual de pruebas de fiabilidad y vida útil . Dimitri Kececioglu.
  9. ^ Una base estadística para la evaluación de la confiabilidad del software . M. xie.
  10. ^ Modelado de confiabilidad de software . M. Xie.
  11. ^ a b c d e f John D. Musa (2004). Ingeniería de confiabilidad de software: software más confiable, más rápido y más barato . McGraw-Hill. ISBN 0-07-060319-7.
  12. ^ a b E.E.Liwis (15 de noviembre de 1995). Introducción a la ingeniería de confiabilidad . ISBN 0-471-01833-3.
  13. ^ a b "Problema de evaluar la fiabilidad". CiteSeerX 10.1.1.104.9831 . {{cite web}}: Falta o está vacío |url=( ayuda )
  • Tiempo medio entre fallos
  • Pruebas de ciclo de vida del software
Obtenido de " https://en.wikipedia.org/w/index.php?title=Software_reliability_testing&oldid=1272005128 "