Preguntas de entrevista de prueba de software entrevistadas organizadas por innumerables empresas [con respuestas]

1. ¿Qué patrones de diseño se utilizan en el código de automatización?

  • patrón de diseño único

  • patrón de fábrica
  • Patrón de diseño de orden de compra
  • modelo basado en datos
  • Patrones de diseño de programación orientada a la interfaz

2. ¿Qué es una afirmación (Assert)?

  • La afirmación Assert se utiliza para verificar en el código si el resultado real cumple con el resultado esperado,
  • Si el caso de prueba no se ejecuta, se lanzará una excepción y se proporcionará un registro de aserción

3. ¿Qué son las pruebas automatizadas web?

  • Las pruebas automatizadas web son pruebas automatizadas desde el nivel de UI (interfaz de usuario),
  • Los evaluadores abren el navegador para probar la lógica empresarial del sitio web programando programas de automatización (scripts de casos de prueba).

4. ¿Qué es el selenio?

  • Selenium es un marco de prueba automatizado web de código abierto que admite múltiples lenguajes de programación para desarrollar scripts de prueba automatizados y admite pruebas de plataforma entre navegadores.

5. Escriba las interfaces o clases con las que está más familiarizado en Selenium

  • WebDriver, InternetExplorerDriver, FirefoxDriver, ChromeDriver, WebElement, WebDriverWait, Por

6. ¿Cuáles son los tipos de posicionamiento de elementos?

  La clase By tiene un total de 8 métodos de posicionamiento de elementos, todos los cuales son métodos estáticos:

  • Por.id():
  • Por nombre():
  • Por.tagName():
  • Por.className():
  • Por.cssSelector():
  • Por enlaceTexto():
  • Por parcialLinkText():
  • Por.xpath():

7. ¿Qué es XPath?

  • Es una forma de encontrar elementos de la página web, lo que equivale a una ruta en medio del dom, y se puede ubicar por ruta absoluta y ruta relativa
  • Es muy útil para definir elementos de página dinámicos, pero también debe usarse con precaución, porque si la estructura de la página cambia, es posible que la información de posicionamiento también deba cambiar.

8. ¿Cuál es la diferencia entre findElement() y findElements (métodos

  • Ambas son formas de encontrar elementos de página.
  • findElement (): encuentra un elemento de página y solo devuelve un objeto WebElement
  • findElements() : encuentra todos los elementos coincidentes en la página y devuelve una colección de elementos

9. ¿Hay alguna otra forma de hacer clic en el botón de inicio de sesión además del método de clic?

  • También puede usar el método enviar(), siempre que el tipo de elemento de entrada sea enviar

10. Cómo mejorar la velocidad de ejecución de los scripts de Selenium

  • Optimice el tiempo de espera: use la espera inteligente WebDriverWait en lugar de la espera de subprocesos para dormir y la espera implícita para implícitaWait
  • Reduzca las operaciones innecesarias: como ingresar directamente a una página determinada en lugar de ingresar a una página determinada a través de una serie de operaciones automatizadas.Si el servidor lo permite, use subprocesos múltiples para implementar la ejecución concurrente de casos de prueba.

11. Cómo automatizar la prueba de funciones que contienen códigos de verificación

  • 1) : Reconocimiento de imagen, técnicamente difícil, pobre efecto, no recomendado
  • 2): proteger el código de verificación, invitar al desarrollo y procesamiento, pero no se recomienda en el entorno de preproducción o el entorno de producción
  • 3): código de verificación universal, utilizando un código de verificación complejo que otros no pueden adivinar

12. Cómo verificar si el botón de verificación está seleccionado

  • Puede usar el método isSelected() del elemento. Si devuelve verdadero, significa que está seleccionado, de lo contrario significa que no está seleccionado

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

  • Para manejar la ventana emergente de alerta, primero debe saltar a la alerta y luego hacer clic en el botón Aceptar o Cancelar.
  • Alerta alerta = conductor.switchTo().alert(); //Cambiar a alerta
  • alerta.aceptar0;//Aceptar
  • alerta.descartar0; // cancelar

14. ¿Cómo seleccionar un elemento del menú en el menú desplegable?

  • Si el menú desplegable es una etiqueta de selección, use: selectByValue() o selectByIndex() o selectByVisibleText()
  • Si el menú desplegable no se crea a través de la etiqueta de selección, ubique el elemento directamente a través de xpath y haga clic para seleccionar

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

  • conductor.navegar().atrás()://atrás
  • conductor.navegar().adelante()://adelante
  • driver.navigate0.efresh()://actualizar

16. ¿Cómo obtener la URL de la página actual?

  • Cadena url = controlador.getCurrentUrl();

17. ¿Cuál es la diferencia entre los métodos close() y quit( de WebDriver?

  • El método close() simplemente cierra la ventana operativa actual
  • quit() cierra todas las ventanas abiertas

18. ¿Qué defectos cree que utiliza la prueba automatizada?

  • El costo es relativamente alto, pero el efecto puede no ser alto
  • Funcionalidad limitada adecuada para pruebas automatizadas
  • Algunas operaciones funcionales son relativamente complejas, como los códigos de verificación.
  • Altos costos de mantenimiento, una vez que cambian los requisitos del proyecto, se deben mejorar los scripts de prueba automatizados y los casos de uso

19. Automatización de funciones del lado web, cómo cargar archivos (carga sin entrada)

  • La interacción con la ventana de Windows se puede lograr utilizando la biblioteca pywin32.

20. Al encontrar <d1 class="inf-bar clearfix">, un control con un espacio en medio de la clase, ¿cómo ubicarlo por clase?

  • posicionamiento xpath: directo //d1 [@class="inf_bar clearfx"]
  • posicionamiento css: d1.inf_bar.clearfix

21. Automatización de Selenium, ¿cómo lidiar con iframe?

  • Use switch_to.frame para cambiar al iframe, y luego ubique los elementos en él y opere

22. Cómo cambiar el mango en la función de automatización del lado Web.

  • Obtenga todos los identificadores de ventana primero, luego use switch_to.window() para cambiar a la ventana especificada

23. Al encontrar un control con el atributo de solo lectura en la prueba, ¿qué debo hacer? Describa brevemente la idea

  • Modifique primero el atributo de cierre de solo lectura y luego opere el elemento.

Requisito: Dada una matriz que solo contiene números enteros positivos y no está vacía, devuelva los primeros N números con la mayor cantidad de repeticiones en la matriz (los resultados devueltos están en orden descendente del número de repeticiones), use un lenguaje familiar para implementar esto requisito. Escríbelo en 10 minutos

a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]


def get_datas(a):
    result = []
    data_dict = {}
    # 键值对:键:数字,值:在列表中的次数
    for item in set(a):
        data_dict[str(item)] = a.count(item)
    print(data_dict)
    # 将键值对按值(数字出现的次数)排序 ---从高到低排序
    res = sorted(data_dict.values(),reverse=True)
    for num in res:
        for key,value in data_dict.items():
            # 如果值在列表中不存在,则添加到结果列表中
            if num == value and key not in result:
                result.append(key)

    return result


a1 = get_datas(a)

Resultados de la:

25. Por ejemplo: passwd={"admin'":"123321","user1":"123456"} ¿Cumple las siguientes condiciones?

  • 1. Diseñe un programa de inicio de sesión. Los diferentes nombres de usuario y las contraseñas correspondientes se almacenan en un diccionario. Ingrese el usuario y la contraseña correctos para iniciar sesión.
  • 2. Primero ingrese el nombre de usuario, si el nombre de usuario no existe o está vacío, siempre le pedirá que ingrese el nombre de usuario correcto
  • 3. Cuando el nombre de usuario sea correcto, se le solicitará que ingrese la contraseña. Si la contraseña no corresponde al nombre de usuario, se le solicitará que la contraseña sea incorrecta, vuelva a ingresarla.
  • 4. Si se ingresa la contraseña incorrecta más de tres veces, el programa se interrumpirá.
  • 5. Cuando se ingresa la contraseña incorrecta, todavía hay varias posibilidades de que se le solicite
  • 6. Cuando tanto el nombre de usuario como la contraseña se ingresen con éxito, se le indicará que el inicio de sesión fue exitoso.

usuarios = {"admin": "123456", "usuario1": "123456"} 
recuento = 0 


