Un ingeniero de pruebas sénior me hizo estas preguntas tan pronto como llegó a la entrevista.

Como ingeniero de pruebas que ha estado trabajando durante 10 años, también me mudé a varias grandes empresas de Internet. Aunque me falta algo de estabilidad, también he acumulado algo de experiencia en entrevistas. Compartiré algo con ustedes. Entonces se trata principalmente de algunos resúmenes para ingenieros de pruebas. Para otros tipos de trabajos, puedo resumir algunas habilidades de entrevista en otros artículos. Este artículo se centrará en la experiencia de los ingenieros de pruebas.

El enfoque de la entrevista de la prueba se divide en dos partes: tecnología, proyecto

Para ampliar: algunos puntos de atención técnica, algunos métodos de manejo en el proyecto (algunos también tendrán algunas habilidades de comunicación), pueden no estar escritos en detalle, pero los señalaré y continuaré agregándolos más adelante (casi 30,000- palabra de advertencia de texto largo, con la esperanza de ayudar a los amigos técnicos)

Luego vaya directamente a los productos, con la esperanza de ayudar a todos en la industria a encontrar un trabajo satisfactorio, ¡animémonos unos a otros! 

1. Método de prueba de caja negra (puede preguntar sobre la clasificación de las clases de equivalencia, las clases de equivalencia y los valores límite son los más importantes)

1. División de clases de equivalencia:

Clase de equivalencia efectiva: para la especificación del programa, es un conjunto razonable y significativo de datos de entrada

Clase de equivalencia no válida: para la especificación del programa, es un conjunto de datos de entrada irrazonable y sin sentido

2. Método de análisis de valor límite

3. Método gráfico de causa y efecto

4. Método de diseño experimental ortogonal

5. Método de análisis del diagrama de funciones

6. Error de cálculo

7. Método de conversión de documentos de requisitos

8. Prueba aleatoria

9. Método de análisis de atributos de objetos

2. Método de prueba de caja blanca (puede memorizar selectivamente... no sé si preguntará)

1. Cobertura de declaraciones: Consiste en diseñar varios casos de prueba y ejecutar el programa bajo prueba para que cada declaración ejecutable se ejecute al menos una vez.

2. Cobertura de decisión: Hacer que el caso de prueba diseñado garantice que cada rama de valor de cada juicio en el programa se experimente al menos una vez.

3. Cobertura condicional: la cobertura condicional se refiere a seleccionar suficientes casos de prueba para que cuando se ejecuten estos casos de prueba, todos los resultados posibles de cada condición en la decisión aparezcan al menos una vez, pero es posible que no cubran todas las ramas.

4. Cobertura de condición de juicio: La cobertura de condición de juicio consiste en diseñar suficientes casos de prueba para que todos los valores posibles de cada condición en el juicio se ejecuten al menos una vez y, al mismo tiempo, se ejecuten todos los resultados de juicio posibles de cada juicio. al menos una vez, es decir, se requieren todos los juicios Las posibles combinaciones de valores condicionales se ejecutan al menos una vez.

5. Cobertura de combinación condicional: en el método de prueba de caja blanca, seleccione suficientes casos de prueba para que todas las combinaciones de los resultados del juicio de cada condición aparezcan al menos una vez en todos los juicios, y el cumplimiento de este estándar de cobertura se convierte en cobertura de combinación condicional.

6. Cobertura de ruta: cada posible ruta de ejecución se ejecuta al menos una vez.

Reponer:

(1) La cobertura de declaración es la cobertura más débil entre todos los métodos de prueba.

(2) La cobertura de decisión y la cobertura de condición son más sólidas que la cobertura de sentencia, y los casos de prueba que cumplen con los criterios de cobertura de decisión/condición también deben cumplir con la cobertura de decisión, la cobertura de condición y la cobertura de sentencia.

(3) La cobertura de ruta también es una cobertura relativamente fuerte, pero no necesariamente considera la combinación de resultados de condiciones de juicio y no puede reemplazar la cobertura de condiciones y la cobertura de combinación de condiciones.

