30 preguntas de la entrevista de prueba automatizada de Python

Directorio de artículos

1. ¿Qué proyectos son adecuados para pruebas automatizadas?

Palabras clave: inmutable, repetitivo, canónico
1) La prueba de tareas es clara y los requisitos no cambiarán con frecuencia.
2) El ciclo del proyecto debe ser lo suficientemente largo
3) Los scripts de prueba automatizados se pueden reutilizar, como: pruebas de regresión más frecuentes
4) El desarrollo del sistema de software probado está relativamente estandarizado, lo que puede garantizar la capacidad de prueba del sistema
5) La interfaz del sistema de software es estable y hay pocos cambios
6) La presión del progreso del proyecto no es demasiado grande

2. ¿Qué es el modo PO?

Se refiere a convertir una página específica en un objeto en un lenguaje de programación, convertir las características de la página en propiedades del objeto y convertir las operaciones de la página en métodos de objetos.
1) En términos generales, cada página se considera un objeto, y la capa de la página escribe el método del elemento de posicionamiento y el método de operación de la página
2) La capa de casos de uso llama al método de operación desde la capa de la página y lo escribe como un caso de uso
3) El se puede lograr la separación de elementos de posicionamiento y scripts
4) Se utiliza principalmente para lograr una separación de la operación de la página y la lógica de prueba

3. ¿Cuáles son los principios de encapsulación del modo PO?

1) Para encapsular las funciones o servicios en la página, como hacer clic en un elemento de la página para ingresar a una nueva página, puede encapsular el método "ingresar una nueva página" para este servicio 2) Encapsular detalles, solo proporcione nombres de métodos o interfaces de forma externa , intente no
exponer las partes internas de la página
3) No use aserciones en los detalles de la operación encapsulada, coloque las aserciones en un módulo separado,
4) Haga clic en un botón para abrir una nueva página, puede usar el método de retorno para saltar, por ejemplo, volver MainPage() significa saltar Ir a la página de inicio
5) No necesita encapsular el comportamiento de toda la página, puede encapsular cualquier lógica que se use
6) Una acción puede producir resultados diferentes, por ejemplo, después al hacer clic en un botón, puede tener éxito o fallar, y encapsular dos resultados para los dos métodos de resultados: click_success y click_error

4. ¿Cuáles son las funciones de *args y **kwargs en Python?

Todos son parámetros de longitud indeterminada, que resuelven el problema de que los parámetros no son fijos.
args es un parámetro que no es una palabra clave, que se usa para tuplas; kwargs es un parámetro de palabra clave (diccionario),
es decir, args representa cualquier número de parámetros sin nombre, mientras que kwags representa un parámetro de palabra clave con una relación correspondiente.
Cabe señalar que *args debe estar antes de **kwags cuando se usa, de lo contrario, se producirán errores de sintaxis.

5. ¿Cuál es el mecanismo de recolección de basura en Python?

El mecanismo de recolección de basura (Garbage Collection), denominado GC, es un mecanismo que viene con el intérprete de Python y se usa especialmente para la recolección de basura.

Al definir una variable, se aplicará el espacio de memoria. Cuando la variable se agote, el espacio de memoria ocupado por la variable también debe liberarse, y Python será reciclado por el mecanismo GC.

No importa qué tipo de mecanismo de recolección de basura, generalmente se divide en dos etapas: detección de basura y recolección de basura.
La detección de basura es para distinguir entre memoria "reciclable" y "no reciclable" en la memoria asignada.
La recolección de basura es hacer que el sistema operativo recupere el control de los bloques de memoria reciclables identificados en la fase de detección de basura.

La llamada recolección de basura no borra directamente los datos de esta memoria, sino que vuelve a otorgar el derecho de uso al sistema operativo, para que no sea ocupada por aplicaciones.

Qué es basura
1) Cuando se llama a una variable y ya no se necesita, es basura.
2) Cuando el nombre de la variable que apunta a la dirección de la variable apunta a otra dirección, no se puede acceder a la dirección de memoria de la variable original y la variable también es basura en este momento.

6. ¿Cómo localizar elementos ocultos en selenio?

En primer lugar, selenium no puede operar elementos ocultos (pero se puede ubicar normalmente), el marco en sí está diseñado así, si tiene que operar elementos ocultos, use el método js para operar, selenium proporciona una entrada para ejecutar js scripts.
inserte la descripción de la imagen aquí
Los atributos ocultos y mostrados de los elementos están controlados principalmente por los atributos type="hidden" y style="display: none;".

7. Cierra la diferencia entre salir y cerrar en el navegador

En pocas palabras, ambos pueden realizar la función de salir de la sesión del navegador.
close solo cierra el navegador, mientras que quit cierra todos los navegadores y también elimina el proceso del controlador

8. Dé un ejemplo de las excepciones que ha encontrado


