¿Un hombre trabajador en lugar de un probador? ¿Vale la pena estudiar Selenium en 2020?



Continuación de la entrevista “¿Quién más necesita Selenium? ¿Alguien usa BDD en 2020? Machine Learning en Selenium »

El diálogo incluyó:

  • Vsevolod Brekelov y Daria Manukhina (comité de programa de la conferencia de Heisenbug);
  • Anna Chernyshova, desarrolladora de la biblioteca Akita y la nueva herramienta Healenium ;
  • Ivan Krutov, desarrollador de Selenoid .

Al final del artículo puede encontrar la conclusión compartida por Ivan y Anna, a saber, la respuesta a la pregunta: "¿Debería estudiar Selenium o elegir otra cosa?". Además, logramos hablar sobre:

  • Marker Man y descubre quién es;
  • Valiosos empleados en empresas;
  • Kit de herramientas de prueba;
  • Infraestructura para pruebas de selenio;
  • Selenio competidores.

Si no ha leído la primera parte de la entrevista, aquí hay algunas capturas de pantalla de lo que los lectores recordaron más: el



artículo anterior acorta la cuestión del aprendizaje automático. Comencemos con él.

- Si el aprendizaje automático es realmente genial, ¿qué parte permanecerá viva para las personas, los evaluadores?

Anya : Al principio, todo tendrá que ser validado de una forma u otra. Esto funciona bien cuando tenemos una respuesta clara a la pregunta que resuelve el aprendizaje automático: sí o no. Dependiendo de estos sí o no, la máquina toma una decisión. Cuando no hay una respuesta clara a esta pregunta, ya se necesita allí ...

- Un marcador especial.

Ivan : Cualquier aprendizaje automático consta de dos partes.

En primer lugar, es el entrenamiento en sí mismo, cuando el algoritmo recibe algún tipo de muestra de los datos correctos sobre los que aprende, y luego la aplicación del algoritmo. La etapa de aplicación del algoritmo es cuando la máquina nos ayuda a resolver una gran cantidad de problemas basados ​​en las soluciones correctas a una pequeña cantidad de problemas. En la etapa actual, el entrenamiento de estos algoritmos será en cualquier caso del lado humano.

En segundo lugar, el aprendizaje automático se trata principalmente de búsqueda, todos los motores de búsqueda en Internet son muy activos en esto. Para mejorar la calidad de estos algoritmos, uno tiene que procesar grandes cantidades de datos. El papel de una persona puede reducirse al soporte de una infraestructura increíblemente grande que analizará estos datos de manera efectiva. Quizás el algoritmo mismo hará el trabajo por sí mismo. Pero para garantizar todas las condiciones para que este algoritmo pueda funcionar y tenga buena calidad, seguirá siendo trabajo humano.
Para proporcionar todas las condiciones para que el algoritmo pueda funcionar y tenga buena calidad, seguirá siendo trabajo humano.
Por ejemplo, para entrenar un gran número, un buen algoritmo, necesita un grupo distribuido de cálculos, algún tipo de MapReduce loco . Para que esto funcione, aún necesita personas que lo configuran y buscan que funcione normalmente, o que también lo escriben específicamente para esta tarea. El aprendizaje automático no es un tema muy simple. Cuanto más quiera que funcione mejor, más necesita invertir. Cada próximo porcentaje de calidad, esto es una especie de enorme aumento increíble, no por porcentaje, sino por órdenes de magnitud.
En la etapa inicial, puede iniciarlo en su computadora portátil, y luego, cuanto mejor quiera que funcione, más necesita invertir.
- Es decir, incluso con esa maquinaria, aún no nos libraremos de ejecutar pruebas en algún tipo de infraestructura, en algunas máquinas. Este CI / CD con pruebas no irá a ninguna parte. Por lo tanto, por ejemplo, Selenoid ciertamente no será cosa del pasado, pero no se puede decir lo mismo del Selenium IDE.

Vanya : Selenium IDE ya no está sujeto a la extinción, sino al hecho de que se convertirá en una herramienta más específica, como todo lo que dije antes. Tiene equipos para quienes es realmente conveniente. Alguien se siente cómodo escribiendo autotests desde cero, alguien se siente cómodo grabando y reproduciendo. No me inclino a enterrar todo eso, me parece que este es un proceso evolutivo.

- Bueno, sí. Resulta que "Cobol" está incluso en pruebas.

