asp.net selenium automation automated-tests watin

asp.net - WatiN o Selenio?



selenium automation (15)

Pronto voy a comenzar a codificar algunas pruebas automatizadas de nuestra presentación. Parece que todos recomiendan WatiN y Selenium . ¿Cuál prefiere para las pruebas automatizadas de formularios web ASP.NET? ¿Cuál de estos productos funciona mejor para ti?

Como nota al margen, noté que WatiN 2.0 ha estado en CTP desde marzo de 2008, ¿eso es algo de qué preocuparse?


A riesgo de salir en una tangente, recomendaría Ax / WatiN. Ax permite que las pruebas se escriban en Excel mediante comprobadores "manuales" sin conocimiento del "idioma" de la prueba subyacente. Necesita un ''Técnico'' para escribir las acciones a medida (IE. Hoy tuve que hacer una búsqueda de tablas y referencias cruzadas un tanto complejas) pero una vez escritas las acciones pueden ser usadas en pruebas por los probadores que no son de Techy.

También escuché que el proyecto Government Gateway del Reino Unido (que creo que tiene pruebas automatizadas de 6K + pruebas) recientemente portó todas sus pruebas de Axe / Winrunner a Axe / Watin en una semana. Y muchas de las pruebas son bastante complejas, lo sé mientras trabajaba en ello hace unos años ...

Estoy viendo Selenium en este momento, ya que un Cliente potencial lo usa. Pero sugiero echar un vistazo a Ax como una capa sobre la herramienta ''caballo de trabajo''.


Consideré usar ambos. Usé la grabadora para Selenium para construir algunas pruebas en FF. Traté de hacer lo mismo en Watin y descubrí que Watin Recorder (2.0.9.1228) no tiene ningún valor para nuestros sitios . Parecía estar renderizando el sitio en IE6, lo que hace que nuestro sitio no se pueda utilizar para grabar. No admitimos IE6. No pude encontrar ninguna forma de cambiar el navegador que está usando. Solo encontré una grabadora Watin por ahí. Si hay más de uno, o uno que se mantiene actualizado, por favor comente.

El Selenium Recorder IDE para Firefox es simple de usar y los puertos prueban C #. No es genial en esto. No pude lograr que las suites de prueba de portabilidad funcionaran, a pesar de leer una publicación de blog o dos que tenían soluciones. Entonces, hay un poco de manipulación del código generado. Aún así, funciona al 90% y eso es mejor que la alternativa.

Por mi dinero / tiempo, el selenio es superior solo por la facilidad de construir nuevas pruebas . IE no tiene buenas barras de herramientas para desarrolladores que sean tan buenas como Firebug , así que estoy haciendo mi desarrollo en Firefox para empezar, así que tener una buena grabadora en Firefox es una gran ventaja.

Mi conclusión aquí fue muy parecida a la cita de democracia de Churchill: el selenio es la peor forma de prueba automática de IU. Excepto por todos los demás.


Generalmente uso Selenium, principalmente porque me gusta el plugin Selenium IDE para FireFox para registrar los puntos de partida de mis pruebas.


Hasta ahora somos una tienda de Microsoft pura para entregar soluciones para la empresa y fuimos con WatiN. Esto puede cambiar en el futuro.

Como fuente más reciente:

Microsoft imprimió en MSDN Magazine 12/2010 un BDD-Primer con la combinación de SpecFlow con WatiN (genial desarrollo impulsado por comportamiento BDD). Su autor, Brandon Satrom (msft Developer Evangelist), también publicó en diciembre de 2010 una videoconferencia por Internet enseñando en detalle 1: 1 sus descubrimientos anteriores.

Hay un Whitepaper de 04/2011 en Supporting ATDD / BDD con SpecLog, SpecFlow y Team Foundation Server (desarrollo impulsado por la prueba de aceptación / desarrollo impulsado por el comportamiento) de Christian Hassa , cuyo equipo creó SpecFlow.


He usado ambos, ambos parecen funcionar bien. Mi asentimiento es para Selenium ya que parecía tener mejor soporte para Ajax. Creo que WaTiN ha madurado desde la última vez que lo usé, así que debería tener lo mismo.

Lo más importante sería ¿en qué entorno de desarrollo te gustaría estar? Selenium y Watin tienen grabadoras pero Selenium está en el navegador y watin está en Visual Studio. + y - a ambos.