ElementNotSelectableException: el elemento no se puede seleccionar
ElementNotVisibleException
: el elemento no es visible
Visible

9. ¿Cómo lidiar con la ventana emergente de alerta?

1) Primero use el método switch_to_alert() para cambiar al cuadro emergente de alerta
2) Puede usar el método de texto para obtener la información de texto emergente
3) Haga clic en el botón de confirmación a través de accept()
4) Haga clic en el botón cancelar a través de descartar () para cancelar el cuadro emergente
5) Pasar texto () obtiene el texto de la ventana emergente

10. ¿Cómo lidiar con múltiples ventanas en Selenium?

Identificador: el identificador único de la ventana
1) Primero obtenga el identificador de la ventana actual driver.current_window_handle
2) Luego obtenga todos los identificadores de ventana driver.window_handle
3) Repita para determinar si es la ventana que desea operar, si es así, puede operar la ventana, si no, use el método driver.switch_to_window para saltar a una nueva ventana.

11. ¿Cómo juzgar si existe un elemento en el selenio?

Selenium no proporciona un método nativo para determinar si un elemento existe. Generalmente, podemos determinar mediante la localización de elementos + captura de excepciones.

inserte la descripción de la imagen aquí

12. ¿Cuáles son los tres tipos de espera en automatización? ¿Cuáles son sus características?

1) Subproceso en espera (espera forzada) como time.sleep (2): el subproceso se fuerza a dormir durante 2 segundos y, después de 2 segundos, se ejecuta el código siguiente. Se recomienda usar menos.

2) implícitalyWait (espera implícita) continuará buscando elementos dentro del rango de tiempo especificado hasta que el elemento sea encontrado o agote el tiempo de espera, la característica es que debe esperar a que cargue toda la página.

3) WebDriverWait (espera explícita) suele ser un código de función personalizado por nosotros.Este código se utiliza para esperar a que se cargue un elemento antes de continuar con la ejecución de códigos posteriores.

13. ¿Cómo asegurar la tasa de éxito de los elementos operativos en selenio? En otras palabras, ¿cómo garantizar que se pueda hacer clic en el elemento en el que se hizo clic?

1) Use WebDriverWait() para esperar explícitamente, esperar a que se cargue el elemento y luego realizar las operaciones del elemento.
2) Minimice las operaciones innecesarias: si puede acceder directamente a la página, no haga clic para acceder a ella
3) Algunas páginas tardan demasiado en cargarse, puede considerar interrumpir la carga
4) Los desarrolladores estandarizan sus hábitos de desarrollo, como agregar nombres únicos a elementos de página, id, etc.

14. ¿Cómo mejorar la velocidad de ejecución del script de selenio?

1) Usar espera explícita para reducir el uso de espera obligatoria o espera implícita.
2) Reducir los pasos de operación innecesarios.
3) Si la página carga demasiado contenido, establezca un tiempo de espera para interrumpir la carga de la página.

15. El caso de uso muchas veces es inestable durante el proceso de ejecución, es decir, puede pasar esta vez, pero no pasará la próxima ¿Cómo mejorar la estabilidad del caso de uso?

1) Intente agregar un tiempo de espera explícito antes de que aparezcan los elementos que a menudo no se detectan y realice las siguientes operaciones después de que aparezcan los elementos a operar.
2) Utilice Try para capturar y manejar excepciones.
3) Intente utilizar un entorno de prueba dedicado para evitar que se realicen otros tipos de pruebas al mismo tiempo, lo que provoca interferencias en los datos.

16. ¿Cuál es la estrategia de ejecución para su caso de uso de automatización?

La estrategia de ejecución de los casos de prueba automatizados depende del propósito de las pruebas automatizadas, por lo general existen las siguientes estrategias:

1) El caso de prueba automatizado se usa para monitorear. Para este propósito, el caso de prueba automatizado se puede configurar para que se ejecute regularmente. Si se ejecuta cada cinco minutos o una hora, simplemente cree una tarea programada en jenkins.

2) Casos de uso que tienen que retroceder. Configure el caso de prueba para desencadenar la ejecución y vincule la tarea de prueba automatizada a la tarea de compilación desarrollada en jenkins. Cuando los desarrolladores codifican en el entorno de simulación, los casos de prueba automatizados se activan para ejecutarse.

3) Casos de prueba que no necesitan ejecutarse con frecuencia. Al igual que los casos de prueba completos, no es necesario volver a ejecutar todo el tiempo, y algunas líneas de negocio no principales no necesitan volver de vez en cuando. Este tipo de caso de prueba se ejecuta manualmente, cree una tarea en jenkins y constrúyala manualmente cuando sea necesario ejecutarla.

17. ¿Qué es la integración continua?

