MSDN Magazine > Inicio > Todos los números > 2008 > Septiembre >  Ejecución de pruebas: Pruebas de configuración ...
Ejecución de pruebas
Pruebas de configuración con Virtual Server, parte 1
Dr. James McCaffrey
En la columna de este mes, les presentaré las pruebas de configuración de software con Microsoft® Virtual Server. Pruebas de configuración es un término general que significa simplemente probar un sistema de software con distintas combinaciones de hardware y software. La manera tradicional de realizar pruebas de configuración de software consiste en configurar un laboratorio con varios equipos físicos que ejecutan diferentes combinaciones de sistemas operativos, exploradores web y otro software. Esto puede resultar caro y llevar mucho tiempo. Por suerte, Virtual Server permite realizar algunos tipos de pruebas de configuración de software creando varios equipos virtuales en un solo equipo físico.
En discusiones con mis colegas, aprendí que muchas de las técnicas de pruebas de configuración con Virtual Server son poco conocidas, así que empecé a crear una explicación completa del proceso. El artículo de este mes está pensada para principiantes, así que asumiré que no tiene experiencia con Virtual Server.
En la captura de pantalla de la figura 1 se ilustran muchos de los conceptos clave de las pruebas de configuración con Virtual Server. Se muestran las pruebas de un archivo DLL en un equipo con Windows® 2000 Professional. El equipo físico ejecuta Windows Server® 2008 y se denomina equipo host en la terminología de Virtual Server. En segundo plano, Virtual Server se ejecuta como un servicio de Windows en el equipo host. La instancia de máquina virtual, que usa Windows 2000 Profesional, se denomina equipo invitado y se administra mediante una interfaz basada en web. En este ejemplo, sólo ejecutamos un equipo invitado, pero el host permite ejecutar varios invitados simultáneamente si se desea.
Figura 1 Pruebas de configuración con Virtual Server (haga clic en la imagen para ampliarla)
Verá que en el equipo invitado hay tres ventanas abiertas: dos instancias del Explorador de Windows y un shell de comandos. La instancia superior del Explorador de Windows señala a \WIN-6IN7WRUV5QY\Public, que es un recurso compartido del equipo host. La instancia inferior del Explorador de Windows señala a C:\Tests, que es un directorio del equipo invitado. En este escenario, copiamos dos archivos de prueba, testHarness.js y testData.txt, del host al invitado. A continuación, ejecutamos una prueba sencilla automatizada que prueba un DLL en el invitado. Por supuesto, podríamos haber realizado cualquier tipo de prueba manual o automatizada en el invitado; lo importante aquí es que tenemos un equipo completamente funcional con Windows 2000 disponible para probar cualquier tipo de software que deseemos.

