Pruebas de software preguntas y respuestas frecuentes

1. Auto-presentación

Varía de persona a persona e introduce claramente la experiencia laboral personal, la responsabilidad del proyecto y los pasatiempos personales, etc.

2. Ciclo de vida del software

Definición: El ciclo de vida del software desde la creación hasta el retiro.

El ciclo de vida incluye: definición y planificación del problema (discusión entre el desarrollador y el lado de la demanda), análisis de requisitos, diseño de software, codificación de software, pruebas de software (pruebas unitarias, pruebas de integración, pruebas de sistemas, pruebas de aceptación) y fases de operación y mantenimiento. . (concepto de industria)

3. Proceso de prueba

En primer lugar, revise los requisitos, participe en la revisión de los requisitos del proyecto, haga preguntas durante la etapa de revisión de los requisitos del proyecto, realice la rectificación y realice una reevaluación después de que se complete la rectificación. Después de la reevaluación, finalice el borrador, combine el plan del proyecto, combine el contenido de implementación, formule y complete el plan de prueba y defina el contenido de trabajo de la prueba. Una vez completada la formulación, escriba el caso de prueba de acuerdo con la demanda. Triaje para evaluar si la cobertura del caso de uso es completa. La prueba de humo se lleva a cabo durante el desarrollo y las pruebas. Después de pasar la prueba de humo, la prueba del sistema se lleva a cabo de acuerdo con los casos de uso escritos, que incluyen, entre otros, pruebas de regresión, pruebas de aceptación de errores y pruebas de escenarios. Finalmente, emita el informe de prueba.

4. Diseño de casos de uso de la interfaz

  1. Si se cumplen los requisitos previos

    Algunas API deben cumplir condiciones previas para obtener datos con éxito. Por lo general, se requiere un token de inicio de sesión.

    Caso de uso inverso: Diseñe 0n casos de uso para determinar si se cumplen las condiciones previas (se supone que son n condiciones)

  2. Si llevar el parámetro de valor predeterminado

    Caso de uso directo: no complete ni pase parámetros con valores predeterminados, complete los valores "normales" correctos y existentes para los parámetros requeridos y diseñe 1 caso de uso si no completa los otros;

  3. reglas de negocio, requisitos funcionales

    Aquí, de acuerdo con la situación real, combinada con la descripción de los parámetros de la interfaz, puede ser necesario diseñar casos de uso directo y casos de uso inverso.

  4. ¿Se requiere el parámetro?

    Caso de uso inverso: Para cada parámetro requerido, diseñe un caso de uso inverso con un valor de parámetro vacío

  5. Si existe una relación entre los parámetros.

    Algunos parámetros tienen una relación restrictiva mutua entre sí.

    Caso de uso inverso: según la situación real, puede ser necesario diseñar casos de uso 0n

  6. Restricciones de tipos de datos de parámetros

    Caso de uso inverso: diseñe un caso de uso inverso para cada parámetro que no coincida con el tipo de valor del parámetro

  7. El límite del valor del rango de datos del propio tipo de datos del parámetro

    Caso de uso directo:

    Para todos los parámetros, diseñe un caso de uso positivo donde el valor del parámetro de cada parámetro sea el valor máximo dentro del rango de datos

    Caso de uso inverso:

    Para cada parámetro (suponiendo n), diseñe n casos de uso inverso donde el valor del parámetro de cada parámetro exceda el valor máximo del rango de datos

    Para cada parámetro (suponiendo n), diseñe n casos de uso inverso donde el valor del parámetro de cada parámetro sea menor que el valor mínimo del rango de datos

    Si se tienen en cuenta los aspectos anteriores, básicamente se pueden cubrir los siguientes aspectos:

    Caso de prueba del proceso principal: verificación normal de la función del proceso principal;

    Caso de prueba de flujo de ramal: verificación de la función de flujo de ramal normal.

    Caso de prueba de flujo anómalo: Comprobación de tolerancia a fallos anómalos

8. Cómo probar la interfaz

1. Primero considere la llamada normal de la interfaz.De acuerdo con la definición de la interfaz, pase la información correcta de la interfaz, incluida la dirección, el método y los parámetros, y luego verifique si los datos devueltos son correctos y si los datos de la base de datos son correctos. Los datos de solicitud transmitidos deben sobrescribirse y ser válidos. Los resultados de respuesta devueltos por clase y valor de límite deben verificarse, como código, mensaje, estado y otra información para verificar el almacenamiento de datos, como la verificación de la base de datos en la adición, supresión, modificación y negocio de consulta Valores, como valores nulos, excepciones de tipo de longitud, etc., si la interfaz se puede procesar correctamente y si el resultado devuelto se puede procesar correctamente Teniendo en cuenta las restricciones comerciales, ingrese nombres de parámetros incorrectos, uno más o uno menos 3. Preste atención a la prueba de seguridad de la interfaz Datos de inscripción, si la contraseña está encriptada, si los datos devueltos contienen información confidencial, si la interfaz realiza una comparación de información confidencial sobre los datos transmitidos 4. Preste atención a la prueba de rendimiento de la interfaz y, al mismo tiempo, solicita la misma interfaz para comprobar el estado de la solicitud de la interfaz. El tiempo de respuesta de la interfaz, si la presión prueba la interfaz dentro del rango aceptable del usuario para determinar el punto de cuello de botella más grande.

