Está en la página 1de 30

Estrategias y Proceso

de las Pruebas de Software.


INDICE
Contenido
CONCEPTOS GENERALES ......................................................................................................................................................... 3

MODELOS DE CICLO DE VIDA DE DESARROLLO DE SOFTWARE .............................................................................................. 6

CMMI 1.3 – VALIDACION Y VERIFICACION .............................................................................................................................. 8

EL MODELO DE MADUREZ DE PRUEBAS (TMMSM).................................................................................................................. 9

TIPOS DE PRUEBAS ................................................................................................................................................................ 11

TIPOS DE PRUEBAS – CAJA NEGRA........................................................................................................................................ 11

TIPOS DE PRUEBAS – CAJA BLANCA ...................................................................................................................................... 13

METRICAS .............................................................................................................................................................................. 16

PRUEBAS DE LA DOCUMENTACION ...................................................................................................................................... 16

PRUEBAS DE USABILIDAD ..................................................................................................................................................... 17

PRUEBAS DEL WEBSITE ......................................................................................................................................................... 17

OTROS TIPOS DE PRUEBA ..................................................................................................................................................... 18

HERRAMIENTAS DE PRUEBA ................................................................................................................................................. 21

EL PROCESO DE PRUEBAS ..................................................................................................................................................... 22

ETAPAS DEL PROCESO DE PRUEBAS...................................................................................................................................... 24

COMPONENTES DEL PROCESO DE PRUEBAS ........................................................................................................................ 25

PLAN DE PRUEBAS................................................................................................................................................................. 26

DISEÑO DE PRUEBAS ............................................................................................................................................................. 27

CASOS DE PRUEBA ................................................................................................................................................................ 28

PROCEDIMIENTO DE PRUEBA ............................................................................................................................................... 29

REPORTE DE ERRORES........................................................................................................................................................... 29

BIBLIOGRAFIA ........................................................................................................................................................................ 30

SITIOS WEB............................................................................................................................................................................ 30
CONCEPTOS GENERALES
Objetivos de Curso:
• Proporcionar los conceptos fundamentales del proceso de pruebas.
• Ubicar los artefactos generados en el modelo CMMI v1.2 para Validación y Verificación.
• Exponer las técnicas y las herramientas orientadas a la generación de pruebas de aplicaciones de la TI.
• Contar con formatos para la instrumentación y documentación del proceso de pruebas.

¿Por qué Probar?


• La mayoría de las organizaciones minimizan la importancia de las pruebas.
• Si analizamos que existen de 1 a 2 defectos por cada 100 líneas de código, entonces tendremos 10 a 20
defectos en cada 1,000 líneas de código y ya dejaron de ser son solo un par de bugs.

¿Qué es probar?
“Probar es la búsqueda sistemática de defectos en todos los entregables de un proyecto”

Probar no es … …
• Solo medir.
• Fase post-desarrollo.
• Barato.
• Liberar o Aceptar.
• Capacitar en el uso o control de los sistemas de operación.

¿Por qué ocurren los defectos?


• Somos humanos.
• Presupuestos limitados.
• Programa de trabajo intenso.
• Conflictos de intereses o prioridades.

¿Qué probar?
❖ Criterios de Prioridad
• Crítico para el negocio. • Probabilidad
• Complejidad Técnica. • Visibilidad.
• Dificultad para Probar. • Prioridad de Negocio.
• Costo de Prueba. • Extensión de Pruebas.
• Severidad.

❖ Las pruebas pueden incluir


• Requerimientos. • Documentación.
• Diseño. • Procedimientos de Operación.
• Código del Sistema.
Precisión y Exactitud
• Precisión: Es la capacidad de realizar medidas similares, es decir, cuantas veces se pruebe un
programa, este debe de mostrar los mismos resultados.
• Exactitud: Es la capacidad para acercarse a la magnitud real.

Verificación y Validación
Validación Verificación
¿Estoy construyendo el producto correcto? ¿Estoy construyendo el producto de la forma
correcta?
Determina si el sistema cumple con los La revisión de los pasos de trabajo y entregables
requerimientos y realiza las funciones para las cuales interinos durante un proyecto para asegurar que son
es construido y cumplir las metas de la organización y aceptables. Para determinar si el sistema es
las necesidades del usuario. Es tradicional y se realiza consistente, se adhiere a los estándares, usa técnicas
al final del proyecto. confiables y practicas prudentes y realiza las
funciones seleccionadas de la manera correcta.
¿Estoy accesando los datos correctos? (En términos ¿Estoy accesando los datos correctos? (En el lugar
de los datos requeridos para satisfacer el correcto; en la forma correcta)
requerimiento)
Actividad de alto nivel Actividad de bajo nivel
Realizada después de que se produce un producto de Realizada durante el desarrollo de los artefactos clave
trabajo contra el criterio establecido asegurando que como walkthroughs, revisiones e inspecciones,
el producto se integra correctamente en el ambiente retroalimentación del guía, capacitación, checklists y
estándares
Determinación de la correctez del producto de Demostración de la consistencia, completez y
software final por un proyecto de desarrollo con correctez del software en cada etapa y entre cada
respecto a las necesidades y requerimientos del etapa del ciclo de vida de desarrollo
usuario

Calidad y Confiabilidad
• Un software es de alta calidad cuando este satisface las necesidades del cliente. El cliente es el que le
asocia el grado de excelencia que considera conveniente.
• La confiabilidad del software se refiere a la precisión con la que una aplicación proporciona los
servicios que se establecieron en las especificaciones originales.
• Para que un tester se asegure que un software es de calidad y confiable, debe de verificarlo y
validarlo.

Tester y Aseguramiento de la calidad


• El tester que prueba el software tiene como principal función encontrar bugs, lo más temprano
posible, y asegurarse de que sean arreglados.
• La persona encargada del aseguramiento de la calidad del software tiene como responsabilidad
principal crear y hacer cumplir los estándares y los métodos para mejorar el proceso de desarrollo y
prevenir que los bugs aparezcan.
Actividades del tester
Un tester de software tiene como meta principal:
• Encontrar bugs lo antes posible.
• Asegurarse que estos se corrijan.
• Metafóricamente, el tester es “los ojos del cliente”.
• Es el primero en ver el software.
• El habla por el cliente, debe buscar la perfección.