Instalación de Virtual Server
La instalación de Virtual Server es sencilla, pero hay algunos factores que debe tener en cuenta si va a realizar pruebas de configuración. Virtual Server 2005 R2 SP1, la versión actual, está disponible como descarga gratuita en microsoft.com/downloads. Cada máquina virtual invitada necesita recursos de procesador, RAM y espacio en disco duro; por regla general, cuantos más recursos de este tipo tenga el equipo host, mejor. Cuando use Virtual Server para pruebas de configuración, probablemente tendrá un gran número de discos duros virtuales, pero normalmente sólo ejecutará las máquinas virtuales de una en una. Por lo tanto, lo ideal es tener un entorno con una gran cantidad de espacio en disco y una cantidad razonable de RAM. Por supuesto, la realidad es que probablemente usará un equipo viejo con recursos muy limitados.
Un problema de instalación un poco más delicado es el de los adaptadores de red y la pertenencia a redes del equipo host. Es bastante viable crear un equipo con Virtual Server completamente independiente. Sin embargo, como veremos a continuación, cuando se usa Virtual Server para realizar pruebas de configuración de software, resulta útil que las máquinas virtuales invitadas tengan acceso a otros equipos físicos de una red local y acceso a Internet.
Mi configuración preferida es usar un equipo host con dos adaptadores de red, uno conectado solamente a una red local y a otro a Internet. Personalmente, aunque conecto el host a una red local para poder transferir fácilmente los archivos al host, no uno el host al dominio de red local. Dicho esto, una ventaja de unir el equipo host con Virtual Server a un dominio de Active Directory® es que se simplifica la autenticación cuando se administra el equipo; si el equipo host no forma parte de un dominio, deberá identificarse repetidamente cuando use la autenticación de LAN Manager de Windows NT® (NTLM), lo que puede resultar bastante pesado. Por último, recomiendo que se dedique el equipo host con Virtual Server solamente a actividades de Virtual Server.
Virtual Server usa un esquema de administración basado en web y, por lo tanto, requiere IIS. Así pues, tenga en cuenta que antes de iniciar la instalación de Virtual Server debe habilitar y configurar IIS en el equipo host. Dicho esto, cuando instale Virtual Server en un host que use Windows Vista SP1 o Windows Server 2008, IIS se instalará automáticamente como parte de la instalación de Virtual Server. Una vez configurado el equipo host y descargado el archivo de instalación de Virtual Server setup.exe, podrá empezar el proceso de instalación.
La mayor parte del proceso de instalación es sencillo y coherente con la mayoría de los instaladores de aplicaciones. Sin embargo, el cuadro de diálogo de configuración suele provocar confusión entre los principiantes de Virtual Server. La pantalla le pedirá que especifique un número de puerto para el sitio web de administración de Virtual Server. El puerto predeterminado es el 1024, y debe usarlo a menos que no esté disponible. La pantalla de configuración también le pedirá que seleccione si desea que se ejecute el sitio web de administración de Virtual Server en una cuenta de usuario o en la cuenta del sistema local. Debe seleccionar la opción predeterminada de cuenta de usuario a menos que piense almacenar todos o algunos de los datos de Virtual Server, como archivos de disco duro virtual o archivos de configuración de máquina virtual, en uno o varios equipos remotos. En este caso, deberá elegir la opción del sistema local para que el equipo host que ejecute el servicio Virtual Server pueda tener acceso a esos archivos.
Mantener todos los datos en un solo equipo es una solución más sencilla, y yo la prefiero siempre que es posible. El precio de los discos duros externos ha bajado tanto que se han convertido en una excelente solución de almacenamiento para equipos virtuales destinados a la realización de pruebas de configuración, en comparación con el uso de discos duros internos secundarios o el almacenamiento remoto en otro equipo.
En el instalador también verá una opción para habilitar las excepciones del Firewall de Windows para Virtual Server. Como alternativa a la administración remota basada en la Web de Virtual Server, puede habilitar la característica Escritorio remoto en los equipos invitados. Acuérdese de habilitar las excepciones en el Firewall de Windows.