3. Protocolo en capas TCP/IP (se debe prestar atención al protocolo de cada capa)

1. Capa de enlace (capa de enlace de datos/capa de interfaz de red): incluido el controlador del dispositivo en el sistema operativo y la tarjeta de interfaz de red correspondiente en la computadora

2. Capa de red (capa de Internet): maneja las actividades de los paquetes en la red, como el enrutamiento de paquetes.

3. Capa de transporte: proporciona principalmente comunicación de extremo a extremo para aplicaciones en dos hosts.

4. Capa de aplicación: responsable de manejar los detalles específicos de la aplicación.

Cuarto, la diferencia entre TCP y UDP (puntos de conocimiento en la red)

1. TCP está orientado a la conexión (por ejemplo, debe marcar para establecer una conexión antes de realizar una llamada), UDP no tiene conexión, es decir, no es necesario establecer una conexión antes de enviar datos

2. TCP brinda servicios confiables. Es decir, los datos transmitidos a través de la conexión TCP están libres de errores, no se pierden, no se repiten y llegan en orden; UDP hace todo lo posible por entregar, es decir, no garantiza una entrega confiable.

3. TCP está orientado a bytes De hecho, TCP considera los datos como una serie de flujos de bytes no estructurados, mientras que UDP está orientado a paquetes.

UDP no tiene control de congestión, por lo que la congestión de la red no reducirá la tasa de envío del host de origen (útil para aplicaciones en tiempo real, como telefonía IP, videoconferencia en tiempo real, etc.)

4. Cada conexión TCP solo puede ser punto a punto; UDP admite comunicaciones interactivas uno a uno, uno a muchos, muchos a uno y muchos a muchos

5. La sobrecarga de encabezado de TCP es de 20 bytes, la sobrecarga de encabezado de UDP es pequeña, solo 8 bytes

6. El canal de comunicación lógica de TCP es un canal confiable de dúplex completo, mientras que UDP es un canal no confiable

5. Protocolo de enlace TCP/IP de tres vías y protocolo de enlace de cuatro vías (preguntas frecuentes)

Primer apretón de manos (SYN=1, seq=x)

El cliente envía un paquete TCP con el indicador SYN establecido en 1, que indica el puerto del servidor al que el cliente intenta conectarse y el número de secuencia inicial X, que se almacena en el campo Número de secuencia del encabezado del paquete.

El segundo apretón de manos (SYN=1, ACK=1, seq=y, ACKnum=x+1)

El servidor devuelve un paquete de reconocimiento (ACK) en respuesta. Es decir, tanto el indicador SYN como el indicador ACK son 1. El lado del servidor elige su propio número de serie ISN, lo coloca en el campo seq y establece el Número de reconocimiento (Reconocimiento Número) como el ISN del cliente más 1, es decir, X+1. Después del envío, el servidor ingresa al estado SYN_RCVD.

El tercer apretón de manos (ACK=1, ACKnum=y+1)

El cliente envía un paquete de reconocimiento (ACK) nuevamente, el indicador SYN es 0, el indicador ACK es 1 y el campo de número de secuencia del ACK enviado por el servidor + 1 se envía a la otra parte en el campo de confirmación, y el ISN está escrito en el segmento de datos +1 para eso.

Después del envío, el cliente entra en el estado ESTABLECIDO. Cuando el servidor recibe este paquete, también entra en el estado ESTABLECIDO. El protocolo de enlace TCP finaliza y se establece la conexión TCP.

Mi entendimiento....:

A le pregunta a B: ¿Escuchaste eso? Envía un mensaje de confirmación.

B responde A: Lo escuché, dile a A que puede recibir el mensaje de A

A regresa a B: puedo recibir su mensaje, enviar otra confirmación y luego establecer una conexión

Cuatro olas:

primera onda (fin=1, seq=x)

Suponiendo que el cliente desea cerrar la conexión, el cliente envía un paquete con el indicador FIN establecido en 1, lo que indica que no tiene datos para enviar, pero aún puede recibir datos.

