Está en la página 1de 46

Testing en WEB

Viviana V. Laureyro
Vlaureyro@pragmaconsultores.com
Temario
Introducción
9 Conceptos generales
9 Testing
9 El proceso
9 Técnicas de derivación de casos de test
Testing en WEB
9 Motivación
9 Tipos de test
9 Claves
9 Herramientas
Conclusiones
Introducción

Conceptos generales de testing


Definiciones - Testing

Según 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 características no
funcionales del software”
El Proceso del Testing

Toda actividad de testing debe finalizar con una


comparación cuidadosa
Oráculo
Oráculo Comportamiento
Datos de Test Esperado

Componente
Componente Estrategia
Estrategia Comparación
Comparación Resultado
aaTestear
Testear

Comportamiento
Datos de Test
Real
Test
Test
El gran axioma del testing

Axioma: “El Testing sólo puede mostrar la


presencia de defectos, no su ausencia” (Dijkstra)

Corolario: Un test sólo es exitoso si encuentra


errores
Conceptos: Casos vs datos de test
Casos de test: descripciones de condiciones o
situaciones a testear.
9 Según IEEE standards 1999: “Es un conjunto de
condiciones de ejecución sobre los valores de entrada
y resultados esperados generadas para satisfacer un
objetivo particular”
9 Crear casos de test es un proceso creativo.
Datos de test: lotes de datos necesarios para ejecutar
un caso de test.
9 Crear datos de test es muy laborioso... Y poco
creativo.
Casos de test
No se puede probar un programa en todos sus inputs
Una de las mayores dificultades es encontrar un conjunto
de tests adecuado:
9 suficientemente grande para abarcar el dominio y
maximizar la probabilidad de encontrar errores
9 suficientemente pequeño para poder ejecutar el
proceso de testing con cada elemento del conjunto y
minimizar el costo del testing
Algunas técnicas de derivación de
casos de test
Partición de equivalencias
9 Particiona el dominio de entrada en un conjunto de clases de
entrada (o inputs) que tienen comportamientos similares
9 Luego se selecciona un valor representativo de cada partición
para ser testeado.
Análisis de condiciones de borde
9 Variación de la técnica de partición de equivalencias, que se
focaliza en los bordes de cada clase de equivalencia: por arriba y
por debajo de cada clase
Test de robustez
9 Es una variación de la técnica de análisis de borde
9 Consiste en ingresar no un valor apenas superior al máximo valor
sino muchísimo mayor, y un valor muchísimo inferior al mínimo
valor
Algunas técnicas de derivación de
casos de test
Definición jerárquica
9 Cada test es dividido en subtests con diferentes condiciones. Se
arma un árbol jerárquico, donde cada nodo indica una condición.
Los tests que son especificados y ejecutados son las hojas del
árbol.
Testing “limpio” vs. “sucio”
9 Limpio (o positivo): el objetivo es mostrar mostrar que el
producto satisface sus requerimientos
9 Sucio (o negativo): el objetivo es romper el sistema
9 Dependiendo de la madurez del proceso conviene cambiar la
relación limpio/sucio
9 Proceso inmaduro: limpio:sucio = 5:1
9 Proceso maduro: limpio:sucio = 1:5
9 por aumentar la cantidad de tests sucios (Beizer)
Proceso canónico

Seguimiento
Seguimiento
Estrategia Definición
Definición
Estrategia Ejecución
Ejecución de
de
de
decasos
casos incidentes
incidentes

Áreas críticas Cubrimiento Incidentes Estados


Tipos de test Completitud Priorización Re-priorización
Ambientes Reuso Clasificación Re-clasificación
Priorización
Proceso canónico
Priorización
9Establecer los puntos clave de la aplicación
(funcionalidad más importante)
9En base a ello
9Establecer la prioridad de ejecución de los casos de
test
9Establecer la prioridad de corrección de los
incidentes
Importante
9No perder el foco
9Tener visión “a lo ancho”
Equipo de trabajo
Líder de proyecto
9 Definición de la estrategia de testing
9 Elaboración del plan
9 Control del proyecto
9 Interacción con el cliente
Tester Diseñador
9 Definición de los casos de prueba
9 Poblado de las condiciones de prueba
Tester ejecutor
9 Ejecución de los casos de prueba
9 Detección y registro de incidentes
Ciclo de Vida y la introducción,
detección y eliminación de defectos
Testing en WEB