Cinco, ciclo de vida del insecto

  • Nuevo (Nuevo)→ En curso (Reparación)→ Fijo (Fijo)→ Cerrado (Cerrar)

    | Error de aceptación

    Reabrir (reiniciar)→ En curso (reparación)→ Fijo (fijo)→ Cerrado (cerrado)

  • No se puede reproducir: no se puede reproducir- Aprobado: no se puede reparar/no es necesario- Retraso: pospuesto

    ————————————————————————— Nivel de gravedad del error —————————————————————— ——— ———————

    P0:Block: no se puede probar, el producto no se puede usar, como un bloqueo

    P1: Crítico: las funciones importantes no están implementadas, apenas se pueden usar, pero las funciones están severamente limitadas

    P2: Mayor: la función principal no se realiza por completo, lo que afecta el progreso de algunos procesos, pero no afecta el proceso principal

    P3: Normal - problemas generales con pequeño impacto

    P4: Menor: problemas sutiles, generalmente optimización, sugerencias

Seis, integración continua

1. Base de código unificada

2. Construcción automática

3. Prueba automática

4. Todos envían código al tronco base de código todos los días

5. Se activará una compilación en el servidor de integración continua después de cada envío de código.

6. Construcciones rápidas garantizadas

7. Pruebas automáticas que simulan el entorno de producción.

8. Todos pueden obtener fácilmente la última aplicación ejecutable

9. Todo el mundo sabe lo que está pasando

10. Despliegue automatizado

7. Desarrollar un plan de prueba

El plan de prueba incluye objetivos de prueba, alcance de prueba, entorno de prueba, descripción de los tipos de prueba, herramientas de prueba, división de plantillas, líderes de prueba relevantes, tiempos de prueba, arreglo de tiempo, riesgos relacionados con la prueba, etc. La división del módulo se basa principalmente en el probador. El grado de familiaridad está dividido y la evaluación de la carga de trabajo debe evaluarse en función de la experiencia de prueba previa y en combinación con este proyecto.

8. Proceso de prueba de rendimiento

1. Analizar los requisitos de rendimiento, definir indicadores de rendimiento completos y, al mismo tiempo, diseñar escenarios de rendimiento.

2. Cree un entorno de prueba de rendimiento

3. Implementar scripts de prueba basados ​​en escenarios

4. Preparar datos de prueba basados ​​en la prueba de rendimiento

5. Ejecutar la prueba y recopilar datos

6. Diagnóstico y análisis de desempeño

7. Ajuste de rendimiento (quien tenga un problema para encontrar), regrese al paso 5-6

8. Informe de salida

Primero verifique si se debe a recursos locales insuficientes o al diseño de la escena. Si no hay problema, si la cola se debe a problemas de transmisión de red y si el servidor tiene una cola de mensajes MQ. Si es así, no será un problema de ancho de banda. .

Cálculo:

QPS (TPS) = número concurrente/tiempo de respuesta promedio o número concurrente = tiempo de respuesta promedio de QPS fórmula de cálculo de memoria Memtotal - Memfree - en caché - búferes)/Memtotal   100 (=(B2-F2-K2-N2)/B2*100)

Abra jmeter: cd /Usuarios/dingyu/Documentos/apache-jmeter-5.4.2/bin

Nueve, comandos comunes de Linux

