Rollback base de datos después de pruebas de integración (Selenium)

Alguien tiene alguna sugerencia para una mejor práctica o una forma preferida de deshacer las transacciones de la base de datos realizadas desde un marco de prueba de integración como Selenium?

Aquí está nuestra situación actual: tenemos un proyecto web .net con una serie de pruebas unitarias que funcionan bien en nuestro entorno de prueba unitaria: cada prueba hereda una clase principal que abre una transacción en [Configuración] y revierte la transacción en el [TearDown]. Después de cada prueba, nuestra base de datos de prueba unitaria se restablece al estado original.

Sin embargo, las cosas cambian una vez que llegamos a nuestro entorno de integración. Nuestro servidor de integración continua compila automáticamente nuestras confirmaciones y las envía a un servidor de prueba, para que el servidor siempre se ejecute con el código más actualizado. También hemos configurado una instancia de Selenium para automatizar la interacción del usuario con el sitio. Las pruebas de selenio básicamente se comunican con un servidor Selenium existente y le dicen al servidor cosas como "Inicie un navegador y vaya ahttp: //testsite/TestPage.asp - ingrese el texto 'abc' en el campo de formulario con la identificación 'def' - afirme que la nueva página contiene el texto 'xyz' "

ada prueba se ejecuta de manera similar a nuestras pruebas unitarias de vainilla, pero con una excepción importante: cualquier cambio realizado por Selenium se realiza en un hilo / aplicación completamente diferente y, por lo tanto, no podemos (creo que no podemos , al menos) retroceda en el desmontaje de prueba.

Todavía tenemos que llegar a una buena solución para esto. En este momento estamos en un punto en el que estamos usando un SqlCommand para ejecutar una instrucción sql para hacer una copia de seguridad de la base de datos, luego, al final de la prueba, estamos configurando la base de datos para un solo usuario, descartando la base de datos actual y restaurando la copia anterior: esto es menos que ideal, porque efectivamente elimina la aplicación que se adjuntó a la base de datos y requiere que reiniciemos la aplicación una vez más.

¿Es este un problema que se ha resuelto antes? Cualquier consejo sería asombroso

¡Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta