Transcript descarguen
Testing
y algo más . . .
[email protected]
Conceptos - 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”.
• O sea, es el proceso que compara “lo que es” con “lo que
debería ser”.
Conceptos - Calidad
• Aptitud del producto o servicio para satisfacer las
necesidades del usuario.
• Propiedad o conjunto de propiedades inherentes a algo,
que permiten juzgar su valor.
• Cualidad de un producto de software
¿QA o QC?
•
Mito
Las tareas de testing muchas veces son mal llamadas como QA (Aseguramiento de la calidad),
cuando en realidad estas tareas son de QC (Control de Calidad).
•
Aseguramiento de la calidad (QA)
Plantear, organizar, dirigir y controlar la calidad en un sistema con el objetivo de dar al cliente
productos con la calidad adecuada.
•
Control de calidad (QC)
Mecanismos, acciones y herramientas que se utilizan para detectar la presencia de errores.
•
En otras palabras, QA es proactivo ya que trata sobre los procesos y cómo prevenir
defectos (por ej.: definición de procesos, entrenamiento, auditorías, etc.), mientras que
QC es reactivo, ya que trata sobre los productos y como encontrar defectos (por ej.:
testing, revisiones por pares, inspecciones, etc.).
Etapas de un proyecto de Testing
Preparación
ambiente
Startup
Ejecución
Definición
casos
Seguimiento
de
incidentes
Definiciones
•
Error
Equivocación cometida por un humano durante el proceso de desarrollo.
•
Defecto (defect o fault)
Consecuencia de un error: están presentes en un producto de software. La presencia de un
defecto diferencia un producto correcto de uno incorrecto.
•
Fallo (failure)
Manifestación del defecto: diferencia entre los resultados esperados y reales.
Relación entre error, defecto y falla
•
Un error lleva a uno o más defectos, que están presentes en el código.
•
Un defecto lleva a cero, una o más fallas.
•
La falla es la manifestación del defecto.
•
Una falla tiene que ver con uno o más defectos.
Más definiciones
•
Testear
Ejecutar un programa con el objeto de identificar fallos, comparando el resultado esperado con
el resultado obtenido a partir de la ejecución.
•
Axiomas del testing
“El Testing solo puede mostrar la presencia de defectos, no su ausencia”. (Dijkstra)
El objetivo del testing es encontrar errores.
Un test solo es exitoso si encuentra errores.
Cuando cumplimos el rol de Tester debemos ser creativos… pero para destruir.
Bug cero = falacia
•
Cobertura o Cubrimiento
Es una medida de qué tan completo fue el testing (en función de una estrategia particular).
Toda estrategia tiene asociado su concepto de cobertura.
Más definiciones
• Casos de prueba
Descripciones de qué se va a probar.
Crear casos es un proceso creativo.
• Datos de prueba
Lotes de datos necesarios para ejecutar un caso de test.
Crear datos de test es un proceso laborioso, y muy poco creativo.
Más definiciones
• Test Limpio (o positivo)
Intenta mostrar que el producto satisface sus requerimientos.
• Test Sucio (o negativo)
El objetivo es romper el sistema.
• Test de regresión
Luego de agregar una nueva funcionalidad, se vuelven a probar
(casos más importantes) de las funcionalidades ya existentes.
¿Por qué siempre hay que volver
a probar?
Joshua Bloch–JDK (java.util.Arrays):
public static int binarySearch(int[] a, int key) {
int low = 0;
int high = a.length - 1;
int mid = (low + high) / 2;
while (low <= high) {
int midVal = a[mid];
if (midVal < key)
low = mid + 1
else if (midVal > key)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}
Sacado de una presentación de Ernesto Kiszkurno
Técnicas de testing
• Estático
Buscan fallas sobre el sistema en reposo.
Se puede aplicar sobre artefactos de requerimientos, análisis, diseño y
código.
Técnicas: Revisiones, Inspecciones, Walkthrough y Auditorías de calidad.
• Dinámico
Se ejecuta y observa el comportamiento de un producto.
Estímulo Proceso Respuesta
Tipos
Caja Negra: Requerimientos
Caja Blanca: Código
Testing estático
Revisiones de documentación
• Tipos de problemas que se encuentran
Indefiniciones
Inconsistencias
• Qué revisar
Requerimientos
Diseños
Casos de pruebas
Planes de proyecto
Testing estático
Técnicas
• Inspecciones (peer-reviews)
• Presentador
• Con preparación de los participantes
• Informe
• Generalmente 2 a 4 partcipantes
• Walkthroughs
• Presentador
• Sin preparación de los partcipantes
• Gran cantidad de partcipantes
• Sin informe
Testing estático
Técnicas
• Auditorías
• Preparada
• Sin presentador
• Auditor y auditado
• Informes
Break
• 5 minutos
Testing dinámico
Niveles de testing
• De Unidades
• Pruebas de módulos, funcionalidades, etc. de forma unitaria
• De Integración
• Pruebas de módulos, funcionalidades, etc. de forma conjunta
• De Aceptación del Usuario
• Verifican que el sistema/módulo esté listo para su uso
• De Usabilidad
• Verifican la calidad de uso
Testing dinámico
Niveles de testing
• De Volumen
• Verifican que el sistema soporte grandes volumenes de datos
• De Performance
• Verifican que el sistema se encuentre dentro de los parámetros de
performance definidos
• Stress
• Verifican que el sistema soporte grandes cargas de procesamiento
• Del Sistema (o Sub-Sistema)
• Pruebas enfocadas a los requerimientos originales
Testing dinámico
Técnicas de derivación de casos de
prueba
•
Partición de equivalencias
Particiona el dominio de entrada en un conjunto de clases de entrada (o
inputs) que tienen comportamientos similares .
Luego se selecciona un valor representativo de cada partición para ser
testeado.
•
Análisis de condiciones de borde
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
Es una variación de la técnica de análisis de borde.
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.
Testing dinámico
Testing automatizado
•
Escribir programas para que realicen pruebas que se harían manualmente.
•
Ventajas
Ejecuta más pruebas en menos tiempo.
Efectua pruebas muy dificiles de realizar manualmente.
Integración continúa y despliegue continuo.
•
Desventajas
No reemplazan las pruebas manuales, las complementan.
Encuentran menos defectos que las pruebas manuales.
Aplicarlo bien, requiere un gran esfuerzo.
• Hay que saber dónde y cuanto aplicarlo!
Testing dinámico
Testing automatizado
Herramientas
• JMeter
• Selenium
• Selenium RC
• Python
• Ruby
• Quick Test Professional – QTP
• Cacique
Testing dinámico
Testing automatizado
Otras herramientas
• NUnit
• moq
• Testlink
• Bugzilla, Mantis, etc.
• Visual Studio For Testers
Testing dinámico
Testing Manual – Algunos nombres
•
•
Testing Independiente
El que desarrolla no prueba.
Mayor experiencia y concentración.
Nadie está motivado para encontrar sus propios errores.
Test exploratorio
•
Risk-based Testing
•
•
Definir y ejecutar el testing al mismo tiempo (testing intuitivo).
Priorizar los componentes y los tipos de testing más críticos.
Testing de Contenidos
Ortografía.
Gramática.
Testing de Compatibilidad
Verificar que la aplicación funciona en distintas plataformas existentes en el mercado (browsers, SOS,
etc.).
•
Delivery Testing
Testear el website en un ambiente real o con sus condiciones.
Testing dinámico
Otros nombres
•
Fuzz Testing
Automatizada o semi-automatizada.
Provee ingreso de datos inválidos, inesperados y aleatorios en búsqueda de excepciones y
caídas.
Utilizado comumente para detectar problemas de seguridad o robustez.
•
Smoke Testing
Primer test realizado después de un release (pruebas básicas).
Determina si es posible continuar con el testing (pruebas más intensas).
Generalmente utilizado para validar un pasaje al ambiente de testing.
•
Sanity Testing
Generalmente utilizado después de un smoke test. Valida también un pasaje a test.
Ejecución de un pequeño conjunto de funcionalidades.
Determina si la lógica de funcionamiento del programa es correcta.
•
Pairwise Testing
Para cada par de parámetros prueba todas las combinaciones posibles
Detección tardía
¿Preguntas?
Nuestro objetivo es
desarrollar un software con
0 bugs.
Pagaré un bono de 10
dolares por cada bug que
encuentren y arreglen.
Somos ricos!!
Espero que esto conlleve al
comportamiento correcto.
Me escribiré una nueva
minivan esta tarde!