Estrategia de testing para una app TO DO List
Muchas veces en equipos/proyectos ágiles omitimos escribir estrategias de testing basados en supuestos como:
- Hay tanta incertidumbre que no podemos planificar.
- Todo cambia muy rápido, no vale la pena escribir documentación.
Pero es justamente en estos entornos donde más necesitamos pensar, planificar y diseñar cómo vamos a testear, cuál es el objetivo de nuestro testing y cuáles son nuestras necesidades. Por supuesto esas necesidades van a cambiar constantemente y para eso también planeamos: Cómo nos vamos a actualizar? cómo vamos al ritmo de esos cambios? Cómo mantenemos nuestro estándar de calidad en los distintos retos que se presenten?
¿Qué es una estrategia de testing?
Una estrategia de testing se basa en, palabras más, palabras menos, planear cómo vamos a testear una aplicación, definiendo principalmente: Alcance y Cobertura.
Con una estrategia de testing aclaramos el panorama, reducimos incertidumbre acerca de la calidad de un producto y cómo implementamos actividades de testing a lo largo de todo el proceso de desarrollo de software:
- Identificando requerimientos.
- Definiendo buenos criterios de aceptación de usuario.
- Planeando y diseñando los tests que vamos a aplicar/ejecutar.
- Ejecutando tests.
- Seguimiento de defectos/errores y su resolución.
- Auditando nuestros tests.
- Recibiendo feedback de usuarios/clientes.
Qué es lo básico que debe contemplar nuestra estrategia de testing?
- Objetivos
- Ambientes
- Automatización o manual?
- Herramientas
- Riesgos
- Tiempos
- Recursos
- Alcance
- Métricas
Objetivos
Cuál es el propósito de nuestro testing? cuál es el producto/proceso que estamos testeando y cuál es su propósito?
Cuál es nuestro concepto/filosofía de calidad? y con ésto me refiero al equipo y la empresa/organización, porque no podemos ser los únicos responsables de la calidad de un producto.
Cómo involucramos a todo el equipo en la calidad?
Ambientes
Es mobile? es web? sólo un API? de esto depende las herramientas a elegir.
Automatización o manual?
qué tipos de tests vamos a aplicar (funcionales y no funcionales)?
Podemos automatizar? qué herramientas se adaptan al producto/proceso?
Se tomó en cuenta la testabilidad cuando se diseñó la aplicación?
Herramientas
qué software vamos a usar para el seguimiento de historias y bugs? cómo y dónde vamos a documentar nuestras actividades? dónde registramos y organizamos nuestros tests?
Riesgos
Cuáles son los riesgos de nuestro producto? y los riesgos de nuestro tests? es testeable todo?
Qué riesgos podemos identificar en todas las fases del proceso de desarrollo de software?
Tiempos
Cuánto tiempo tenemos para testear y para automatizar? con qué frecuencia hacemos releases? qué tipos de tests vamos a aplicar (funcionales y no funcionales)? cuánto tiempo necesitamos para lograr una cobertura adecuada (no perfecta sino adecuada).
Cuáles son nuestras limitaciones de tiempo y cómo priorizamos?
Recursos
Qué recursos tenemos? no solo herramientas de trabajo sino humanos. Qué tipos de perfiles de testers necesitamos para la consecución de nuestros objetivos? qué preparación y experiencia deberían tener?
Cuánto presupuesto tenemos y cómo nos ajustamos a eso?
Alcance
qué vamos a testear y qué no?
Métricas
Cómo vamos a medir la calidad? Lo que no se mide, no se mejora.
A continuación te presento una estrategia de Testing para una app To Do List (escrita en inglés).
Si no puedes hacer una estrategia como ésta por razones de tiempo o incertidumbre del proyecto, un resumen como éste va a ser suficiente:
Conclusiones
Ninguna estrategia es estandar ni está escrita en piedra, depende de la necesidad de tu proyecto y equipo pero sin duda, establecer una estrategia nos ayuda a definir el alcance de nuestro testing, y como tal, todo el equipo debe participar en su construcción.
Los tester no somos policías de calidad y por lo tanto no tomamos solos las decisiones relacionadas a la calidad de nuestros productos. Alcance y Cobertura son nuestras palabras claves.
También nos ayuda a estar todos en la misma página, lo que es crucial para el éxito de cualquier proyecto.