Después del envío, el cliente ingresa al estado FIN_WAIT_1.

La segunda ola (ACK=1, ACKnum=x+1)

El servidor confirma el paquete FIN del cliente y envía un paquete de confirmación, indicando que ha recibido la solicitud del cliente para cerrar la conexión, pero aún no está listo para cerrar la conexión.

Después del envío, el servidor ingresa al estado CLOSE_WAIT y el cliente ingresa al estado FIN_WAIT_2 después de recibir el paquete de confirmación, esperando que el servidor cierre la conexión.

La tercera ola (FIN=1, seq=y)

Cuando el servidor está listo para cerrar la conexión, envía una solicitud de finalización de conexión al cliente y FIN se establece en 1.

Después de enviar, el servidor entra en el estado LAST_ACK, esperando el último ACK del cliente

La cuarta ola (ACK=1, ACKnum=y+1)

El cliente recibe una solicitud de cierre del servidor, envía un paquete de confirmación y entra en el estado TIME_WAIT, esperando que se retransmitan posibles paquetes ACK.

Después de recibir el paquete de confirmación, el servidor cierra la conexión y pasa al estado CERRADO.

Después de esperar un cierto tiempo fijo (dos ciclos de vida máximos de segmento, 2MSL, 2Vida máxima de segmento), el cliente no recibe el ACK del servidor, pensando que el servidor ha cerrado la conexión normalmente, por lo que cierra la conexión y entra el estado CERRADO.

¿Por qué tres veces, no dos o cuatro (esta pregunta realmente podría hacerse)

El apretón de manos de dos vías no garantiza la confiabilidad (B no está seguro de que A pueda recibir su propia información), y el apretón de manos de cuatro vías desperdicia eficiencia

6. DNS (que se ejecuta en el protocolo UDP, puerto 53)

Concepto: dns es un sistema de nombres de dominio, una base de datos distribuida que asigna nombres de dominio y direcciones IP en la World Wide Web, lo que permite a los usuarios acceder a Internet de manera más conveniente sin tener que recordar números de IP que las máquinas pueden leer directamente

7. TestNG (lo he usado yo mismo, puede echarle un vistazo si está interesado) método de paso de parámetros testng (parámetro en testng.xml o a través del proveedor de datos)

Método de operación: 1.Ejecutar como 2.testng.xml

Ejecutar en orden: preserve-order=true

Ignorar pruebas: @Test(enable=false)

Prueba de grupo: @Prueba(grupos=..)

Prueba de dependencia: @Test(dependsonmethods=...)

El resultado está en oup-put, el nivel de registro es detallado

Casos de uso de ejecución simultánea: paralelo = métodos

Ocho, appium (puedes entenderlo un poco, es similar a selenium, y creo que algunos puntos son similares a la automatización de la interfaz de usuario)

Características:

1. Vista web híbrida nativa multiplataforma (H5)

2. Dispositivo cruzado, Android iOS

3. Aplicación cruzada, puede interactuar entre múltiples aplicaciones

4. No confíe en el código fuente abierto de la aplicación (opinión reservada, el soporte de Android Uiautomator para H5 requiere soporte de código, que no se explicará aquí)

5. Admite Selenium WebDriver/Selenium Grid

6. Idiomas cruzados, java python ruby ​​​​nodejs

7. Principio de código abierto: Android

Nueve, comandos comunes de Linux (creo que es más probable que pregunte más)

cd: cambiar directorio

Directorio actual y directorio principal: ./ ../

Directorio de inicio: ~/

Ver la ruta actual: pwd

Borrar pantalla: claro

Salga del comando actual: ctrl+c para salir por completo

Enlace suave: ln -s fuente de enlace

Encuentra la información del terminal donde estás: quién soy

Ver quién está utilizando actualmente este host: quién

ls -l (o directamente ll): enumera cadenas de datos largas, incluidos atributos de archivo y datos de permisos, etc.

ls -a: enumera todos los archivos, junto con los archivos ocultos (archivos que comienzan con .) (comúnmente utilizado)

find -name filename: encuentra un nombre de archivo coincidente