Habilidades del tester


Un tester se caracteriza por los siguientes rasgos:
• Explorador. • Buen juicio.
• Implacable. • Discreto y diplomático.
• Creativo. • Persuasivo.
• Perfeccionista. • Contar con el respeto de sus compañeros.
• Buen nivel de conocimiento técnico.

Perlas del conocimiento


“Nunca pongas a probar funciones criticas o con alta criticidad a un inexperto, para probar pon al mejor y más
experimentado elemento” – Dan Roy

Probar lo más temprano posible.


• Permite encontrar y resolver defectos tan pronto como sea posible.
• Ayuda a reducir el riesgo de fracaso del proyecto.
• Ayuda a reducir los costos globales de desarrollo.
• Provee datos valiosos en la evaluación de viabilidad del proyecto.

Importancia de las pruebas – Fases de desarrollo


• 57% - Especificación. • 13% - Código.
• 24% - Diseño. • 06% - Otras.

Definición de bug
Es la falla en un componente o sistema que puede causar que el componente o sistema deje de operar en la
función requerida.

Términos para las fallas de software


Se emplean varios términos sinónimos cuando el software falla:
• Defecto, Inconsistencia, Variación.
• Avería, Anomalía, Hallazgo.
• Error, Bug, Falta.
MODELOS DE CICLO DE VIDA DE DESARROLLO DE SOFTWARE
Proceso de pruebas y ciclo de vida
En las diferentes Metodologías de desarrollo, existen muchas variantes del ciclo de vida de los proyectos de
sistemas y, por lo tanto, es válida una flexibilidad razonable en la determinación del ciclo de vida particular de
cada proyecto.

Modelos de ciclo de vida de desarrollo de software


Los modelos de ciclo de vida de desarrollo de software principales son:
• Cascada. • Prototipo Rápido.
• Espiral. • Modelo V.

Modelo de Cascada
• Desde el inicio, se especifican todos los requerimientos por completo.
• La fase de codificación se hace en un solo bloque.
• No hay traslapes entre las fases del modelo.
• Es necesario terminar todas las actividades de una fase para pasar a la siguiente. No es posible
regresarse a fases anteriores.
• Como todo es cuidadosamente especificado, las pruebas se efectúan a un plan y a un calendario.

Modelo Espiral.
Este modelo involucra seis pasos principales:
• Determinar objetivos, alternativas y restricciones.
• Identificar y resolver riesgos.
• Evaluar alternativas.
• Desarrollar y probar el nivel actual.
• Planear el próximo nivel.
• Decidir el enfoque del próximo nivel.

Es un modelo mucho más flexible, se puede encontrar


problemas tempranamente.

El tester tiene la posibilidad de influenciar en el producto


desde la etapa de diseño.
Modelo Prototipo Rápido
• Ideal cuando el sistema no se ha comprendido del todo por el usuario y/o desarrollador.
• Reduce el ciclo especificación-retroalimentación del usuario.
• Prototipo “quick and dirty” usado para obtener retroalimentación del usuario.
• Varios ciclos de prototipeo pueden realizarse. El prototipo representa el sistema deseado, el
desarrollador y construye la aplicación correcta.
• Utiliza el prototipeo para obtener información y después produce la especificación de requerimientos.
• Define los escenarios importantes para el usuario y los utiliza para los casos de prueba del sistema.
• Trae el punto de vista operacional (o de comportamiento) a la fase de especificación de los
requerimientos.

Modelo V
• Es un modelo mucho más flexible.
• Se trabaja paralelamente en la especificación de los requerimientos, diseño y código con la
especificación de las pruebas de aceptación, integración y unitarias.
• Optimiza el tiempo de desarrollo, al trabajar paralelamente el equipo de especificación y desarrollo y el
equipo de pruebas.
CMMI 1.3 – VALIDACION Y VERIFICACION
Evolución del proceso de pruebas
❖ Antes
• Las pruebas, como etapa del ciclo de vida del software, constituían la determinación cualitativa
de la eficiencia del producto elaborado.

❖ Ahora
• Se llevan a cabo desde etapas iniciales y durante todo el ciclo, además del aseguramiento de la
calidad.
• El aseguramiento no solo se hará al final del proceso de producción sino también durante todo
el ciclo de vida.

CMMI 1.3 Verificación


• Asegurar que los productos de trabajo seleccionados cumplan sus requerimientos especificados.
• Los métodos de verificación se aplican a los productos de trabajo desde sus etapas iniciales con la
verificación de los requerimientos hasta la verificación del producto completo.
• Las revisiones entre colegas es un mecanismo importante para verificar los productos de trabajo.

❖ SG1 Preparar la verificación


• SP 1.1 – Seleccionar los productos para verificación.
• SP 1.2 – Establecer el ambiente de verificación.
• SP 1.3 – Establecer los procedimientos y el criterio de verificación.

❖ SG2 Ejecutar revisión entre colegas.


• SP 2.1 – Preparar la revisión entre colegas.
• SP 2.2 – Conducir las revisiones.
• SP 2.3 – Analizar los datos de las revisiones.

❖ SG3 Verificar el producto y sus componentes.


• SP 3.1 – Realizar la verificación.
• SP 3.2 – Analizar los resultados de la verificación.

CMMI 1.3 Validación


❖ SG1 Preparar la validación.
• SP 1.1 – Seleccionar los productos para validación.
• SP 1.2 – Establecer el ambiente de validación.
• SP 1.3 – Establecer los procedimientos y el criterio de validación.

❖ SG2 Validar el producto y sus componentes.


• SP 2.1 – Realizar la validación.
• SP 2.2 – Analizar los resultados de la validación.
EL MODELO DE MADUREZ DE PRUEBAS (TMMSM)
Ventajas:
• Los niveles de madurez corresponden con SW-CMM.
• TMMSM puede ser utilizado fácilmente en conjunto con SW-CMM, CMMI, ISO-9001, e ISO/IEC 12207.
• Simplifica la planeación, implementación y monitoreo de la mejora de los procesos.

Desventajas:
• Existen pocos libros publicados al respecto (Un libro, Practical Software Testing: A Process-Oriented
Approach, por Dr. Ilene Burnstein está en fase de edición final).

