Vanessa-Automation: una herramienta para probar soluciones de aplicaciones en la plataforma 1C: Enterprise

No desde el principio


Conoces muchas herramientas de prueba que pueden:


  • ¿Obtenga pasos en el idioma Gherkin directamente de lo que solicitó el usuario?
  • ¿Desea crear instrucciones de video automáticamente, con subtítulos, Black Jack y Elena ?)
  • ¿Crear un archivo * .feature en inglés en la interfaz rumana para un usuario que habla italiano?

Esto está disponible y claramente (con fotos) en este artículo, no cambie ...


Entrada


Este artículo es una descripción general de la herramienta de prueba de aplicaciones 1C creada en las entrañas de OpenSource llamada vanessa-automation . Este proyecto es una continuación directa del proyecto de comportamiento vanessa, ampliamente conocido en círculos estrechos (la bifurcación se creó en la versión 1.1.131). Por cierto, hay otros tenedores .


Contexto


No sería bueno pensar que todos los lectores de este artículo sobre habr conocen 1C, de todos modos, hacer trampa no es una opción. Por lo tanto, no me aventuraré a continuar sin formar la comprensión del lector de la plataforma 1C y sus capacidades utilizadas en Vanessa -Automation (en adelante, Va o Vanessa ).


Entonces, después de instalar la plataforma 1C, debe ejecutarla en modo Enterprise o en modo Configurator .


Fig01


Las configuraciones se están desarrollando en el configurador, y los usuarios trabajan en la empresa con estas configuraciones: crean, editan y guardan todo tipo de directorios y documentos, llenando así la base de datos, y luego generan informes y nuevamente: crean, editan y guardan ... y así sucesivamente. Sin embargo, el escenario habitual para que el desarrollador use la plataforma, externamente, no es muy diferente del usuario:
comienzan la configuración necesaria en el modo configurador , y luego en el ciclo → desarrollan o modifican algo → (re) comienzan desde el configurador 1C en el modo empresarial y comprueban con sus propias manos que han desarrollado o mejorado.


La situación se salva gracias a la funcionalidad de una plataforma llamada prueba automatizada , que permite grabar, reproducir y verificar las acciones del usuario. Cómo esta funcionalidad cambia el escenario de uso por parte del desarrollador de la plataforma, consideraremos un ejemplo, PERO primero sobre el procesamiento externo .


Objetos de configuración aplicados (también conocidos como Metadatos , también conocidos como "Objetos de configuración" , ella es Ella Katznelbogen, ella es Valentina Paniyad )
describe el área temática y los nombres de estos objetos hablan por sí mismos.


Fig02


Los "documentos" reflejan transacciones comerciales, por ejemplo, la recepción de bienes. Se necesitan "Directorios" para ingresar, por ejemplo, el nombre de la contraparte 1 vez y luego seleccionarlo, y no ingresarlo nuevamente cada vez. Los datos se almacenan en los "Registros" y se crean tablas virtuales sobre ellos para realizar cálculos complejos y generar "Informes" . Así que llegamos al Procesamiento , con su ayuda, se procesa la información de la base de datos (por ejemplo, se cierra un mes en contabilidad o varios intercambios entre bases de datos de información), pero estamos interesados ​​en la posibilidad de subirlo al procesamiento externo .


Fig03


Las configuraciones proporcionadas por 1C son compatibles (no puede cambiarlas para no perder la actualización automática), y el procesamiento externo permite realizar varias manipulaciones de datos sin eliminar el soporte y, por supuesto, ¡probarlo!


Extensiones

Después del lanzamiento de la versión de plataforma 8.3.10, se hizo posible, con fines de prueba, utilizar, además del procesamiento externo, también extensiones (son parches).


Con un cierto grado de simplificación, podemos decir que técnicamente, el procesamiento externo 1C es un archivo con la extensión epf que, al abrirlo en el configurador, puede crear muchos formularios → colocar controles en los formularios y programar alguna funcionalidad en los módulos de estos formularios. El procesamiento externo también tiene un módulo "común" (también conocido como "Módulo de objetos" ) y diseños, PERO esta es una historia completamente diferente, y volvemos a las pruebas.


Para usar la funcionalidad de prueba automatizada , debe ejecutar dos instancias de 1C Enterprise, la primera con la clave del administrador de prueba (/ TESTMANAGER), la segunda con la clave del cliente de prueba (/ TESTCLIENT) y establecer una conexión entre el administrador de prueba y el cliente. Por lo tanto, el escenario de uso por parte del desarrollador de la plataforma se convierte en esto:


Fig04