Creación de máquinas virtuales
Para poder realizar pruebas de configuración con Virtual Server, debe crear uno o varios equipos virtuales. Lo más fácil es usar la interfaz GUI de la aplicación web de administración de Virtual Server. Además, Virtual Server expone interfaces COM que le permiten automatizar las tareas de administración mediante su host de scripting favorito. Para navegar a la página web de administración, escriba http://machinename:1024/ en la barra de direcciones de Internet Explorer® y será redireccionado a la aplicación que se ejecuta en http://machinename:1024/VirtualServer/VSWebApp.exe. También puede llegar a esta página con el método abreviado del menú Inicio. La página de administración muestra de forma predeterminada el estado de Virtual Server y una lista de eventos recientemente registrados. Es buena idea digitalizar los mensajes de eventos para asegurarse de que el servicio de Virtual Server se ejecuta correctamente en segundo plano.
Ahora haga clic en el vínculo de creación de la categoría de máquina virtual. Será redireccionado a la página de creación de máquina virtual que se muestra en la figura 2. En esta página le asignará un nombre a la máquina virtual. Piense bien en la ubicación y el nombre. El nombre que especifique será el nombre del archivo de configuración .vmc de la máquina virtual. Si escribe simplemente un nombre como "MiMáquinaVirtual", creará el archivo MiMáquinaVirtual.vmc en una ubicación predeterminada, que es %SystemRoot%\Users\Public\Documents\Shared Virtual Machines\ en Windows Server 2008, y %SystemRoot%\Documents and Settings\All Users\Documents\Shared Virtual Machines\ en Windows Server 2003.
Figura 2 Creación de una máquina virtual (haga clic en la imagen para ampliarla)
Puesto que uso muchas máquinas virtuales diferentes y mucho espacio en disco duro cuando utilizo Virtual Server para pruebas de configuración, prefiero colocar las máquinas virtuales en un directorio no predeterminado más cerca de la raíz del sistema o incluso en un disco duro independiente. Suele ser una buena idea asignar a la máquina virtual un nombre que incluya una descripción del sistema operativo del equipo invitado y los principales componentes de software del invitado. Aunque los archivos de configuración de máquina virtual .vmc se basen en XML y sean fácilmente legibles, un nombre de archivo descriptivo hace que resulte mucho más fácil administrar varias máquinas virtuales.
Además de un archivo .vmc explícito, en el proceso de creación de máquinas virtuales también se crea un archivo .lnk de método abreviado en una ubicación predeterminada (%System­Root%\Users\All Users\Microsoft\Virtual Server\Virtual Machines\ en Windows Server 2008). Deberá recordarlo por si desea eliminar una máquina virtual manualmente borrando el archivo .vmc. Si no elimina también el archivo .lnk y luego intenta crear otra máquina virtual con el mismo nombre que la máquina eliminada, aparecerá un error en el que se indicará que la máquina ya existe. Si elimina una máquina virtual de un servidor virtual que usa la interfaz web, en realidad sólo se eliminará el archivo de métodos abreviados, por lo que podrá recuperar la máquina virtual simplemente volviendo a crear el método abreviado.
Después de especificar el nombre y la ubicación de la máquina virtual, deberá especificar la cantidad de RAM para el equipo invitado, tal como se muestra en la figura 3. Tenga presente que el equipo host físico y todas las máquinas virtuales invitadas que se ejecutan usan la RAM del host. Así, por ejemplo, si el equipo host tiene 2 GB de RAM y ejecuta dos máquinas virtuales, cada una con 512 MB (la mitad de un GB) de RAM, tendrá 1 GB de RAM disponible para el host (menos aproximadamente 75 MB por máquina virtual para sobrecarga).
Figura 3 Creación de un disco duro virtual (haga clic en la imagen para ampliarla)
El paso siguiente para la creación de una máquina virtual consiste en especificar si desea usar un disco duro virtual existente o crear uno nuevo. Para realizar pruebas de configuración, necesitará crear uno nuevo, por lo que debe seleccionar la opción Crear un nuevo disco duro virtual. En el campo de tamaño, especifique la mayor cantidad de memoria que necesitará la máquina virtual. Por regla general, he visto que 20 GB es una cantidad razonable para pruebas de configuración en la mayoría de los casos.
No obstante, naturalmente, la cantidad de espacio en disco que necesitará depende del tipo de aplicaciones que instale, así que asegúrese de realizar un cálculo aproximado antes de crear el disco virtual. El tamaño que especifique será el tamaño máximo que puede alcanzar el disco duro virtual, no un tamaño fijo. Resulta interesante saber que, aunque el equipo host físico sólo tenga un bus de disco duro IDE, puede especificar un bus SCSI para aumentar la capacidad de rendimiento y almacenamiento del disco duro virtual. Por lo general, uso un bus virtual IDE para las pruebas de configuración porque el rendimiento no suele ser un problema.
El último paso para crear una máquina virtual nueva consiste en especificar un adaptador de red virtual. Como apunté antes, me gusta usar dos adaptadores de red físicos en el equipo host. Si observa la captura de pantalla de la figura 4, verá que hay cuatro opciones: No conectado, dos selecciones de red externa y Red interna. Cuando instale Virtual Server, el proceso de configuración buscará adaptadores de red en el equipo host. En este ejemplo, tenemos un adaptador inalámbrico 802.11g que uso para la conexión a Internet y un adaptador con cable para la conexión a una red local. Virtual Server muestra el nombre de cada adaptador entre paréntesis precedido por el texto "Red externa".
Figura 4 Adaptadores de red virtuales (haga clic en la imagen para ampliarla)
Si agrega un adaptador de red nuevo al equipo host después de instalar Virtual Server, puede agregarlo a la lista de adaptadores virtuales disponibles haciendo clic en la opción Crear de la sección Redes virtuales de la página web de administración principal. Recomiendo seguir las mismas convenciones de nomenclatura para adaptadores de red que las que usa Virtual Server, que hacen que resulte muy fácil identificar la asignación entre adaptadores de red virtuales en los equipos invitados y adaptadores físicos del equipo host.
Si selecciona la opción No conectado, la máquina virtual estará completamente aislada de todos los demás equipos (incluso el equipo host) y no podrá copiar archivos en la máquina virtual ni de ella. Si selecciona la opción Red interna, la máquina virtual podrá conectarse a otras máquinas virtuales que se ejecuten en el host, pero no al equipo host en sí. Si elige uno de los adaptadores virtuales asociados a un adaptador físico en el host, la máquina virtual podrá conectarse al equipo host y tener acceso a dondequiera que tenga acceso el host a través de su adaptador.
Por lo general, cuando se usa Virtual Server para realizar pruebas de configuración, es recomendable seleccionar uno de los adaptadores virtuales asociados con un adaptador físico en el host para poder copiar los archivos relacionados con las pruebas en la máquina virtual y para tener acceso al sistema en pruebas si está basado en red o web (como una aplicación web de ASP.NET). Además, tenga en cuenta que para implementar archivos en el disco virtual de forma sencilla, puede usar la característica vhdmount de Virtual Server para montar el disco duro virtual y luego copiar archivos en él.
Una vez configurados el nombre de la máquina virtual, la memoria, el disco duro y las opciones del adaptador de red, puede hacer clic en el botón Crear para crear la máquina virtual. Cuando vaya a las opciones de configuración del equipo, verá la configuración actual, tal como se muestra en la figura 5.
Figura 5 Resumen de configuración de la máquina virtual (haga clic en la imagen para ampliarla)