Vanya : ¡Estoy hablando de mainframes! Alguien cobol, mainframes y todo funciona. Me parece que estamos hablando más sobre todo tipo de problemas tecnológicos, y hay otro matiz. Al final, todo se reduce a dinero cuando todo comienza a hincharse.

Si, de alguna manera, todo ha crecido enormemente para nosotros, por ejemplo, los costos del aprendizaje automático, en algún momento surgirá la pregunta general: "¿Estos gastos están generalmente justificados?

¿Cuál es nuestra tarea si usamos selenio? Probar. Puede resultar que en algún momento los costos de este desarrollo de aprendizaje automático sean más altos que solo contratar personas que se sientan y llaman a sus manos.

¿Por qué todavía existen equipos? ¿Hay pruebas manuales, hay pruebas automáticas? ¿Por qué no desaparecieron los probadores manuales? Porque hay una cierta clase de tareas que es más barata de realizar y para que las personas la prueben con sus manos. Es más barato que escribir autotests. De todos modos, todo descansa en contra de la economía, y no hay forma de llegar a ninguna parte.

Si, de alguna manera, todo ha crecido enormemente para nosotros, por ejemplo, los costos del aprendizaje automático, en algún momento surgirá la pregunta general: "¿Están generalmente justificados estos gastos?"


¿Quién es un "empleado útil"?


"Pero la rapidez con que un producto llega a un usuario afecta la economía". La automatización solo está tratando de acortar el tiempo de entrega para aumentar las ganancias y la ventaja competitiva, ¿verdad?

Vanya : bien. Y un empleado que percibe las actividades de su empresa, como si fuera su empresa personal. Cuenta el dinero, piensa al menos en este tema, no los cuenta en unidades reales, pero piensa que esto probablemente será más barato para nosotros. Tal empleado siempre será valioso para una compañía que dirá esto en cada reunión: "Miren, muchachos, ahorraremos ahora, por ejemplo, y por lo tanto obtendremos más ganancias". Incluso si él es un desarrollador junior.

- Parece que rara vez conocí a esas personas en el mercado.

Vanya : Bueno! Son pocos.Poca gente piensa .

- Resulta que todos están acostumbrados a resolver el problema y con el conjunto de herramientas o los enfoques que ya existen, pero pocas personas piensan si son realmente óptimas desde el punto de vista empresarial.

Anya : Depende del desarrollo de la organización, de la cultura que promueve para sus empleados. Hace poco leí el libro "Descubriendo las organizaciones del futuro" , hay diferentes categorías de organizaciones, están divididas por color.

Las organizaciones del futuro son compañías de color turquesa, donde cada empleado está enfermo y preocupado para que hagamos lo mejor para los usuarios, y todos están incluidos en el proceso. No hay una gradación estricta de lo que es la administración, hay empleados inferiores, empleados superiores, cada uno tiene su propia área de responsabilidad separada, por así decirlo, no parece ir a ninguna parte en otros campos relacionados; esto no está allí. La responsabilidad entre todos los empleados es compartida. Si una empresa comienza a moverse en esta dirección, comienza a promover valores similares entre sus empleados, e incluso si una persona que no tiene una idea en su cabeza de que así es como se hace, enraíza para este negocio, para los negocios, mira a sus colegas, comienza a Para seguir estudiando, si cambia su lugar de trabajo, esto también comenzará a desarrollarse. Esto proviene de la cantidad de organizaciones similares que están ahora,y cuantos aparecerán

Uso de selenio en 2020


- ¿Cómo se usa el selenio ahora?

Vanya : Hay varias aplicaciones básicas de las que he oído hablar. Lo primero que sé es la prueba funcional. Este es su uso previsto: para abrir un sitio, ejecutar algunos scripts de usuario, verificar que todo funcione como debería.
Lo segundo que escuché es el uso de motores de búsqueda (rastreo de páginas en Internet y análisis de sus contenidos, capturas de pantalla). Esto le permite comprender si este es un buen sitio o uno malo.

Anya : También puedes usarlo como prueba de carga de UI.

Vania: Es un poco caro. Probablemente hay personas que hacen esto, pero en principio es costoso. Al menos esta no es una aplicación, no solo una prueba funcional. Todavía hay varias tareas que requieren un trabajo simplemente automatizado con el navegador. Algunos usan este enfoque, por ejemplo, para enviar spam.

De hecho, Selenium es solo una API que permite que el código funcione con los navegadores, eso es todo. Cualquier tarea para la que tal herramienta sea adecuada puede usarla, no necesariamente probarla, cualquier cosa puede serlo.