Niveles de Madurez:
➢ Nivel 1 – Inicial.
➢ Nivel 2 – Fase de Desarrollo.
➢ Nivel 3 – Integración.
➢ Nivel 4 – Administración y Métricas.
➢ Nivel 5 – Optimización, prevención de defectos y control de calidad.

• Cada nivel, excepto el nivel 1, contiene Metas de Madurez.


• Las metas de madurez, son soportadas por sub-metas de madurez.
• El logro de las sub-metas son alcanzadas por la satisfacción de las
Actividades-Tareas-Responsabilidades (ATRs).
• ATRs son acciones específicas identificadas que deberán ser optimizadas.

Cada acción es asignada:


➢ Administradores.
➢ Desarrolladores / Testers.
➢ Usuarios / Clientes.

Nivel 1 – Inicial
• El proceso de pruebas es caótico.
• Es definido, pero no se distingue del eliminado de errores (debugging).
• Las pruebas desarrolladas son adecuadas después de que la codificación esta completada.
• Se carece del personal adecuado, personal capacitado o herramientas.
• El software se entrega comúnmente sin aseguramiento de la calidad.

Nivel 2 – Fase de Desarrollo


• Las pruebas están separadas del debugging.
• Fase después de la codificación.
• La meta primaria de las pruebas es mostrar las especificaciones del software conocidas.
• Técnicas basadas de pruebas y los métodos están en un lugar.
Nivel 3 – Integración
• Integración de pruebas dentro del ciclo de vida entero.
• Pruebas objetivas basadas en los requerimientos.
• Existen pruebas en la organización.
• Reconocimiento de pruebas como una actividad profesional.

Nivel 4 – Administracion y Metricas.


• Pruebas es un proceso medido y cuantificado.
• Se llevan a cabo revisiones en todas las fases de desarrollo y son reconocidas como pruebas.
• Los productos son probados por atributos de calidad, tales como, confiabilidad, uso y mantenimiento.
• Los casos de pruebas son recolectados y guardados en una base de datos de pruebas para reutilización
y regresión de pruebas.
• Los defectos son registrados y alcanzan niveles severos.

Nivel 5 – Optimización, prevención de defectos y control de calidad.


• Pruebas está definido y administrado.
• Los costos de pruebas y la efectividad pueden ser monitoreadas.
• Pruebas pueden ser finamente y continuamente mejoradas.
• La prevención de defectos y el control de calidad son practicados.
• Las herramientas automatizadas son una parte primaria del proceso de pruebas.
• Las herramientas proveen soporte para el diseño del os casos de prueba y el análisis de la colección de
defectos.
• Las métricas relacionadas con pruebas también tienen herramienta de soporte.
• La reutilización del proceso es practicada.
TIPOS DE PRUEBAS
Objetivos primarios del proceso de pruebas
• Demostrar que el desarrollo de un producto será útil al usuario final.
• Verificar que el sistema cumple con los requerimientos del cliente para el cual fue creado.
• Identificar defectos antes de la puesta en producción.
• Aceptar o rechazar el producto, en función de parámetros definidos previamente.

Alcance del proceso de pruebas


• Se debe realizar para cada nuevo desarrollo, cambio o mantenimiento a implementar en producción.

TIPOS DE PRUEBAS – CAJA NEGRA


Características de las pruebas de caja negra
• Las pruebas de caja negra se conocen por data-driven o input-output driven.
• Se concentra en encontrar las circunstancias en las que el programa no se comporta de acuerdo a sus
especificaciones.
• Los casos de prueba se basan en probar todas las condiciones de entradas posibles. Es necesario
reducir el número de casos de prueba.

Pruebas de caja negra estática


Estas pruebas se aplican a los documentos de especificación del producto de software. Por ejemplo:
• La documentación de la arquitectura.
• La documentación del diseño.
• La documentación de las interfases.
• Otros documentos que sean de especificación.

Un checklist que verifique los atributos siguientes:


• Completo. • Relevante.
• Exacto. • Factible.
• Preciso, no ambiguo, claro. • Libre de código.
• Consistente. • Verificable.

Características de las pruebas de caja negra dinámicas


• Las pruebas de aja negra dinámicas también se conocen por behavioral testing.
• Son dinámicas porque verifican los casos de prueba cuando el programa se está ejecutando.
• Son de caja negra porque se introducen datos de entrada, se reciben datos de salida y se evalúan los
resultados sin saber exactamente cómo funciona el programa.
• Para generar los casos de prueba se requiere forzosamente el o los documentos de especificación del
producto.
Pruebas de caja negra dinámicas
❖ Prueba de Datos:
• Condiciones de limite y sub-limites.
• Default, vacío, blanco, nulo, cero y ninguno.
• Datos incorrectos, erróneos, inválidos, basura.
❖ Pruebas de Estado:
• Flujo lógico del software.
• Estados de falla.

¿Qué es una partición de equivalencia?


• Conjunto de casos de prueba que prueba la misma cosa o revela el mismo error.
• Se utiliza para reducir considerablemente el número de casos de prueba posible a uno más pequeño
pero igualmente efectivo y manejable.
• Cuidado al seleccionar la partición, se está escogiendo no probar todo.
• Puede ser subjetiva su selección.

Las clases de equivalencia se pueden definir de acuerdo a las siguientes directrices:

1. Si una condición de entrada especifica un rango, se define una clase de equivalencia valida y dos no
válidas.
• (Valida) 1 <= Numero <= 49;
• (No Valida) Numero < 1, Numero > 49

2. Si la condición de entrada es un valor especifico, se define una clase de equivalencia valida y dos no
válidas.
• (Valida) Num. propietarios = 3;
• (No Valida) Num. Propietarios < 3, num propietarios > 3.

3. Si la condición de entrada especifica un miembro de un conjunto, se define una clase de equivalencia


valida y otra no valida.
• (Valida) “El primer carácter es una letra”;
• (No Valida) “(…) no es una letra”.

4. Si la condición de entrada es lógica, se define una clase de equivalencia valida y otra no valida.
• Tres tipos de inmuebles: (Valida) “Pisos”, ”Chalets”, ”Locales comerciales”.
• (No valida): “Jkllñ”.
Análisis de Valores Limite (AVL)
Los casos de prueba que exploran las condiciones limite producen mejores resultados.
• “Los defectos del software se acumulan en situaciones límite”.