def inicio de sesión (): recuento 
    global 
    nombre de usuario = entrada ("Ingrese nombre de usuario:") 
    si nombre de usuario == Ninguno o nombre de usuario == " ": 
        login() 
    si el nombre de usuario no está en users.keys(): 
        print("La entrada del nombre de usuario es incorrecta, vuelva a ingresar el nombre de usuario:") 
        login() 

    while (count < 3): 
        passwd = input("Por favor ingrese Contraseña: ") 
        if passwd == usuarios[nombre de usuario]: 
            print("Inicio de sesión exitoso!!") 
            count = 3 
        else: 
            count += 1 
            print("Se ingresó una contraseña incorrecta, tiene {0} posibilidades".format (3 - contar)) 


iniciar sesión()

26. Escribe un programa:---No entiendo

1. Puede buscar archivos cuyos nombres de archivo contengan cadenas específicas en el directorio actual y todos los subdirectorios del directorio actual;

2 e imprima la ruta relativa.

import os 

paths = [] 


def get_paths(dir,related_dir=Ninguno, search_str=Ninguno): 
    rutas globales 
    if search_str == Ninguno: 
        devuelve os.listdir(dir) 

    para el elemento en os.listdir(dir): 
        ifrelated_dir == Ninguno : 
            related_dir == os.curdir 

        if os.path.isfile(os.path.join(dir, item)): 
            if item.find(search_str) != -1: 
                paths.append(os.path.join(relate_dir, item)) 
        elif os.path.isdir(os.path.join(dir, item)): 
            rutas = get_paths(os.path.join(dir, item), os.path.join(relate_dir, item), search_str) 

    rutas de retorno 


dir = os.getcwd() 
search_str = "diversión" 
print(get_paths(dir, search_str=search_str))

27. Escriba el resultado de ejecución del siguiente código

def f(str1, *args, **kwargs): 
    print(str1, args, kwargs) 


l = [1, 2, 3] 
t = [4, 5, 6] 
d = {"a": 7, "b ": 8, "c": 9} 

f(1, 2) 
f(1, 2, 3, "pitón") 
f("pitón", l, d) 
f("pitón", *t) 
f(" pitón", *l, **d) 
f("pitón", q="ganar", **d)

Resultados de la:

1 (2,) {} 
1 (2, 3, 'pitón') {} 
pitón ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) { } 
pitón (4, 5, 6) {} 
pitón (1, 2, 3) {'a': 7, 'b': 8, 'c': 9} 
pitón () {'q': 'ganar', 'a': 7, 'b': 8, 'c': 9}

28. Escriba el resultado de ejecución del siguiente código

importar copiar 

a = [1, 2, 3, 4, ["a", "b"]] b 
= a 
c = copiar.copiar(a) 
d = copiar.copiar(a) 
a.append(5) 
a[ 4].append("c") 

# Complete el contenido de salida de acuerdo con las reglas anteriores 
print('a=', b) 
print('b=', b) 
print('c=', c) 
print( 'd=', d)

Resultados de la:

a= [1, 2, 3, 4, ['a', 'b', 'c'], 5] b= 
[1, 2, 3, 4, ['a', 'b', 'c' ], 5] 
c= [1, 2, 3, 4, ['a', 'b', 'c']] d= [ 
1, 2, 3, 4, ['a', 'b', ' C']]

29. Fusione dos listas de igual longitud en un diccionario, solicite: fusionar en {'A': 1, 'B': 2, 'C': 3}, utilice una línea de código para lograr

claves = ["A", "B", "C"] 
valores = ["1", "2", "3"] 
print(dict(zip(claves, [int(x) para x en valores])) )

30. Combinar dos listas y eliminar valores duplicados

lista_1 = ["a", "b", "c", "1", "A", "ganador"] lista_2 = [ 
"a", "python", "cadena"] 
print(set(lista_1 + lista_2) ) 
# 执行结果:{'c', 'ganador', '1', 'cadena', 'b', 'a', 'python', 'A'}

31. Dada una lista, ordenar la lista de mayor a menor según x en el diccionario

a = [{"x": 1, "y": 2}, {"x": 2, "y": 3}, {"x": 3, "y": 4}] aa1 = ordenado( 
a , clave=elemento lambda: elemento["x"], reverso=Verdadero) 
print(aa1) 
# 执行结果:[{'x': 3, 'y': 4}, {'x': 2, 'y' : 3}, {'x': 1, 'y': 2}]