Motivación, conceptos y herramientas


Por qué hay que testear los
desarrollos WEB?
Un website puede ser el primer punto de contacto con
los clientes, entonces, no hay segundas oportunidades
9 Debe estar accesible
9 Las principales funcionalidades deben estar andando
correctamente
9 La performance debe ser adecuada
Las malas experiencias se extienden más rápidamente
que las buenas
9 No sólo perdemos clientes actuales, sino también
potenciales
Hay una exposición inmediata a millones de usuarios
La facilidad de cambio es alta, la competencia está a un
“click” de distancia
Por qué hay que testear los
desarrollos WEB?

Por las mismas razones que el resto de los


desarrollos
9Mejorar la calidad del producto final
9Encontrar los errores antes que el usuario
Cuanto antes se inicie mejor
9El sólo hecho de definir los casos de prueba
ayuda a encontrar problemas
Por qué hay que testear los
desarrollos WEB?

Indicador Telecomunicaciones Bancos Websites

#promedio de 29 100 166


casos de prueba

#promedio de 22 40 De 80 a 200
problemas

Horas por problema 6.4 8.4 De 1 a 2.4


encontrado

Problemas 0.6 0.37 0.6


encontrados por
caso ejecutado
Testing tradicional vs. Testing WEB
Tiempo para probar Tiempos cortos
Documentación para Volatilidad de requerimientos
entender la funcionalidad Nivel de documentación bajo
y definir los casos de Equipos multidisciplinarios
prueba Cambio tecnológico
permanente
Versión estable del El ambiente de test?
producto 9 Muchas veces no lo hay,
hay un único ambiente de
test y desarrollo
La funcionalidad suele ser poca
Aspectos que cobran importancia
en el testing en WEB

Usabilidad
Performance
Disponibilidad
Stress
Seguridad y privacidad
Escalabilidad
Contenidos
Algunas preguntas del tester
La funcionalidad es correcta?
La navegación es la solicitada por el cliente?
La navegación es intuitiva?
9 Mapa del site
9 Sé dónde estoy parado?
El sistema soportará una mayor carga de usuarios?
9 Sabemos cuántos usuarios tendremos?
Conocemos el nivel de seguridad pretendido?
En qué plataforma debe correr el sistema?
Qué tipo de acceso se espera que tengan los usuarios?
Hay un diseño definido para la gráfica del site?
9 Claridad visual (elección de colores, letras, fondos)
Están todos los contenidos cargados? Tienen una buena estructura?
9 No estamos leyendo un libro, estamos en la WEB.
9 Cuánto scroll tengo que hacer para visualizar toda la información?
Cuánto tardan en cargar las páginas? El usuario se cansó de esperar?
Reglas de ojo
Download Time = 0.1 Second
9 Para el usuario es instantáneo
Download Time = 1 Second
9 El usuario no tiene oportunidad de desviar la atención
hacia otra cosa
Download Time = <15 Seconds
9 Es el límite aceptable para mantener la atención del
usuario. Se recomienda mostrar progreso
Download Time - >15 Seconds
9 Demasiado lento. El usuario pierde interés y se dedica
a otras tareas, o deja el site (y se va a otro?)
Qué actividades hacer?

Una estrategia posible sería comenzar por el test


funcional
Luego incorporar otras técnicas
9Revisiones de documentación
9Revisiones de código
9Test de stress y volumen
Qué tipo de testing conviene
hacer?
Manual Automático
9 Funcional 9 Stress y volumen
9 De estructura (links,
9 Usabilidad imágenes)
9 Compatibilidad (entre
browsers) Tener en cuenta que el
9 Contenidos esfuerzo de automatizar los
tests funcionales debe
compensarse con la cantidad
de veces que utilizaremos los
scripts (se calculan necesarias
más de 8 regresiones)
Intranet vs. Internet
Cantidad de usuarios Cantidad de usuarios
acotada ilimitada
Probablemente tenga Variedad de browsers,
estándares respecto al S.O.
software
Resolución esperada?
Probablemente tenga
estándares respecto a la Distintas velocidades de
configuración de las acceso
estaciones de trabajo Niveles de seguridad?
Tipos de conexión
acotados
Políticas de seguridad
Website vs Aplicación WEB
Funcional Funcional
9 Poca funcionalidad 9 Muy fuerte
9 Navegación según la
9 Navegación en la funcionalidad
propia página 9 Concurrencia
9 Ubicación en la 9 Aplicación desarrollada en
navegación plataforma WEB o
aplicación migrada desde
Contenidos otra plataforma
Compatibilidad Compatibilidad
Estructura Estructura
Stress y volumen 9 Menos imágenes
9 Links internos
Stress y volumen
Testing manual - Tiempo