Diferencias de AVL con particiones de equivalencia:


• No se elige “cualquier elemento” de la clase de equivalencia, sino uno o más de manera que los
márgenes se sometan a prueba.
• Los casos de prueba se generan considerando también el espacio de salida.

Reglas para identificar casos:


1. Si una condición de entrada especifica un rango delimitado por los valores a y b, se debe generar casos
para a y b y casos no validos justo por debajo y justo por encima de a y b, respectivamente.
• Rango de entrada: [-1.0,1.0]
• Caso de Prueba para: -1.0, +1.0, -1.001, +1.001

2. Si una condición de entrada especifica un numero de valores, se deben desarrollar casos de prueba
que ejerciten los valores máximo y mínimo, uno más el máximo y uno menos el mínimo
• “El fichero de entrada tendrá de 1 a 255 registros”.
• Caso de Prueba para 0,2,254,256.

3. Aplicar las directrices 1 y 2 a las condiciones de salida.


• “El programa podrá mostrar de 1 a 4 listados”.
• Caso de Prueba para intentar generar 0,1,4 y 5 listados.

4. Si las estructuras de datos internas tienen límites preestablecidos, hay que asegurarse de diseñar un
caso de prueba que ejercite la estructura de datos en sus límites.

TIPOS DE PRUEBAS – CAJA BLANCA


Características de las pruebas de caja blanca.
• Se conocen también por logic-driven.
• Examinan la estructura lógica del programa.
• Los casos de prueba se basan en probar todas las trayectorias posibles de flujo de control.
• Esta prueba exhaustiva de todas las trayectorias, no garantiza que el programa carezca de errores.
• No es garantía de que el programa cumple con la especificación.
• No detecta la ausencia de trayectorias necesarias.
• No evidencia los errores sensibles a los datos.
Pruebas de caja blanca estáticas.
Estas pruebas se realizan sobre el diseño y el código.

❖ Revisiones Formales:
• Revisiones entre colegas.
• Walkthroughs.
• Inspecciones.

❖ Estándares de codificación y guías:


• Estándares y guías de programación.
• Checklists de revisión de código.

Revisiones entre colegas


• Son las más informales.
• Participan el programador que escribió el código y otro programador que actúa como tester.
• El pequeño grupo revisa el código juntos y buscan problemas o equivocaciones.
• Al revisor se le solicita sus comentarios generales y que sugiera mejoras al código.
• Si se desea se puede utilizar un cheklist para la revisión.

Walkthroughs
• Son más formales que las revisiones entre colegas.
• Requiere de una examinación del código previa a la revisión.
• La persona que presenta el código es la misma que lo escribió.
• Después de la revisión, el presentador escribe un reporte con los errores encontrados y como planea
resolverlos.
• Entre los revisores debe haber uno con mayor experiencia.

Inspecciones
• Son las más formales de todas las revisiones
• Son altamente estructuradas.
• Cada participante requiere de capacitación especifica.
• La persona que presenta el código no es la misma que el programador original.
• Cada participante toma una perspectiva diferente de revisión: Usuario, tester, soporte.

Estándares y guías de programación.


❖ Estándares:
• Reglas establecidas, fijas que se tienen que seguir. Son los do’s y los don’ts.
• Los estándares no tienen excepciones.

❖ Guías:
• Las mejores prácticas sugeridas, recomendaciones, forma preferida de hacer las cosas.
• Las guías son un poco mas relajadas.
Importancia de adherirse a un estándar/guía:
• Confiabilidad: Es más seguro un código que se apega a un estándar o a una guía que el que no lo hace.
• Legibilidad/Mantenibilidad: El código que se apega a esto es más fácil de leer, entender y mantener.
• Portabilidad: El código que se apega a estos es mucho más fácil de mover entre plataformas
diferentes.

Checklists de revisión de código.


• En cualquiera de las revisiones formales se puede utilizar un checklist de revisión de código genérico.

• Sin importar el lenguaje de programación, los principales aspectos que un checklist cubre son:
➢ Errores de referencia de datos.
➢ Errores de declaración de datos.
➢ Errores de computación.
➢ Errores de flujo de control.
➢ Errores de parámetros de subrutina,
➢ Errores de entrada/salida.
➢ Otros.

Pruebas de caja blanca dinámicas.


❖ Cobertura de Datos: ❖ Cobertura de Código:
• Flujo de Datos. • Cobertura de Línea.
• Sublimites. • Cobertura de Rama.
• Formulas y Ecuaciones. • Cobertura de Condición.
• Forzar el Error.

Prueba del camino básico.


Los objetivos de estas pruebas son:
1. Obtener una medida de la complejidad lógica de un diseño procedural.
2. Usar esa medida como guía para la definición de un conjunto básico de caminos de ejecución.

• Los casos de prueba obtenidos del conjunto básico garantizan que durante la prueba se ejecuta al
menos una vez cada sentencia del programa.
• Se puede automatizar.

❖ Complejidad Ciclomatica:
• Métrica del Software que proporciona una medición cuantitativa de la complejidad
lógica de un programa.
• Define el Numero de caminos independientes del conjunto básico de un programa.
• Determina el número de casos de prueba que se deben realizar para asegurar que se
ejecuta cada sentencia al menos una vez.
METRICAS
• Una base de datos de rastreo de errores es un medio importante para medir el estado del proyecto.
• El termino de Métrica de software se usa para describir la medición de un atributo particular de un
proyecto de software.

Ejemplo de métricas:
• El promedio de errores por tester por día.
• El número de errores encontrados por área de software.
• El porcentaje de errores por severidad.

Un tester utiliza métricas todo el tiempo, algunas comunes y de uso individual son:
• ¿Cuáles son los identificadores de los errores que tengo asignados para cierre?
• ¿Cuántos errores de los que he encontrado, se resolvieron como “no se arreglaran”?
• ¿Cuántos errores he introducido en este proyecto?
• ¿Cuántos de mis errores fueron de severidad 1 o 2?
• ¿De todos los errores que he encontrado, cuantos se corrigieron?

Métricas comunes a nivel proyecto:


• Errores encontrados en cada área funcional del software.
• Errores encontrados en el tiempo.
• Errores acumulados en el tiempo.
• Errores acumulados resueltos y errores acumulados cerrados en el tiempo.