mkdir: crea un directorio con el nombre especificado

cp -a archivo1 archivo2: copia archivo1 a archivo2 junto con todas las características del archivo

cp archivo1 archivo2 archivo3 dir: copiar archivos archivo1, archivo2, archivo3 al directorio dir

mv file1 file2 file3 dir : Mover archivos file1, file2, file3 al directorio dir

mv archivo1 archivo2: cambie el nombre del archivo archivo1 a archivo2

rm -fr dir : Elimina a la fuerza todos los archivos en el directorio dir

ps -ef|grep java: Encuentra todos los procesos java

matar -9 número de proceso: matar por completo un proceso

chmod cambia los permisos de archivo

Sintaxis: archivos de modo chmod [opciones]

La mayoría de los permisos se expresan en forma de tres números octales, el primero especifica la autoridad del propietario, el segundo especifica los permisos del grupo y el tercero especifica los permisos de otros usuarios, cada uno a través de 4 (lectura), 2 (escritura ), 1 (ejecutar) y la suma de los tres valores para determinar la autoridad. Por ejemplo, 6(4+2) representa el derecho a leer y escribir, y 7(4+2+1) tiene derecho a leer, escribir y ejecutar.

Archivo chmod u+x: Agregar permiso de ejecución al propietario del archivo

vi: vista de modo de edición de nombre de archivo #, se puede modificar

cat: nombre de archivo #mostrar todo el contenido del archivo

más: nombre de archivo # página mostrar contenido de archivo

menos: el nombre del archivo # es similar a más, y es mejor pasar la página hacia adelante

cabeza: nombre de archivo # solo ve la cabeza, también puede especificar el número de líneas

tail -f 20160921.logs: ver el archivo de registro que se está modificando

tail -3000 catalina.out: ver las últimas 3000 filas de datos

historial: ver la lista de comandos usados

df -hl: Ver el espacio de uso del disco

cual: solo se pueden verificar los archivos ejecutables

whereis: solo puede consultar archivos binarios, documentación, archivos fuente, etc.

du : Muestra el tamaño de un directorio o archivo

df: muestra la información del sistema de archivos donde se encuentra cada <archivo>, el valor predeterminado es mostrar todos los sistemas de archivos

El comando df obtiene los datos reales del sistema de archivos, mientras que el comando du solo analiza una parte del sistema de archivos.

El comando incorporado let del shell bash puede realizar operaciones matemáticas en números enteros

libre: muestra el uso actual de la memoria del sistema, incluida la memoria utilizada, la memoria disponible y la memoria de intercambio

arriba: muestra algunos procesos que ocupan la mayor parte de los recursos en el sistema actual

netstat -anp|grep port: comprobar si un puerto está ocupado

chown -R: cambia el propietario y el grupo de un archivo o directorio

Shift + PageUp: Pasar página

Vacíe el archivo: echo "" > nombre de archivo o cat /dev/null > a.txt o >a.txt

Ocurrencias en el archivo de estadísticas de Linux:

(1) Una sola cadena: grep -o targetstr filename | wc -l

Múltiples cadenas: grep -o "targetstr_1\targetstr_2" nombre de archivo | wc -l

(2) awk '{s+=gsub(/targetStr/,"&")}END{print s}' nombre de archivo

Linux busca una palabra en un archivo:

grep 'test'a,b,c busca la palabra test en los archivos a,b,c

grep -r 'prueba' #Encuentra la palabra prueba en el directorio actual

grep -r 'prueba' ejemplo #Encuentra la palabra prueba en el directorio de ejemplo

wc -l filename: comprueba cuántas líneas hay en el archivo

uniq testfile: eliminar líneas duplicadas en un archivo

sort testfile1 | uniq: ordenar después de eliminar duplicados (número de veces)

10. Mysql (no escriba declaraciones desordenadas, escriba algo que me pidieron)

  • declaración de autorización

otorgar seleccionar, insertar, actualizar, eliminar en testdb.* a common_user@'%'

  • Escribir declaraciones de consulta SQL comunes (aquí hay solo ejemplos de declaraciones de consulta comunes, si hay más dificultades, espero agregar)