La integración continua es una práctica de desarrollo de software en la que los miembros del equipo integran código en la línea principal con frecuencia, lo que significa que las integraciones pueden ocurrir varias veces al día.

Tiene dos beneficios principales:
1) Encuentra errores rápidamente. Cada vez que se completa una pequeña actualización, se integra en la red troncal, que puede encontrar errores rápidamente y localizar errores más fácilmente.
2) Evitar que las ramas se desvíen mucho del tronco. Si no se integra con frecuencia y la red troncal se actualiza constantemente, será más difícil de integrar en el futuro, o incluso difícil de integrar.
Propósito:
el propósito de la integración continua es permitir que los productos se iteren rápidamente mientras se mantiene una alta calidad. Su medida central es que el código debe pasar pruebas automatizadas antes de integrarse en la red troncal. Mientras un solo caso de prueba falle, no se puede integrar.

18. ¿Es necesario conectarse a la base de datos para la verificación de datos durante las pruebas automatizadas?

Requerido para la prueba de la interfaz, no requerido para la automatización de la interfaz de usuario

19. Hay varios métodos de posicionamiento de elementos comúnmente utilizados, ¿cuáles son? ¿Cual es su favorito y por qué?

8 tipos, a saber: id, nombre, nombre de clase, nombre de etiqueta, texto de enlace, texto de enlace parcial, xpath, css

El más utilizado es xpath (o CssSelector)
porque en muchos casos, los atributos de las etiquetas html no están lo suficientemente estandarizados para ubicar a través de un solo atributo. En este momento, solo se puede usar xpath para deduplicar y ubicar el único elemento.

De hecho, la ubicación más rápida es Id, porque id es único, pero la mayoría de los desarrolladores no establecen id.

20. ¿Cómo ubicar los elementos cargados dinámicamente en la página?

El cambio dinámico de atributos significa que el elemento no tiene un valor de atributo fijo, por lo que solo se puede ubicar por posición relativa, como el eje de xpath, para encontrar el nodo principal o el nodo secundario del elemento, etc.

21. Después de hacer clic en el enlace, ¿Selenium esperará automáticamente a que se cargue la página?

No lo haré.
Entonces, a veces, cuando Selenium no ha terminado de cargar una página y solicita recursos de la página, informará falsamente que este elemento no existe.
Entonces, primero deberíamos considerar juzgar si Selenium ha cargado esta página. Luego encuentra el elemento a través de la función. (Use la pantalla para esperar, espere a que se cargue la página antes de operar el elemento)

22. ¿Cuál es el principio del cliente webdriver?

Después de que se inicia Selenium, el controlador actúa como un servidor, se comunica con el cliente y el navegador, y el cliente envía solicitudes al controlador de acuerdo con el protocolo webdriver. El controlador analiza la solicitud, ejecuta la operación correspondiente en el navegador y devuelve el resultado de la ejecución al cliente.

23. ¿Cuál es el protocolo de webdriver?

El protocolo de cable WebDriver

24. ¿Qué protocolo webdriver se utiliza al iniciar el navegador?

protocolo http

25. ¿Cómo elegir una opción con valor = xx en el cuadro desplegable?

1) El método provisto en la clase de selección: select_by_value ("xxx")
2) La sintaxis de xpath también se puede ubicar

26. ¿Cuáles son los tipos de parámetros variables comunes y los tipos de parámetros inmutables en Python?

Los tipos de datos inmutables incluyen: enteros, flotantes, números negativos, booleanos, cadenas, tuplas

Los tipos de parámetros variables incluyen: diccionario, lista, colección

27. ¿Cómo resaltar elementos después de colocarlos (para fines de depuración)?

Restablezca los atributos de los elementos, agregue fondo y borde a los elementos posicionados

28. ¿Qué es una afirmación?

afirmar, para juzgar si el resultado de la prueba es consistente con el resultado esperado.
El propósito es expresar y verificar el resultado esperado del desarrollador de software: cuando el programa se ejecuta en la posición de la afirmación, la afirmación correspondiente debe ser verdadera. Si la afirmación no es verdadera, el programa abortará la ejecución y dará un mensaje de error.

29/ Durante el proceso de prueba automatizado, ¿qué problemas encontró y cómo los resolvió?

1) Cambiar la página con frecuencia requiere modificar el código en la clase de objeto de la página
2) Falsos positivos ocasionales en las pruebas automatizadas
3) Cobertura de los resultados de las pruebas automatizadas: Jenkins crea carpetas en función del tiempo 4) El mantenimiento de los códigos de prueba automatizados es
problemático5

30. Cómo simular las operaciones de avance, retroceso y actualización del navegador

driver.navigate().forward() //adelante
driver.navigate().back() //hacia atrás
driver.navigate0.efresh() //actualizar

Supongo que te gusta

Origin blog.csdn.net/m0_37794269/article/details/127638480
Recomendado
Clasificación