La mayor diferencia es que Selenium tiene soporte para diferentes navegadores (no solo IE o FF, vea http://seleniumhq.org/about/platforms.html#browsers .

Además, Selenium tiene un servidor de control remoto ( http://seleniumhq.org/projects/remote-control/ ), lo que significa que no necesita ejecutar el navegador en la misma máquina en la que se ejecuta el código de prueba. Por lo tanto, puede probar su aplicación web. en diferentes plataformas de sistema operativo.

En general, recomendaría usar Selenium. He usado WatiN hace unos años, pero no estaba satisfecho con su estabilidad (probablemente ya ha mejorado). La mayor ventaja para Selenium para mí es el hecho de que puedes probar la aplicación web. en diferentes navegadores


Los he estado probando a los dos y aquí están mis pensamientos iniciales ...

WatiN

El bueno

  • Ejecución rápida
  • Las herramientas de creación de guiones son proyectos independientes; Hay 2 que conozco: Wax (basado en Excel, alojado en CodePlex) y WatiN Test Record (alojado en SourceForge). Ninguno de los dos es tan robusto como Selenium IDE.
  • Muy buen soporte de IE. Puede adjuntar y separar a / desde instancias en ejecución. Puede acceder a controles de ventana nativos, etc. (Ver el ejemplo de script a continuación).
  • NuGet está empaquetado, es fácil de ejecutar en entornos de estilo .NET, Visual Studio y se mantiene actualizado.

El malo

  • Google buscando WatiN (watin xyz) a menudo hace que Google recomiende "watir xyz" en su lugar. No hay mucha documentación por ahí.
  • Lo poco que hay (documentación) es confuso; por ejemplo: a primera vista parecería que no hay soporte nativo para los selectores de CSS. Especialmente porque hay bibliotecas de extensiones como ''WatiNCssSelectorExtensions'' y muchos artículos de blog sobre técnicas alternativas (como inyectar jQuery / sizzle en la página). En , encontré un comentario de que sugiere que hay soporte nativo. Al menos el desarrollador principal pasa tiempo en :)
  • No hay soporte XPath nativo.
  • No ejecución fuera de la caja de ejecución remota / cuadrícula.

Ejemplo de script (C #). No puedes hacer esto con Selenium (no es que yo sepa, al menos):

class IEManager { IE _ie = null; object _lock = new object(); IE GetInstance(string UrlFragment) { lock (_lock) { if (_ie == null) { var instances = new IECollection(true); //Find all existing IE instances var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment)); _ie = match ?? new IE(); if (match==null) //we created a new instance, so we should clean it up when done! _ie.AutoClose = true; } } return _ie; } }

Selenio

  • Más lento que WatiN (especialmente porque se debe crear un nuevo proceso).
  • Selectores CSS incorporados / soporte XPath.
  • Selenium IDE es bueno (no se puede decir genial, pero es el mejor en su clase).
  • Se siente más Java-ish que .NET-ish ... pero en realidad, es un lenguaje de programación agnóstico; todos los comandos se envían a un ''Controlador'' fuera de proceso. El controlador es realmente un proceso de "host" para la instancia del navegador. Todas las comunicaciones se deben serializar dentro y fuera de los límites del proceso, lo que podría explicar los problemas de velocidad relativos a WatiN.
  • Procesos desacoplados: "Controlador" y "Control" significan más robustez, más complejidad, etc., pero también más fáciles de crear grillas / entornos de prueba distribuidos. Realmente me hubiera gustado si el mecanismo de "distribución" (es decir, la comunicación entre Driver & Control) estuviera en WebSphere u otro administrador de colas de mensajes sólido y existente.
  • Admite Chrome y otros navegadores listos para usar.

A pesar de todo, fui con WatiN al final; Principalmente tengo la intención de escribir pequeñas aplicaciones para raspar pantallas y quiero usar LINQPad para el desarrollo. Adjuntar a una instancia remota de IE (una que yo no engendré) es una gran ventaja. Puedo juguetear en una instancia existente ... luego ejecutar un poco de script ... y luego violín de nuevo, etc. Esto es más difícil de hacer con Selenium, aunque supongo que "pausas" podrían estar incrustadas en el guión, momento en el que podría violín directamente con el navegador.


Ninguno. Usa Coypu Envuelve Selenio. Mucho más durable. https://github.com/featurist/coypu

Actualiza a Ye Oliver, tienes razón. Ok, ¿por qué es mejor? Personalmente, he encontrado que el controlador Selenium para IE, en particular, es muy frágil: hay una serie de excepciones de controlador "estándar" que he encontrado una vez más cuando conduzco Selenium para pruebas unitarias en sitios web pesados ​​de ajax.

¿Mencioné que quiero escribir mis scripts en c # como un Proyecto de prueba? Sí. Pruebas de aceptación dentro de una implementación de construcción continua.

Bueno, Coypu se ocupa de lo anterior. Es un envoltorio para Selenium que permite accesorios de prueba como,

browser.Visit("file:///C:/users/adiel/localstuff.htm") browser.Select("toyota").From("make"); browser.ClickButton("Search");

... que activará un navegador (marca configurable) y ejecutará el script. Funciona muy bien con regiones de ámbito y es MUY ampliable.

Hay más ejemplos en GitHub y como Olvier a continuación menciona, el video de Adrian es excelente. Creo que es la mejor manera de conducir pruebas basadas en el navegador en el mundo de .Net e intenta seguir su capybara mismo nombre de Ruby


Probamos ambos y decidimos ir con WaTiN. Como otros han señalado, Selenium tiene algunas características agradables que no se encuentran en WaTiN, pero nos topamos con problemas para obtener el funcionamiento del Selenio y una vez que lo hicimos, era definitivamente más lento cuando se ejecutaban pruebas que WaTiN. Si mal no recuerdo, los problemas de configuración con los que tropezamos se debieron al hecho de que Selenium tenía una aplicación separada para controlar el navegador real donde WaTiN hacía todo en proceso.


Recomiendo WebAii ya que es con lo que he tenido éxito y cuando lo usé, mis quejas fueron pocas. Nunca probé Selenium y no recuerdo haber usado demasiado WaTiN, al menos no hasta el punto en que pudiera hacerlo funcionar con éxito. No sé de ningún marco que trate con gracia los diálogos de Windows, aunque WebAii tiene una interfaz para implementar sus propios manejadores de diálogo.


Si está buscando hacer una inversión seria a largo plazo en un marco que continuará siendo mejorado y respaldado por la comunidad, Selenium es probablemente su mejor opción. Por ejemplo, acabo de encontrar esta información en el blog de Matt Raible:

A partir del viernes, Google tiene más de 50 equipos que ejecutan más de 51,000 pruebas por día en Selenium Farm. 96% de estas pruebas son manejadas por Selenium RC y las máquinas Farm correctamente. El otro 4% se debe en parte a errores RC, en parte para probar errores, pero aislar la causa puede ser difícil. El selenio se ha adoptado como la tecnología principal para las pruebas funcionales de aplicaciones web dentro de Google. Esa es la buena noticia.

También asistí a una de las reuniones de Selenium recientemente y me enteré de que Google está dedicando recursos importantes para mejorar Selenium e integrarlo con WebDriver, que es una herramienta de prueba automatizada desarrollada por Simon Stewart. Una de las principales ventajas de WebDriver es que controla el navegador en lugar de ejecutarse dentro del navegador como una aplicación de JavaScript, lo que significa que los principales obstáculos como el problema del "mismo origen" ya no serán un problema.


Si tiene que acceder a iframes, diálogos modales y iframes de dominios cruzados, WatiN es un camino por recorrer. Selenium no pudo manejar los iframes que arrojaba excepciones de tiempo de comando. WatiN podrías hacer muchas más cosas, especialmente si el sitio web utiliza elementos específicos de IE como ShowModalDialog, etc. WatiN los maneja muy bien. Incluso podría hacer acceso de iframe de dominios cruzados.


Solo quiero decir que actualmente estoy trabajando duro en una versión beta de WatiN 2.0 en algún lugar en el primer trimestre de 2009. Será una actualización importante de las actuales versiones de CTP 2.0 y básicamente le dará la misma funcionalidad para automatizar Firefox y IE como la versión 1.3.0 ofrece para automatizar IE.

Entonces no hay preocupaciones allí.

Espero que esto ayude a hacer tu elección Jeroen van Menen Lead dev WatiN


Tendrá que hacer ambas cosas si necesita hacer pruebas de IE y FF, pero solo funcionarán muy bien para las pruebas de presentación. No pueden detectar si un elemento está ligeramente apagado, solo que los elementos están presentes. No sé nada que pueda reemplazar al ojo humano para la prueba de UI / presentación, aunque podría hacer algunas cosas para ayudarlo (tome capturas de pantalla de las páginas en cada paso para que los usuarios las revisen).


Uso Watin, pero no he usado Selenium. Puedo decir que me puse en funcionamiento rápidamente con Watin y tuve pocos o ningún problema. No puedo pensar en nada que haya querido hacer y no pude entenderlo. HTH