Consulte los puntajes de matemáticas de todos los estudiantes, muestre el nombre del estudiante, puntaje, de mayor a menor.

SELECT a.name, b.score FROM student a, grade b WHERE a.id = b.id AND kemu = '数学' ORDER BY score DESC;

Cuente el puntaje total de cada estudiante (porque los estudiantes pueden tener nombres duplicados), muestre los campos: identificación del estudiante, nombre, puntaje total.

SELECT a.id, a.name, c.sum_score from student a, (SELECT b.id, sum(b.score) as sum_score FROM grade b GROUP BY id) c WHERE a.id = c.id ORDER BY sum_score DESC;
  • ¿Qué significa consulta lenta?

Habilitar el registro de consultas lentas permite que MySQL registre las consultas que excedan el tiempo especificado.Al ubicar y analizar los cuellos de botella de rendimiento, el rendimiento del sistema de base de datos se puede optimizar mejor.

  • ¿Cuáles son las posibles causas del bajo rendimiento de la base de datos?

Problemas de entorno de hardware, como E/S de disco

Problemas de declaración de consulta, como unión, subconsulta, sin creación de índice

El índice no es válido y el índice está construido, pero es inútil cuando se consulta

Consulta asociada con demasiadas uniones

Caché asociada al servidor, número de subprocesos, etc.

Hay campos redundantes en la tabla y se necesita más tiempo para generar el producto cartesiano

11. ¿Su empresa es de desarrollo ágil? ¿Introducir el desarrollo ágil?

  • Sí, iteración rápida ágil, iteración simultánea de múltiples versiones
  • El desarrollo ágil pertenece al desarrollo incremental. Para proyectos con un alcance poco claro de los requisitos y cambios frecuentes en los requisitos, puede responder y adoptar cambios en gran medida, abogar por la simplicidad, aceptar el cambio, la sostenibilidad, los cambios incrementales y el trabajo de alta calidad, rápido retroalimentación, el software es su objetivo principal

12. Diseño de casos de prueba

módulo de inicio de sesión

  • caso de uso funcional
  • Compatibilidad (versión de la aplicación, versión del sistema operativo, diferentes resoluciones de dispositivos móviles)
  • Rendimiento (tiempo de respuesta de un solo usuario, alta simultaneidad, inicio de sesión multiusuario a largo plazo)
  • Seguridad (cifrado, inyección SQL (al insertar comandos SQL en formularios web para enviar o ingresar cadenas de consulta para nombres de dominio o solicitudes de página y, finalmente, engañar al servidor para que ejecute comandos SQL maliciosos), ataques de secuencias de comandos, exclusión mutua de inicios de sesión de varios dispositivos)
  • Red débil (Android bajo Fiddler, iOS a través de su propio estado, escriba en el próximo capítulo)
  • Pruebas de interfaz de usuario
  • Usabilidad, facilidad de uso (entrada completa del teclado, enter, tabulador)
  • Localización (multilingüe)
Hay muchos más, como probar vasos de papel, elevadores, carritos de compras, funciones de pago (esto es lo que me he encontrado en entrevistas), también se pueden considerar muchos otros aspectos, en fin, depende de mi propia experiencia~~

13. Prueba de red débil

  • La idea de la prueba de red débil

Prueba de función de red débil: 2G/3G/4G, alta latencia, alta pérdida de paquetes

Prueba de estado sin red: prueba de función de desconexión, almacenamiento de datos local

Inquietudes sobre la experiencia del usuario: tiempo de respuesta, procesamiento de páginas y tiempo de espera, redacción de textos publicitarios y reconexión por tiempo de espera, seguridad y riesgos de alto tráfico

Prueba de conmutación de red: Wifi>>4G/3G/2G>>Sin conmutación multiestado de red

  • ¿Cómo simular una prueba de red débil?

Tanto fiddler como charles pueden simular pruebas de red débil.La pérdida de paquetes simulada habitual también es una prueba de red débil simulada.

  • Prueba de conmutación de red