Kit de herramientas de prueba


- Para resolver los problemas de la autotensión, ¿qué herramientas, además de Selenium, suelen elegir los ingenieros? Toman Java, Allure, Selenoid, Selenide, lo combinan y obtienen una buena ametralladora para resolver sus tareas cotidianas. O hay algo más?




Anya : Aquí debe comprender en qué niveles consistirá este enfoque de automatización. En cada nivel, puedes enrollar algún instrumento.

El primer nivel es elegir en qué escribir; ¿es Java, .NET, JS? Trabajé más con Java, y hablaré sobre eso. En realidad, sobre qué construir el proyecto: Java. Puedes armarlo usando Maven o Gradle. Ahora Maven tiene un apodo de pom que es genial en YAML, es conveniente trabajar con él.

A continuación, elija cómo ejecutar estas pruebas: estas son algunas JUnit o TestNG. He estado trabajando con JUnit 5 recientemente.

Luego elija el nivel de interacción con los elementos. Este es Selenio, o algún tipo de envoltura sobre él, por ejemplo, Selenide. Con él, puede acortar el tiempo para escribir exámenes.

A continuación, debe verificar los resultados de la prueba. Aquí hay una gran selección de herramientas. Puede usar las mismas Afirmaciones de JUnit 5 , ahora están hechas de manera bastante conveniente. O la biblioteca Hamcrest , me gusta mucho. O AssertJ también es una cosa conveniente. Cuando selecciona este corredor para ejecutar las pruebas, debe pensar en la ejecución paralela de las pruebas, cómo se organizará mejor. En JUnit 5, esto es conveniente; la anotación simplemente se realiza allí.

Luego, la prueba escrita en sí misma, podría ser un envoltorio de BDD, el mismo pepino. Si elige JUnit, se le requerirán cosas adicionales.

Más infraestructura. He estado trabajando con Selenoid recientemente, fue lo más conveniente para mí.

Más informes

- Bueno, ¿los informes son, por supuesto, Allure ?

Anya : Bueno, o ReportPortal .
Puedo explicar cuándo Allure es mejor, cuando ReportPortal es mejor. El encanto es bueno cuando se trata de un proyecto pequeño, entonces, idealmente, generalmente entra. Si se trata de algún tipo de proyecto grande, donde 100500 mil pruebas o esta es una solución empresarial, o se entiende que debería haber muchas pruebas y todas deberían sumarse en algún tipo de informe, entonces ReportPortal es bueno, es más conveniente procesar los resultados de una gran cantidad de ellas. pruebas Cuando hay pocas pruebas, Allure es más conveniente.

Vania: No sé si sabes o no que también participé en el primer Allure. Inicialmente, Allure apareció en Yandex, como todos saben, pero al final resultó que los muchachos fueron por separado para hacerlo. Como resultado, son solo la funcionalidad que ReportPortal tiene en él, todo tipo de cosas complejas: almacenamiento de historial, etc., comenzaron a funcionar como un producto comercial separado, por lo que esto no aparece en el Allure habitual. Y están tratando de venderlo. Si desea algún tipo de informe de código abierto para una gran cantidad de pruebas, entonces probablemente ReportPortal, aunque yo mismo nunca lo he probado. Para pequeños proyectos de algún tipo, Allure, me parece, es para los ojos.

Todas estas herramientas fueron escritas para pruebas complejas con escenarios bastante largos, donde era necesario visualizar bien todos los pasos que se realizan durante la prueba. Estos informes no son particularmente adecuados para las pruebas unitarias, porque solo existe la respuesta "sí / no", cayó, no cayó.

Infraestructura para pruebas de selenio


- Vanya, ¿puedes contarnos más sobre la parte del servidor y con qué frecuencia la gente tiene que tocarla? (a los ingenieros de control de calidad, DevOps).


Imagen: Unsplash

Vanya : ¿Cuál es el lado del servidor? Debe ser algún tipo de aplicación web que implemente el estándar Selenium. Para que podamos enviar comandos de acuerdo con los estándares de Selenium a nuestro cliente, y este servidor realiza todas las verificaciones que queremos hacer por nosotros. Para Selenium, ahora hay varias herramientas que lo implementan.

