Técnicas Avanzadas de Automatización de Pruebas I

Técnicas Avanzadas de Automatización de Pruebas I

Introducción

El objetivo de estos artículos es asentar los conocimientos acerca de la calidad del software sobre unas bases fundamentales.

¡El aprendizaje es algo imprescindible durante toda la vida, y más especialmente en el sector de las TI!

Fundamentos del proceso de testing funcional – Conceptos y definiciones

Fallos, defectos, errores … 

Error:
Desviación entre el comportamiento real y el comportamiento esperado, no cumplimiento de un requisito establecido

Defecto (defect, fault):
Anomalía en un componente o sistema que puede dar lugar a que no se lleve a cabo correctamente una función determinada. El término “bug” se aplica históricamente a los defectos en informática

Fallo (failure). Efecto del error
Manifestación de un defecto

Equivocación (mistake):
Acción humana que da lugar a un resultado incorrecto

Enmascaramiento del error:
Varios estados de error se compensan mutuamente – no aparece el efecto del error

El software es elaborado por seres humanos que pueden cometer errores que dan lugar a defectos. Estos defectos pueden generar un fallo.

Prueba y Caso de Prueba

Depuración:
Localización y corrección de errores internos

Prueba:
Búsqueda dirigida y sistemática de los efectos del error, para demostrar defectos

Prueba de Software:
Cada ejecución de un objeto de prueba que sirva para su comprobación

Caso de Prueba:
Unión de una prueba y unas condiciones de entorno establecidas – p.ej. Requisitos de ejecución, datos de entrada

Explosión de casos de prueba:
Significa que debido a las numerosas posibilidades de combinación, el número de los posibles casos de prueba crece tanto que pude llevar a un conjunto de cientos o miles de casos de prueba

Calidad de Software

Definición según:

ISO / IEC 9126:

La calidad de software es la totalidad de las propiedades y características de un producto de software referidas a su aptitud para satisfacer necesidades explícitas o implícitas.

IEEE Std 610:

El grado en el que un componente, sistema o proceso alcanza los requisitos especificados y/o las necesidades y expectativas del usuario o cliente

La calidad de Software según ISO / IEC 9126 abarca:

  • Funcionalidad
  • Fiabilidad
  • Usabilidad
  • Eficiencia
  • Mantenibilidad
  • Portabilidad

El aseguramiento de la calidad diferencia entre:

  • Medidas constructivas para evitar errores (QS)
  • Medidas analíticas para la detección de errores (QA)

Medidas analíticas para el aseguramiento de la calidad (QA)

Medidas analíticas para el aseguramiento de la calidad (QA)

Calidad de Software

Una Funcionalidad de buena calidad debe circunscribirse a las características funcionales requeridas (corrección) y cubrir todos los requisitos funcionales definidos (completitud)

Características que debe cumplir una funcionalidad:

Idoneidad (suitability)
¿Son adecuadas las funciones disponibles para la utilización prevista?

Precisión (accuracy)
¿Se ejecutan las funciones correctamente (como estaba acordado)?

Conformidad (compliance)
¿Se cumplieron las normas y preceptos?

Interoperatividad
¿Se proporciona una interrelación libre de errores con el entorno del sistema?

Seguridad
¿Están protegidos los datos / programas frente a accesos / pérdidas?

Calidad de Software. Atributos no funcionales

Fiabilidad :
Capacidad de un software / un sistema de mantener un rendimiento / funcionalidad bajo condiciones predeterminadas durante un periodo de tiempo definido. Da una idea del comportamiento de la calidad a lo largo del tiempo. Factores asociados: tolerancia a fallos, capacidad de recuperación ante fallos

Usabilidad:
Un software es usable si es fácil de entender (uso intuitivo), fácil de aprender o si existe normativa especifica (ver ISO / IEC 9241)

Eficiencia:
Utilización de recursos lo más reducida posible (p.ej. Tiempo de CPU) para la consecución de una tarea

Mantenibilidad:
Esfuerzo necesario para realizar una serie de modificaciones definidas de antemano. Factores asociados: estabilidad, facilidad de cambio

Portabilidad:
Posibilidad de trasladar un software a otro entorno (hardware, software, organizativo)
Factores asociados: facilidad de sustitución, facilidad de instalación, cumplimiento de estándares