32. Cuál es la estructura básica de Html, cómo dibujar una tabla 2X2

<html> 
<head> 
<title>两行量列的表格</title> 
-<head> 
<body> 
<tatle width="200" border="1"> 
<tr><td> </td> 
< td> </td> 
-</tr> 
<td> </td> 
<td> </td> 
-</tr> 
-</table> 
-</body> 

</html>

33. Escribir una declaración para imprimir "vamos", dijo

print("\"vamos\", dijo ella")

34. Escriba un fragmento de código para generar aleatoriamente 10 números y escríbalos en el archivo

import random 

fs = open("num.txt", "a") 
list1 = [] 
for index in range(10): 
    num = random.randint(0, 10) 
    list1.append(str(num)) 

print(list1 ) 
fs.escribir(",".unirse(lista1)) 
fs.cerrar()

Resultados de la:

35. Escriba los resultados de la ejecución del código por separado

a = 1 


def fun(a): 
    a = 2 


fun(a) 
print(a) 
# Resultado de la ejecución: 1

===============

b = [] 


def fun(b): 
    b.append(1) 


fun(b) 
print(b) 

resultado de ejecución: [1]

36. ¿Cuáles son las categorías de pruebas automatizadas: AB

  • A, automatización de la interfaz de usuario
  • B, interfaz de automatización
  • C. Automatización web
  • D, automatización de terminales

37. ¿Qué es una sesión?

  • La llamada sesión es sesión, y la sesión es una tecnología de caché de servidor, creada por el lado del servidor,
  • Cuando el usuario inicia sesión en el sistema, la información del usuario que inició sesión generalmente se guarda en el objeto de la sesión y luego se devuelve la identificación (JSESSIONID) correspondiente a la sesión.
  • Por lo tanto, la mayoría de los sistemas utilizarán el mecanismo de sesión para lograr la autenticación. La sesión guarda los datos en forma de clave-valor.

38. ¿Qué es una ficha?

  • El llamado token es en realidad una cadena devuelta por el servidor (una cadena similar a: xys73494954sdhcdr83435). El algoritmo en el que se basan estos datos debe ser confirmado por el desarrollador. Generalmente, estos datos son únicos y el token devuelto por el servidor será diferente cada vez.

La razón por la cual Token se puede usar para la autenticación es la siguiente:

  • El usuario a llama a la interfaz de inicio de sesión --- "inició sesión en el sistema b ---" el servidor genera una información de token única (se supone que es c),
  • Luego se realizará una asignación con el número de identificación del usuario (se supone que es d): c - d,
  • Luego almacene dicha relación de mapeo en un caché como una base de datos o redis,
  • Luego devuelva este token al cliente --- "Cuando el cliente llama a otras interfaces que requieren autenticación,
  • Solo necesita llevar el token almacenado en caché a la verificación: "El servidor verifica si hay información de inicio de sesión del usuario en función del token para determinar si la solicitud es un usuario autorizado que inició sesión. (Aquí, cómo el cliente obtiene el token, cómo guardarlo y cómo recuperarlo cuando lo solicite nuevamente, la parte de autenticación de la interfaz se explicó anteriormente).

39. Usted hace la automatización de la interfaz, qué base de datos se usa para el proyecto y qué se usa para operar esta base de datos

  • Mysql, puede usar jdbc para implementar operaciones como agregar, eliminar, verificar y modificar la base de datos.

40. ¿Alguna vez ha utilizado un marco de prueba unitaria, qué marco es y qué anotaciones comunes hay?

  • Usado, junit (si no está familiarizado con él), testng, estos marcos de prueba nos ayudan a definir suites de prueba para administrar nuestro código de caso de prueba, y algunas anotaciones enriquecidas proporcionadas por estos marcos de prueba no solo son muy convenientes Controlar la secuencia de ejecución de casos de prueba para controlar todo el proceso de prueba, y también brindar soporte para la realización de varios escenarios de prueba.