Instalación de un sistema operativo en el equipo invitado
Para poder usar una máquina virtual, debe instalar un sistema operativo tal como lo haría en un equipo físico. A menudo, los principiantes de Virtual Server asumen incorrectamente que un equipo invitado hereda de alguna manera un sistema operativo o tiempo de ejecución del equipo host. Hay varias maneras de instalar un sistema operativo en el invitado. Si el equipo host físico tiene una unidad de CD/DVD, una técnica de instalación fácil consiste en insertar un CD o DVD de arranque que contenga un sistema operativo en la unidad de CD/DVD del equipo host. Si Virtual Server ha registrado una unidad de CD/DVD virtual con el invitado, la característica de ejecución automática de la máquina virtual se activará e iniciará automáticamente el programa de instalación del sistema operativo cuando inicie la máquina virtual.
Una vez que empieza la instalación del sistema operativo en la máquina virtual, el proceso es exactamente como el de instalación de un sistema operativo en un equipo físico. En la figura 6, observe que el programa de instalación de Windows XP cree que está realizando la instalación en un equipo físico con una unidad de disco de 20 GB. Tan pronto como empiece el proceso de instalación, se dará cuenta de que tiene que hacer clic en el área de control ActiveX® de Internet Explorer para permitir que la máquina virtual reconozca las entradas realizadas con mouse y teclado. Para recuperar el foco del mouse y el teclado de la máquina virtual en el equipo host, presione la tecla Alt Gr.
Figura 6 Instalación de un sistema operativo en el invitado (haga clic en la imagen para ampliarla)
La instalación continuará normalmente, excepto que el proceso será un poco más largo que en un equipo físico. La causa principal es que Virtual Server debe realizar una ampliación dinámica necesaria para acomodar los archivos de sistema operativo a medida que se copian de la unidad de CD/DVD del host a la máquina virtual invitada. Mientras Virtual Server amplía la unidad de disco virtual, puede parecer que el proceso de instalación se ha detenido. Tenga paciencia, la instalación proseguirá al cabo de unos minutos. Cuando el programa de instalación del sistema operativo le pida que especifique un nombre para el equipo invitado, asegúrese de que el nombre de equipo es exclusivo en relación con el de cualquier otro equipo al que pueda conectarse; si se conecta la máquina virtual a una red, el nombre de equipo será el especificado durante la instalación, no el especificado para el archivo de configuración .vmc.
Cuando acabe de instalar el sistema operativo del invitado, deberá instalar Virtual Machine Additions en el invitado. Se puede instalar Virtual Machine Additions en una máquina virtual para aumentar el rendimiento y la resolución de pantalla; además, permite pasar del equipo invitado al equipo host simplemente moviendo el puntero del mouse.
Para instalar las Virtual Machine Additions, inicie la máquina virtual en la página web de administración principal haciendo clic en el icono de la máquina virtual. Cuando el estado del equipo pase de "Desactivado" a "En ejecución", vuelva a hacer clic en el icono para ir a una página que contiene un control ActiveX que permite manipular el equipo invitado. Después de iniciar sesión en el equipo invitado, desplácese al final de la página web de administración y haga clic en el vínculo de inicio de Virtual Machine Additions. De este modo, se iniciará la aplicación de instalación de Virtual Machine Additions.