¿Por qué es necesario probar?

El software como factor económico

El software contribuye de manera definitiva al funcionamiento de aparatos e instalaciones de uso cotidiano (banca, automoción, …). De hecho, existen sistemas que serían inviables sin un software que los apoyara.

Calidad de Software
La calidad del software es un factor decisivo para el éxito de determinados productos o de las propias empresas. Desgraciadamente todos tenemos experiencias negativas …

  • Movimientos incorrectos en la cuenta del banco, en la factura del teléfono, …
  • Problemas con la “centralita” del automóvil
  • No disponibilidad de páginas web
  • No poder sacar dinero de la cuenta
  • No poder realizar una gestión administrativa
  • No poder devolver o recoger un libro

Que la calidad del software sea un factor decisivo de éxito es difícil de ver, pero que la falta de calidad es un factor decisivo de fracaso, es un tema bastante claro

Ejemplo: Fallo en la unidad de coma flotante del Pentium

En 1994 se descubrió que algunas operaciones de división devolvían siempre un valor erróneo por exceso.

Estas comprobaciones crearon una gran polémica. Intel negó inicialmente la existencia del problema, después lo minimizó negándose a una sustitución sistemática. Si bien evaluaciones independientes mostraron la poca importancia del error llego a haber demandas (incluyendo entre otros los demandantes empresas como IBM). Por último, Intel se vio forzada a aceptar sustituir todos los microprocesadores defectuosos, lo que representó un coste enorme

Ejemplo: Phobos 1
La Phobos 1 despegó y tuvo un funcionamiento correcto hasta que dos meses después de su lanzamiento se perdió la señal. La fuente del problema fue una orden errónea (concretamente se transmitió un “+” en vez de un ”-”). Incapaz de controlar su orientación, la Phobos 1 dejó de orientar sus paneles solares hacia nuestra estrella. Sin energía, no pudo restablecerse contacto con ella y quedó en órbita alrededor del Sol.

Al margen del error, parecería lógico haber “asegurado” una orden tan crítica como demostró ser la que se envió. Estaba previsto, pero la versión definitiva del código que la contenía no se implantó a causas de las prisas en la finalización de los trabajos.

Otros errores software famosos

  • Apolo 11 (fallo de aterrizaje)
  • Mariner 1 (faltaba una coma)
  • Ariedne 5 (basado en una versión anterior de sw, el equipo físico no pudo responder a la mayor aceleración). Importancia de las condiciones de entorno
  • Therac-25 (Dosis masivas de radiación. Generó, al menos, 5 muertes). Importancia del control de los sistemas software.
  • Amazon (26/06/2009) Por un error Amazon permitió descargar álbumes completos por 50 centavos
  • Orange (31/07/2008) Orange retira los Nokia 6555 por un error de software
  • Renfe (7/03/2009) Un error en el software mantiene sin servicio las máquinas de autoventa de Renfe

Causas de los defectos
El software es elaborado por seres humanos que pueden cometer errores que dan lugar a defectos. Estos defectos pueden generar un fallo

Las causas de los errores (al margen de la falibilidad del ser humano) pueden ser: presión en los tiempos, complejidad de la aplicación o la arquitectura, tecnologías cambiantes, existencia de un gran número de interfaces …

Al margen de la existencia de un defecto, pueden producirse fallos por condiciones ambientales (radiación, magnetismo, campos eléctricos, etc)

Las Pruebas como medio de mejora de la calidad
Un medio para conseguir la mejora de la calidad tanto de los sistemas de software como del propio proceso de desarrollo son la comprobación y prueba sistemática del software desarrollado.

Los errores que se detecten antes del uso del software pueden ser corregidos antes de que generen fallos

Puede exigirse por contrato un nivel mínimo de prueba

Las pruebas pueden requerirse también para satisfacer requisitos contractuales o legales, o estándares específicos de la industria.


Trabaja con nosotros

Tanto si estás buscando trabajar full time, como suplementar tus actuales ingresos con desarrollos adicionales a los que estás haciendo en tu actual trabajo, o quieres implicarte en el desarrollo de proyectos opensource y apoyar a la comunidad, rellena el formulario que hay a continuación y nos pondremos en contacto contigo para ver los proyectos en los que podemos colaborar.

Scroll to Top