Desde el configurador, inicie 1C en modo empresarial con la clave del administrador de pruebas → en la empresa, abra va y úselo para iniciar otra instancia
1C en modo empresarial con una clave de cliente de prueba. La conexión va entre el administrador y el cliente de prueba se establece automáticamente después de que se inicia el cliente de prueba. El cliente de prueba puede ser un cliente ligero o un cliente web.


Total: 1C escribió su Selenium, que está integrado en la plataforma 1C: Enterprise. Y este selenio de 1C tiene ventajas. Por ejemplo, cualquier control (también conocido como control) en un formulario siempre tiene un nombre único, que en el 99,99% de los casos se conoce de antemano. En consecuencia, no hay problemas con los localizadores, y para encontrar un control, simplemente escriba:


 = .(,,); 

Arregla el material con un ejemplo


Debe desarrollar una configuración para contabilizar la venta de bienes con la impresión de facturas.



El espectador atento podría notar el diseño.


  <>  

y no te equivocaste, sí. Vanessa usa su dialecto de pepinillo, que tiene condiciones y ciclos. Creo que la idea de agregar condiciones y ciclos al pepinillo nació de la siguiente manera:


Dia de radio

01


02


03


04


05


06


07


08


09


10


11


12


13


14


15


Algunos miembros de la comunidad OpenSource criticaron esta decisión, pero si se cree en gitter , acordaron lo siguiente: la "legibilidad humana" de las características no daña esta funcionalidad, y todos deciden si usarla o no.
Sobre turbo pepinillo se planea un artículo separado, estad atentos.


"BDD en 1C" y un poco de historia


va , como lo vemos ahora, fue visto de manera diferente por sus creadores . Hacer el mismo pepino + selenio a 1C se decidió solo después de probar las opciones más obvias y de bajo costo. En cierto momento, quedó claro que si usa pepino y selenio, entonces estas herramientas deberán finalizarse para obtener la funcionalidad necesaria para probar las soluciones de negocio de aplicaciones 1C. Esta alineación, en el marco del código abierto y las realidades del mundo 1C, complicó y extendió el desarrollo del proyecto a tiempo. Como resultado, se decidió hacer solo con la plataforma 1C: Enterprise.


Por ejemplo, con la venta de bienes, vimos cómo funciona va , ahora veamos cómo se implementa.


Paso de verificación


El video "Pruebas" muestra va , en el que ya se ha cargado un archivo de características (en adelante , una característica ) y se ha formado un árbol de pasos. Al hacer clic en el botón "Ejecutar scripts" , comienza el procesamiento de cada paso, es decir llame al procedimiento de verificación de pasos. Acerca de dónde se encuentra este procedimiento, lo explicaré con un ejemplo.


Supongamos que hay una característica con un script:


 :        ""  10     ""  300   ""   3000 

Para implementar la verificación de los pasos de este escenario, debe obtener el procesamiento externo correspondiente a la función. En va, esto se hace automáticamente, mediante el botón correspondiente.


Fig05


Como resultado, el directorio step_definitions se creará en el mismo directorio que la función, y se creará un procesamiento externo en él, con el mismo nombre que la función.


 ..\.feature ..\step_definitions\.epf 

Los procedimientos de verificación de pasos se ubicarán en el módulo del formulario de procesamiento.


Fig06


Además, al cargar una característica, va buscará y serializará procesos externos para descubrir los procedimientos para verificar qué pasos en ellos (procesos externos) se implementan. El siguiente procedimiento es responsable de esto:


Fig07


La secuencia de búsqueda para verificar los pasos es la siguiente:


 1.   ,  feature 2.   ,    ,    3.   ,       

Fig08


En el caso de que se agregue / elimine / modifique un script, el procesamiento externo de la función correspondiente se puede reponer con el mismo botón "Crear y actualizar plantillas de procesamiento".


Una vez implementada la verificación de pasos, se puede usar en otras funciones ( reutilización de pasos ). En realidad, en esto, en el módulo de formulario de procesamiento externo, vemos dos procedimientos de verificación de script en tres pasos.


Pasos desde el aire y WYCIWYG


Un poco sobre la funcionalidad Pruebas automatizadas de la plataforma 1C. Permítame recordarle que las pruebas automatizadas le permiten grabar, reproducir y verificar las acciones reproducidas del usuario. De hecho, es todo el mismo cliente de prueba y administrador de prueba , solo en el lado del cliente está activado el registro de acciones del usuario.


Fig09


