Buenos ejemplos de pepinos en la naturaleza?


He probado Pepino para algunos proyectos hace un par de años y estoy buscando darle otra oportunidad. Realmente no necesito otro artículo de "Pepino principiante". En su lugar, me gustaría ver algunos usos reales en la naturaleza, uno que otros usuarios de pepino considerarían idiomático y libre de antipatrones.

Entonces, en su opinión, ¿cuáles son los mejores ejemplos de especificaciones reales de pepino en grandes proyectos?

Author: AndrewO, 2011-04-15

8 answers

Puedes leer las pruebas de pepino de diaspora. Es un proyecto bastante grande, así que creo que puedes aprender algo de él.

 33
Author: Vasiliy Ermolovich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-15 19:48:59

Puedes leer las características del Pepino en sí, los chicos deben saber lo que están haciendo:

Https://github.com/cucumber/cucumber-ruby/tree/master/features

 15
Author: Michael Kohl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-02 05:38:25

Esta no es una respuesta directa, pero no estoy de acuerdo con una premisa en su pregunta, pero tengo una solución, así que daré mi opinión de todos modos.

Uno es que otros usuarios de pepino considerarían idiomático y libre de antipatrones

Esta afirmación, creo, es desafortunadamente imposible de satisfacer.

Aquí está Brandon Keepers de CollectiveIdea tomando una posición común de que debe esforzarse hacia pasos genéricos y reutilizables, lo que tiene sentido desde un punto de vista general "Don't Repeat Yourself" perspectiva.

Sin embargo, aquí está Aslak Hellesøy, el autor de Cucumber, tomando una opinión también común (pero mutuamente excluyente) de que debe esforzarse hacia pasos específicos del escenario, lo que tiene sentido desde la perspectiva de "¿por qué pepino en absoluto?"

A partir de "The Training Wheels Came Off" vinculado anteriormente, Aslak hace dos escenarios de ejemplo para contrastar conmovedoramente los dos estilos: pasos reutilizables vs escenario específico.

Después de años de usar Pepino en ambos estilos, y considerando el dilema anterior, estas son mis conclusiones:

  1. Los pasos reutilizables se convierten en una pesadilla de mantenimiento, ya que necesita admitir definiciones de pasos más complejas y evitar conflictos de nombres.
  2. Los pasos específicos del escenario son preferidos por su legibilidad y simplicidad, pero también se convierten en una pesadilla de mantenimiento solo debido a los conflictos de nombres.

Así que, he decidido que El pepino está roto actualmente, y el Capibara simple en la parte superior de su marco de pruebas unitarias favorito es el más flexible.

Cucumber podría, si lo desea, agregar contextos de escenarios, escenarios específicos de características, espacios de nombres de escenarios, etc. de manera que pueda abarcar sus escenarios de alguna manera, por función, rol de usuario, lo que tenga sentido, y reducir en gran medida los conflictos de nombres para hacer que los pasos específicos del escenario sean realmente viables. En ese momento, creo que habría un claro ganador estilístico. Hasta entonces, no siempre será esta tensión de la necesidad de abstraer sus pasos para evitar conflictos de nombres frente a querer mantenerlos específicos del escenario para la simplicidad y legibilidad.

Un proyecto alternativo que intenta abordar estas deficiencias es Espinacas, pero el proyecto no está activo. Ver mis comentarios aquí sobre una evaluación de Espinacas vs Pepino.

 8
Author: Woahdae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:25:31

También estaba buscando proyectos de pepinos. Y en realidad hay una página wiki en el repositorio de Cucumber con una lista de dichos proyectos (no todos ellos aún usan Cucumber):

Proyectos que usan Pepino:

Fuente: https://github.com/cucumber/cucumber/wiki/Projects-Using-Cucumber

 6
Author: Kirill Zhukov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-10 03:04:47

Recomiendo:

Https://github.com/teambox/teambox/tree/dev/features

Actualización: Como mencionó Ivailo Bardarov, utilizan websteps, que es una mala práctica en la actualidad. Solo mira esto como una referencia para ver buenas características y no pasos!

Actualización 2: Creo que fuera tarde, aprendí mucho de las siguientes características de pepino proporcionadas con la versión de pago de Object on Rails book. El código fuente no es de código abierto, así que no puedo publicarlo aquí o no pude encontrar un enlace a se.

Mi forma preferida es mantener el idioma de las características cerca del idioma del dominio / negocio en lugar de pasos específicos o completar el formulario. Así que en lugar de tener algo como esto en mis características:

When I fill in "Name" with "XYZ

Haré que mi característica diga:

When I create a project:
| name |
| xyz  |

Y luego mi paso tendría, el código para hacer clic en el enlace, analizar la tabla y llenar el campo de formulario relevante, etc.

 5
Author: RubyDev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-06 02:30:41

Estamos usando Cucumber en mi proyecto actual para un rediseño de aplicaciones web, pero no es de código abierto, por lo que no puedo ofrecer un conjunto real de características y pasos.

Diré que nos hemos inspirado mucho en el patrón de Objetos de página en estos dos muestras . Estamos en medio de una refactorización de UI pesada con nuestro equipo de UX. El uso de objetos de página ha hecho que adaptar las pruebas a esos cambios sea razonablemente simple.

 3
Author: Mike Cornell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-22 13:41:57

Me gustaría poder publicar los de nuestro repo corporativo (aplicación web interna masiva para una lista Fortune 500).

Lo mejor en la naturaleza es probablemente las pruebas de Wikipedia:

Https://github.com/wikimedia/qa-browsertests

Realmente necesita abstraer con objetos de página. Incluso entonces, cuando su aplicación supera las 30 pantallas de entrada, sus pruebas se vuelven difíciles de abstraer.

Tengo una forma experimental de abstraer rápidamente caminos comunes sin ciclos; probablemente debería limpiarlo subir y enviarlo como una pull request a Cheezy: https://github.com/cheezy/page-object

 3
Author: Chad Brewbaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-26 21:59:54

Un problema común con los proyectos grandes es que las características de Pepino tardan mucho tiempo en escribirse.

Así que hay una serie de estrategias involucradas: Si está utilizando Pepino para describir un sistema heredado, obtiene una cobertura de prueba de aceptación decente a través de pepino y capybara, y luego refactoriza sus definiciones de pasos de pepino.

Si realiza pruebas unitarias correctamente, use Pepino para describir solo el camino feliz de su aplicación, o solo los caminos no felices esenciales. Obtenga cobertura con RSpec (o Xunit de elección).

Los problemas clave con Pepino es que las características deben describir la funcionalidad a un nivel muy alto. Necesita hacer que sus definiciones de pasos sean SECAS y reutilizables, y soy un fan de redirigir las definiciones de pasos para mantener las características interesantes de las partes interesadas concisas y al punto. Aunque creo que ese punto puede ser un poco polémico.

 2
Author: Richard Conroy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-01 11:29:44