2011-06-15 23 views
11

Estoy intentando configurar pruebas automatizadas para nuestras aplicaciones utilizando un entorno de máquina virtual.¿Cómo usar una máquina virtual con pruebas automatizadas?

Lo que me gustaría tener es algo así como el siguiente escenario:

  1. servidor de compilación es automáticamente activa para iniciar una prueba automatizada para la aplicación
  2. Un script "construir" se ejecute el cual consistir en:
    1. archivos de la aplicación de copia y un script de prueba a un lugar accesible por el VM
    2. de inicio de la máquina virtual
      1. En la máquina virtual, una aplicación especial se ve en la carpeta compartida y empezar el script de prueba
      2. El guión pruebas de hacer su trabajo, los resultados se envían a la carpeta compartida
      3. termina la escritura de prueba
      4. La aplicación especial, entonces eliminar el script de prueba
      5. la aplicación especial de alguna manera tiene el administrador VM cerrar la máquina virtual y volver a la instantánea anterior
    3. Cuando la máquina virtual ha salido, proceso el resultado y enviar a construir servidor.

estoy usando TeamCity si lo que importa. Para máquinas virtuales, usamos VirtualBox pero estamos abiertos a cualquier otro si es necesario.

¿Hay alguna aplicación/suite que pueda gestionar este escenario?

Si no hay ninguno, entonces yo mismo lo codificaré, debería ser fácil, pero la única parte que no estoy seguro es el manejo de la máquina virtual.

Lo que necesito hacer es tener la máquina virtual cerca de sí misma después de la prueba y volver a una instantánea anterior, ya que quiero que esté en un estado conocido para la próxima prueba.

¿Alguna sugerencia?

Respuesta

4

VirtualBox tiene un COM API. No tengo experiencia con eso, pero puede ser posible usar eso. Una opción sería hacer que TeamCity active un script para hacer esto. Sugiero comenzar con NAnt (compatible con TeamCity) y posiblemente ejecutar PowerShell si es necesario.

+0

Es bueno saber que hay una manera programática. Voy a verificar si alguien hizo un frente de C#. –

+1

@Stecy - es COM, por lo que probablemente no necesite un frente C#. Especialmente si usa .NET 4 y puede usar la palabra clave dinámica. – TrueWill

11

Tengo una configuración similar ejecutándose y elegí usar Vagrant ya que es lo mismo que nuestros desarrolladores usan para normalizar el entorno de desarrollo.

El estado inicial de la máquina virtual se generó con títeres, pero no ejecutamos los scripts de implementación desde cero en cada prueba, solo una vez al día.

Puede usar puppet/chef para todo, pero para todas las demás operaciones en la VM, usaríamos scripts de Fabric, ya que también se usaron para la implementación real, y de alguna manera se ajustó a cómo trabajamos mejor. En suma el guión sería algo como lo siguiente:

vagrant up # fire up the vm, and run the puppet provisioning tool 
fab vm run_test # run tests on vm 
fab local process_result # process results on local shared folder 
vagrant destroy # destroy the vm 

La ventaja es que sus desarrolladores también pueden utilizar vagabundo para imitar el entorno de producción sin tener que cuidar de que ellos mismos (es decir, cambios en la configuración de base de datos se sincronizan a todos los desarrolladores vm's donde sea que estén) y los mismos scripts también pueden usarse en producción.

Cuestiones relacionadas