Según nuestra experiencia

Testing
30%

Otros
Desarrollo 15%
70%
Estrategia
5%

Ejecución
50%

Definición
30%
Testing manual - Documentación
Beneficios de documentar las pruebas
9 Mejora nuestras estimaciones futuras
9 Mejora la curva de aprendizaje de los testers juniors
9 Mejores decisiones
9 Salida a producción
9 Elección de proveedores
9 Interno o tercerización?
9 Permite identificar problemas comunes
9 Reúso de casos
Testing manual - Documentación
Qué documentar
9 Estrategia de prueba
9 Casos de prueba
9 Estoy cubriendo toda la funcionalidad?
9 Estoy contemplando las situaciones más comunes de la
funcionalidad?
9 Cuánto llevo probado?
9 Manejar estados
9 Manejar prioridades
9 Problemas
9 Manejar estados
9 Manejar prioridades
9 Detallar los datos de prueba y los pasos para poder reproducirlo
9 Ejecución: Tablero de control
9 #casos ejecutados por criticidad
9 #incidentes por estado y criticidad
Testing manual – Algunas claves
para el testing funcional
Tener en cuenta en las pruebas
9 Validaciones en la entrada de datos
9 Búsquedas
9 Manejo dinámico de contenidos
9 Seguridad (logins y https)
9 Acciones propias del browser (back, forward, refresh)
9 Cancelar acciones

Testing independiente
9 El que desarrolla no prueba
9 Mayor experiencia y concentración
9 Nadie está motivado para encontrar sus propios errores
Testing manual – Algunas claves
para el testing funcional
Checklists
9 Pueden ser utilizados por testers, desarrolladores y usuarios
9 Ahorran tiempo de testing
9 Fáciles de entender y mantener
9 Se crean a partir de problemas encontrados

Ejemplos
9 Instalación
9 Verificación inicial de la versión a probar
9 Validación de página
9 Verificación de las puesta en producción
9 Estándares
Testing Manual – Algunas claves
para el testing de Usabilidad
Ejecutado por testers Ejecutado por usuarios
9 Puede hacerse durante 9 Pruebas de usuario
el testing funcional especialmente
introduciendo preparadas
checklists y casos de 9 Encuentran problemas
prueba específicos de base (realización de
9 Se encuentran tareas simples) y
problemas particulares, problemas de
principalmente contenidos
técnicos
Testing Manual – Algunas claves
para el testing de Usabilidad
Legibilidad (elección de colores, fondos, letras, no abusar de
animaciones)
Qué tan fácil es realizar las tareas habituales? (las más comunes)
Si tengo que completar datos, están especificados los formatos, o
tengo que hacer prueba y error?
Facilidad para encontrar lo que necesito
Es posible utilizar el site si se ocultan las imágenes?
Si tengo requerimientos de impresión, hay una visualización de la
página en formato imprimible?
Cuando se realiza una acción, hay un aviso de su resultado?
Cuando una tarea lleva mucho tiempo, hay un aviso de que la está
realizando?
No abusar de los flash ni los popups
Testing Manual – Algunos nombres
Test exploratorio
9 Definir y ejecutar el testing al mismo tiempo (testing intuitivo)
Risk-based Testing
9 Priorizar los componentes y los tipos de testing más críticos
Testing de Contenidos
9 Ortografía
9 Gramática
Testing de Compatibilidad
9 Verificar que la aplicación funciona en distintas plataformas
existentes en el mercado (browsers, Sos, etc.)
Delivery Testing
9 Testear el website en un ambiente real o con sus condiciones
Testing – Herramientas Útiles
Reporte y administración de problemas
9 Herramienta para reportar incidentes
9 Un sitio de tamaño mediano puede llegar a tener
entre 150 y 200 incidentes

Administración de casos de prueba