Anotaciones comunes:

  • @Test , usado para marcar métodos de prueba
  • @BeforeSuite, adecuado para la inicialización global de la suite, ejecutado antes de que se ejecute toda la suite
  • @BeforeTest, adecuado para la inicialización del conjunto de pruebas Test, ejecutado antes de que se ejecute el conjunto de pruebas
  • @BeforeClass, adecuado para la inicialización de la clase de prueba Class, ejecutada cuando se llama a la clase de prueba
  • @BeforeMethod, adecuado para la inicialización antes de que se ejecute el método de prueba y ejecutado antes del método de prueba
  • @After... , en comparación con la respuesta anterior, la secuencia de ejecución es exactamente la opuesta a la anterior, y la función es adecuada para reciclar recursos.
  • @Parameters: anotaciones parametrizadas para facilitar la parametrización
  • @DataProvider: proveedor de datos, que se puede utilizar para proporcionar datos de prueba por lotes para realizar pruebas

41. Hable sobre su comprensión de la interfaz

  • Una interfaz es un servicio, una implementación de un punto de función, un canal para la transmisión de datos y una implementación del lado del servidor de un determinado protocolo (como el protocolo http...) y un mecanismo de mapeo (al acceder a una urlI, se analizará a través del mecanismo de procesamiento de mapeo del lado del servidor, cayendo en la función de procesamiento correspondiente), los parámetros de la interfaz son los parámetros de la función, y los datos de respuesta de la interfaz son el valor de retorno de la función.

41. ¿Alguna vez ha realizado una prueba de interfaz y con qué herramientas está familiarizado?

  • Lo ha hecho (incluso si no ha usado una herramienta visual para hacer pruebas de interfaz antes, pero ha aprendido a probar la automatización de la interfaz ahora que tiene experiencia).

Herramientas conocidas:

  • Herramientas de visualización como: jmeter, postman, soapui, etc. (diga las que ha utilizado)
  • Código: Httpclient envía paquetes para implementar pruebas de interfaz.

42. La herramienta ya puede completar pruebas automatizadas, ¿por qué usar código para completarla? 

  • Las herramientas para pruebas automatizadas dependen y tienen limitaciones. Algunas herramientas proporcionan métodos y expresiones de aserción, pero el costo de comenzar es alto, y es posible que las expresiones de aserción existentes que se han proporcionado no cumplan con la validación de datos de algunas reglas especiales, mientras que el código Es bastante más flexible y el método de aserción se puede diseñar de acuerdo con sus propias ideas.

43. Hable brevemente sobre la diferencia entre los dos métodos de solicitud de obtener y publicar.

