En este artículo te platicaré sobre los niveles de independencia en la creación de productos de software (desarrollo y pruebas). Consideraré los cinco niveles mencionados en ISTQB, enumerándolos del menor grado al mayor nivel de independencia.

1. No existe personal de testing

Este nivel es muy común en organizaciones de desarrollo de software pequeñas, con proyectos sencillos en donde no se requiere (o por presupuesto no es posible) la participación de una

persona o equipo enfocado a pruebas. El desarrollador (o desarrolladores del mismo proyecto) es el que revisa el sistema antes de su liberación.

Esta práctica no es muy recomendable, pues el personal de desarrollo se puede encontrar con los siguientes problemas:

  • No se asigna suficiente tiempo a la realización de pruebas, las liberaciones generalmente están muy comprometidas.
  • Pueden sólo enfocarse en realizar pruebas con los principales escenarios (happy paths o caminos felices), sin considerar escenarios alternativos en donde la aplicación puede fallar.
  • Al ser la persona que creó el programa puede dar por hecho que todo se encuentra listo, sin obtener la revisión de terceros.
  • El desarrollador puede no mantener un amplio sentido de responsabilidad en la calidad del sistema.
  • No cuentan con la experiencia de un probador profesional.

2. Otro desarrollador realiza las pruebas

Se inician las actividades de testing a través de revisiones entre pares, un desarrollador prueba la aplicación que otro realizó. Esta práctica tiene buen valor debido a que se evita el “sesgo del autor” (sobretodo si la actividad de realiza profesionalmente).

Esto no suele ser tan eficiente en grupos donde los desarrolladores no realizan la revisión de manera profesional e imparcial. Si el encargado de la revisión no posee buena comunicación o la forma en la que reporta los defectos no es la correcta, puede llegar a desmotivar al equipo de desarrollo, incluso puede generar conflictos y dividir a los equipos de trabajo.

Se recomienda establecer lineamientos y dejar en claro que el objetivo de las revisiones no es evidenciar el trabajo del otro, sino ayudar a entregar un producto de mayor valor al cliente o usuario final.

3. Equipo de puebas independiente de desarrollo

En este nivel surge la separación del equipo de pruebas y el equipo de desarrollo, ambos pertenecen a la organización y están enfocados en el mismo resultado, entregar productos de calidad. Algunas de las ventajas que se obtienen al tener equipos especializados en pruebas son:

  • Los probadores experimentados ven más y diferentes defectos.
  • Tienen habilidades para reportar los defectos de manera correcta.
  • El probador comprueba los supuestos planteados durante la fase de especificación o diseño del software.
  • Los probadores no se enfocan en criticar el trabajo de desarrollo, se preocupan por obtener sistemas de calidad.

Algunos desarrolladores pueden visualizar al equipo de pruebas como cuellos de botella, debido a que estos revisarán más flujos y visualizarán el sistema como los usuarios, desde los más expertos, hasta los más novatos.

4. Especialistas en cada tipo de pruebas

Existen diferentes profesionales enfocados en probar diferentes características del software:

  • Expertos en la funcionalidad (requerimientos, reglas de negocio, etc.).
  • Probadores de usabilidad o experiencia de usario (UX).
  • Expertos en seguridad informática.
  • Etc.

Este tipo de práctica es muy útil en sistemas complejos y/o de uso crítico, que tienen que cumplir con normas o estándares. La ventaja es que se obtienen diferentes puntos de vista enfocados exclusivamente a requerimientos funcionales o no funcionales, la desventaja es que pueden sólo conocer ciertas partes del sistema y no verlo como un todo.

5. Probadores externos a la organización

El equipo de pruebas (y probablemente el de desarrollo) no pertenece a la organización, se trata de un equipo totalmente externalizado, en donde se trabaja en base a “entregables“.

Este tipo de práctica es muy útil y común en aquellas organizaciones que no se dedican a la creación de software y que únicamente requieren un sistema que cubra sus necesidades de operación.

Se suele a recurrir a fábricas de pruebas para que realicen las actividades de prueba y otra para la creación del sistema (aunque una organización puede ser contratada para ambas actividades, depende del nivel de confianza). El equipo de pruebas sólo asumen la funcion de aseguramiento de la calidad respetando los procesos que se establezan entre las organizaciones.

Conclusiones

Al desarrollar un sistema o aplicación es de suma importancia realizar actividades de pruebas, a fin de entregar un producto con mayor calidad. Entre más independencia exista en los desarrolladores y los probadores, mayor garantía de calidad se obtendrá.

Al considerar un alto nivel de independencia, se deben considerar también muchas cuestiones como: formas de comunicación efectivas, metodologías, niveles de confianza, diferencias culturales, privacidad de la información, responsabilidades claramente definidas, planificación del proyecto, entre otros factores.

A mayor independencia, mayor calidad pero esto implica una mayor organización y procesos bien definidos para alcanzar el objetivo esperado.