Como resultado, tenemos un archivo xml con una descripción de las acciones del usuario:


 <?xml version="1.0" encoding="UTF-8"?> <uilog xmlns:d1p1="http://v8.1c.ru/8.3/uilog"> <ClientApplicationWindow isMain="true"> <CommandInterface> <CommandInterfaceGroup title="   "> <CommandInterfaceButton title=" "> <click/> </CommandInterfaceButton> </CommandInterfaceGroup> </CommandInterface> </ClientApplicationWindow> <ClientApplicationWindow caption=" "> <Form title=" "> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption="  ()"> <Form title="  ()"> <FormTable name="" title=""> <FormGroup name="" title=" "> <FormButton name="" title=""> <click/> </FormButton> </FormGroup> <FormField name="" title=""> <closeDropList/> <executeChoiceFromDropList presentation=""/> </FormField> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption=""> <Form title=""> <FormTable name="" title=""> <gotoRow direction="down"> <Field title="" cellText="000000001"/> <Field title="" cellText=""/> </gotoRow> <choose/> </FormTable> </Form> </ClientApplicationWindow> <ClientApplicationWindow caption="  () *"> <Form title="  () *"> <FormTable name="" title=""> <endEditRow cancel="false"/> </FormTable> <FormGroup name="" title=" "> <FormButton name="" title="  "> <click/> </FormButton> </FormGroup> </Form> </ClientApplicationWindow> </uilog> 

Es difícil decir si la idea de crear la funcionalidad de convertir las acciones del usuario en los pasos del guión radica en la superficie, PERO el primero en adivinar e implementar esta idea es Leonid Pautov ( pr-mex ). El contenido y el tamaño de la biblioteca pueden estimar la cantidad de trabajo realizado, ya que además de traducir el registro de acciones del usuario en pepinillo, era necesario implementar procedimientos de ejecución y procedimientos para verificar los pasos.


Por lo tanto, para obtener una secuencia de comandos lista para usar "de la nada", es suficiente para permitir el registro de las acciones del usuario en el administrador de pruebas.


10 superior


En el cliente de prueba, reproduzca las acciones del usuario, por ejemplo, la funcionalidad que debe mejorarse o los errores que deben corregirse. Bueno, complete la grabación de las acciones del usuario. Esto implementa el enfoque de desarrollo de prueba "WYCIWYG" (lo que hace clic es lo que obtiene).


Fig11


Se pueden agregar pasos, por ejemplo, verificar el resultado de las acciones del usuario en un script desde la biblioteca.


Fig12


Pasos detallados y escenarios de exportación


Desafortunadamente, en realidad, el script consta de muchos pasos, más que en la siguiente captura de pantalla.


Fig13


Hay al menos dos opciones para facilitar la percepción de tales escenarios.


Primero, con la ayuda de la tabulación, "mueva" los pasos que deben agruparse y asígneles un título mnemónico.


Fig14


En segundo lugar, haga que el guión sea conciso y versátil y exporte. Creo que no puedo describir mejor esta funcionalidad que Elena en el video "Uso de la etiqueta del árbol y los pasos desde el aire" y "Transmitir parámetros al script" .


Los datos de video ( 1 , 2 ) también se crean a partir de scripts en Gherkin y el uso del motor "AutoVideoInstructions" se convierte al formato mp4 con un solo clic.


Sí, Vanessa puede crear videos sobre cómo funciona Vanessa )


Video automático


Las instrucciones automáticas en video son el tema de un artículo separado ( aquí está ), solo puedo contar un poco de antecedentes.


El momento de preparación de la base de información, reproducción de acciones del usuario y verificación de estas acciones, es decir. ejecución de script
instrucciones bastante claras si ralentizas los pasos.


Fig15


Guardar a los usuarios para ver la ejecución del script (¿de dónde viene este humor policial?) No es una opción, pero el autor no se detuvo en implementar la funcionalidad de crear un archivo html con pasos y capturas de pantalla correspondientes. No se detuvo por el hecho de que al reproducir las acciones del usuario, el cursor del mouse no se muestra y no hay forma de seleccionar un área arbitraria en el formulario, por lo que escribió las utilidades correspondientes. Además, a solicitud de los usuarios, se agregó la actuación de voz ( Elena ), que con el trabajo básico en la formación del video con subtítulos y el fondo musical original, resultó en una cantidad decente de trabajo, pero las instrucciones de auto-video estaban allí. Por el momento, las instrucciones de video automático están significativamente optimizadas, en términos de sincronización de la actuación de voz y las acciones en el video.


Algunas estadísticas aburridas


va apoya:


  • Versiones de la plataforma 1C: Enterprise a partir de 8.3.6 y superior (se recomienda utilizar la plataforma 8.3.10 y superior).
  • Gestionado y como formas "normales" (la configuración probada puede estar en modo de compatibilidad 8.2 o superior).
  • Modo de llamada asincrónica.

