2

¿Qué es el testing exploratorio?

Hay algunas definiciones del testing exploratorio que quiero compartir con ustedes, ya que distintos autores definen el tema de distintas formas:

Es un estilo de trabajar con testing de software que enfatiza la libertad personal y la responsabilidad del tester como individuo para que de forma
continua se optimice el valor de su trabajo, al tratar tanto tareas tales como el aprendizaje, diseño de pruebas y su ejecución, como actividades que se apoyan mutuamente y que se ejecutan en paralelo a lo largo de un proyecto.

  • Cem Kaner

Por otro lado, tenemos otras definiciones provistas por James Bach más populares, como las siguientes:

El Testing Exploratorio consiste en el aprendizaje, diseño y ejecución de pruebas de forma simultánea.

Esa misma definición se amplía para proveer un poco más de detalles de la siguiente manera:

El Testing Exploratorio es cualquier testing que se realiza hasta el punto en el que el tester controla activamente el diseño de las pruebas, mientras que esas pruebas se ejecutan y posteriormente se hace uso de la información obtenida mientras se prueba, para diseñar nuevas y mejores pruebas.

**
El testing exploratorio presenta una estructura externa que es sencilla de describir, en la que durante un lapso de tiempo un tester –o equipo de testers– interactúa con un producto para cumplir con el objetivo de una misión, para posteriormente presentar y reportar los resultados que el resto de los actores del proyecto utilizarán para tomar decisiones a conciencia. Por lo tanto, con una misión se describe qué es lo que pretende probar del producto o sistema
bajo pruebas, cuáles serán los tipos de incidentes que se buscarán, lo cual ayudará a dar forma a una estrategia, y por último aunque no por ello menos importante, los riesgos involucrados. La misión la puede diseñar el tester, el equipo de testing, o también, ser asignada por el líder de testing.
**
Los elementos básicos que componen una misión son: tiempo, objetivos y reportes. Tal como lo mencionábamos anteriormente, dicha aparente simplicidad permite desplegar una amplia gama de posibilidades para la aplicación del testing exploratorio.
**
Es recomendable, al trabajar con este tipo de estrategia, tomar notas sobre todo lo que se hizo y lo que se observa que sucede durante el transcurso de nuestras pruebas. También cabe destacar que este tipo de enfoque puede aplicarse en cualquier situación donde no sea evidente cuál es la próxima prueba que se debe ejecutar contra un sistema, o cuando se requiere obtener una rápida retroalimentación ya sea de un producto o funcionalidad, o si queremos aprender y aislar un defecto en particular, entre otros posibles escenarios.
**

Construyendo un mapa de exploracion

Compartimos con ustedes una definición del concepto de “exploración”, que expresa lo siguiente:

“Por lo tanto, para calificar como exploración un viaje tenía que ser creíble, tenía que involucrar privaciones y riesgos, y tenía que incluir la novedad del
descubrimiento. Después de eso, al igual que el cricket, era algo un tanto complejo de explicar para el no iniciado. Pero un elemento era absolutamente
vital; verdaderamente era lo que exactamente distinguía la era de la exploración de eras previas de descubrimiento, las cuales necesitaban de la adopción de la palabra ‘exploración´. Era, sencillamente, una reverencia por la ciencia