```Texto sin formato

  • alt+ctrl Salir para operar Linux, puede operar Windows
  • Cambiar comando de directorio:
  • pwd ver el directorio actual
  • carpeta de cd en una carpeta
  • cd .. retroceder un nivel
  • cd - retroceder al último directorio
  • cd / empujar al directorio raíz
  • mostrar lista de archivos
  • ls enumera toda la información en el directorio actual
  • ls -a muestra todos los archivos, incluidos los archivos ocultos
  • ls -l muestra los detalles del archivo
  • ll abreviatura de ls -l
  • claro contenido claro
  • operaciones de directorio
  • mkdir aa bb nombre de carpeta crear directorio
  • rmdir aa (eliminar directorio) eliminar directorio puede eliminar múltiples
  • Examinar documentos
  • ingrese cd /etc
  • cat nombre de archivo para abrir el archivo para ver todo el contenido
  • más Ver el contenido, puedes verlo en páginas
  • Combinado con la tecla enter, un poco para ver
  • Si presiona la barra espaciadora, vista de página
  • q salir de la vista
  • menos ver contenido
  • enter + flecha hacia abajo, ver un poco
  • q salir de la vista
  • la cola puede elegir qué ver
  • cola -10 perfil Ver las últimas 10 líneas
  • terminar ctrl+c
  • operación de archivo
  • toque xx.txt Crear archivo xx.txt
  • rm xx.txt Para eliminar un archivo, debe preguntar, si está seguro de eliminar y para cancelar n
  • rm -f xx.txt elimina archivos sin preguntar
  • rm -r aa eliminar recursivamente y preguntar
  • rm -rf aa eliminar recursivamente sin preguntar
  • cp aa.txt bb.txt copiar
  • Puede especificar el directorio copiado, como cp aa.txt /usr/local/bb.txt
  • mv aa.txt cc.txt cortado
  • * Puede especificar el directorio de corte, como mv aa.txt /usr/local/dd.txt
  • compresión y descompresión
  • El comando tar se encuentra en el directorio /bin. Puede empaquetar los archivos o directorios especificados por el usuario en un solo archivo sin comprimir. Generalmente, el método de compresión común en Linux es usar tar para empaquetar muchos archivos en un solo archivo, y luego comprímalos con gzip El comando se comprime en un archivo xxx.tar.gz (o xxx.tgz).
  • tar -c especifica la compresión en un archivo -v muestra la información del proceso -f especifica el nombre del archivo tar -cvf xxx.tar ./* -z especifica la compresión gzip tar -zcvf iii.tar.gz ./* -x desempaqueta la descompresión ordinaria de tar archivos tar -xvd uuu.tar.gz Ruta especificada de descompresión tar -xvf uuu.tar.gz -C /usr/local
  • vi y vim editar texto
  • vim es una versión mejorada de vi.vi puede ver archivos y editarlos. Tres modos: línea de comando, inserción, modo de línea inferior. Cambiar al modo de línea de comando: presione la tecla Esc; cambiar al modo de inserción: presione i, o, una tecla; i inserta I antes de la posición actual, inserta a al principio de la línea actual, inserta A después de la posición actual, inserta o al final de la línea actual Insertar una línea después de la línea O Insertar una línea antes de la línea actual Salir de la edición: esc (tecla de escape)
    Salir y guardar: :wq (shift+:) Salir sin guardar: :q! Tecla de acceso directo: dd en estado de no edición Eliminar una línea/tecla de acceso rápido de búsqueda
  • Redirigir salida ifconfig ver ip

Redirigir la salida, sobrescribiendo el contenido original;

Redirigir salida y agregar función, ejemplo: cat b.txt > a.txt salida directa a a.txt cat c.txt >> a.txt salida y agregar ifconfig > ifconfig.txt ifconfig >> ifconfig.txt

  • comando de búsqueda grep grep hola aaa.txt búsqueda normal grep hola aaa.txt --búsqueda de resaltado de color
  • ps -ef ver el proceso actual
  • Símbolo de tubería | La tubería es un concepto importante en los comandos de Linux Su función es usar la salida de un comando como la entrada de otro comando. cat hello.txt |más ps -ef|grep bash ls --help | más información de ayuda de consulta de página ps -ef |grep 2251 número de proceso de búsqueda ifconfig | más cat index.html | más
  • Control de ejecución de comandos &&: use la conexión && entre comandos para realizar la función de la lógica y. Solo cuando el comando a la izquierda de && devuelve verdadero (valor de retorno del comando $? == 0), se ejecutará el comando a la derecha de &&. mkdir jaja && cd jaja
  • Comando de comunicación de red ifconfig Ver información de ip ping Verificar si el servidor tiene ping Netstat Verificar el puerto de red netstat -an|grep 3306 Buscar el puerto mysql Verificar el puerto del proceso bash Paso 1: Encuentre el número de proceso del proceso bash pid=ps -ef|grep bash
    Paso 2: Encuentre el puerto netstat -an|grep pid según el número de proceso

Apuntes para el segundo día de Linux

comando del sistema

  • fecha ver fecha
  • date -s "1991-11-11 11:11:11" establece la fecha
  • matar número de proceso para matar el proceso
  • matar -9 número de proceso para matar por la fuerza el proceso
  • du Ver el tamaño del archivo actual
  • vista de optimización du -h
  • who Muestra el nombre de usuario actualmente conectado al sistema
  • whoa, voy a mostrar al usuario actual
  • hostname muestra el nombre de host actual
  • vim /etc/sysconf/network modificar nombre de host
  • uname mostrar información del sistema mostrar archivo
  • cola Mostrar información de la cola
  • tail -10 install.log muestra las últimas 10 líneas del archivo
  • tail -c 10 install.log muestra los últimos 10 caracteres
  • cabeza
  • head -10 install.log muestra las primeras 10 líneas del archivo
  • head -c 10 install.log muestra las primeras 10 letras de la supervisión del sistema de archivos
  • memoria libre
  • -b: Muestra el uso de la memoria en Byte; -k: Muestra el uso de la memoria en KB; -m: Muestra el uso de la memoria en MB; -s: Observa continuamente el uso de la memoria; free -b free - k free -m free -s 10 free - s -m 10 muestra la información de la memoria cada 10 segundos y calcula el tamaño total de la memoria en m unidades del tamaño usado restante libre (se requiere que sea inferior a %70)
  • uptime memory and cpu uptime El comando uptime puede imprimir el tiempo total de ejecución del sistema y la carga promedio del sistema. La información que muestra el comando uptime es: la hora actual, cuánto tiempo ha estado funcionando el sistema, cuántos usuarios están conectados actualmente y la carga promedio del sistema en los últimos 1 minuto, 5 minutos y 15 minutos. 15:31:30 //El tiempo actual del sistema es de 127 días, 3:00 //El tiempo de ejecución del host, cuanto mayor sea el tiempo, más estable será su máquina. 1 usuario //La cantidad de conexiones de usuario es la cantidad total de conexiones en lugar de la cantidad de usuarios promedio de carga: 0.00, 0.00, 0.00 // Carga promedio del sistema, estadísticas de la carga promedio del sistema en los últimos 1, 5 y 15 minutos La carga promedio del sistema se refiere a un tiempo específico El número promedio de procesos en la cola de ejecución durante el intervalo. Si el número de procesos actualmente activos por núcleo de CPU no es superior a 3, el rendimiento del sistema es bueno. Si el número de tareas por núcleo de CPU es superior a 5, existe un problema grave con el rendimiento de esta máquina.
  • El proceso superior puede ver dinámicamente el funcionamiento general del sistema en tiempo real.Es una herramienta práctica que integra el rendimiento del sistema de monitoreo de información múltiple y la información de operación. A través de la interfaz interactiva proporcionada por el comando superior, se puede administrar con teclas de acceso rápido. Puede analizar el tamaño de la CPU y la memoria ocupada por la aplicación
  • mpstat Ver información detallada de la CPU mpstat mpstat es la abreviatura de MultiProcessor Statistics, que es una herramienta de monitoreo del sistema en tiempo real. Su informe y alguna información estadística de la CPU no solo pueden ver la información de estado promedio de todas las CPU, sino también ver la información de una CPU específica.
  • El comando df muestra el espacio en disco El comando df se usa para mostrar el espacio disponible en disco en una partición de disco. La unidad de visualización predeterminada es KB. Puede usar este comando para obtener información como cuánto espacio está ocupado el disco duro y cuánto espacio queda. Comandos de reinicio y apagado del sistema
  • apagar apagar
  • reiniciar reiniciar
  • detener el comando de apagado
  • Comando de permiso de Linux El permiso denegado se usa comúnmente 777 755 chmod 755 a.txt chmod u=rwx,g=rx,o=rx a.txt chmod 000 a.txt
  • cortafuegos
  • Cerrar temporalmente el servicio de firewall iptables stop
  • Abra temporalmente el inicio de iptables del servicio de firewall
  • Ver el estado del cortafuegos Servicio de estado de iptables
  • Apague permanentemente el firewall chkconfig iptables off
  • Abra permanentemente las iptables chkconfig del cortafuegos en
  • ¿Cuál usar?Cambie el archivo del sistema vi /etc/sysconfig/iptables y copie una línea para especificar el puerto abierto
  • Reinicie el servicio de firewall iptables restart

10. Función de solicitud de prueba automatizada

getMethod() 获得请求方式
getHeader()获取请求头信息
getRequestURI() 获得请求资源
getParameter()获得参数的值

Once, funciones comunes de python

```Plain Text
staticmethod() 函数返回函数的静态方法。该方法不强制要求传递参数
print()函数:打印字符串;
raw_input()函数:从用户键盘捕获字符;
len()函数:计算字符长度;
format()函数:实现格式化输出;
type()函数:查询对象的类型;
int()函数、float()函数、str()函数等:类型的转化函数;
id()函数:获取对象的内存地址;
help()函数:Python的帮助函数;
s.islower()函数:判断字符小写;
s.sppace()函数:判断是否为空格;
str.replace()函数:替换字符;
import()函数:引进库;
math.sin()函数:sin()函数;
math.pow()函数:计算次方函数;
os.getcwd()函数:获取当前工作目录;
listdir()函数:显示当前目录下的文件;
time.sleep()函数:停止一段时间;
random.randint()函数:产生随机数;
range()函数:返回一个列表,打印从1到100;
file.read()函数:读取文件返回字符串;
file.readlines()函数:读取文件返回列表;
file.readline()函数:读取一行文件并返回字符串;
split()函数:用什么来间隔字符串;
isalnum()函数:判断是否为有效数字或字符;
isalpha()函数:判断是否全为字符;
isdigit()函数:判断是否全为数字;
lower()函数:将数据改成小写;
upper()函数:将数据改成大写;
startswith(s)函数:判断字符串是否以s开始的;
endwith(s)函数:判断字符串是否以s结尾的;
file.write()函数:写入函数;
file.writeline()函数:写入文件;
abs()函数:得到某数的绝对值;
file.sort()函数:对书数据排序;
tuple()函数:创建一个元组;
find()函数:查找 返回的是索引;
dict()函数:创建字典;
clear()函数:清楚字典中的所有项;
copy()函数:复制一个字典,会修改所有的字典;
get()函数:查询字典中的元素。
```


12. Uso de anotaciones testNG para pruebas automatizadas

@BeforeSuite	在该套件的所有测试都运行在注释的方法之前,仅运行一次
@AfterSuite	在该套件的所有测试都运行在注释方法之后,仅运行一次
@BeforeClass	在调用当前类的第一个测试方法之前运行,注释方法仅运行一次
@AfterClass	在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
@BeforeTest	注释的方法将在属于test标签内的类的所有测试方法运行之前运行
@AfterTest	注释的方法将在属于test标签内的类的所有测试方法运行之后运行
@BeforeGroups	配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行
@AfterGroups	此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行
@BeforeMethod	注释方法将在每个测试方法之前运行
@AfterMethod	注释方法将在每个测试方法之后运行
@DataProvider	标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Factory	将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []
@Listeners	定义测试类上的侦听器
@Parameters	描述如何将参数传递给@Test方法
@Test	将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法
@Test(priority = 0) 可进行循环控制,数字越小执行顺序越高
Suite > Test > Class > Groups > Method

Trece, la diferencia entre HTTPS y HTTP:

1. El protocolo https debe ir a CA para solicitar un certificado. Generalmente, hay pocos certificados gratuitos, por lo que se requiere una tarifa determinada. 2. HTTP es un protocolo de transferencia de hipertexto, la información se transmite en texto sin formato y https es un protocolo de transferencia cifrado SSL seguro. 3. http y https usan métodos de conexión completamente diferentes y diferentes puertos, el primero es 80 y el segundo es 443. 4. La conexión http es muy simple y sin estado, el protocolo HTTPS es un protocolo de red construido por el protocolo SSL+HTTP que puede realizar una transmisión encriptada y autenticación de identidad, que es más seguro que el protocolo http.

Catorce, apretón de manos de tres vías tcp

El primer protocolo de enlace lo inicia el navegador y le dice al servidor que quiero enviar una solicitud. El segundo protocolo de enlace lo inicia el servidor y le dice al navegador que estoy listo para aceptarlo. Envíelo rápidamente. El tercer protocolo de enlace lo envía el navegador y le dice al servidor, lo enviaré de inmediato, listo para aceptarlo

15. La diferencia entre tcp y Udp

1. La seguridad de udp es mayor que la de tcp, y la vulnerabilidad de udp es menor 2. La transmisión de udp es mejor que la de tcp 3. udp pertenece a una conexión de uno a muchos o de muchos a muchas conexiones, y tcp pertenece a una conexión uno a uno

Dieciséis, la diferencia entre cookie y sesión

1. La sesión está del lado del servidor, y la cookie está del lado del cliente (navegador) 2. La sesión se almacena en un archivo en el servidor por defecto (no en la memoria) 3. El funcionamiento de la sesión depende del id de sesión, y el id de sesión se almacena en la cookie, es decir, si el navegador deshabilita las cookies, la sesión también será inválida (pero se puede lograr de otras formas, como pasar session_id en la url) 4. La sesión se puede colocar en un archivo, base de datos o memoria. 5. En este caso, la autenticación de usuario generalmente usa sesión

Diecisiete, la diferencia entre POST y GET

  1. Obtener es obtener datos del servidor y publicar es enviar datos al servidor.

  2. La solicitud GET incluye los parámetros en la URL y la información de la solicitud se coloca después de la URL. La solicitud POST pasa los parámetros a través del cuerpo de la solicitud y la información de la solicitud se coloca en el cuerpo del mensaje.

  3. La cantidad de datos transmitidos por get es pequeña y no puede exceder los 2 KB. La cantidad de datos transmitidos por correo es relativamente grande y, por lo general, está predeterminada para ser ilimitada. Pero en teoría, la cantidad máxima es de 80 KB en IIS4 y 100 KB en IIS5.

  4. La seguridad de get es muy baja. Get está diseñado para transmitir datos, que generalmente se pueden ver en la barra de direcciones. La seguridad de la publicación es más alta y los datos transmitidos por correo son más privados, por lo que no se pueden ver en la barra de direcciones. Si no hay encriptación, sus niveles de seguridad son ambos. Es lo mismo, cualquier oyente puede escuchar todos los datos.

  5. Las solicitudes GET se pueden almacenar en caché, las solicitudes GET se guardarán en el historial de navegación del navegador, las URL solicitadas con GET se pueden guardar como marcadores del navegador y las solicitudes de publicación no tienen estas funciones.

  6. La capa inferior de HTTP es TCP/IP, y la capa inferior de GET y POST también es TCP/IP, es decir, GET/POST son ambos enlaces TCP. GET y POST pueden hacer lo mismo. Debe agregar un cuerpo de solicitud a GET y un parámetro de URL a POST, lo cual es completamente factible técnicamente. 7. GET genera un paquete de datos TCP. Para una solicitud GET, el navegador envía el encabezado HTTP y los datos juntos, y el servidor responde con 200 (datos de retorno); POST genera dos paquetes de datos TCP. Para POST, el navegador primero envía el encabezado, el servidor responde con 100 continuar, el navegador envía datos nuevamente y el servidor responde con 200 ok (devolver datos), no todos los navegadores enviarán el paquete dos veces en el POST, Firefox solo lo envía una vez

Dieciocho, código de estado

1. Indica una respuesta provisional y requiere que el solicitante continúe con la operación: 100 (Continuar) El solicitante debe continuar con la solicitud. El servidor devuelve este código para indicar que ha recibido la primera parte de la solicitud y está esperando el resto. 101 (Protocolo de cambio) El solicitante le ha pedido al servidor que cambie de protocolo y el servidor lo ha confirmado y está listo para cambiar.

2. El código de estado que indica que la solicitud se procesó con éxito: 200 (solicitud exitosa), el servidor ha procesado con éxito la solicitud. Por lo general, esto significa que el servidor sirvió la página web solicitada. 201 (Creado) La solicitud fue exitosa y el servidor creó un nuevo recurso. 202 (Aceptado) El servidor ha aceptado la solicitud pero aún no la ha procesado. 203 (Información sin autorización) El servidor procesó correctamente la solicitud, pero la información devuelta puede provenir de otra fuente. 204 (Sin contenido) El servidor procesó correctamente la solicitud, pero no devolvió ningún contenido. 205 (Restablecer contenido) El servidor procesó correctamente la solicitud, pero no devolvió ningún contenido. 206 (Contenido parcial) El servidor procesó con éxito parte de la solicitud GET.

3. Indica que se requieren más acciones para completar la solicitud. Normalmente, estos códigos de estado se utilizan para la redirección: 300 (opciones múltiples) El servidor puede realizar varias acciones en respuesta a la solicitud. 301 (Movido permanentemente) La página web solicitada se ha movido permanentemente a una nueva ubicación. Cuando el servidor devuelve esta respuesta (en respuesta a una solicitud GET o HEAD), automáticamente reenvía al solicitante a la nueva ubicación. ** 302 (movido temporalmente) El servidor actualmente responde a solicitudes de páginas web en diferentes ubicaciones, pero el solicitante debe continuar usando la ubicación original para futuras solicitudes. 303 (Ver otras ubicaciones) El servidor devuelve este código cuando el solicitante debe usar solicitudes GET separadas para diferentes ubicaciones para recuperar la respuesta. 304 (No modificado) La página solicitada no ha sido modificada desde la última solicitud. Cuando el servidor devuelve esta respuesta, no se devuelve ningún contenido de la página web. 305 (Uso de proxy) El solicitante solo puede usar un proxy para acceder a la página web solicitada. Si el servidor devuelve esta respuesta, también indica que el solicitante debe usar un proxy. 307 (redireccionamiento temporal) El servidor responde actualmente a solicitudes de páginas web en diferentes ubicaciones, pero el solicitante debe continuar usando la ubicación original para futuras solicitudes.

4. Estos códigos de estado indican que la solicitud puede haber salido mal, impidiendo que el servidor la procese: 400 (Solicitud incorrecta) El servidor no entiende la sintaxis de la solicitud. 401 (No autorizado) La solicitud requiere autenticación. El servidor puede devolver esta respuesta para las páginas web que requieren un inicio de sesión. 403 (Prohibido) El servidor rechazó la solicitud. 404 (No encontrado) El servidor no pudo encontrar la página web solicitada. ** 405 (Método deshabilitado) El método especificado en la solicitud está deshabilitado. 406 (No aceptado) No se puede responder a la página web solicitada con los atributos de contenido solicitados. 407 (Se requiere autorización de proxy) Este código de estado es similar a 401 (No autorizado), pero especifica que el solicitante debe estar autorizado para usar un proxy. 408 (Solicitud agotada) El servidor superó el tiempo de espera mientras esperaba la solicitud. 409 (Conflicto) El servidor tuvo un conflicto al completar la solicitud. El servidor DEBE incluir información sobre el conflicto en la respuesta. 410 (Eliminado) El servidor devuelve esta respuesta si el recurso solicitado se ha eliminado de forma permanente. 411 (Longitud válida requerida) El servidor no acepta una solicitud sin un campo de encabezado de longitud de contenido válido. 412 (Condición previa no cumplida) El servidor no cumplió una de las condiciones previas establecidas por el solicitante en la solicitud. 413 (La entidad de solicitud es demasiado grande) El servidor no puede procesar la solicitud porque la entidad de solicitud es demasiado grande y excede la capacidad de procesamiento del servidor. 414 (El URI solicitado es demasiado largo) El URI solicitado (generalmente una URL) es demasiado largo para que lo maneje el servidor. 415 (Tipo de medio no compatible) El formato solicitado no es compatible con la página solicitada. 416 (El intervalo solicitado no cumple los requisitos) El servidor devuelve este código de estado si la página no puede proporcionar el intervalo solicitado. 417 (Expectativa no cumplida) El servidor no cumplió con el campo de encabezado de solicitud "Expectativa".

5. Generalmente, es un problema del servidor: 500 (Error interno del servidor) El servidor encontró un error y no pudo completar la solicitud. ** 501 (aún no implementado) El servidor no es capaz de cumplir con la solicitud. Por ejemplo, este código podría devolverse cuando el servidor no reconoce el método de solicitud. 502 (Puerta de enlace incorrecta) El servidor, que actúa como puerta de enlace o proxy, recibió una respuesta no válida de un servidor ascendente. 503 (Servicio no disponible) El servidor no está disponible actualmente (debido a una sobrecarga o por mantenimiento). Por lo general, esto es solo un estado temporal. 504 (Tiempo de espera de puerta de enlace) El servidor está actuando como puerta de enlace o proxy, pero no recibió la solicitud del servidor ascendente a tiempo. 505 (Versión HTTP no admitida) El servidor no admite la versión del protocolo HTTP utilizada en la solicitud.

19. Conocimiento de la base de datos

#插入数据
insert into test (id,email,ip,state) values(2,'[email protected]','127.0.0.1','0');
#删除数据 
delete from test where id = 1;
#修改数据
update test set id='1',email='[email protected]' where id=1;
#查数据
select * from test;  #取所有数据
select * from test limit 0,2;  #取前两条数据 
select * from test email like '%qq%' #查含有qq字符 _表示一个 %表示多个
select * from test order by id asc;#降序desc
select * from test id not in('2','3');#id不含2,3或者去掉not表示含有
select * from test timer between 1 and 10;#数据在1,10之间

#---------------------------表连接知识------------------------------
#等值连接又叫内链接 inner join 只返回两个表中连接字段相等的行
select * from A inner join B on A.id = B.id; #写法1
select * from A,B where A.id = B.id; #写法2
select a.id,a.title from A a inner join B b on a.id=b.id and a.id=1;#写法3 表的临时名称
select a.id as ID,a.title as 标题 from A inner join B on A.id=B.id;#添加as字句

#左连接又叫外连接 left join 返回左表中所有记录和右表中连接字段相等的记录
select * from A left join B on A.id = B.id;

select * from A left join (B,C,D) on (B.i1=A.i1 and C.i2=A.i2 and D.i3 = A.i3);#复杂连接

#右连接又叫外连接 right join 返回右表中所有记录和左表中连接字段相等的记录
select * from A right join B on A.id = B.id;

#完整外部链接 full join 返回左右表中所有数据
select * from A full join B on A.id = B.id;

#交叉连接 没有where字句 返回卡迪尔积
select * from A cross join B;


CREATE TABLE 语句用于创建数据库中的表。
.查询数据库中所有表名称:

  select table_name from information_schema.tables where table_schema='数据库名称';(包含视图)

  select table_name from information_schema.tables where table_schema='数据库名称' and table_type = 'BASE TABLE' AND table_schema = DATABASE ();(不包含视图)

2.查询每张表中所有字段名:

  select COLUMN_NAME from INFORMATION_SCHEMA.Columns where table_name='表名称' and table_schema='数据库名称';

oracle:

1.查询数据库中所有表名称:

  select t.table_name from user_tables t;

2.查询每张表中所有字段名:

  SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '表名称';

Veinte, punto de prueba de la interfaz de inicio de sesión

Normal: Todos requeridos Anormal: Datos anormales: Número de teléfono móvil/contraseña: Longitud anormal, longitud superior a 11 dígitos, longitud inferior a 11 dígitos Tipo anormal: sin datos (caracteres, letras, caracteres chinos) Si es requerido o no Repetido Parámetros anormales: Múltiples parámetros, pocos parámetros, sin parámetros, excepción comercial de parámetros incorrectos, ¡la operación es exitosa! Nombre de usuario o contraseña incorrectos

21. La diferencia entre listas y tuplas en Python, la diferencia entre listas y diccionarios

1. La lista se puede modificar, pero la tupla no se puede modificar. La lista es equivalente a una matriz dinámica y la tupla es una matriz estática. 2. La lista se declara entre corchetes y la tupla se declara entre paréntesis. y la tupla tiene solo un elemento A veces es necesario agregar un signo después de él 3. El diccionario es lento para generar, pero la búsqueda es rápida, y el bloque generado por la lista es lento para buscar 4. La lista está ordenada , y el diccionario está desordenado 5. Se accede a la lista a través del índice, se accede a los diccionarios usando la tecla;

Veintidós, he iniciado sesión como ejemplo, permítanme hablar sobre el proceso del modo de diseño po

1. El primer paso es implementar el tipo base de página base, que realiza principalmente la adquisición de la unidad, y la prueba de compatibilidad se puede realizar a través de la unidad 2. Implemente la capa de objeto, encapsule el posicionamiento del elemento de la página de inicio de sesión, como la entrada y determine el método de posicionamiento del elemento del botón; 3. Realice las operaciones relevantes de acuerdo con el método de encapsulación y posicionamiento, como ingresar el nombre de usuario, ingresar la contraseña y hacer clic en el botón de confirmación; 4. De acuerdo con el encapsulado página y clase de operación, realice la prueba automatizada correspondiente; ¿Cuál es el patrón de diseño po: pageobject, por ejemplo, reduce la duplicación de código, hace que el código sea más legible y más fácil de mantener? Incluye principalmente tres capas, capa de objeto (principalmente encapsula el método de posicionamiento de ciertos elementos), capa de operación (encapsula algunas operaciones específicas de elementos) y capa de negocios (combina una o más operaciones en servicios específicos para lograr pruebas funcionales específicas)

Veintitrés, la diferencia entre pytest y unittest

||unittest|pytest| |-|-|-| |Método de escritura de casos de uso|1) El archivo de prueba debe importar el paquete unittest 2) La clase de prueba debe heredar unittest.TestCase 3) La clase de prueba debe tener unittest.main () método 4) El método de prueba debe comenzar con prueba_|1) El nombre del archivo de prueba debe comenzar con prueba o terminar con prueba 2) El nombre de la clase de prueba debe comenzar con Prueba 3) El nombre del método de prueba debe comience con test_| Ejecute algunos casos de uso cargando el traje de prueba|Marque clases y métodos a través del método @pytest.mark, pytest main agrega el parámetro -m para ejecutar solo las clases y métodos marcados||Pre y post de casos de uso|Proporcionar configurar/desmontar, solo para todos los casos de uso | los accesorios en pytest son obviamente más flexibles. La función del método se puede personalizar arbitrariamente, siempre que se agregue el decorador @pytest.fixture(), se puede usar el método decorado| |parametrizado|parametrizado|usando el decorador @pytest.mark.parametrize| |formato de aserción |Afirmar muchos formatos de aserción (assertEqual, assertIn, assertTrue, assertFalse)|Solo hay una expresión de afirmación, que es más conveniente de usar| |Generar informe de prueba|Usar HTMLTestRunner|pytest-HTML, allure plugin||Reejecución fallida|Ninguno|pytest- El complemento rerunfailures admite fallas en la repetición |

En términos generales, el formato de los casos de uso de prueba unitaria es complicado, no hay compatibilidad, hay pocos complementos y el desarrollo secundario es conveniente. pytest es más conveniente y rápido, y el formato de caso de uso es simple. Puede ejecutar casos de prueba de estilo unittest sin modificar ningún código del caso de uso unittest, y tiene una mejor compatibilidad. El complemento pytest es rico, como el complemento matraz, que se puede usar para volver a ejecutar el caso de uso cuando ocurre un error, y el complemento xdist, que se puede usar para la ejecución paralela del dispositivo, que es más eficiente.

Veinticuatro, patrón de diseño po

La diferencia entre listas y tuplas en Python, y la diferencia entre listas y diccionarios: 1. Las listas se pueden modificar, pero las tuplas no se pueden modificar. Las listas son equivalentes a una matriz dinámica, mientras que las tuplas son una matriz estática; 2. Las listas se declaran entre corchetes, la tupla se declara entre paréntesis, y cuando la tupla tiene un solo elemento, debe ir seguido del signo, sí, el diccionario está desordenado, 5. Se accede a la lista a través del índice, y el diccionario está se accede mediante la clave;

Inicié sesión como ejemplo, permítanme hablar sobre el proceso del modo de diseño po 1. El primer paso es implementar el tipo base de la página base, que realiza principalmente la adquisición de la unidad, y la prueba de compatibilidad se puede realizar a través de la unidad 2. Implemente la capa de objetos y encapsule el posicionamiento del elemento de la página de inicio de sesión, como el cuadro de entrada, determine el método de posicionamiento del elemento del botón 3. Realice operaciones relacionadas de acuerdo con el método de encapsulación y posicionamiento, como ingresar el nombre de usuario, ingresar la contraseña y hacer clic en el botón de confirmación 4. De acuerdo con la página encapsulada y la clase de operación, realice el patrón de diseño correspondiente: el objeto de página, por ejemplo, reduce la duplicación de código, hace que el código sea más legible y más fácil de mantener. Incluye principalmente tres capas, capa de objeto (principalmente encapsula el método de posicionamiento de ciertos elementos), capa de operación (encapsula algunas operaciones específicas de elementos) y capa de negocios (combina una o más operaciones en servicios específicos para lograr pruebas funcionales específicas)

25. La prueba del sistema incluye los siguientes aspectos

  • Prueba de interfaz de apariencia de software (denominada prueba de interfaz de usuario): prueba principalmente si el diseño de los módulos de función de la interfaz de software es razonable, si el estilo general es consistente, si el texto de la interfaz es correcto, si el nombre está unificado, si la página es hermosa y si la combinación de texto, color e imágenes es perfecta, etc. Dificultad de la prueba: Relativamente fácil.

  • Pruebas funcionales del software: principalmente para probar si todos los puntos funcionales presentados por el software a los usuarios pueden usarse y operarse normalmente, y si cumplen con los requisitos del documento de requisitos. Dificultad de la prueba: Moderada.

  • Pruebas de rendimiento del software: para probar si el software puede funcionar normalmente en diferentes entornos y presiones. Uno de los indicadores más importantes es el tiempo de respuesta del sistema. Por ejemplo, cuando varias personas visitan una determinada página web al mismo tiempo, si la página web se puede abrir dentro del tiempo especificado, etc. Dificultad de la prueba: Alta.

  • Pruebas de seguridad del software: probar la capacidad del software para evitar intrusiones ilegales. Dificultad de la prueba: Alta.

  • Prueba de usabilidad del software: pruebe si el software es fácil de operar, lo cual es relativamente subjetivo, y experimente si el producto de software es fácil de usar desde la perspectiva del usuario. Dificultad de la prueba: Relativamente fácil.

  • Prueba de compatibilidad de software: pruebe la compatibilidad del software con otro software. Como probador de software junior, la consideración principal es la compatibilidad entre el software y el navegador, incluida la compatibilidad de resolución. Dificultad de la prueba: Relativamente fácil.

Supongo que te gusta

Origin blog.csdn.net/DY_CSDN/article/details/130016848
Recomendado
Clasificación