Ejecutar nuestras pruebas web simulando diferentes navegadores
El proceso para simular diferentes navegadores pasa por grabar nuestro web tests y ejecutarlo como una una prueba de carga. Configuraremos la prueba de carga para que haga dos peticiones por cada. El wizard nos permite elegir que clientes queremos añadir. Por defecto aparecen IE x.x y FF 2.0 pero se pueden añadir los que se quieran, simplemente conociendo el User-Agent.
El proceso sería grabar una interacción usando IE y luego crear una prueba de carga que ejecute ese test tantas veces como diferentes navegadores queramos simular.
Otra opción es grabar el test desde Inernet Explorer y otro desde Firefox (o cualquier otro navegador).
Otra opción que es más compleja es añadir un header a las peticiones web y establecer el user-header y luego vincularlo a datos. El problema es que hay que hacerlo a mano para cada petición, aunque siempre se podría hacer una macro de Visual Studio.
También, lógicamente, se podría hacer un plugin de webtest que añadiese el header a cada petición. Un plugin de tipo WebTestRequest nos permite modificar las peticiones antes de enviarlas y añadir la cabecera (propiedad Headers) User-Agent que más nos convenga. Para ello usaríamos el módelo de objetos de plugins de pruebas web:
Por último otra opción sería generar el código de la prueba y cambiar la cabecera User-Agent nosotros desde el código de la prueba. Podemos modificar el método GetRequestEnumerator de la prueba web para añadir la cabecera User-Agent de los navegardores que nos interesen y devolver un objeto request adicional por cada navegador configurado con la cabecera adecuada. Añadir la cabecera en código es muy simple gracias a la clase WebTestRequestHeader.
WebTestRequest request1 = new WebTestRequest("http://geeks.ms/");
request1.Headers.Add(new WebTestRequestHeader("User-Agent", ""));
Hay que señalar que las pruebas web no ejecutan Javascript, por lo tanto la técnica aquí descrita sirve para probar diferencias en servidor derivadas de usar diferentes clientes, pero no para probar diferencias de comportamiento entre navegadores en lo que a la ejecución de Javascript se refiere.