Teoria Testing
Teoria Testing
Teoria Testing
CALIDAD DEL
SOFTWARE
TEMA: Conceptos
Iniciales.
CALIDAD DEL
SOFTWARE
TEMA: Modelos y
Normas
CALIDAD DEL
SOFTWARE
TEMA: Modelos de
Calidad
Nivel 1: Básico
Los procesos valorados en la organización alcanzan el nivel de
capacidad 1, es decir, demuestran el logro del propósito de los
procesos. Los procesos son identificados y existen los productos de
trabajo de su ejecución.
Nivel 2: Gestionado
Los procesos definidos para el nivel de madurez organizacional 2
alcanzan el nivel de capacidad 2, es decir, la organización demuestra
la gestión de la ejecución de sus procesos (planificación,
supervisión y ajuste) y de los productos de trabajo asociados (están
debidamente documentados, establecidos, controlados y
mantenidos).
Los procesos definidos para el nivel 2 son los indicados a
continuación.
• Proceso de Suministro
• Proceso de Gestión del Modelo de Ciclo de Vida
• Proceso de Evaluación y Control del Proyecto
• Proceso de Medición
• Proceso de Definición de Necesidades y Requisitos de
stakeholders
• Proceso de Gestión de la Configuración
• Proceso de Aseguramiento de la Calidad
Nivel 3: Establecido
Los procesos definidos para el nivel de madurez organizacional 2 y 3
alcanzan el nivel de capacidad 3, es decir, la organización demuestra
la efectiva definición, mejora, despliegue y aseguramiento de sus
procesos.
Los procesos definidos para el nivel 3 son los indicados a
continuación.
• Proceso de Gestión de la Decisión
• Proceso de Gestión de Infraestructuras
Nivel 4: Predecible
Los procesos definidos para el nivel de madurez organizacional 2, 3
y 4 alcanzan el nivel de capacidad 3, y algunos de estos procesos
que la organización considera debe controlar cuantitativamente
debido a sus objetivos de negocio alcanzan el nivel de capacidad 4.
Es decir, la organización demuestra un efectivo análisis y control
cuantitativo de los procesos que considera son fundamentales para
la consecución de sus objetivos de negocio. Para ello, las
necesidades de gestión cuantitativa son identificadas, los datos de
medición son recogidos y analizados para identificar las causas de
variación asignables. Se toman acciones correctivas para tratar las
causas asignables de la variación.
Los procesos definidos para el nivel 4 son los indicados a
continuación.
• Proceso de Gestión del Portfolio
Nivel 5: Innovado
Los procesos definidos para el nivel de madurez organizacional 2, 3,
4 y 5 alcanzan el nivel de capacidad 3, y los procesos que la
organización controla cuantitativamente en el nivel anterior o los
propios de este nivel alcanzan el nivel de capacidad 5. Es decir, la
organización demuestra innovación de estos procesos y su
correspondiente implementación de la innovación en los procesos
que considera fundamentales para conseguir sus objetivos de
negocio.
Calidad del Software & Testing 17
Los procesos definidos para el nivel 5 son los indicados a
continuación.
• Proceso de Gestión de Conocimiento
• Proceso de Análisis de Negocio/Misión
ISO/IEC 25000
ISO/IEC 25000, conocida como SQuaRE (System and Software
Quality Requirements and Evaluation), es una familia de normas
que tiene por objetivo la creación de un marco de trabajo común
para evaluar la calidad del producto software.
La familia ISO/IEC 25000 es el resultado de la evolución de otras
normas anteriores, especialmente de las normas ISO/IEC 9126, que
describe las particularidades de un modelo de calidad del producto
software, e ISO/IEC 14598, que abordaba el proceso de evaluación
de productos software. Esta familia de normas ISO/IEC 25000 se
encuentra compuesta por cinco divisiones.
MODELO CMMI
CMMI (Capability Maturity Model Integration), es un conjunto de
modelos elaborados por el SEI que permiten obtener un
diagnóstico preciso de la madurez de los procesos relacionados con
las tecnologías de la información de una organización, y describe las
tareas que se tienen que llevar a cabo para mejorar esos procesos,
ayudando a las organizaciones a mejorar su capacidad de
desarrollar y de mantener productos y servicios de calidad.
CALIDAD DEL
SOFTWARE
TEMA: Aseguramiento
de la Calidad
1) Un proceso de ACS.
2) Tareas específicas de aseguramiento y control de la calidad
(incluidas revisiones técnicas y una estrategia de pruebas
relacionadas entre sí).
3) Prácticas eficaces de ingeniería de software (métodos y
herramientas).
4) Control de todos los productos del trabajo de software y de los
cambios que sufren.
5) Un procedimiento para garantizar el cumplimiento de los
estándares del desarrollo de software (cuando sea aplicable).
6) Mecanismos de medición y reporte.
donde las siglas TMPF y TMPR significan tiempo medio para la falla
tiempo medio para la reparación, respectivamente.
TESTING
TEMA: Introducción
Principios de la prueba
Para la aplicación de métodos para el diseño de casos de prueba
efectivos, un ingeniero de software deberá conocer los principios
básicos que guían las pruebas del software. Es posible, sin embargo,
asegurarse de que se han aplicado todas las condiciones del diseño
de pruebas.
Las consideraciones generales, más comunes, a toda prueba son:
1) A todas las pruebas se les debería poder hacer un seguimiento
hasta los requisitos del cliente.
Se entiende que los defectos más graves (desde el punto de vista
del cliente) son aquellos que impiden al programa cumplir sus
requisitos.
2) Las pruebas deberían planificarse mucho antes de que
empiecen.
Una vez completado el modelo de requisitos, es recomendable
comenzar con la planificación de las pruebas; y luego de consolidar
el modelo de diseño, podemos comenzar con la definición detallada
de los casos de prueba. Por tanto, se puede planificar y diseñar
todas las pruebas antes de generar ningún código.
3) Las pruebas deben empezar por “lo pequeño” y progresar hacia
“lo grande”.
4) No son posibles pruebas completamente exhaustivas.
El número de permutaciones de caminos para incluso un programa
de tamaño moderado es excepcionalmente grande. Por este
motivo, es imposible ejecutar todas las combinaciones de caminos
durante las pruebas.
TESTING
Prueba de regresión
Cada vez que se añade un nuevo módulo como parte de una
prueba de integración, el software cambia. Se establecen nuevos
caminos de flujo de datos, pueden ocurrir nuevas E/S y se invoca
una nueva lógica de control.
Estos cambios pueden causar problemas con funciones que antes
trabajaban bien. En el contexto de una estrategia de prueba de
integración, la prueba de regresión es volver a ejecutar un
subconjunto de pruebas que se han llevado a cabo anteriormente
para asegurarse de que los cambios no han propagado efectos
colaterales no deseados.
Las pruebas con éxito dan como resultado el descubrimiento de
errores que hay que corregir. Cuando se corrige el software, se
cambia algún aspecto de la configuración del software, ya sea el
programa, su documentación o los datos que lo soportan.
La prueba de regresión es la actividad que ayuda a asegurar que los
cambios no introducen un comportamiento no deseado del
programa o errores adicionales.
Conclusión
En general, las ventajas de una estrategia tienden a convertirse en
desventajas para la otra estrategia.
La principal desventaja para el enfoque descendente es la
necesidad de resguardos y las dificultades de prueba que pueden
estar asociados con ellos.
Pero esto queda compensado con la ventaja de poder probar de
antemano las principales funciones de control.
La principal desventaja de la integración ascendente es que “el
programa como entidad no existe hasta que se ha añadido el último
módulo (según Myer)”.
Este inconveniente se compensa con la mayor facilidad de diseño
de casos de prueba y con la falta de resguardos.
A. Prueba de Recuperación
Muchos sistemas basados en computadora deben recuperarse de
fallas y reanudar el procesamiento con poco o ningún tiempo de
inactividad. En algunos casos, un sistema debe ser tolerante a las
fallas, es decir, las fallas del procesamiento no deben causar el cese
del funcionamiento del sistema global. En otros casos, la falla de un
sistema debe corregirse dentro de un periodo de tiempo específico
u ocurrirán severos daños económicos.
La recuperación es una prueba del sistema que fuerza al software a
fallar en varias formas y que verifica que la recuperación se realice
de manera adecuada. Si la recuperación es automática (realizada
por el sistema en sí), se evalúa el reinicio, los mecanismos de
puntos de verificación, la recuperación de datos y la reanudación
para correcciones. Si la recuperación requiere intervención
humana, se evalúa el tiempo medio de reparación (TMR) para
determinar si está dentro de límites aceptables.
B. Prueba de Seguridad
Cualquier sistema basado en computadora que gestione
información sensible o cause acciones que puedan dañar (o
beneficiar) de manera inadecuada a individuos es un blanco de
penetración inadecuada o ilegal. La penetración abarca un amplio
rango de actividades: hackers que intentan penetrar en los sistemas
por deporte, empleados resentidos que intentan penetrar por
venganza, individuos deshonestos que intentan penetrar para
obtener ganancia personal ilícita.
TESTING
Conjetura de errores
Se enumera una lisa de equivocaciones que pueden cometer los
desarrolladores y de las situaciones propensas a ciertos errores.
Después se generan casos de prueba en base a dicha lista.
Casos que se pueden presentar:
•El valor cero es una situación propensa a errores.
•Si se han de introducir un número variable de valores, probar el
caso de no introducir ninguno.
•Suponer que el programador pudiera haber interpretado algo mal
en la especificación.
Plan de pruebas
Su objetivo es señalar el enfoque, los recursos y el esquema de las
actividades de prueba, así como los elementos a probar,
características, personal responsable y los riesgos asociados.
Informe de incidente
Su objetivo es documentar cada incidente ocurrido en la prueba y
que requiera una posterior investigación.
Depuración
Es el proceso de localizar, analizar y corregir los defectos que se
sospecha que contiene el software. Suele ser consecuencia de una
prueba con éxito. Las consecuencias de la depuración pueden ser:
•Encontrar la causa del error, analizarla y corregirla.
•No encontrar la causa y, por tanto, tener que generar nuevos casos
de prueba.
CAJA NEGRA
Intentan examinar el comportamiento del programa basándose en
las especificaciones de las funciones que debe realizar; por lo que
se llaman pruebas del comportamiento y se centran en los
requisitos funcionales del software. O sea, la prueba de caja negra
permite al ingeniero de software obtener conjuntos de condiciones
de entrada que ejerciten completamente todos los requisitos
funcionales del programa.
Aquí no importa ver cómo es el interior del programa, ya que se lo
considera una caja negra que no permite la visión de la estructura
interna.
La prueba de caja negra intenta encontrar errores de las siguientes
categorías: (1) funciones incorrectas o ausentes; (2) errores de
interfaz; (3) errores de estructura de datos o en accesos a bases de
datos externas; (4) errores de rendimiento y (5) errores de
inicialización y de terminación.
Criterios:
1) Cobertura de sentencias
2) Cobertura de decisión o de ramificación
3) Cobertura de condición
4) Cobertura de decisión/condición
Casos Inválidos
180 (2)
1032 (3)
xy (4)
350 [CR] (1) (6)
450 Regalos (1) (7)
550 Casada (1) (5) (12)
LA EVALUACIÓN
TEMA: Evaluación,
medición y métricas
Proceso de Medición
Todo proceso de medición del software tiene como objetivo
fundamental satisfacer necesidades de información a partir de las
cuales se deben identificar las entidades y los atributos que deben
ser medidos.
El proceso de medición, se caracteriza en cinco actividades:
Formulación: Obtención de medidas y métricas del software
apropiadas para la presentación del software en cuestión.
PROPUESTA DE MÉTRICAS
Las métricas propuestas miden el desarrollo de los proyectos y
ayudan a los líderes y directivos de los mismos en la toma
decisiones y acciones correctivas, así como el mejoramiento
continuo de los procesos, obteniéndose mejores resultados.
Calidad del Software & Testing 15
Tabla 1. Características de la Norma ISO 9126 y aspectos que atiende cada una
El proceso de inspección
Se puede ver a las inspecciones de software como un
repaso detallado y formal del trabajo en proceso. Pequeños
grupos de trabajadores (4 o 5) estudian el "producto de trabajo”
independientemente y luego se reúnen para examinar el trabajo en
detalle. El “producto de trabajo” representa 200 a 250 líneas de
código; requerimientos, diseño y otros productos de
trabajo son inspeccionados en un tamaño similar. Los productos de
trabajo son considerados en progreso hasta que la inspección y las
correcciones necesarias estén completas.
El tiempo de la inspección varía según cuan familiarizado
esté el inspector con el material.
MANTENIMIENTO
DEL SOFTWARE
TEMA: Mantenimiento,
Reingeniería y Mantenibilidad
Mantenimiento Adaptativo
Este tipo de mantenimiento consiste en la modificación de un
programa debido a cambios en el entorno (hardware o software) en
el cual se ejecuta. Estos cambios pueden afectar al sistema
operativo (cambio a uno más moderno), a la arquitectura física del
sistema informático (paso de una arquitectura de red de área local
a Internet/Intranet) o al entorno de desarrollo del software
(incorporación de nuevos elementos o herramientas).
Mantenimiento Perfectivo
Cambio en la especificación, normalmente debido a cambios en los
requisitos de un producto software, implican un nuevo tipo de
mantenimiento llamado perfectivo. La casuística es muy variada.
Desde algo tan simple como cambiar el formato de impresión de un
informe, hasta la incorporación de un nuevo módulo aplicativo.
Podemos definir el mantenimiento perfectivo como el conjunto de
actividades para mejorar o añadir nuevas funcionalidades
requeridas por el usuario.
Algunos autores dividen este tipo de mantenimiento en dos:
Mantenimiento Preventivo
Este último tipo de mantenimiento consiste en la modificación del
software para mejorar sus propiedades (por ejemplo, aumentando
su calidad y/o su mantenibilidad) sin alterar sus especificaciones
funcionales. Por ejemplo, se pueden incluir sentencias que
comprueben la validez de los datos de entrada, reestructurar los
programas para mejorar su legibilidad, o bien incluir nuevos
comentarios que faciliten la posterior compresión del programa.
Este tipo de mantenimiento es el que más partido saca de las
técnicas de ingeniería inversa y reingeniería.
En algunos casos se ha planteado el Mantenimiento para la
Reutilización, consistente en modificar el software (buscando y
modificando componentes para incluirlos en bibliotecas) para que
sea más fácilmente reutilizable. En realidad este tipo de
mantenimiento es preventivo, especializado en mejorar la
propiedad de reusabilidad del software.
Soluciones de gestión
En términos financieros, el mantenimiento del software puede ser
visto como un continuo consumidor de recursos, mientras que los
beneficios no están claros ni cuantificados. Para ayudar a evitar esta
situación se necesita un mayor apoyo por parte de la dirección de
las organizaciones para las actividades de mantenimiento del
software. Para ello es necesario que los seniors de las
organizaciones sean conscientes de:
• La importancia de las tecnologías de la información para la
organización.
• Que el software es un activo corporativo que puede suponer una
ventaja competitiva.
Gestión de la calidad
El aumento de los recursos humanos y económicos dedicados al
mantenimiento del software puede suponer una solución a corto
plazo, pero para resolver el problema a largo plazo se hace
necesario adoptar una aproximación que permita mejorar la calidad
del proceso en su conjunto. Lo cual implicaría técnicas estándares
para la descomposición del software en entidades funcionales,
estándares de documentación, diseño paso a paso en cada nivel de
descomposición del software, uso de código estructurado, etc.
Calidad del Software & Testing 13
Soluciones técnicas
Éstas son de dos clases: herramientas y métodos. Las primeras
sirven para soportar de forma más efectiva y cómoda los segundos.
Estas herramientas han sido diseñadas para ayudar al personal de
mantenimiento a comprender el programa y a probar sus
modificaciones para asegurar que no han sido introducidos errores.
Los estándares para los procesos del ciclo de vida del software
permiten integrar y asociar el proceso de mantenimiento con los
demás procesos existentes para el software. Los estándares de
calidad del software interesan en mantenimiento del software
porque los factores de calidad del software (especialmente la
complejidad y la mantenibilidad) inciden directamente sobre el
esfuerzo de mantenimiento necesario.