9 Permite reusar casos en
9 Aplicaciones similares
9 Regresiones
9 Puede disminuir considerablemente los tiempos de
definición de casos de prueba
Testing – Herramientas Útiles
Testing de stress
9Principales cuestiones a resolver
9Situaciones que me interesa analizar
9Operaciones que quedan dentro del alcance de la
prueba
9Cómo obtener los datos para las situaciones
deseadas
9Qué usuarios utilizar
9La prueba simula los distintos escenarios
planteados?
Testing – Herramientas Útiles
Testing de stress
9Etapas del proceso canónico
9Se identifican transacciones, procesos del negocio,
modelo de uso, etc.
9Se capturan y parametrizan transacciones
individuales (herramienta)
9Se crean los distintos escenarios (herramienta)
9Se ejecutan los escenarios de carga y se montiorea
la performance (herramienta)
9Se analizan e interpretan resultados (herramienta)
Revisiones de código

Búsqueda de defectos o errores


9Por ej: queries o código ineficientes
Obtener métricas de calidad del software
Búsqueda de violaciones a estándares de la
Empresa
Descripción de componentes del código y
relaciones, estructura y características
Automática, semi-automática y manual
Proceso de Revisiones de código
Definición y Ejecución del Proyecto

Análisis de Reglas

Seguimiento
Startup Ejecución
de Incidentes
Configuración de
Ambiente

Plan de Revisión Doc de Reglas y Métricas Reporte de Incidentes Informe Final

Análisis del
Planificación Seguimiento del Proyecto
Proceso

Administración del Proyecto


Revisiones de documentación
Permiten detectar problemas antes de la codificación
Tipos de problemas que se encuentran
9 Indefiniciones
9 Inconsistencias
Qué revisar
9 Requerimientos
9 Diseños
9 Casos de pruebas
9 Planes de proyecto
Revisiones de documentación
Participantes
9Depende del documento a analizar
9Analistas, desarrolladores, gente de QA,
usuarios
Mecánica
9Sesiones individuales de revisión del
documento, luego reuniones para discutir las
observaciones
Ej: revisión de contenidos antes de cargarse en
el site
Planificación - los distintos tipos de
test
T0
Avance del proyecto

Testing
TestingFuncional
Funcional UAT
UAT

Contenidos
Contenidos Stress
Stress
Usabilidad
Usabilidad Seguridad
Seguridad

Revisiones
Revisionesde
decódigo
código Delivery
Delivery
Revisiones
Revisionesde
dedocumentación
documentación
Pueden intercalarse las pruebas, para tener una visión más amplia
del estado de la aplicación, en sus distintos aspectos
Testing en WEB - Herramientas
Hay una variedad de herramientas, algunas son gratis
Algunas son on-line
Evalúan
9 Links rotos o con errores sintácticos
9 Search engine optimizations
9 Tiempo de descarga de las páginas
9 WEB accessibility (de acuerdo a estándares)
9 Conformidad del código HTML con estándares y
recomendaciones
9 Documentos XML
9 Checkeo de Cascading Style Sheets
9 Checkeo de ortografía
Testing en WEB - Herramientas
Ejemplos de datos que proveen
9 Tiempos estimados de descarga de páginas e
imágenes para distintas conexiones
9 #palabras, largo promedio
9 Uso de del tag META para la descripción del site y
keywords
9 Popularidad del site
9 Errores de links clasificados
9 -1 Network, System, or Server Error
9 301 Moved Permanently
9 302 Moved Temporarily
9 307 Redirection
9 404 Not Found
Conclusiones
La calidad de las aplicaciones influye directamente sobre
la percepción del cliente
9 Mantener vs adquirir clientes
Hacer QA en WEB tiene algunas complicaciones
9 El testing es una de las actividades más útiles
9 Otras actividades: revisiones
Testing: no sólo funcional (contenidos, stress, usabilidad,
compatibilidad)
Estar informado
9 Conceptos nuevos
9 Herramientas
Bibliografía
The art of software testing. G. J. Myers, John Wiley, 1979
Software Testing techniques. Boris Beizer, 2nd edition, Van Nostrand
Reinhold, 1990.
Black-box testing. Boris Beizer, John Wiley, 1995.
Web Testing: A Step-by-Step Guide, Anthony Williams, Agosto 2001
James Bach on Risk-Based Testing, James Bach
http://www.searchenginestrategies.biz
http://www.weblinkvalidator.com/
http://www.addy.com
http://www.aptest.com, Software Testing Resources and Tools
Testing e-commerce, Reducing your company’s risk of doing
business on the Web by Rhonda Dibachi

También podría gustarte