**
Inicialmente un explorador que es enviado a construir un mapa, aunque tenga una idea “macro” desconoce el territorio, por lo que comienza a explorar, tomar apuntes de sus hallazgos y conclusiones, mejorando el aspecto del mapa. Un explorador debe de ir alerta a lo que pueda surgir, debe caminar teniendo su mente abierta y receptiva.
**
Para elaborar mapas más precisos es importante tomar notas de lo que se va descubriendo, ya sea en forma esquemática o en forma tabulada. Los exploradores tenían a su disposición una variedad de herramientas que los ayudaban en su actividad, por ejemplo:

  • Brújula, para indicar en qué dirección iban;
  • Catalejo, para enfocar a lo lejos y “acercar” los lugares;
  • Compás, que permitía medir y ubicar más precisamente los sitios explorados.
    Todo explorador necesita una misión, conocimientos, herramientas, y experiencia para que pueda hacer inferencias y conjeturas a partir de los resultados obtenidos con los recorridos que haya hecho anteriormente.
    **
    Tal como un explorador, un tester construye un modelo mental que está relacionado con el comportamiento del producto, es decir, a medida que aprende con los sucesivos recorridos, también irá diseñando nuevas pruebas, nuevos caminos alternativos, utilizando las herramientas que mejor se ajusten cada vez, como por ejemplo, una técnica de testing funcional que no haya utilizado hasta el momento. A lo largo del proceso de descubrimiento, aprende del sistema, de su comportamiento y también de las pruebas realizadas, donde a su vez, las pruebas sucesivas se basan en las efectuadas anteriormente.
    **
    A semejanza del explorador, un buen tester exploratorio mantiene una sana dosis de escepticismo, que lo motiva y le recuerda que debe registrar sus hallazgos, así como ideas de testing para que él y sus colegas puedan utilizarlas en otra ocasión que lo requiera. Despliega todas sus habilidades, se interroga sobre la credibilidad de los resultados, utiliza las herramientas disponibles e investiga nuevas.

Propiedades del testing exploratorio

Ahora que hemos visto algunas definiciones, veamos algunas propiedades que además, describen dónde nos puede aportar valor como práctica:

  1. Las pruebas no son definidas con anticipación, en este contexto se espera que el tester aprenda con rapidez y velocidad acerca de un producto o nueva funcionalidad, mientras que se provee retroalimentación al resto del equipo.
  2. Los resultados obtenidos durante pruebas anteriores guiarán las acciones, los pasos y los siguientes escenarios de prueba a ejecutar, construyendo así un conjunto de pruebas más eficaz.
  3. Su foco está en encontrar problemas y defectos por medio de la exploración del sistema bajo prueba.
  4. Es un acercamiento a las actividades de testing que consisten en una serie de actividades que se realizan en simultáneo, tales como el aprendizaje del sistema, diseño y ejecución de las pruebas.
  5. La efectividad del testing se apoya en el conocimiento, habilidades y experiencia del tester.

Estilos del testing exploratorio

Veremos ahora algunos de los distintos sabores, por así llamarlos, que puede tener el testing exploratorio, extraídos del libro “Exploratory Software Testing” de James Whittaker. Luego vamos a profundizar en una sección aparte en uno de esos sabores, en el conocido como “testing exploratorio basado en sesiones” ya que es el que le brinda una mejor estructura, facilidad de implementación, de aprendizaje, responsabilidad, y es más simple presentar resultados a los actores involucrados.

<h1>AD-HOC TESTING</h1>

De acuerdo al diccionario de la Real Academia Española, se define “ad-hoc” como:

  • Para referirse a lo que se dice o hace solo para un fin determinado.
  • Adecuado, apropiado, dispuesto especialmente para un fin.

En nuestra línea de trabajo, el término se emplea en el sentido de buscar una solución particular para un problema, sin hacer un esfuerzo de abstracción y sistematización de la respuesta. James Whittaker presenta el estilo “ad-hoc” o “libre” como una exploración adhoc de las funcionalidades de una aplicación, sin seguir un orden determinado ni preocuparse por cuáles fueron o no cubiertas. No se aplican reglas ni patrones para hacer las pruebas, simplemente se prueba.
**
Este estilo podría aplicarse ante la necesidad de tener que realizar una prueba de humo rápida, con la que podamos ver si hay o no caídas mayores, o bien para tener un primer contacto con la aplicación antes de pasar a una exploración con técnicas más sofisticadas.
**
Por lo tanto, como estilo de exploración no requiere una gran preparación, por lo cual no debería despertar muchas expectativas. El resultado de aplicar el estilo libre consiste solamente del reporte de los incidentes detectados, y se debe tener en cuenta, que los caminos transitados y los incidentes no evidenciados se pierden.

<h1>Testing exploratorio basado en estrategias</h1>

