menu_superior

La utopía de la separación de entornos

Como ya he mencionado en algún post, no soy dogmático en la práctica del testing. Me gusta hacer más elásticos algunos conceptos que han pasado de recomendación a Mandamiento (así, con mayúsculas) con sorprendente facilidad y que se acaban conviertiendo en Dogmas: verdades absolutas e indemostrables que son ciertas de manera universal.

Después de una crítica a uno de los mitos más extendidos dentro del testing, la metodología, en este post voy a explicar mi visión sobre la infraestructura de pruebas: los entornos. En algún momento se fijó como dogma que para hacer unas pruebas ortodoxas (formalmente correctas) una organización debe disponer de tres entornos previos al paso a producción: Desarrollo donde los programadores van liberando el código y ejecutando pruebas unitarias, Test para hacer pruebas de integración y Preproducción que sería una réplica fiel a escala de producción para hacer las pruebas de sistema y verificar la instalabilidad, conectividad y compatibilidad de la versión que se quiere poner en producción. Una vez superada la validación en un entorno se transporta al inmediatamente superior para la cumplir con siguiente ronda de pruebas. Los dos últimos deberían estar congelados al menos parcialmente durante las pruebas para que las versiones sobre las que se ejecutan las pruebas sean consistentes y estén controladas.

Suena razonable, ¿no? Todo perfectamente compartimentado, entornos inmutables, sin interferencias, todo controlado… Como planteamiento es impecable, es tan perfecto que es muy dificil encontrarselo en la realidad.

Es tan bonito que parece un cuento, el cuento de los tres entornitos y el proceso (de pruebas) feroz. Como dice el famoso adagio, “no dejes que la realidad te estropee una buena noticia“: desgraciadamente la realidad va por otro lado.

Normalmente el entorno de Desarrollo no es fiable por que se trabaja sobre el código en caliente y las pruebas que se pudieran hacer aquí no tendrían ningún valor por que ni hay gestión de la configuración ni se sabe qué componentes pueden estar influyendo en los aplicativos; el entorno de Test es un entorno descontrolado por que no suele ser de nadie, no suele haber gestión ni de los datos ni de las versiones del software, en parte por que nadie se lo toma en serio, en parte por que no se respeta la política de “congelación”, los cambios se meten de manera urgente por que ha salido alguna incidencia y el correctivo no afronta el trámite para acelerar su llegada a Producción; el entorno de Preproducción normalmente no está sincronizado con el de producción, aún así es más fiable que los anteriores y suele ser lo más estable que tenemos para hacer las pruebas antes de salir a producción.

Hasta aquí las malas noticias. Si eres proveedor te interesa leer lo que sigue para conocer una opción para salvar estas dificultades. Si eres cliente te interesa leerlo por que cuando algún proveedor te exija un entorno congelado podrás hacerle saber que hay una alternativa y valorar qué opción es más conveniente: invertir en un entorno o adaptarse a las circunstancias.

Mi planteamiento es el siguiente:

  1. Controlar un entorno y conocer las características de los componentes.
  2. Si el control no puede ser total, que sea temporal: unas horas al día en las que podemos tenerlo dedicado 100% a nuestro equipo con la seguridad de que los resultados son consistentes.
  3. Guardar imágenes (y copias de seguridad) de las máquinas y de los datos que lo componen para poder resetearlo todo cuando sea necesario.
  4. Todas las instalaciones que se hagan las hará o las supervisará el equipo de pruebas.  Esto incluye tanto de software a probar como de los drivers o cualquier otro software que sea instalado después de cada reseteo.
  5. Gestión de la configuración y control de las versiones que estamos probando, con qué datos lo estamos haciendo, en qué entorno, con qué características, etc… Toda la información generada se conservará para asegurar la calidad del resultado y la posibilidad de replicar las condiciones en las que se probó.

A partir de aquí las pruebas seguirán el mismo procedimiento que sigan habitualmente, con una salvedad, cuanto mayor valor aporten las pruebas más justificada estará de cara al cliente la inversión en un entorno y más fuerza tendrá en los equipos de desarrollo la petición de contar con un entorno para pruebas controlado por el equipo de pruebas.

, ,

Comments are closed.