Esta parte es principalmente para cambiar entre varios escenarios de red diferentes, que incluyen:

1 wifi-2G/3G/4G

2. wifi-sin red

3.2G/3G/4G-wifi

4.2G/3G/4G-Sin Internet

5. Sin Internet-2G/3G/4G

6. Sin red-wifi, etc.

Preste atención principalmente a la visualización y la interacción de la página, especialmente en el caso de red débil a wifi, wifi a red débil, si habrá bloqueo de página y desorden de visualización, si la sesión es consistente, procesamiento de acumulación de solicitudes, etc.

  • enfoque en la experiencia del usuario

1. Si el tiempo de respuesta de la página es aceptable, incluido el inicio en caliente, el tiempo de inicio en frío, el cambio de página, el cambio de adelante y atrás, el tiempo de la primera palabra, el tiempo de la primera pantalla, etc.

2. Si la representación de la página se completa de manera consistente

3. Si la copia de tiempo de espera cumple con la definición y si la información anormal se muestra normalmente

4. ¿Hay una reconexión de tiempo de espera?

5. Todos los ángulos: si habrá secuestro de dns, cambios frecuentes de ip de inicio de sesión, inicio de sesión único anormal, etc.

6. Riesgo de eventos de alto tráfico: ¿Se realizarán acciones de gran tráfico, como la actualización de paquetes apk y la descarga de archivos, en redes débiles?

14, violinista

La diferencia entre el punto de interrupción y AutoResponder, preste atención al tiempo de espera de la solicitud después de modificar los datos, lo que hace que el cliente no realice la solicitud

1. El punto de interrupción es que la solicitud se bloquea y no se devuelve ningún resultado. La solicitud siempre existirá en el subproceso hasta que se elimine después del tiempo de espera.

2. AutoResponder devuelve 404/502. En este caso, se devuelve un resultado, lo que significa que la solicitud también ha terminado y no siempre existirá en el hilo.

fiddler captura el paquete https

(1) El principio es el mismo que charles, primero: instale el complemento certmaker para fiddler (y luego reinicie)

(2) Herramientas->Opciones de Fiddler->HTTPS, Acciones->Certificado raíz de confianza, instale el certificado CA después del cuadro emergente

Después de que la instalación sea exitosa, puede ver el certificado instalado a través de Acciones—>abrir el Administrador de certificados de Windows

(3) Instale el certificado Fiddler en el teléfono móvil, abra el navegador móvil e ingrese la IP del servidor proxy y el puerto en la dirección del navegador. Haga clic para instalar el certificado

15, bloqueo de la aplicación

  • Causas comunes de bloqueo (puntero nulo, pérdida de memoria, matriz fuera de los límites, llamada a una API de versión superior)

Fragmentación de dispositivos: debido a la extrema diversidad de dispositivos, las aplicaciones pueden comportarse de manera diferente en diferentes dispositivos.

Restricciones de ancho de banda: las redes con poco ancho de banda pueden no ser lo suficientemente rápidas para que la aplicación responda rápidamente.

Cambios de red: cambiar entre diferentes redes puede afectar la estabilidad de la aplicación.

Administración de la memoria: la poca memoria disponible o el uso de ubicaciones de memoria no autorizadas pueden hacer que la aplicación falle.

Demasiados usuarios: demasiadas conexiones pueden hacer que la aplicación se bloquee.

Errores de código: las nuevas funciones que no se han probado pueden hacer que la aplicación falle en el entorno de producción.

(Puede ser que cuando ocurra la excepción UnChecked de Java, debido a que no hay un intento... de captura correspondiente para manejar el objeto de excepción, el entorno de tiempo de ejecución de Java terminará y el programa se cerrará)

Servicios de terceros: los anuncios o las pantallas emergentes pueden hacer que la aplicación se bloquee.

  • Diseño de caso de prueba de bloqueo de aplicación

Verifique el comportamiento de la aplicación en múltiples dispositivos con diferentes resoluciones de pantalla, sistemas operativos y operadores.