Conseguir :

  • a. En general, la solicitud para obtener datos del servidor se puede configurar en el método de obtención
  • b. Al pasar parámetros en el método Get, los parámetros generalmente se empalman directamente en la URL (por ejemplo: http://xxx?id=1&type=2)
  • c. La cantidad de datos de parámetros que puede pasar el método de solicitud Get es limitada (porque los parámetros generales están empalmados en la URL y el navegador tiene restricciones en la longitud de la URL)
  • d. La solicitud de obtención no es tan segura como la publicación (relativamente) porque los datos se empalman directamente en la URL, pero la eficiencia de ejecución de la obtención es más rápida que la publicación.

Correo :

  • a. En general, la solicitud para enviar datos al servidor se establecerá en modo de publicación
  • b. El método de publicación para pasar parámetros generalmente coloca los parámetros en el cuerpo de la solicitud en lugar de concatenarlos en la URL
  • c. La cantidad de datos que se pueden enviar mediante el método de solicitud posterior no está limitada
  • d. El paso de parámetros de solicitud de publicación es más seguro que obtener (relativamente no absoluto), pero la eficiencia de ejecución de la publicación no es tan buena como la de obtener.

44. Describa brevemente los métodos de espera diferida que conoce

Espera forzada:

  • También llamada espera de subprocesos, la espera se completa con la suspensión de subprocesos, como esperar 5 segundos: Suspensión de subprocesos (5000),

Espera implícita:

  • Espera retrasada completada por espera implícita, tenga en cuenta que esta es una espera para la configuración global, como establecer el tiempo de espera en 10 segundos, después de usar espera implícita, si el elemento no se encuentra por primera vez, continuará ciclando dentro de 10 segundos para elemento de búsqueda, si no se encuentra durante más de 10 segundos, se lanza una excepción

Espera explícitamente:

  • También conocido como espera inteligente, el tiempo de espera especificado se especifica para la ubicación del elemento especificado, y el elemento se busca dentro del rango de tiempo especificado. Si se encuentra el elemento, regresará directamente. Si el elemento no se encuentra dentro del tiempo de espera, se lanzará una excepción.

45. ¿Cuál es la salida?

def f(x, l=[]): 
    for i in range(x): 
        l.append(i * i) 
        print(l) 
f(2) 
f(3, [3, 2, 1]) 
f(3 )

结果:
[0] 
[0, 1] 
[3, 2, 1, 0] 
[3, 2, 1, 0, 1] 
[3, 2, 1, 0, 1, 4] 
[0, 1, 0 ] 
[0, 1, 0, 1] 
[0, 1, 0, 1, 4]

46. ​​¿Cómo automatizas la interfaz?

  • Respuesta de referencia: los casos de uso de la interfaz se diseñarán de acuerdo con el documento de la interfaz, y luego la solicitud de la interfaz se realizará mediante el uso de la biblioteca de solicitudes de python, y los datos de prueba serán administrados por Excel. Y use el marco de prueba unittest en el código para realizar el procesamiento de aserción del caso de uso de la interfaz.

47. ¿Cómo usar webdriver para realizar la operación de hacer clic con el botón derecho del mouse?

Usando la clase ActionChains

ac= cadenas de acción (controlador);

ac.context_click(elemento objeto).perform()

48. Cuando escribes el marco de automatización, ¿dónde guardas los casos de prueba?, ¿qué usas para leerlos?

  • Guarde el caso de prueba en Excel y use la biblioteca de terceros openpyxI para completar la operación en Excel

49. Escribe una pieza de código en python, calcula el número entero divisible por 7 dentro de 1-1000, divide por 5 y deja 3, e imprímelo por línea

for i in range(1, 1000): 
    if i % 7 == 0 and i % 5 ==3: 
        print(i) 


resultado de ejecución: 
28 
63 
98 
133 
168 
........

50. Xiao Ming tiene 100 yuanes. Quiere comprar 100 libros. Los libros en inglés cuestan 5 yuanes, los libros de matemáticas cuestan 3 yuanes y los libros en chino cuestan 0,5 yuanes. ¿De cuántas maneras puede comprar? Resuelva este problema mediante programación, puede usar cualquier lenguaje de programación, incluidos los pseudolenguajes.

De acuerdo con el significado de la pregunta, desea comprar cien libros, cien yuanes, vea de cuántas maneras comprarlo (no tiene que gastar todo el dinero, siempre que pueda comprar cien libros):

Los precios de los tres libros son: 5, 3, 0,5, por lo que lo máximo que puedes comprar son 20 libros de matemáticas, 33 libros de inglés y 200 libros de chino. Pero también hay un método de compra combinado, por lo que se puede realizar a través de un bucle for triple. ijk representa el número de libros de matemáticas, inglés y chino comprados respectivamente. Las condiciones del bucle son i<=20, j<=33, k <=200, entonces Mientras i+j+k == 100, 5*i+3*j+0.5*k<= 100 es suficiente. El recuento final de todas las combinaciones es el número de métodos de compra.

n = 0 
para i en el rango (21): 
    para j en el rango (34): 
        para k en el rango (201): 
            si 5 * i + 3 * j + k * 0.5 <= 100 y i + j + k == 100: 
                n += 1 
imprimir(n)

51. ¿Cómo enviar el error después de usar la prueba del mono?

  • Cuando monkey pruebe la aplicación, usaremos adb shell monkey-p nombre del paquete -f script -VV -v >D:log.txt para enviar el registro al local y tomar una captura de pantalla del registro cuando ocurra un error, y tome una captura de pantalla del registro y la descripción del error se envía a ZenTao y se asigna al desarrollo correspondiente. Pero antes de enviar el error, el error se reproducirá manualmente.

52. Si desea crear un hipervínculo en una página HTML, ¿qué método existe?

  • Hipervínculo: <a href="url" target=". blank">contenido</a>
  • target="_ blank" se abre en una nueva ventana.
  • Enlace de salto JS: <a href="#" οnclick="javascript:ubicación.href='URL";">contenido</a>
  • Enlace de salto de metaetiqueta: <meta http-equiv="refresh" content="3;URL = URL">
    • (Número 3 es segundos)  

53. ¿Cuál de las siguientes afirmaciones sobre pruebas automatizadas es incorrecta? (ABCD)

A. Las pruebas automatizadas pueden reemplazar completamente las pruebas manuales

B. Las pruebas automatizadas pueden reducir en gran medida la carga de trabajo del equipo de pruebas.

C. Las pruebas de rendimiento no se pueden automatizar

D. Las pruebas automatizadas pueden encontrar una gran cantidad de defectos nuevos

¿Cómo pasa una función personalizada en Python parámetros dinámicos?

  • Los parámetros usan *args o *kwargs

55. ¿Qué es una función lambda?, ¿cuáles son sus beneficios?

  • función lambda: sin nombre de función, es una función anónima.
  • Ventajas: solo haga cálculos simples, reciba cualquier parámetro múltiple y devuelva valores, sin cuerpos de funciones complejos. Se puede usar como una función de devolución de llamada y pasar a algunas aplicaciones, como el procesamiento de mensajes.

56. ¿Cómo llama la subclase al constructor de la clase padre en el lenguaje Python?

  • Si la subclase no define un constructor, la subclase llamará al constructor de la clase padre por defecto;
  • Si la subclase define un constructor, entonces en el constructor de la subclase, llame al constructor de la clase principal: En python3, use super()._ _init_ _()

57. Se sabe que L = ["a", "b", "c", "d", "e", "f", "g"], entonces el valor de L[3] es _ L[ ::5 ] es __L[::2] es _

L = ["a", "b", "c", "d", "e", "F", "g"] imprimir( 

L[3]) 
imprimir(L[::5]) 
imprimir(L [::2])

执行结果:
d 
['a', 'F'] 
['a', 'c', 'e', ​​'g']

58. Dada la lista x=[1, 2], entonces el valor de la expresión list(enumerate(x))

x = [1, 2] 
a1 = lista (enumerar (x)) 
imprimir (a1) 
# Resultado de la ejecución: [(0, 1), (1, 2)]

59. La función incorporada de python para verificar el tipo de variable es type

60. La función de python para ver la dirección de memoria variable es id

61. La expresión suma(rango(1, 10, 2)) da como resultado 25

print(sum(range(1, 10, 2))) # Tomar una suma de dos bits cada uno: 1,3,5,7,9 
# Resultado de la ejecución: 25

62. La secuencia ordenada de Python es: lista, tupla, carácter

Xiao Feifei compra muchas botellas, y cada par de botellas tendrá el mismo número. Xiao Feifei contó sus botellas y descubrió que la cantidad de botellas era un número impar N, es decir, había una botella no emparejada. Ahora Xiao Feifei va a comprar una nueva botella. ¿Puedo preguntar qué número necesita marcar en la nueva botella para que todas las botellas coincidan? Por ejemplo, tiene siete botellas (N=7), entonces las etiquetas pueden ser: 1, 6, 13, 1, 6, 13, 13

Luego la nueva botella quedará marcada como 13, después de sumar quedarán (1, 1), (6, 6), (13, 13), (13, 13) estos 4 pares

Entrada: un número entero positivo N (1<=N<=1000) en la primera línea de los datos de prueba indica que hay N números, y se garantiza que N es un número impar, y la segunda línea tiene N números naturales, cada uno de los cuales es menos de 10^9

Salida: salida de un número entero en una línea, el número de la nueva botella

Ejemplo:

  • ingresar:
  • 9
  • 121233441
  • Salida: 1

def func(n, data): 
    if 0 <= n <= 1000 and n % 2 == 1 and len(data) == n: 
        for i in data: 
            if 0 < i < (10 ** 9): 
                if data.count(i) % 2 != 0: 
                    return i 
                else: 
                    print("El número de la botella es un número natural y menor que 10^9") 
    else: 
        print("El parámetro pasado es incorrecto") 


res = func( 7, [1, 6, 1, 6, 13, 13, 13]) 
imprimir(res)

63. Escriba una función en python para generar los caracteres de subcadena dados en una cadena de menor a mayor, y la posición del primer carácter es 0

  • Tales como: myOrder(abejykhsesm',2,5)
  • Salida: ehjky

def my_order(s, start, len): 
    # Primera rebanada 
    s = s[start:start + len] 
    # Conversión obligatoria a una lista 
    li = list(s) 
    # Ordenar 
    li.sort() 
    # Empalmar en una cadena 
    res = " ".join(li) 
    print("El resultado de salida es: ", res) 


my_order("abcedfgh", 2, 4) 

El resultado es: cdef

64. Para la matriz de enteros de entrada, genere el valor máximo, la cantidad de valores máximos, el valor mínimo y la cantidad de valores mínimos en los elementos de la matriz

Nombre de la función: max_ y_ min(lista)

Parámetro de entrada: enumerar matriz de enteros

Salida: matriz de enteros de lista, con cuatro valores, que representan respectivamente el valor máximo, el número de valores máximos, el valor mínimo y el número de valores mínimos

  • Ejemplo: max y.min([1,4,21,5,6,1,1]) => [21,1,1,3]
  • max_ y. min(1]) => [1,1,1,1]

def max_and_min(a): 
    b = sorted(a, reverse=True) 
    max = b[0] 
    max_num = b.count(max) 
    min = b[-1] 
    min_num = b.count(min) 
    return [max, max_num , min, min_num] 


a = [5, 5, 5, 4, 3, 2, 2] 
print(max_and_min(a)) 
# 执行结果:[5, 3, 2, 2]

65. Rellene la cadena a la derecha, rellene str a src de acuerdo con la longitud de len

Nombre de la función: rpad(src,len,str)

Parámetros de entrada: cadena original src, longitud de cadena de destino de len, cadena utilizada para completar la cadena

Salida: la cadena acolchada

Ejemplo:

  • rpad ("abcd", 10, "12") => "abcd121212"
  • rpad ("abcd", 11, "12") => "abcd1212121"
  • rpad ("abcd", 10, "12") => "abcd121212"
  • rpad("abd",12,"0") =>*"bd0000000"
  • rpad ("abcd",12, ") =>"abcd

66. ¿Cómo se pueden realizar pruebas automatizadas para los productos presentados en la web? Hable sobre su pensamiento y dirección.

referencia:

  • Las pruebas automatizadas en el lado web básicamente simulan probadores manuales para realizar pruebas funcionales.
  • Reemplace las operaciones humanas con la ejecución automática de máquinas.
  • Hay dos direcciones para la prueba automatizada de productos presentados en la web: la capa de interfaz y la capa de operación de interfaz, y la relación de automatización de la capa de interfaz es mayor que la de la capa de operación de interfaz.
  • Y realiza principalmente pruebas automatizadas de las funciones estables del producto, que se utiliza principalmente para pruebas de humo y pruebas de regresión de las funciones principales del producto.
  • Comience con las funciones más básicas del sistema y luego extiéndalas lentamente según la situación.

67. Describa la idea de realizar pruebas automatizadas de simulación de inicio de sesión de usuario

referencia:

Ideas de prueba automatizadas basadas en el inicio de sesión del usuario:

  • Use python+selenium framework para escribir todos los casos de prueba para iniciar sesión,
  • Use el marco unittest para organizar casos de prueba.
  • Utilice Htmltestrunner para crear una versión html del informe de prueba y utilice el módulo de correo para enviar el informe de prueba al personal pertinente del equipo del proyecto.

Finalmente: 【Espero que mis materiales de autoaprendizaje anteriores puedan ayudarlo】

Si es necesario, puede pedirme que lo ayude a revisar su currículum, y mis amigos a quienes reconozco también pueden ayudarlo con referencias internas. Gracias a todos los que leyeron mi artículo detenidamente, observaron el aumento de los fanáticos y lo siguieron todo el tiempo, cómo descubrir qué está mal con el editor o tener mejores sugerencias, ¡espero que todos dejen un mensaje activamente en el área de comentarios! ! ! [Hermanos, las preguntas de la entrevista no son fáciles de publicar, si lo desea, simplemente haga clic en la tarjeta pequeña a continuación]

Supongo que te gusta

Origin blog.csdn.net/xiao1542/article/details/131945920
Recomendado
Clasificación