Creación de discos para deshacer, discos de diferenciación y copias de seguridad
Cuando se usa Virtual Server para realizar pruebas de configuración, resulta muy útil comprender cómo crear y usar discos para deshacer, discos de diferenciación y copias de seguridad. De forma predeterminada, cuando crea una máquina virtual, todos los cambios que hace se guardan en su archivo .vhd cuando apaga la máquina virtual. Cuando la reinicia, se leen automáticamente todos los cambios del archivo del disco duro virtual. Esto es exactamente lo que necesita cuando usa Virtual Server para la consolidación de equipos.
Sin embargo, no siempre es lo que se desea cuando se usa Virtual Server para realizar pruebas de configuración. En la mayor parte de los casos, se desea que la máquina virtual se inicie en el mismo estado para cada prueba que se ejecuta en el equipo. Una forma de descartar cualquier cambio realizado en el invitado consiste en habilitar en el invitado discos para deshacer. De este modo, todos los cambios realizados en la máquina virtual mientras está en uso se guardarán en un archivo .vud. La página de administración de Virtual Server le dará entonces la opción de confirmar o eliminar los cambios en el archivo .vhd subyacente.
Para habilitar discos para deshacer, haga clic en la opción Configurar de la sección Máquinas virtuales de la página principal del sitio web de administración de Virtual Server. A continuación, haga clic en la opción Discos duros y seleccione la entrada Habilitar discos para deshacer. Ahora, cuando se ejecute la máquina virtual, aparecerán varias opciones en la página de administración, como "Apagar la máquina virtual y confirmar discos para deshacer", que mantiene todos los cambios de estado de la máquina virtual, o "Apagar la máquina virtual y descartar discos para deshacer", que descarta los cambios y mantiene el estado original de la máquina virtual.
Cuando se usa Virtual Server para realizar pruebas de configuración, por lo general se habilitan los discos para deshacer con el fin de poder ejecutar algunas pruebas en el invitado y luego restablecer el equipo al estado anterior a las pruebas. Los discos para deshacer son una manera eficaz de administrar el estado de la máquina virtual pero, por experiencia, también debe asegurarse de que tiene una copia de los archivos originales de disco virtual (.vhd) y configuración de equipo (.vmc) de la máquina virtual. Esto es importante porque, cuando se realizan pruebas en una máquina virtual, es muy posible que el equipo llegue a un estado en el que no se pueda usar el sitio de administración de Virtual Server y, por lo tanto, no pueda descartar correctamente los discos para deshacer.
Los discos de diferenciación son primos de los discos para deshacer. Un disco de diferenciación es básicamente un disco duro virtual secundario de un disco duro virtual principal. El gran archivo .vhd principal contiene el estado principal de una máquina virtual (generalmente el sistema operativo y el software esencial del entorno particular), y el disco de diferenciación más pequeño sólo contiene deltas del disco principal. En las pruebas de configuración, normalmente se usan discos de diferenciación para crear un archivo .vhd del sistema operativo principal (por ejemplo, Windows XP con SP2) y después crear varios discos secundarios de diferenciación, cada uno con un explorador web diferente (Internet Explorer 6.0, Internet Explorer 7.0, etc.). Este enfoque permite ahorrar una gran cantidad de espacio en disco en el equipo host porque cada archivo de disco de diferenciación .vhd secundario sólo representa una fracción diminuta del tamaño de un archivo .vhd principal completo.
Para crear un disco de diferenciación, navegue a la página principal de administración, haga clic en la opción Crear de la sección Discos virtuales y luego seleccione la opción Disco duro virtual de diferenciación. Será dirigido a una página en la que podrá especificar la ubicación y el nombre del nuevo archivo de disco de diferenciación, así como la ubicación y el nombre de un archivo .vhd existente que servirá como principal.
Después de crear un disco de diferenciación, sólo deberá usar el disco secundario, nunca el principal, porque si se produce algún cambio en el disco principal, es probable que no se pueda volver a usar el secundario. Esto significa que antes de crear un disco de diferenciación, debe hacer una copia de seguridad del archivo .vhd principal previsto, establecer los permisos del archivo .vhd principal como de sólo lectura y asegurarse de que no hay ninguna máquina virtual configurada para usar el archivo .vhd principal. Hasta hace poco, era un gran fan de las unidades de diferenciación; sin embargo, con la bajada tan importante del costo del espacio en unidades de disco duro, ahora por lo general prefiero crear varios archivos .vhd completos.