Verifique el comportamiento de la aplicación con la versión del sistema operativo recién lanzada.

Verifique el comportamiento de la aplicación en entornos con cambios repentinos en la calidad de la red, como túneles y ascensores.

Verifique el comportamiento de la aplicación con cambios manuales de red de celular a Wi-Fi, o viceversa.

Verifique el comportamiento de la aplicación en un entorno sin red.

Verifique el comportamiento de la aplicación en llamadas/SMS entrantes y alertas específicas del dispositivo, como alarmas y notificaciones.

Verifique el comportamiento de la aplicación en diferentes modos de vista cambiando la orientación del dispositivo.

Verifique el comportamiento de la aplicación cuando la memoria del dispositivo sea baja.

Verifique el comportamiento de la aplicación aplicando cargas con el arnés de prueba.

16. Git (basado en comandos)

git clon copia un repositorio de Git al local

estado de git Ver el estado del almacén

git diff * Ver el contenido modificado del archivo X

historial de visualización de registro de git

git reset --hard HEAD^ volver a la versión anterior

git reset --hard HEAD~ Si desea retroceder a la tercera versión, use git reset --hard HEAD~3

git branch Ver todas las sucursales locales

git branch -a Ver todas las ramas remotas

git branch name crea una rama

rama git –d dev eliminar rama dev

git checkout –b dev Crea una rama de desarrollo y cambia a la rama de desarrollo

git merge dev fusiona la generación de ramas de desarrollo en la rama actual

Envíe el código de la trilogía jajaja:

git add * Agrega el archivo x al área de almacenamiento temporal

git commit –m "*" Enviar archivos – m va seguido de comentarios

empujar git

17. Mono (puede usar el comando para verificar esto, debe saber que -p es el paquete especificado)

1. El programa Monkey viene con el sistema Android y está escrito en lenguaje Java. La ruta de almacenamiento en el sistema de archivos de Android es: /sdk/sdk/tools/lib/monkey.jar

