tests run rails ruby selenium cucumber capybara

ruby - run - Cucumber/Capybara vs Selenium?



ruby on rails rspec (4)

El otro día le estaba mostrando a uno de los evaluadores de mi empresa algunas pruebas que había escrito en pepino (2 características, 5 escenarios). Luego me hizo una pregunta que no pude contestar:

¿Cómo es esto mejor que el selenio o cualquier otra herramienta de grabación de prueba de funcionalidad?

Entiendo que el pepino es una tecnología diferente y que se ubica en un nivel de prueba diferente, pero no puedo entender por qué debería molestarme en escribir y mantener las pruebas de pepino / capibara.

¿Alguien me puede dar una explicación razonable para usar Cucumber / Capybara en lugar de solo Selenium?


El pepino es una herramienta utilizada para hacer que las pruebas sean legibles para los usuarios de negocios. Consiste en oraciones simples en inglés que se combinan usando expresiones regulares para tus pasos de Capybara.

Usar herramientas de grabación no te hará ningún bien a largo plazo. Fueron para principiantes y no son tan poderosos, así que te recomiendo que vayas directamente a la codificación.

Puede usar Selenium solo para sus pruebas, pero le recomendaría que continúe usando Cucumber para fines de documentación, si los encuentra útiles y fáciles de utilizar. Después de todo, Cucumber puede usar Capybara o el controlador web Selenium.


El pepino no es solo una herramienta de prueba. Además de probar las características de Cucumber, también tiene un papel de documentación, un mecanismo para colaborar con las partes interesadas y el almacenamiento de requisitos (si los escribe en un estilo declarativo ).

No tienes que usar Pepino con Capibara. Puedes usar el selenio directamente. Pero Capybara tiene la misma API de alto nivel para todos los controladores compatibles . Es más alto que el de Selenium y permite escribir pruebas un poco más rápido. No tiene que cambiar el código cuando cambia de un controlador a otro.

Las pruebas construidas con herramientas de registro de pruebas generalmente son mucho peores. Selenium IDE puede producir un código de programación válido, pero no es atractivo y, por lo tanto, difícil de mantener.


Esta pregunta está en el límite pidiendo una opinión. Su pregunta realmente me dice: "¿Qué herramienta es la adecuada para mí?" Digo esto porque no das una razón por la que elegiste Cucumber and Capybara. Creo que para responder la pregunta de ese examinador, primero debes responder un par de preguntas más:

1.) ¿En qué etapa del proceso vas a estar escribiendo estas pruebas?

Es posible que el pepino no sea la opción correcta para las pruebas unitarias, dependiendo del idioma que esté usando. Pero se puede utilizar para cualquier nivel de prueba, desde la unidad hasta la integración y el usuario final.

2.) ¿Quién va a mantener tus pruebas? ¿Tú? ¿Otros desarrolladores? Probadores ¿Analistas de negocios? Gestores de proyectos?

Se deben mantener las pruebas automatizadas, y saber quién lo hará puede ayudarlo a elegir una herramienta, ya que algunas serán demasiado técnicas para ciertos usuarios.

3.) ¿Quién va a estar definiendo nuevas pruebas?

El pepino está destinado a ser utilizado en colaboración entre el desarrollo, el control de calidad y los dueños de negocios. Es la herramienta perfecta para aprovechar el conocimiento de todos en el proceso de prueba automatizado. Sin embargo, requiere el desarrollo de un lenguaje ubicuo para ser efectivo. Puedes leer sobre eso en la página de Arte de Agile de James Shore .

Una vez que haya respondido estas preguntas, estará listo para abordar la pregunta del evaluador.

Sin embargo, hay que tener en cuenta un par de puntos al comparar herramientas de grabación (como Selenium IDE, HP Quick Test Pro, IBM Rational Functional Tester) versus herramientas de desarrollo (nUnit, jUnit, RSpec, Selenium webdriver, Capybara). Están dirigidos a diferentes públicos. También tienen diferentes ventajas y desventajas.

Las herramientas de grabación son fáciles de usar para cualquiera, pero los scripts que crean son frágiles. Se rompen fácilmente y requieren más mantenimiento. Son excelentes para las pruebas automatizadas únicas, en las que necesita realizarlas rápidamente y contar con personal no técnico.

Las herramientas de desarrollo tienen una curva de aprendizaje más grande y requieren experiencia en programación (o al menos en scripting). Los scripts son generalmente más robustos, pero requieren más conocimientos técnicos para mantenerlos. Son una buena solución cuando desea repetibilidad y planea usar pruebas durante mucho tiempo.

Le sugiero encarecidamente que lea El libro del pepino . Realmente le ayudará a decidir si el pepino es la opción correcta para usted.


Selenium ide es bueno para probar características que tienen en su mayoría elementos visuales (enlaces, texto, etc.). Pero, a menudo, las aplicaciones web tienen características que no se representan a sí mismas como elementos visuales, como enviar correos electrónicos, poner en cola los trabajos, comunicarse con servicios de terceros y, por ejemplo, podría probar si aparece un mensaje "Se ha enviado un correo electrónico" después de enviando un formulario. Pero realmente no le dice si realmente se envía un correo electrónico y, por lo tanto, no está probando toda la función aquí.