Si combinamos la experiencia con la percepción de un buen tester exploratorio y con las técnicas conocidas para detectar incidentes (como por ejemplo valores límite y particiones de equivalencia) entonces las pruebas que se ejecuten contra un sistema se ven potenciadas. Para poder hacer un uso efectivo de este modelo, es importante contar con un repertorio de técnicas que sea lo más amplio posible, sumado a ideas, creatividad y experiencias de prueba anteriores. Por esto se dice que esta técnica de testing exploratorio está basada en estrategias, ya que el éxito de la misma dependerá de la aplicación de técnicas existentes de derivación de casos de prueba, pero al momento de estar ejecutándolas.
**
Creemos que en el proceso natural de formación de un tester sucede que en determinado momento al enfrentar un nuevo sistema uno diseña pruebas basándose en alguna estrategia existente, pero lo hace quizá en forma inconsciente. Quizá pensamos en los valores límites, o en partición de equivalencias, pero sin formalizarlo, sino que se piensan las fronteras que hay entre las clases de equivalencia y se seleccionan valores de esas fronteras en forma natural. O si detectamos que hay distintos comportamientos en base al estado de la aplicación, quizá queremos ejecutar cada uno de los estados, aplicando así inconscientemente una técnica basada en máquinas de estado.
**
Claramente, es necesaria mucha experiencia en técnicas de diseño como para poder aplicar esta estrategia. Seguramente, al llegar a ese nivel de manejo de las técnicas, esta técnica de testing exploratorio basado en estrategias sea lo que hacemos generalmente al interactuar con cualquier nueva aplicación, y seguramente la utilizamos mezclada con cualquiera del resto de las técnicas exploratorias.

<h1>Testing exploratorio basado en sesiones</h1>

Las sesiones de testing exploratorio, surgieron como parte de un trabajo conjunto entre James y Jonathan Bach, para reinventar la administración del testing exploratorio. A partir de sus observaciones, pudieron notar que los testers hacían varias cosas que no estaban relacionadas al testing. Por lo tanto, con el propósito de registrar esas actividades, era necesario contar con una manera de distinguirlas del resto, y así, surgieron las sesiones.
**
En la práctica de testing exploratorio, una sesión es la unidad básica de trabajo de testing. Lo que se conoce como una sesión es un esfuerzo de testing dentro de un bloque de tiempo ininterrumpido, revisable y con una misión. Decir que tenga una misión quiere decir que cada sesión tendrá un objetivo, o sea, lo que estemos probando o los problemas que estemos buscando. Por ininterrumpida queremos decir que no tendrá interrupciones significativas, sin correos electrónicos, reuniones, llamadas telefónicas, etc. Por último, que sea revisable quiere decir que contará con un reporte, algo que llamaremos la hoja de la sesión, que proveerá información sobre lo ocurrido durante la sesión.
**
De esta forma las sesiones son debidamente documentadas y facilitan la gestión de las pruebas y la medición de la cobertura.
**
Cada misión se organiza en sesiones relativamente cortas, con duraciones que van desde los 45, 90 y 120 minutos de duración. Esto es principalmente con el propósito de fijar la atención en la prueba en forma sostenida, y que ningún aspecto nos pase desapercibido, ya sea por falta de atención o porque nuestra atención queda presa de lo que ya conocemos y perdemos capacidad de asombro. Cada sesión tiene una única misión u objetivo definido.
**
Estas sesiones son establecidas por el tester o le son asignadas por el líder de testing. Periódicamente, se revisan las anotaciones de las sesiones, ya que puede suceder que surjan nuevas misiones, y que alguna haya quedado obsoleta. También pueden identificarse riesgos que no fueron considerados originalmente y desestimarse otros en el proceso. El cubrimiento se mide por la cantidad de sesiones por misión, las áreas exploradas por las sesiones, su duración y los incidentes detectados. Como se puede apreciar, el testing exploratorio cuenta con una estructura, exige una preparación importante y requiere de una planificación.
**
La estructura con la que cuenta el testing exploratorio, y particularmente trabajando con sesiones, no es procedural sino sistemática puesto que se vale de varias fuentes para su planificación, como para la actualización de su planificación. También, recordemos que como lo definiera Cem Kaner, éste acercamiento al testing enfatiza la responsabilidad y la libertad del tester, por lo tanto, el tester exploratorio debe poder construir una historia que brinde esencia a su trabajo.

Escribe tu comentario
+ 2