Existe el mismo Selenium regular anterior, Selenium o Selenium Grid, o Selenium Server: esta es una aplicación escrita en Java, que es la más antigua y fácil en términos de características. Hace tres años, desde el estándar Selenium, desde Selenium Grid, el proyecto Zalenium surgió. Él ya sabe cómo ejecutar navegadores en contenedores Docker. Este proyecto implementa todo el estándar, admite la posibilidad de grabación de video, la capacidad de almacenar registros, tiene una interfaz mejor que el estándar Selenium.

Hicimos un proyecto desde cero llamado Selenoid . Esta es también una implementación completamente independiente del protocolo Selenium. Está escrito en Go, no se requiere instalación de Java, no se necesita nada, solo comienza en el binario y necesita Docker.

Además del código abierto, realizamos una implementación para Kubernetes, esto es Moon . Esta es también una implementación completamente independiente, que es necesaria si tienes Kubernetes. Destacamos que desplegar la infraestructura era fácil con un par de equipos. A la gente le gusta porque ingresaste a dos equipos y todo ya funciona para ti.

Hay todo tipo de plataformas en línea para Selenium, si no desea implementar Selenium. Puede ir a los servicios en la nube. Son bastante caros, pero, sin embargo, son bastante populares.

Anya : Tenía experiencia con SauceLabs , allí también todo es bastante conveniente. Simplemente indica en qué navegador ejecutar, incluso admiten pruebas móviles. Y te lanzas. Pero son caros.

Prueba de navegador cruzado y navegador móvil


- ¿Cómo, desde el punto de vista de la compatibilidad entre navegadores y teléfonos celulares, funciona Selenium, y hay algún problema con la infraestructura con esto? Sé que algunas personas prueban ciertos navegadores en teléfonos móviles. Afortunadamente, no lo probé con mis manos en Selenium, no sé lo difícil que es configurar todo.

Vanya : Es hemorroide y bastante cara. El objetivo es probar que si abrimos nuestra aplicación en algún teléfono, en algún Chrome móvil, todo funciona igual para nosotros. Naturalmente, queremos, como con los navegadores de escritorio, hacer esto con código.

La idea simple inicial es comprar teléfonos de diferentes modelos, ponerlos sobre la mesa. Hay herramientas listas para usar , por ejemplo, Appiumque implementan el estándar Selenium. Esta es también una implementación de Selenium-extension, que le permite trabajar solo con dispositivos móviles. Inicialmente, esto se hizo solo para la granja de teléfonos y tabletas reales. El problema es que solo la experiencia operativa de estas granjas de teléfonos muestra que es muy costoso. Se descompone constantemente, debe reemplazar estos teléfonos, sus baterías se hinchan, requiere sistemas bastante especiales que carguen estos teléfonos, necesita poner actualizaciones allí, asegurarse de que nada se rompa allí.

Ahora todo se mueve lentamente hacia el lanzamiento de todo en emuladores. Existen programas especiales: emuladores que muestran exactamente lo mismo que un usuario ve en su teléfono o tableta en la pantalla de una computadora o servidor normal. Hay emuladores para Android y para iOS. El problema es que, desde el punto de vista de Android, se trata de máquinas virtuales, tales emuladores no se pueden ejecutar en ningún hardware. Si quieres emuladores de Android, necesitas llevar servidores de hierro, es caro.

Si desea probar en emuladores para iOS, debe llevar el hardware de Apple, es decir, MacMini, MacPro, MacBook o algo similar, también es costoso. Esto se debe a las restricciones de licencia de Apple. Por lo tanto, las pruebas en dispositivos móviles en principio son posibles, está claro cómo hacer la infraestructura. Incluso en Docker, puedes ejecutar Android, pero es bastante costoso. Si las personas quieren hacer esto, necesitan pensar mucho.

La tarea principal de las pruebas en dispositivos móviles es encontrar errores que solo se reproducen en dispositivos móviles. Hay diferentes formas de hacerlo más barato. Es posible iniciar navegadores de escritorio como Chrome, en el que se muestra el agente de usuario, se muestra la resolución de pantalla deseada. La decisión sobre si probar en emuladores reales, en teléfonos, debe tomarse en función de si puede detectar errores solo en el emulador o en el teléfono.
La decisión sobre si realizar la prueba en emuladores reales o en teléfonos debe tomarse en función de si puede detectar errores solo en el emulador o en el teléfono.

Selenium competidores


- Por cierto, hay varias herramientas como Puppeteer, Playwright, que le permiten emular con precisión y realizar pruebas en varios navegadores, que incluyen en navegadores móviles. ¿Quizás durante mucho tiempo todos se trasladaron o se trasplantaron?

Vanya : Frontenders, nadie más se movió.