2. El programa Monkey.jar se inicia con un script de shell llamado "monkey". La ruta de almacenamiento del script de shell en el sistema de archivos de Android es: /sdk/sdk/tools/bin/monkey

  • adb shell monkey {+parámetros de comando} Después de que la prueba Monkey tiene un error, los pasos de análisis general (me preguntaron antes y estaba confundido en ese momento (´⊙ω⊙`)) Mire el registro de Monkey (observe el primer cambio e información de excepción, etc.)
  • Problemas que no responden al programa: busque "ANR" en los registros
  • Problema de bloqueo: busque "Excepción" en el registro (si hay un puntero nulo, NullPointerException) debe haber un error

18. La diferencia entre las pruebas de Android y IOS

  • Android mantenga presionado el botón de inicio para llamar a la lista de aplicaciones y cambiar de aplicación, y luego deslice hacia la derecha para finalizar la aplicación;
  • Prueba multiresolución, más de 20 tipos en Android, menos en ios;
  • Sistema operativo de teléfono móvil, Android es más, ios es menos y no se puede degradar, solo actualización unidireccional; la biblioteca de recursos en el nuevo sistema ios no puede ser totalmente compatible con las aplicaciones en la versión inferior del sistema ios, y la aplicación llamadas en la versión inferior del sistema ios Se instala una nueva biblioteca de recursos, lo que conducirá directamente a un bloqueo (Crash);
  • Hábitos operativos: Android, si se reescribe el botón Atrás, prueba si la respuesta después de hacer clic en el botón Atrás es correcta, si los datos de la aplicación pueden ejecutarse normalmente después de pasar de la memoria interna a la tarjeta SD, etc.;
  • Prueba de inserción: Android: haga clic en el botón de inicio, cuando el programa se ejecuta en segundo plano, reciba un impulso en este momento, despierte la aplicación después de hacer clic, si puede saltar correctamente en este momento; ios, haga clic en el botón de inicio para cerrar el programa y bloquear la pantalla (se muestra el punto rojo);
  • Pruebas de instalación y desinstalación: existen muchas plataformas, herramientas y canales para descargar e instalar Android, mientras que iOS incluye principalmente descargas de la tienda de aplicaciones, iTunes y testflight;
  • Prueba de actualización: Condiciones necesarias para la actualización: las versiones anterior y nueva tienen la misma firma, las versiones anterior y nueva tienen el mismo nombre de paquete, hay un identificador para distinguir las versiones anterior y nueva (como el número de versión). , si hay una aplicación integrada, debe verificarse después de la actualización.Si el archivo coincide (como el método de entrada integrado)

19. Captura de registro de IOS y Android

iOS:

  • Obtenga el registro de fallas del usuario a través de iTunes Connect (Administrar sus aplicaciones - Ver detalles - Informes de fallas)
  • Obtenga registros de fallas de su dispositivo con Xcode
  • Agregue usted mismo el código de captura de fallas en el programa, si la aplicación integra un SDK de terceros, como Baidu Statistics

Androide:

  • Mediante la integración de SDK de terceros, como estadísticas de Baidu, estadísticas de Youmeng, etc.
  • Use herramientas de refuerzo al publicar, y también recopilarán registros de errores, como el endurecimiento 360
  • Agregue el código de captura para el bloqueo anormal del programa en el programa y guárdelo en un archivo local

20. Inyección SQL (Después de pensarlo durante mucho tiempo, tengo que enumerar esto. Aunque no hacemos seguridad, básicamente preguntamos al respecto. Es suficiente para entender este párrafo. Si pregunta cómo prevenirlo, es sobre la verificación de la entrada del usuario. No empalme dinámicamente SQL)

seleccione * de usuarios donde nombre de usuario = '' o 1 = 1 # 'y contraseña = md5 ('')

Equivalente a

seleccione * de usuarios donde nombre de usuario = '' o 1 = 1

¿Qué significa el uso de inyección SQL' OR 1=1 #?

¿Cuál es el significado del último signo #?

SELECCIONE * DESDE prueba DONDE nombre='' O 1=1 #' Y edad='20'

¿Qué significa el #' escrito detrás de esto?

Explicación: puede comentar la siguiente línea de código SQL

Es equivalente a eliminar una condición where

Comentario de MySQL, filtre la siguiente instrucción SQL, haciéndola ineficaz

Debido a que 1=1 siempre es verdadero, es decir, la cláusula where siempre es verdadera.Después de simplificar aún más el SQL, es equivalente a la siguiente declaración de selección:

seleccionar * de los usuarios Sí, la función de esta declaración sql es recuperar todos los campos en la tabla de usuarios

La temporada alta de entrevistas para oro, nueve y plata diez está llegando pronto. Todos esperan aprovechar esta oportunidad para encontrar un trabajo que les guste. Haga preparativos integrales para las preguntas explosivas de la entrevista. Por supuesto, además de esto, también debe establecer una base sólida en tu vida diaria, de modo que no importa cómo profundice el entrevistador en un punto de conocimiento, puedas manejarlo bien~

Finalmente, me gustaría agradecer a todos los que han leído mi artículo detenidamente. Como persona que ha estado aquí, espero que eviten algunos desvíos . Aquí compartiré con ustedes algunos recursos de aprendizaje para pruebas automatizadas . Si pueden usarlos , puedes llevártelo. Espero que te lo puedan dar. Ayuda en el camino.

( Incluyendo programación de Python, pruebas automatizadas WEB, pruebas automatizadas de aplicaciones, pruebas automatizadas de interfaz, marco de pruebas, integración continua, desarrollo de pruebas automatizadas, pruebas de rendimiento, pruebas de seguridad, preguntas de entrevistas en grandes fábricas, plantillas de currículum, etc. y, por supuesto, algunos conceptos básicos de pruebas , herramientas, pruebas de aplicaciones, pruebas de interfaz, linux, base de datos mysql y otros conocimientos básicos ), ¡creo que te hará progresar mejor!

 Método de adquisición de información:

Supongo que te gusta

Origin blog.csdn.net/qq_56271699/article/details/131290640
Recomendado
Clasificación