PRUEBAS DE LA DOCUMENTACION
¿Qué documentos se prueban?
• Garantía. • Manual de usuario. • Mensajes de Error.
• Etiquetas. • Ayuda en línea.
• Setup. • Tutoriales, Wizards.

Importancia de probar la documentación


Una buena documentación del software contribuye a la calidad del producto de tres maneras:
• Mejora la usabilidad.
• Mejora la confiabilidad.
• Reduce los costos de soporte.

Aspectos a considerar en las pruebas.


• General: Audiencia. • Correctez: Figuras e Imágenes Capturadas.
• General: Terminología. • Correctez: Muestras y Ejemplos.
• General: Contenido. • Correctez: Ortografía y Gramática.
PRUEBAS DE USABILIDAD
¿Qué es la usabilidad?
• Usabilidad es cuan apropiada, funcional y efectiva es la interacción del software.
• El principal medio que se utiliza para interactuar con un programa es la interfaz de usuario o user
interface (UI).

Características de UI
Una adecuada interfaz de usuario posee:
• Cumplimiento con estándares y • Flexible.
lineamientos. • Cómoda.
• Intuitiva. • Correcta.
• Consistente. • Útil.

Se recomienda la página web de Jakob Nielsen para ahondar en aspectos de usabilidad


• http://www.useit.com/

PRUEBAS DEL WEBSITE


Características de las páginas web
En cada página web deben verificarse:
• Tamaño, Tipografía y color de texto.
• Texto y gráficos de hyper-enlace.
• Anuncios Rotatorios.
• Textos de las cajas de selección drop-down.
• Campos para introducir información.
• Posicionamiento y contenido personalizable.
• Compatibilidad entre browsers, versiones y plataformas de software y hardware.

Web – Prueba de Caja Negra


• Cada página se ve como una caja negra.
• Se verifican los detalles funcionales a nivel general.
• Aspectos a considerar:
➢ Texto.
➢ Hyperligas.
➢ Gráficos.
➢ Formas.
➢ Objetos.
Web – Prueba de Caja Gris
• Es una mezcla de las pruebas de caja negra y de caja blanca.
• Consiste principalmente en observar el código HTML de la página web para encontrar errores.

Web – Prueba de Caja Blanca


• Se verifica el código para generar las páginas web utilizando las técnicas de caja blanca.

Algunos aspectos a considerar son:


• Contenido dinámico.
• Paginas manejadas por base de datos.
• Paginas creadas por programación.
• Rendimiento y carga del servidor.
• Seguridad.

Web – Prueba de Configuración y Compatibilidad.


Aspectos a probar en un sitio web:
• Plataformas de hardware.
• Exploradores web y versiones.
• Plug-Ings de los exploradores.
• Opciones del explorador.
• Resolución de video y profundidad de color.
• Velocidades del modem.

OTROS TIPOS DE PRUEBA


Estrategias
❖ Análisis Dinámico: Requiere la ejecución del código.
• Pruebas de Aceptación.
• Pruebas de Instalación.
• Pruebas de Rendimiento.
• Pruebas de Funcionalidad.
• Pruebas de Integración.
• Pruebas de Unidad.

❖ Análisis Estético: No código en ejecución.


• Revisiones entre colegas.
• Seguimiento.
• Demostración del programa.
Tipos de prueba

Prueba de
Unidad

Prueba de
Unidad

Prueba de Prueba de Prueba de Prueba de Prueba de


Integración Funcional Rendimiento Aceptación Instalación

Módulos Sistema Software Sistema


Prueba de
Integrados Funcionando verificado y Aceptado
Unidad
validado
¡SISTEMA EN
USO!

Pruebas de Regresión
• Las pruebas de regresión se aplican a una nueva versión o liberación, para verificar que la aplicación
ejecuta las mismas funciones todavía de la misma manera como en una versión o liberación anterior.
• Especificar y crear una batería de pruebas completa es importante para realizar las pruebas.

Pruebas de Aceptación
• Una serie de pruebas que el cliente ejecuta cuando el desarrollo está terminado.
• El propósito es facilitar al cliente y a los usuarios que determinen si el sistema verdaderamente
satisface sus necesidades y expectativas.
• Las pruebas de aceptación deberían definirse junto con el cliente.
• El cliente debe estar de acuerdo en que, si el sistema pasa las pruebas, el contrato se ha cumplido y
que cualquier otro cambio o problema se pagara por separado.

Tipos de pruebas de aceptación.


❖ Prueba Piloto
• Instala el sistema en una base experimental.
• Las pruebas corresponden al trabajo diario en el sistema para probar todas las funciones.
• Es menos formal y estructurado que una prueba de benchmark.
• Pruebas Alpha: Se pone a prueba en las instalaciones del desarrollador.
• Pruebas Beta: Se pone a prueba en las instalaciones del cliente.

❖ Prueba en Paralelo
• El sistema nuevo funciona, en paralelo, con la versión anterior.
• La transición gradual ayuda a los usuarios a comparar y contrastar el sistema nuevo con el
anterior.
• Permite a los usuarios tener confianza en el sistema nuevo.
Pruebas de Instalación
• Instalar el sistema en la sede del usuario.
• Si las pruebas de aceptación se han realizado en las instalaciones, las pruebas de instalación pueden no
ser necesarias.
• Requiere trabajar con el cliente para determinar las pruebas que no son necesarias.
• Las pruebas se centran en la integridad del sistema instalado.

Pruebas de Rendimiento
Los tipos de pruebas de rendimiento se determinan por los tipos de requerimientos no funcionales:
• Pruebas de Strees: Evalúan al sistema cuando se le presiona hasta tus limites por un corto periodo de
tiempo.
• Pruebas de Volumen: Abordan el manejo de grandes cantidades de información en el sistema.
• Pruebas de Configuración: Analizan las diversas configuraciones de software y hardware especificadas
en los requerimientos.
• Pruebas de Compatibilidad: Se utilizan para probar las interfaces del sistema con otros sistemas.
• Pruebas de Regresión: Se realizan cuando el sistema probado reemplaza a uno existente.
• Pruebas de Seguridad: Garantizan que los requerimientos de seguridad se cumplan.
• Pruebas de Sincronización: Evalúan los requerimientos relacionados al tiempo de respuesta a un
usuario y el tiempo de ejecutar una función.
• Pruebas Ambientales: Valoran la habilidad del sistema para desempeñarse en el sitio de instalación.
• Pruebas de Calidad: Evalúan la confiabilidad, mantenibilidad y disponibilidad del sistema.
• Pruebas de Recuperación: Se ocupan de la presencia de fallas o de la perdida de información.
• Pruebas de Mantenimiento: Cubren la necesidad de herramientas de diagnóstico y procedimientos
para ayudar a localizar el origen de los problemas.
• Pruebas de Documentación: Verifican que los documentos necesarios se hayan redactado.
• Factores Humanos: Investigan los requerimientos relacionados con la interfaz del usuario del sistema.

Arquitectura C/S con Múltiples Capas


Ventajas y Desventajas
• Ningún método o herramienta para pruebas garantiza que un programa va a estar libre de defectos, sin
embargo, algunos son mejores que otros.
• Por lo anterior es importante hacer la elección correcta, para lo cual es necesario tomar en cuenta
depende de la fase en la que se encuentre el sistema, por ejemplo: Las pruebas unitarias y entre pares
son muy rápidas y efectivas para encontrar errores de código, así como problemas simples de diseño,
sin embargo, no son recomendables para pruebas de rendimiento complejo (perfomance) o problemas
de usabilidad.

HERRAMIENTAS DE PRUEBA
Herramientas de Código Abierto
Existen una gran variedad de herramientas, entre ellas se mencionan:

HERRAMIENTA TIPO DE PRUEBA


JFunc: JUnit Functional Testing Extension Pruebas de Integración
Avignon Pruebas de Aceptación
Doit: Simple Web Application Testing Aplicaciones Web y Formularios
Eclipse TPTP Pruebas de Rendimiento de Unidad y Manuales
ITP Pruebas de Regresión
Ivalidator Pruebas de Integración y Regresión
jWebUnit Pruebas de Aceptación para Aplicaciones Web
Marathon Pruebas de Aceptación y Regresión
Toster Pruebas de Sistema
J2ME Unit Testing Toolkit Prueba de Aplicaciones Web y de Servicios

Recomendaciones
Algunas recomendaciones de las herramientas y de la automatización de pruebas:
• Como el software cambia, no es recomendable generar muchas macros.
• Jamás serán un sustituto del ojo humano y de la intuición del tester.
• La verificación es difícil de realizar.
• Utiliza los mismos estándares y guías de tus programadores.
• Evita las herramientas que son invasivas, los que modifican el código cuando encuentran un error.
• Cualquier herramienta automatizada puede ser de utilidad, sin embargo, se debe ser cuidadoso con su
uso ya que muchos programadores asumen que las herramientas que utilizan son poderosas por que
encuentran todos sus errores simples de código o incluso sintaxis incorrecta, sin embargo, no debemos
olvidar que es posible que se pueda generar una sintaxis correcta y aun así el programa tenga una
lógica incorrecta.
• Algunos datos arrojados al utilizas PSP muestran que cuando se utilizan lenguajes tradicionales, las
herramientas que utilizan los programadores no detectan el 10% de errores simples en la tipografía o
de codificación. Esta es la razón por la cual la mayoría de ellos caen en la trampa y creen que están
generando un código 100% libre de este tipo de errores, y dejan de tratar de detectar algunos más.
EL PROCESO DE PRUEBAS
El Proceso de Pruebas

- Evaluar la calidad de un sistema bajo prueba.


- Obtener una liberación de pruebas.
- Crear el contexto de pruebas. - Ejecutar las pruebas.
- Comprender el contexto más ampliamente. - Documentar los resultados de las pruebas.
- Evaluar y priorizar los riesgos de calidad.
- Estimar el esfuerzo de pruebas.
- Conjuntar el equipo de pruebas.
Crear Evaluar
- Construir el ambiente de pruebas.
Contexto Calidad

El Proceso de
Prueba
- Refinar el proceso de prueba.
- Ajustar el proceso de prueba actual. Refinar Comunicar
- Institucionalizar las mejoras a largo plazo.
Prueba

- Comunicar los resultados de las pruebas.


- Identificar las necesidades de los involucrados.
- Definir el tablero de pruebas.

❖ Criterios de Finalización
• Costos.
• Tiempo.
• Defectos Encontrados.

Estos son útiles, pero siempre será mejor los criterios de cobertura.

• Si asumimos que las pruebas son necesarias, debemos diseñar un proceso que proporcione el máximo
valor posible, ejecutando actividades que reduzcan los riesgos.
• Comprobar que las especificaciones son diseñadas y codificadas como fueron documentadas.
• Considerar que las necesidades del negocio, el software y los procedimientos manuales asociados con
su desarrollo, proporcionen la suficiente seguridad.
• El proceso de pruebas arranca desde el inicio del proyecto, una vez entendidos los requerimientos.
• La actividad más importante que se debe realiza, es la revisión de la documentación de requerimientos
(Pruebas Estáticas).
• Muchos problemas y defectos detectados en la ejecución de las pruebas de aceptación son provocados
por los malos entendidos desde la documentación de los requerimientos originales.
• La simple comprobación de que todos entendemos lo mismo de los requerimientos documentados,
eliminara los defectos de diseño.
Principio del Proceso de Pruebas
Algunas de las dificultades importantes para realizar adecuadamente el proceso de pruebas son:
• Tener un proceso de pruebas completo NO ES POSIBLE.
• Limitaciones Practicas: Es importante alcanzar confianza total con cualquier tipo de pruebas. Los
procesos de pruebas son tediosos y exhaustivos.
• Limitaciones Teóricas: No podemos estar seguros de que las especificaciones son correctas. La prueba
de sistemas no puede identificar que todo programa es correcto.
• Los sistemas no son simples, por lo tanto, no es simple entenderlos. Para realizar un buen proceso de
pruebas es necesario entender completamente el sistema. De aquí, que el proceso de pruebas no es
simple.
• Una importante razón para realizar el proceso de pruebas es prevenir la ocurrencia de defectos.

Barrera del Proceso de Pruebas