Anya : Estas son cosas geniales, pero tienen limitaciones en términos de compatibilidad entre navegadores. Cypress para Firefox parece estar actualizándose pronto. Puedes escribir pruebas muy interesantes muy rápido, todo es conveniente, pero solo estás limitado por el cromo.

Vanya : Comencemos con Cypress . En 2004-2005, Selenium trabajó de la siguiente manera.

Se lanzó el navegador, se cargó una extensión especial en él, en la que se enviaron comandos para automatizar el navegador. Después de 15 años, aparecieron tipos que lo miraron. Selenium abandonó este enfoque, porque no todo se puede hacer con la ayuda de una extensión. Desde Javascript, no es posible ejecutar todo en el navegador; no puede acceder a los archivos en el sistema de archivos. Selenium cambió a un enfoque nativo, comenzó a escribir binarios separados, separados del navegador. Han pasado 15 años. Los chicos de JavaScript hicieron una herramienta similar.

Titiritero es exactamente lo mismo. Puppeteer es Google Chrome, Chromium, que implementa un protocolo especial para trabajar con este panel de depuración. Chrome tiene un panel de depuración para que pueda ver mensajes en la consola, solicitudes de red, etc.

- Las herramientas de desarrollador son muy buenas, por supuesto.

Vanya : Sí, es conveniente para el desarrollador. Al final resultó que, esta cosa interactúa con el navegador utilizando un protocolo especial. La idea principal es no hacer clic con el mouse en este protocolo, sino enviar comandos de la misma manera que en Selenium. Los chicos simplemente escribieron una biblioteca Javascript que implementa el protocolo.

Anya : Me parece que estas herramientas pueden ser muy adecuadas para la prueba de componentes, que los propios frontenders cubrirían. Conozco tales casos de aplicación; salieron muy bien.

Vania: En general, estas herramientas son buenas, son normales. Son solo un nicho, son muy adecuados para los proveedores de servicios de fondo, ya que tienen sus propias tareas, ejecutan algunas pruebas rápidamente a nivel local, pero el problema es que no cubren los requisitos que ya existen.

Hay un montón de pruebas, por ejemplo, escritas en Java: un volumen frenético, deben ejecutarse rápidamente, deben escalarse rápidamente, etc. Este problema no está resuelto.

No estoy diciendo que estas herramientas sean malas. De hecho, incluso los equipos que hacen Cypress, o los equipos que hacen Puppeteer, dicen que es lo mismo que Selenium. Hay Gleb Bakhmutova quién hace Cypress, se le preguntó: ¿es Cypress Selenium o no? Él respondió que esta es una herramienta de nicho normal para desarrolladores front-end, y estoy de acuerdo. Me parece que tienen algún tipo de funcionalidad común, resuelven algún problema común, pero aún así tienen diferentes áreas de aplicación.

- Chicos, tienen una vasta experiencia en el uso de Selenium, si recién comenzaran las pruebas de IU ahora, ¿qué herramienta elegirían ahora? ¿Dónde es mejor comenzar?

Anya : Empezaría con Selenium de todos modos. Porque es un estándar.

- Java y Selenium, ¿verdad?

Anya : Bueno, no puedes Java, puedes .NET, Python, pero aún Selenium para ellos, porque él vivió, vive y vivirá.

El selenio vivió, vive y vivirá.


Ivan : Supongamos que necesitamos cortar algo de tabla y una persona es carpintero.
Primero, necesita aprender a trabajar con algo estándar, aprender a cortar con una sierra y luego tomar algún tipo de máquina herramienta compleja y especializada.

Selenium es una herramienta simple que puede ser realizada por todos. Hay 100,500 millones de personas que le dirán cómo cortar un tronco con una sierra. Algo nicho, por un lado, será genial cortar en este nicho, pero para tareas de propósito general, Selenium sigue siendo el mejor que hay en este momento.

Anya : Selenium es una base que debes conocer para poder seguir desarrollándote y agregarle algunos panecillos interesantes.

- ¡Gracias! Espero que la información recibida sea útil para nuestros lectores.

Le recordamos que la conferencia Heisenbug 2020 Piter se llevará a cabo en línea . Allí puede hablar con Vanya y Anya y aprender más sobre Healenium, Selenoid y el uso del protocolo Chrome DevTools en el clúster de Kubernetes.

Para aquellos que desean ampliar sus horizontes y asistir a más de una conferencia, pero inmediatamente 8, hemos preparado algo .

All Articles