Professional Documents
Culture Documents
Agosto de 2008
Temario
Control y Aseguramiento de la Calidad
Nmeros y ejemplos
Definicin de calidad
Aseguramiento y control de calidad
La calidad en el ciclo de vida del software
El plan de calidad
Mtricas
Temario
Testing
Definiciones
Tipos de test
El proceso
Tcnicas de derivacin de casos de test
Tips
Documentacin
Estimaciones
Inspecciones de cdigo y revisiones
Conclusiones
Motivacin
Preguntas
Cul es el impacto de un error detectado por un usuario, en la operacin
de la aplicacin?
Cul es el costo para el negocio?
Cul es el costo de solucionar el problema en el software?
Calidad de Software
Supongamos que recibimos un producto de software en tiempo, acorde con el
presupuesto, y que desempea sus funciones correcta y eficientemente
Podemos decir que estaremos satisfechos con l?
Calidad de Software
La respuesta puede ser No
El producto de software puede ser
difcil de entender y modificar
difcil de utilizar
innecesariamente dependiente de un hardware o difcil de integrar
con otros programas
Definiciones de Calidad
Aptitud para el uso
Ausencia de defectos
Satisfaccin de los requerimientos
Triste conclusin:
En general, los sistemas de software no cumplen con ninguna definicin
de calidad!
Atributos de calidad
Correccin
Confiabilidad
Integridad
Usabilidad
Eficiencia
Mantenibilidad
Flexibilidad
Testeabilidad
Interoperabilidad
Reusabilidad
Portabilidad
Calidad externa
La calidad externa es aqulla que puede ser vista por los usuarios y que
tradicionalmente es testeada
Se observa
cadas del sistema
corrupcin de datos
problemas de performance
comportamientos inesperados
Es un sntoma
El problema se halla en la calidad interna
Calidad interna
La calidad interna es la parte oculta del iceberg
estructura del programa
prcticas de programacin
esfuerzo de mantenimiento
experiencia en el dominio
Consecuencias
prdida de tiempo en el desarrollo
arreglos que suelen introducir nuevos problemas
necesidad de un lento retesteo
Las deficiencias en calidad interna resultan en altos costos de mantenimiento
Aseguramiento de la Calidad
Patrn de acciones planeado y sistemtico, necesario para proveer un nivel de
confianza adecuado en que el tem o producto est acorde a los requerimientos
tcnicos establecidos
Software Quality Assurance (SQA): evaluacin de la calidad y adherencia a
los estndares del producto, procesos y procedimientos. Incluye el proceso de
asegurar que los estndares y procedimientos son definidos y cumplidos a lo
largo del ciclo de software
http://satc.gsfc.nasa.gov/assure/agbsec3.txt
SQA
SQA no es responsable de la calidad
La responsabilidad de la calidad recae en el proyecto
El rol de SQA es monitorear la forma en que se cumplen las responsabilidades
de calidad en el proyecto
Control de la Calidad
Conjunto de procedimientos cuyo objeto es medir el producto a fin de
asegurar que satisface los requerimientos y especificaciones sobre el mismo
Ej: testing
Objetivos de QA
Calidad en Requerimientos
Requerimiento
ambiguo: Las pginas
deben cargar rpido
Requerimiento no ambiguo:
El tiempo de carga de las
pginas no debe ser mayor
a 10 segundos
Los requerimientos no
tienen prioridad
Se identifica la prioridad
de cada requerimiento
Calidad en Requerimientos
Entender lo solicitado
Expresarlo adecuadamente
Cuantificar
Administrar los requerimientos
Administrar los cambios en los requerimientos
Definir un alcance razonable
Documentar
Obtener un acuerdo
Validar
Calidad en Requerimientos
Calidad en el Diseo
Disee para cambiar maana (design for change, D. Parnas)
Disee para que nadie mire lo que hay adentro (information hiding, D. Parnas)
Permite que los cambios se realicen en forma confiable con esfuerzo
limitado
Disee para que (el producto) sea coherente y asimilable
Haga un diseo simple
Utilizar la abstraccin (descripcin simplificada que permite enfatizar
ciertos detalles respecto de otros, y se independiza de la implementacin)
Calidad en la Programacin
Las variables no se
inicializan
Las variables se designan
con un carcter
No existen comentarios en
el cdigo
Calidad en la Programacin
Use herramientas
Ej: chequeadores de sintaxis HTML
Use estndares
Nomenclatura (variables, funciones, procedimientos, etc)
Informacin obligatoria en los comentarios de modificaciones del cdigo
Declaracin e inicializacin de variables
Escritura de condicionales
Use esqueletos de programas
Capacite a los programadores
Evale a los programadores que contrata
Calidad en el Testing
En la siguiente parte de la charla..
Calidad en la Planificacin
Los problemas se suceden
de forma inesperada. Se
insume mucho tiempo
apagando incendios
Se establecen fechas de
compromiso que nunca se
cumplen
Calidad en la Planificacin
Algunos de sus puntos
Tareas
Recursos afectados
Responsabilidades
Necesidades de capacitacin
Entregables
Estimaciones
Procedimientos
Datos histricos
Administrar riesgos
Administrar configuraciones
Seguimiento
Calidad en la Planificacin
El plan debe ser acorde con los requerimientos
Tener control del proyecto
Las tareas y actividades se revisan peridicamente
Se replanifica cuando es necesario
Se conocen las responsabilidades
Administracin de Configuraciones
Se pierden modificaciones
realizadas en el cdigo
Se administran versiones y
se tiene control de las
mismas
Existen ambientes de
desarrollo, pruebas y
produccin, sin embargo,
no se sabe qu diferencias
existe entre el cdigo de
cada uno de ellos
Se documentan las
versiones que se impactan
en cada ambiente. El
ambiente de produccin
slo contiene versiones de
software debidamente
probadas, el ambiente de
test slo contiene
versiones cuyo desarrollo
se ha finalizado y se
solicita su prueba
Plan de QA
Propsito: especificar y documentar las actividades de QA para un proyecto
especfico
No puede evolucionar en forma independiente al proyecto
Importante: Realizar el seguimiento del plan
Elementos que no deben faltar:
Capacitacin y Planificacin
Auditorias, Inspecciones y Revisiones
Estndares y Procedimientos
Mtricas
Plan de QA - Guidelines
Realizarlo junto con el plan del proyecto
Establecer el momento adecuado para las actividades (ej: el estndar de diseo
debe estar listo antes de la etapa de diseo del proyecto)
Asegurar la disponibilidad de las herramientas antes que las mismas sean
requeridas en el proyecto
Plan de QA Ejemplo
(IEEE 730-1998)
Debe
Plan de QA Ejemplo
(IEEE 730-1998)
Consideraciones
Ejemplos de mtricas
Conviene definir mtricas bsicas antes de comenzar una iniciativa de calidad
Mostrar el caos (otros ejemplos):
Cantidad de requerimientos por canal de entrada
Cantidad de fallas en produccin y su tiempo de resolucin
Cantidad de fallas de un sistema instalado
Calidad - Conclusiones
Existen distintas definiciones de calidad
Encontrar la propia
Es importante definir un plan de calidad adecuado
Empezar por los requerimientos
Las actividades de calidad acompaan al ciclo de vida del software
Prevenir los problemas
Detectar en etapas tempranas
La labor de calidad es en conjunto y en colaboracin con las dems personas y
actividades involucradas en el proyecto
Testing y Revisiones
Temario
Testing
Definiciones
Tipos de test
El proceso
Tcnicas de derivacin de casos de test
Tips
Documentacin
Estimaciones
Inspecciones de cdigo y revisiones
Conclusiones
Definiciones
Definiciones - Testing
Segn IEEE standards 1999. El testing de software es el proceso de analizar
un producto de software para detectar las diferencias entre el comportamiento
real con el pedido, y para evaluar las funcionalidades y caractersticas no
funcionales del software
Testear es ejecutar el software
Orculo
Orculo
Datos de Test
Componente
Componente
aaTestear
Testear
Estrategia
Estrategia
Comportamiento
Esperado
Comparacin
Comparacin
Datos de Test
Test
Test
Resultado
Comportamiento
Real
Cul es cul?
Cuenta origen = Cuenta destino monto
transferencia > 0 monto transferencia <
saldo
Casos de test
Una de las mayores dificultades es encontrar un conjunto de tests adecuado:
suficientemente grande para abarcar el dominio y maximizar la
probabilidad de encontrar errores
suficientemente pequeo para poder ejecutar el proceso de testing con
cada elemento del conjunto y minimizar el costo del testing
Pregunta
Se puede probar un programa ingresando todos los valores posibles?
Campo de 9 dgitos decimales
387420489 posibilidades
Si tardo 2 segundos en la ejecucin, tomara 2242 das ejecutar el
test
Tipos de Test
De
De
De
De
De
De
Unidad
Integracin
Sistema
Aceptacin del Usuario
Regresin
Cualidades de Calidad
Test de unidad
Su objetivo es asegurar que funcione correctamente una unidad de cdigo
pequea, claramente definida.
Segn de la tecnologa puede
aplicarse programas, rutinas,
o lo que sea la unidad natural
En general lo hace el
desarrollador
Ejercitar los caminos lgicos
Ejecutar segn las variaciones de datos
Manejo de errores
Test de integracin
Testing en el cual los componentes de software, hardware o ambos se
combinan y prueban para evaluar la interaccin entre ellos [IEEE 90].
Su objetivo es asegurar que cuando las partes funcionan bien, tambin lo hace
el conjunto
El foco est en la integracin de las unidades
Dicho de otro modo, que el todo no funciona peor que las partes
No hay que confundirlo con el test de sistema (testear un sistema
integrado)
Test de sistema
Su objetivo es asegurar que el sistema, como un todo, opera de acuerdo a lo
esperado.
Es un test del sistema completo, o de partes ya integradas del sistema.
Es en realidad como un test de unidad, pero la una unidad que ya no es
pequea, sino que est formada por otras unidades ya integradas.
Test de aceptacin
del usuario (UAT)
Tiene por objetivo asegurar que el sistema implementa adecuadamente los
requerimientos definidos y aprobados por el usuario.
Es una forma particular del testing del sistema.
Los casos de test estn basados en los requerimientos.
Lo disean y ejecutan los usuarios.
Involucrar a los usuarios es clave en el proceso de testing.
Test de regresin
Retesteo selectivo de un sistema o componente, para verificar que las
modificaciones no causaron efectos inesperados y que el sistema o componente
sigue cumpliendo con los requerimientos especificados [IEEE 90].
Tiene como objetivo asegurar que luego de un cambio no se han introducido
errores en funcionalidades que no deban cambiar
Tambin llamado de no impacto
Necesito condiciones y datos de test reusables
Retestear todo, o seleccionar casos de regresin?
El Proceso
Proceso cannico
Preparacin
de datos
Estrategia
Definicin
de casos
Ejecucin
Seguimiento
de
incidentes
reas crticas
Cubrimiento
Alcance
Incidentes
Estados
Completitud
Tipos de test
Priorizacin
Reuso
Ambientes
Clasificacin
Repriorizacin
Priorizacin
Comunicacin
Reclasificacin
Automtico
Stress y volumen
De estructura (links,
imgenes) - WEB
Tener en cuenta que el esfuerzo de
automatizar los tests funcionales
debe compensarse con la cantidad de
veces que utilizaremos los scripts (se
calculan necesarias ms de 8
regresiones)
Equipo de trabajo
Lder de proyecto
Definicin de la estrategia de testing
Elaboracin del plan
Control del proyecto
Interaccin con el cliente
Tester Diseador
Definicin de los casos de prueba
Poblado de las condiciones de prueba
Tester ejecutor
Ejecucin de los casos de prueba
Deteccin y registro de incidentes
Testing
30%
Estrategia
5%
Ejecucin
50%
Desarrollo
70%
Definicin
30%
Tips
Entender la funcionalidad
Escribir el resultado esperado
No asumir que lo que se va a probar est libre de errores
Identificar todos los datos de inputs y de output
Identificar particularidades o comportamientos especiales
Probar los casos vlidos, Y los invlidos
Combinar tcnicas
Cuestionar
Documentacin
Problemas
Manejar estados
Manejar prioridades
Detallar los datos de
prueba y los pasos para
poder reproducirlo
Ejecucin: Tablero de control
#casos ejecutados por
criticidad
#incidentes por estado y
criticidad
Documentacin - Incidentes
El reporte de un incidente debe proveer suficiente informacin para
permitir que otras personas entiendan cmo se descubri y cmo
reproducirlo
Componentes
Procedimiento utilizado para descubrir el incidente
Informacin sobre el caso de test (que permita reproducirlo)
Registro de la ejecucin del caso de test (logs, pantallas, etc)
Severidad
Prioridad
Documentacin - Checklists
Checklists
Pueden ser utilizados por testers, desarrolladores y usuarios
Ahorran tiempo de testing
Fciles de entender y mantener
Se crean a partir de problemas encontrados
Ejemplos
Instalacin
Verificacin inicial de la versin a probar
Validacin de pgina
Verificacin de las puesta en produccin
Estndares
Checklist - Ejemplo
Para definir casos de test
Identificarlos inputs
Vlidos
Invlidos
Bordes
Identificar los mensajes de error
Identificar los outputs
Vlidos
Errores
Chequear generacin duplicados
Chequear eliminaciones de datos
Chequear actualizaciones de datos
Identificar situaciones comunes de error (basndose en los encontrados
en otras situaciones)
Identificar valores default
Utilizar escenarios
Estimaciones
Gesta 2004
Indicadores del Proyecto Multimoneda (America)
Cantidad de Funcionalidades
Promedio de Casos definidos por Funcionalidad
Promedio de Horas insumidas por Funcionalidad
Entidades reportadas por Funcionalidad
Entidades reportadas por Caso ejecutado
% de completitud en la definicin
% de completitud en la ejecucin
27
10.11
10.78
10.44
1.09
74.07%
94.51%
Cantidad de Casos
Cantidad de Casos de prueba definidos
Cantidad de Casos de prueba ejecutados
% de Casos de prueba ejecutados
Cantidad de Entidades
Cantidad de Entidades reportadas
Cantidad de Entidades abiertas
% de Entidades abiertos
Distribucin de Dedicaciones
Definicin de casos
Ejecucin de casos
Seguimiento de Incidentes
TOTAL DE HORAS
Total
%
53.00 18.21
188.00 64.60
50.00 17.18
291.00 100.00
Total
273
258
95%
Revisiones de documentacin
Permiten detectar problemas antes de la codificacin
Tipos de problemas que se encuentran
Indefiniciones
Inconsistencias
Qu revisar
Requerimientos
Diseos
Casos de pruebas
Planes de proyecto
Revisiones de documentacin
Participantes
Depende del documento a analizar
Analistas, desarrolladores, gente de QA, usuarios
Mecnica
Sesiones individuales de revisin del documento, luego reuniones para
discutir las observaciones
Ej: revisin de contenidos antes de cargarse en el site
Conclusiones
www.helpnet.cl
Santiago de Chile