Realización de pruebas
Una vez creada una máquina virtual, la realización de pruebas de software en el equipo es exactamente igual que en un equipo físico. Si el sistema a prueba se ejecuta a nivel local (por ejemplo, como una utilidad de compresión), deberá copiar o instalar el sistema en prueba en la máquina virtual y luego realizar pruebas automatizadas, pruebas manuales o ambas. Para copiar el sistema a prueba o los archivos de prueba en una máquina virtual, puede copiarlos desde un equipo al que tenga acceso la máquina virtual (lo que significa que la máquina virtual debe estar conectada al adaptador de red interno especial o a un adaptador físico en el host).
Una técnica que había usado consiste en crear un equipo de almacenamiento virtual que mantiene la creación o iteración actual del sistema en prueba y los archivos relacionados con las pruebas, y transfiere los archivos a varias máquinas virtuales a través del adaptador de red interno. Otra forma de copiar los archivos de la aplicación consiste en grabarlos en un CD o DVD, o bien crearlos en una imagen ISO y luego montar esa imagen en Virtual Server. Una forma más de copiar archivos del host al invitado consiste en usar la utilidad vhdmount.exe incluida en Virtual Server; encontrará explicaciones en la documentación del producto.
Con el tiempo he descubierto que Virtual Server resulta especialmente útil para las pruebas de configuración en aplicaciones web. En este caso, se debe crear un archivo .vhd con el explorador web de destino instalado, ejecutar la máquina virtual asociada y apuntar a la aplicación web en prueba. Según el escenario, quizás necesite probar una aplicación web activa en Internet (en cuyo caso, el equipo host debe tener acceso a Internet), en una intranet (el equipo host debe tener acceso al servidor web que hospeda la aplicación web) o en ambos. Una de las ventajas de usar equipos invitados de Virtual Server para realizar pruebas de configuración de software es que todos sus paradigmas de pruebas normales funcionan tan bien como en los equipos físicos.

Conclusión
Virtual PC y Virtual Server, los dos sistemas de virtualización actuales de Microsoft, se basan en el mismo código principal y son semejantes en muchos aspectos. Aunque son útiles y eficaces, el próximo nuevo sistema Microsoft Hyper-V™ promete ser un enorme avance en la tecnología de virtualización. Al igual que Virtual Server (pero a diferencia de Virtual PC), Hyper-V será completamente automatizable. Además, Hyper-V tendrá una gran variedad de características nuevas. La comprensión de los principios y las técnicas de realización de pruebas de configuración con Virtual Server le ofrecen una excelente base para comprender Hyper-V y hacer la transición a este nuevo sistema. Dicho esto, Hyper-V sólo es compatible con equipos de 64 bits, por lo que si desea usar un equipo de 32 bits como host de virtualización, deberá seguir usando Virtual Server.
Un aspecto ventajoso de Virtual Server, del que no tuve tiempo para hablar en esta columna, es que se basa en un gran conjunto de componentes COM clásicos, por lo que se puede automatizar completamente. Aunque la automatización de Virtual Server está bien documentada, mucha de la información sirve para usar Virtual Server para tareas de consolidación de servidores más que para pruebas de configuración. En mi siguiente columna describiré cómo automatizar totalmente las pruebas de configuración con Virtual Server.

Envíe sus preguntas y comentarios para James a testrun@microsoft.com.

El Dr. James McCaffrey trabaja en Volt Information Sciences, Inc., donde se encarga de los programas de aprendizaje técnico dirigidos a los ingenieros de software que trabajan en el campus de Microsoft en Redmond. Ha colaborado en el desarrollo de varios productos de Microsoft como, por ejemplo, Internet Explorer y MSN Search. James es el autor de .NET Test Automation Recipes. Puede ponerse en contacto con él en jmccaffrey@volt.com o v-jammc@microsoft.com.

Page view tracker