Alguna de las dificultades importantes para realizar adecuadamente el proceso de pruebas son:
• El proceso de pruebas pone en duda la efectividad del desarrollo del sistema que ha sido realizado.
• Se carece de una metodología que proporcione el aseguramiento necesario de que el sistema se
encuentra libre de defectos.
• Resistencia.

Objetivos Primarios del Proceso de Pruebas


• Demostrar que el desarrollo de un producto será útil al usuario final.
• Verificar que el sistema cumple con los requerimientos del cliente para el cual fue creado.
• Identificar defectos antes de la puesta de producción.
• Aceptar o rechazar el producto, en función de parámetros definidos previamente.

Alcance del Proceso de Pruebas


• Se debe realizar para cada nuevo desarrollo, cambio o mantenimiento a implementar en producción.

Verificación del Alcance


Alcanzar los objetivos asegura:
• El riesgo asociado de no entregar un producto aceptable es minimizado.
• La calidad del producto a entregar.
• La capacidad de entregar productos de alta calidad se incrementa.

Enfoque del Proceso de Pruebas


En lo que todas las organizaciones coinciden, es en que es una prueba desde la perspectiva del negocio.
• ¿Cubre el software mis necesidades?
• ¿Hasta dónde responde a mis requerimientos?
• ¿Cómo funcionara en mi ambiente de trabajo?
ETAPAS DEL PROCESO DE PRUEBAS
Estrategia del Proceso de Pruebas
El diseño de las pruebas se puede llevar a cabo en tres etapas:
• Requerimientos y Especificaciones.
• Diseño del Software.
• Código (la lógica y las estructuras de datos).

Etapa de Requerimientos
Funciones y/o requerimientos que serán probados:
• ¿Cómo van a ser probados?
• ¿Qué necesitamos para comprobarlos?
• ¿Cuáles son los criterios de validación de las pruebas?

Etapa de Especificaciones
Componentes del sistema que serán probados:
• ¿Cómo se propone probarlos?
• ¿Cómo voy a validar las pruebas?
• ¿Cómo se probaran los programas?
• ¿Cuánto tiempo se llevaran las pruebas?

Etapa de Codificación
• ¿Cómo vamos a crear el ambiente de pruebas?
• ¿Qué se necesita para crear el ambiente de pruebas?
• ¿Cómo se van a ejecutar las pruebas?
• ¿Cuánto tiempo se llevaran las pruebas?
COMPONENTES DEL PROCESO DE PRUEBAS
Planeación
• Se inicia en etapas tempranas, no hasta la codificación.
• El plan de pruebas evoluciona conjuntamente con el proyecto de desarrollo o mantenimiento del
sistema, documentarlo y desarrollarlo en todo el proyecto.
• Definiendo un plan de pruebas.
• Identificar los objetivos del negocio.
• Resumen del plan:
o Descripción de funciones.
o Atributos no funcionales asociados.
• Detalles de las pruebas:
o Casos de pruebas.
o Scripts de pruebas.
• Desarrollar un plan de ejecución de pruebas:
o Establecer las especificaciones del ambiente de pruebas.
o Especificar los criterios de entrada y salida de datos.
o Características que no se probaran.
o Criterios de terminación (exitoso/rechazo/suspensión).
o Políticas para atención de fallas encontradas.
o Riesgos de plan y medidas contingentes.

Ejecución
• Desempeño de las pruebas estáticas a toda la documentación desarrollada en todas las fases
anteriores a la programación.
• Ejecución de las pruebas dinámicas.

Documentación
• Todos los elementos de los planes y sus resultados deben ser documentados para su formalización y
que las pruebas futuras se beneficien de las anteriores.
• Los registros generan métricas.
PLAN DE PRUEBAS
Plan Maestro de Pruebas
• Es el documento más importante para el área de pruebas.
• Debe de comunicarse a todos los miembros del equipo de desarrollo.
• El plan de pruebas comprende de los siguientes aspectos:
o Expectativas de alto nivel.
o Personal, ambiente, otros.
o Responsabilidades inter-grupales.
o Que si y que no será probado.
o Fases de las pruebas.
o Estrategia de prueba.
o Recursos.
o Testers, calendario.
o Casos de prueba.
o Reporte de bugs.
o Métricas y estadísticas.
o Riesgos e issues.
• Expectativas de alto nivel: Definir el propósito del proceso y del plan de pruebas.
• Personal, ambiente, otros: Identificar a la gente que trabaja en el proyecto.
• Responsabilidades inter-grupales: Identificar las actividades y los entregables que afectan el trabajo
de las pruebas.
• Que si y que no será probado: Delimitar que componentes si se probaran y cuáles no, ya que no todo
lo incluido en el producto de software se prueba, sobretodo el software de terceros.
• Fases de las pruebas: Identificar las etapas de prueba de acuerdo al modelo proyecto.
• Estrategia de prueba: Identificar las técnicas de prueba que se emplearan en cada fase.
• Recursos: Estimar todo lo necesario que se utilizara en las pruebas durante el proyecto.
• Testers, calendario: Generar el calendario de las actividades de prueba e incluirlas en el calendario del
proyecto global.
• Casos de Prueba: Definir los casos de prueba de acuerdo a la estrategia definida.
• Reporte de bugs: Definir el reporte de bugs para cada error que se detecte.
• Métricas y Estadísticas: Identificar las métricas a través de las cuales se medirá el éxito del proyecto y
del proceso de pruebas.
• Riesgos e Issues: Identificar los riesgos del proyecto que puedan impactar el proceso de pruebas.
• Se pueden encontrar los formatos oficiales de la IEEE 829 en http://www.standards.ieee.org, o bien, en
la web haciendo una búsqueda con el termino “Test Plan Template”.
• El Plan maestro de pruebas es uno de los principales work products relacionados con la SP 1.3 de la PA
de Validación.
Ambiente de Pruebas
• Definición de requerimientos que se necesitan para efectuar las pruebas tales como: área de trabajo,
hardware, software, soporte técnico, seguridad, etc.
• Definición de las aplicaciones o módulos que deberán ser probados.

Técnicas y Herramientas de Prueba


• Identificar las técnicas y herramientas que se utilizan para planear y ejecutar las pruebas.

Documentación de Pruebas
Plan de
Pruebas

Incrementar el
énfasis en el proceso
Especificación del Especificación del Diseño de
de creación del plan.
Diseño de Pruebas. Pruebas.