Para trabajar correctamente en un "zoológico" de este tipo , va tuvo que aprender a probarse a sí misma. El informe de la autocomprobación se parece a esto:


Fig16


Fig17


Las secuencias de comandos para la prueba "propia" se encuentran en el mismo repositorio .


Biblioteca de pasos


El paquete va incluye la biblioteca de pasos estándar de Gherkin, que le permite resolver tareas cotidianas de autocomprobación, como trabajar con la interfaz de la aplicación (botones, campos, tablas, etc.), trabajar con archivos, sistema operativo, etc. Por el momento, son más de 400 pasos.


Localización


La interfaz va está localizada en 20 idiomas:


RU, am, az, bg, et, fr, ka, de, en, hu, it, lv, lt, mn, pl, ro, sl, es, sv, tr, vi.


La localización va se puede dividir en 3 componentes:


  • Interfaz (se utiliza el mecanismo estándar de sinónimos de la plataforma 1C: Enterprise).
  • Mensajes para el usuario (en lugar de llamadas a diseños () con traducción de mensajes se utilizan).
  • Traducción de pasos de Gherkin de la biblioteca estándar va . Es decir en lugar de implementar el paso "Y hago clic en el botón 'NameKnopki'" en cada idioma, "mapeo" se usa nuevamente en el paso correspondiente de Gherkin, que ya está implementado en ruso.
    En inglés, este paso será

 And I click 'ButtonName' button 

Por lo tanto, ahora los usuarios de habla inglesa pueden escribir scripts en va en inglés. Todos los pasos de la biblioteca estándar son traducidos por man. El resultado puede verse más o menos así.


Es lógico que para admitir dicha localización, tuvimos que implementar herramientas adicionales para trabajar con diseños (un diseño es algo así como una tabla de Excel) para insertar / eliminar valores, ordenar filas, etc. directamente en la fuente (archivos xml).


"TDD en 1C", prueba de procedimientos y funciones (pruebas unitarias)


Con va, puede probar el "comportamiento" de los procedimientos y funciones. Es suficiente escribir un script similar:


Fig18


Si los lectores tienen interés, este tema se puede revelar con más detalle en futuros artículos.


Opciones de entrega


Inicialmente, el proyecto se entregó solo en forma de un conjunto de archivos epf, que se podían ensamblar desde la fuente en github o descargar un lanzamiento listo. A partir de la versión 1.2.009, va también se suministra como un archivo epf, que incluye todas las bibliotecas, complementos, paquetes de localización, módulos de ensamblaje de video, etc. Por así decirlo, todo en uno.


Esta versión del framework se llama vanessa-automation-single . Es adecuado para aquellos usuarios que no planean modificar va , pero solo lo usarán. Además, esta opción de entrega es adecuada para su inclusión en otras configuraciones o extensiones (el beneficio de la licencia del proyecto FreeBSD lo permite).


De arriba a abajo y de abajo a arriba


A pesar de que la herramienta fue concebida originalmente para la implementación de la metodología BDD (es decir, cuando los scripts se escriben de arriba a abajo, es decir, según los requisitos de nivel superior del cliente), la práctica del uso ha demostrado que los scripts también se pueden escribir de abajo hacia arriba. Un caso típico es cuando ya hay una configuración preparada, y solo necesita cubrirla con pruebas sin preocuparse por las metodologías.


Moraleja


Espero que el lector haya desarrollado (la palabra clave "formado") una idea de va como una herramienta de prueba seria. Mirando análogos extranjeros al principio, ahora va los supera, en mi humilde opinión. La extensión de la funcionalidad de trabajar con pepinillo hizo posible (prometido, pero no implementado antes de turbo pepinillo) involucrar tanto al analista como al desarrollador y probador en el proceso de desarrollo. Explicaré que el analista escribe un guión transversal de alto nivel → el desarrollador detalla este guión utilizando también los guiones de exportación, y escribe prácticamente nada excepto el código (todos los pasos necesarios de la interfaz de usuario ya están en la biblioteca) → el probador agrega guiones para verificar desde un "ángulo diferente" funcionalidad y todo esto: en un archivo de características , ¡saludos camaradas!


imagen


PS


Sobre esto, permítanme concluir este artículo de revisión.
Apoye el proyecto con una palabra amable / me gusta / crítica (el chat del proyecto en Gitter está aquí ), los autores siempre están contentos.


Gracias por su atencion!


Referencias


Source: https://habr.com/ru/post/es418303/


All Articles