
Una de las primeras cosas que se debe hacer antes de iniciar con el estudio de cualquier disciplina es conocer cual es su significado. En esta primer clase, hablaremos un poco de la definición de pruebas de software o software testing.
Existen técnicas de diseño de pruebas que son sencillas pero muy útiles, ese es el caso de las clases o particiones equivalentes, que por su sencillez muchas veces hasta nos parecen intuitivas. Lo valioso de estas técnicas es que permite generar la habilidad en el tester de sensibilizarse respecto a los datos de entrada y su relación con la respuesta o comportamiento del software.
Como una consecuencia natural de las clases equivalentes surgen los valores en la frontera, como veremos es el complemento idoneo de nuestra primera clase.
La tabla de decisión, es una representación gráfica de una matriz de filas y columnas separadas en cuatro cuadrantes que indican condiciones y acciones. Las reglas de decisiones, incluidas en una tabla de decisión establecen el procedimiento a seguir cuando existen ciertas condiciones. Se utiliza la tabla de decisión cuando existen muchas combinaciones.
Las tablas de decisión (TD) son una técnica de aplicación en el análisis y diseño de sistemas y procedimientos, en su documentación y también como un medio de comunicación y un instrumento de programación.
En este ejercicio veremos como obtener una lógica compleja y expresarla mediante tablas de decisión, de igual manera veremos como reducirlas.
Las pruebas basadas en riesgo(risk based testing) implican la comprensión de los riesgos asociados al lanzamiento de un producto sin realizar pruebas exhaustivas en él. Existen características de una aplicación que son más susceptibles de ser utilizados por los usuarios finales en comparación con otras características que se pueden usar en raras ocasiones. Por ejemplo, en una aplicación de banca el modulo de apertura de cuentas es probable que se utilice con mucha más frecuencia en comparación con otros módulos. Esta información se utiliza en RBT con el fin de dar prioridad a la planificación de las pruebas y determinar qué se puede probar dentro de la limitada cantidad de tiempo / recursos disponibles para las pruebas.
El Pairwise Testing es una técnica básica basada en un paper de Telcordia para obtener las situaciones de prueba requeridas para llegar a una cierta cobertura. El objetivo del Pairwise Testing es probar todas las posibles combinaciones de dos factores. Esto redunda en una gran reducción en el número de casos de prueba, obteniéndose aún así buenos resultados en la detección de defectos.
Esta técnica se basa en el hecho de que la mayor parte de los errores se producen como consecuencia de un factor concreto o de la combinación de dos factores. Debido a esto, en lugar de probar todas las posibles combinaciones de todos los factores, resulta muy efectivo probar cada combinación de dos factores.
Ejercicios empleando la herramienta PICT.
PICT (Pairwise Independent Combinatorial Testing) es la herramienta de Microsoft que implementa la técnica Pairwise Testing para la generación automática de escenarios de prueba. PICT genera un reducido conjunto de escenarios de prueba para obtener una adecuada cobertura de pruebas. Se caracteriza por su rapidez en la generación de pruebas y por su facilidad de uso.
Un diagrama de transición de estados muestra el comportamiento dependiente del tiempo de un sistema de información. Representa los estados que puede tomar un componente o un sistema y muestra los eventos que implican el cambio de un estado a otro.
Esta técnica nos ayuda a entender el manejo que puede hacer un software de los diferentes estados de un proceso finito.
Las cadenas de Markov son artefactos matemáticos que nos ayudan a predecir el estado siguiente considerando el pasado inmediato.
La automatización en pruebas de software va más alla de esa ideal mal formada por algunos vendedores de herramientas, donde nos quieren hacer pensar que automatizar significa grabar y repetir lo mismo que hacemos de forma manual.
El concepto de automatizacion va enfocado en usar herramientas para facilitar el proceso de pruebas, validación y verificación del software y es tan amplio que puede ser desde un simple script que procese texto hasta la ejecución de cientos de miles de piezas de código en sistemas distribuidos.
Las pruebas basadas en propiedades(property based testing) son una aproximación de pruebas automáticas que se basa en el uso de propiedades o modelos para describir el comportamiento del sistema a probar. Esta especificación en forma de propiedades o modelos se usa para generar automáticamente casos de prueba (datos de entrada a funciones, secuencias de llamadas a operaciones u otras representaciones), y para evaluar dichos casos de prueba comprobando si la especificación, es decir, las propiedades o modelos definidos, se cumple en dicho sistema.
En este ejercicio emplearemos las pruebas basadas en propiedades para validar una funcionalidad de asignación de jornada de trabajo basado en la edad.
En este ejercicio plantearemos la estrategia de pruebas necesaria para evaluar un truco aritmético que trata de ayudar en la comprobación del resultados de operaciones de adición con sumandos de muchos digitos.
Las pruebas de volumen hacen referencia a grandes cantidades de datos para determinar los límites en que se causa que el software falle. También identifican la carga máxima o volumen que el sistema puede manejar en un período dado. Por ejemplo, si el sistema está procesando un conjunto de registros de Base de datos para generar un reporte, una prueba de volumen podría usar una base de datos de prueba grande y verificar que el sistema se comporta normalmente y produce el reporte correctamente.
El objetivo de esta prueba es someter al sistema a grandes volúmenes de datos para determinar si el mismo puede manejar el volumen de datos especificado en sus requisitos.
Las pruebas canario o canary testing son un tipo especial de pruebas controladas que ejecutamos en los ambientes productivos. Requiere de hacer algunos cambios que apoyados por las areas de operaciones son sencillos, esta técnica es idonea en proyectos o productos basados en ambientes en la nube o moviles, aunque tampoco se descarta para aplicaciones on-premise.
Hoy en día es cada vez más común el software que esta soportado por módelos de aprendizaje de máquina o aprendizaje profundo, por lo que es indispensable que los testers tengamos un set de herramientas que nos ayuden a probar este nuevo tipo de software, en esta clase veremos algunas lecciones aprendidas de probar este tipo de software.
En el campo de la inteligencia artificial una matriz de confusión es una herramienta que permite la visualización del desempeño de un algoritmo que se emplea en aprendizaje supervisado. Cada columna de la matriz representa el número de predicciones de cada clase, mientras que cada fila representa a las instancias en la clase real. Uno de los beneficios de las matrices de confusión es que facilitan ver si el sistema está confundiendo dos clases.
Uno de los principales problemas con los modelos de aprendizaje de maquina, es que pueden exponenciar los prejuicios de quienes los crean, incluso cuando no son conscientes de ello, veremos como podemos ayudar a combatir esa parte usando pruebas de software
El testing de software es una actividad que va mas alla de una simple verificación o validación; es ir mas alla de lo evidente, es pensar lo inimaginable y ayudar a que los productos esten preparados para eso.
En este curso aprenderas técnicas de diseño de pruebas de software, que van desde las técnicas mas sencillas e intuitivas hasta las que se encuentran en el estado del arte del testing de software.
El objetivo principal del curso es ayudarte a adquirir las habilidades necesarias para que agregues valor a tus proyectos o productos de software.
Realizaremos ejercicios para reforzar los aprendido y de igual manera practicaremos con ejercicios con codigo en vivo.
Adicionalmente debe ser un refuerzo para preparar tu examen de certificación ISTQB.