Incrementar el
énfasis en el plan
Especificación de los escrito.
casos de pruebas.
Especificación del
Procedimiento de Prueba

DISEÑO DE PRUEBAS
Importancia del Diseño de la Prueba
• En un documento que refina el detalle del Plan de Pruebas.
• Describe la prueba que es necesaria realizar a una característica específica, sin detallar los casos o los
pasos para ejecutar la prueba.
• Identificar los casos y los procedimientos de prueba.
• Especificar el criterio de pase/fallo del proceso de prueba.

Diseño de la Prueba
• Los puntos importantes de un diseño de pruebas son:
o Identificadores: Es un identificador único que se usa para referenciar y localizar la
especificación del diseño de prueba.
o Características a Probarse: Una descripción de la característica del software cubierta por la
especificación del diseño de prueba.
o Enfoque: Describe la técnica que se utilizara.
o Identificación del Caso de Prueba: Una descripción de alto nivel y referencias a los casos y
procedimientos de prueba específicos que se usaran para comprobar la característica.
o Criterio de Pase/Fallo: Describe exactamente que constituye un pase y un fallo de la
característica probada.
CASOS DE PRUEBA
Importancia de los Casos de Prueba
• Una adecuada planeación de los casos de prueba es importante por:
o Organización: Los casos de prueba se tienen organizados para que se usen en otros proyectos.
o Repetibilidad: Los casos de prueba deben poder ejecutar cuantas veces sea necesario para
verificar la ausencia de errores anteriores.
o Rastreo: Es importante obtener diversas estadísticas de las pruebas realizadas.
o Evidencia de la Prueba: Para aplicaciones de alto riesgo, los casos de prueba son evidencia de
haberlas probado.

Casos de Prueba
• Un caso de prueba contiene los siguientes puntos:
o Identificador: Formado por letras y números. Lo importante es que sea único.
o Aspecto a probar: Describe la característica a probar, el módulo de código y todo lo demás que
será probado.
o Entrada: Lista todos los datos de entrada o condiciones del software para que se ejecute el caso
de prueba.
o Salida: Describe los resultados que se esperan de la ejecución del caso de uso.
o Necesidades Ambientales: Todo lo necesario para ejecutar el caso de prueba: Software,
Herramientas de Prueba, Instalaciones, Personal.
o Requerimientos de Procedimiento Especiales: Describe todo lo inusual que deba hacerse para
realizar la prueba.
o Dependencia entre Casos: Si un caso de prueba depende de otro caso o puede verse afectado
por uno, debe especificarse también.
• Se pueden encontrar formatos en la web haciendo una búsqueda con el termino “Test Case
Template”.
• Los Casos de Prueba son uno de los principales work products relacionados con la SP 1.3 de la PA de
Validación.

¿Dónde almacenar los casos de prueba?


• Dependiendo del tamaño del proyecto y de los recursos financieros que se quiera invertir, se pueden
almacenar en 4 medios posibles:
o Cabeza: Para proyectos muy pequeños.
o Papel/Documentos: Para proyectos pequeños. Se utiliza tablas y cuadros de checklists.
o Hoja de Cálculo: La hoja de calculo Excel es la mas ampliamente utilizable. Permite de una
ojeada tener un panorama general del estado de las pruebas.
o Base de Datos Personalizada: Es el método ideal. Permite crear la base de datos de acuerdo a la
IEEE 829.
PROCEDIMIENTO DE PRUEBA
Procedimiento de Prueba
• Define, paso a paso, los detalles de exactamente como realizar los casos de prueba.
• Los aspectos que incluye un procedimiento de prueba son:
o Identificador: Un identificador único que liga al procedimiento de prueba con los casos y el
diseño de prueba.
o Propósito: Describe el propósito del procedimiento y las referencias a los casos de prueba que
deban ejecutarse.
o Requerimientos Especiales: Otros procedimientos, habilidades de prueba o equipo especial
necesario para ejecutar el procedimiento.
• La descripción detallada de como las pruebas se ejecutan. Algunos puntos que puede contener:
o Bitácora.
o Setup.
o Inicio.
o Procedimiento.
o Medición.
o Cierre.
o Reinicio.
o Terminación.
o Wrap up.
o Contingencias.
• Se pueden encontrar los formatos oficiales de la IEEE 829 en http://www.standards.ieee.org, o bien, en
la web haciendo una búsqueda con el término “Test Procedure Template”.
• El Procedimiento de prueba es uno de los principales work products relacionados con la SP 1.3 de la
PA de Validación.

REPORTE DE ERRORES
Reporte de Errores
• Algunos principios fundamentales para reportar errores:
o Reportar los errores tan pronto como sea posible.
o Describe los errores efectivamente
▪ Minimo.
▪ Singular.
▪ Obvio y general.
▪ Reproducible.
o Se no critico al reportar los errores.
o Reitera tus reportes de errores.
• Severidad indica que tan malo es el error; la probabilidad y el grado de impacto cuando el usuario
encuentre el error.
• Prioridad indica cuanto énfasis debería de ponerse en corregir el error y la urgencia de hacerlo
corregir.
BIBLIOGRAFIA
• Ron Patton. Software Testing. Second Edition. Sams. 2006.
• William E. Perry y Randall W. Rice. Surviving the top ten challenges of software testing:
Apeople-oriented approach. Dorset House. 1997.
• Glendford J. Myers. The art of software testing. Second Edition. John Wiley & Sons. 2004.
• Paul C. Jorgensen. Software Testing. A craftsman’s approach. CRC Press. 1995.

SITIOS WEB
• Estándares de la IEEE 829: http://www.standards.ieee.org
• International Institute for Software Testing: http://www.iist.org
• Quality Assurance Institute: http://www.qaiworldwide.org

Diversas Herramientas de Prueba:


• www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional
• www.seapine.com/ttpro
• www.compuware.com
• www.qadownloads.com
• www.operativesoft.com
• www.infobeagle.com
• www.logigear.com
• www.newmerix.com
• www.tethyssolutions.com
• www.operativesoft.com
• www.pctest.com
• www.techexcel.com
• www.vectorcast.com
• www.eSkill.com
• www.adminitrack.com
• www.autoitscript.com/autoit3
• www.ranorex.com
• www.marathontesting.com