¿Cómo hacer pruebas de interfaz? ¿Qué puede hacer Charles, un empleado certificado, por usted?


Hogwarts produjo el curso "Prácticas avanzadas de desarrollo de pruebas", y los arquitectos de pruebas senior y los autores de proyectos de código abierto enseñaron las mejores prácticas de vanguardia de los fabricantes de BAT. ¡4 meses de más de 20 proyectos de entrenamiento intensivo de combate real, lo llevarán a dominar las habilidades básicas necesarias para los ingenieros de desarrollo de pruebas BAT (estándar Ali P6 +, salario anual 50W +)! ¡Los aprendices presionan directamente a los gerentes de prueba de las empresas famosas de BAT, y el salario generalmente aumenta en un 50% o más!

En el último artículo, sentimos la belleza de la combinación de tcpdump y wireshark. Resultó que las herramientas y las herramientas no solo competían, sino que también cooperaban. ¿Recuerdas que hay un presagio en el artículo anterior, es decir, el proxy? herramienta: charles. Este artículo explica charles y lo lleva a experimentar el viaje de las pruebas de interfaz.
Charles es un nombre elegante, puedes llamarlo: Mr. Charles. Es un administrador de una red, cualquiera de sus mensajes de la red http/https debe ser revisado por el Sr. Carlos. Si tiene una buena relación con el Sr. Carlos, recibirá estos mensajes, e incluso puede manipularlos y enviarlos y recibirlos. . Sí, leíste bien, charles puede manejar mensajes de protocolo https. En el último artículo, teníamos miedo del protocolo https, porque https es una versión encriptada de http, tcpdump y wireshak no pueden hacer nada con este método de encriptación, pero charles se destaca entre la multitud, es lo suficientemente poderoso como para manejar mensajes bajo https protocolo.

Si la configuración del proxy es correcta, verá la imagen completa del Sr. Charles, con una barra de menú en la parte superior, cada sitio web/host que visite a la izquierda y detalles de información a la derecha. Es muy poderoso, y mientras aprendes a usarlo, puedes ver todo lo que se transmite por la red.

Para que todos los datos del navegador (o aplicación web) lleguen a charles, debe configurar charles como un servidor proxy, pero cada vez que enciende o apaga charles, debe volver a configurarlo. Si quiere ser perezoso, puede usar Proxy- > Cuadro de diálogo emergente Configuración de proxy para configurar el comportamiento.

  • Xiao Ming: "Hay dos agentes en las opciones, Sr. Charles, ¿cuál es la diferencia entre ellos?"

    • charles: "Los proxies de calcetines simplemente pasan paquetes de datos, independientemente del protocolo de la aplicación (como solicitudes FTP, HTTP y NNTP). Por lo tanto, los proxies de calcetines son mucho más rápidos que otros proxies de capa de aplicación. Y el proxy cuando navega por la web El servidor suele ser un proxy http!"
    • Xiao Ming: "Jaja, lo entiendo. Si puedo navegar por la web, no significa que pueda acceder a Internet a través de Socks, ¿verdad?"
    • charles: "¡Sí, los calcetines son mucho más holgados que http!"
  • Xiao Ming: "Dado que el Sr. Charles administra la red, debe tener una forma de almacenar esta información de solicitud de red, ¿verdad?"

    • charles: "Por supuesto, mi habilidad más importante es grabar, todas las solicitudes y respuestas se grabarán en la sesión para que todos las revisen y analicen más tarde. Puede abrir el Archivo en la barra de menú, donde puede administrar su sesión, incluida la creación nuevo, abierto, vacío, etc."
  • Xiao Ming preguntó tímidamente: "¿Puedo cerrar el registro y abrirlo nuevamente cuando lo necesite, para poder hacer cosas desconocidas en secreto?"

    • Charles sonrió a sabiendas: "Si el registro está desactivado, Charles aprobará todas las solicitudes normalmente, pero no se registrarán en la sesión. Puede hacer clic a continuación para desactivar el registro".
  • Xiao Ming: "Sr. Charles, descubrí que en la interfaz principal hay dos opciones 'Estructura' y 'Secuencia'. ¿Cuál es la diferencia entre ellas?"

    • charles: "¡Jajaja, este es mi espejo de doble cara! Proporciono dos modos de visualización, puede cambiar en vista->estructura/secuencia, o puede cambiar directamente en la interfaz"
    • charles tomó un sorbo de té: "La mayor diferencia es que la vista estructural proporciona una visualización de diagrama de árbol, mientras que la vista secuencial se muestra en orden cronológico"
  • Xiao Ming: "Así que ese es el caso. Vi muchas cosas como enlaces debajo de la vista. Estoy confundido. Préstame tus anteojos para leer".

    • Charles escondió apresuradamente sus anteojos para leer: "Eso no es bueno, pero puedo enseñarle una forma de filtrarlos. Estas cosas similares a enlaces son el nombre del host. Si hace clic con el botón derecho en el nombre del host, aparecerá una serie de operaciones correspondientes, como guardar y enfocar. , este enfoque significa enfocarse solo en la información que queremos.”
  • Charles: "La operación de enfoque puede filtrar información inútil. Por ejemplo, solo quiero centrarme en baidu. Puedo centrarme en el host de Baidu, de modo que esos hosts que no son de Baidu se dobleguen y aparezca lo siguiente".

  • Xiao Ming dejó las gafas de lectura robadas: "¡Guau, eso es genial, las gafas de lectura te las devolvieron!"

    • charles: "¡Vaya, estás enojado conmigo por robarme algo!"
  • Xiao Ming miró la pantalla durante mucho tiempo: "¡Estas barras azules son tan hermosas!"

    • Charles mantuvo la cabeza en alto: "Por supuesto, este es el gráfico, mi lugar más hermoso, el gráfico registra principalmente el ciclo de vida de un recurso: desde la solicitud hasta la espera y la respuesta a las solicitudes, no solo eso, también agrupa recursos relacionados, como las siguientes 4 imágenes son un grupo".
  • Xiao Ming: "Usando el gráfico, puedes saber dónde lleva mucho tiempo la solicitud, ¡y no estarás esperando estúpidamente!"

  • Xiao Ming: "Dado que el Sr. Charles es tan poderoso y puede captar solicitudes de red sin escrúpulos, ¿serás arrestado por el tío policía?"

    • Charles no está nervioso en absoluto: "Lo que hacemos es una operación legal, tengo mi propio certificado, lo llamo: Charles Root Certificate, al raspar datos, es probable que reciba una advertencia sobre el certificado, eso es normal, solo confíe en él, si desea confiar en el Certificado Charles Root de una vez por todas, puede seguir el enlace a continuación"
  • Certificado raíz de Charles: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

    • Xiao Ming: "Entonces, ¿qué tiene que ver el certificado con SSL?"
    • charles: "En realidad estás preguntando cómo funciona SSL. De hecho, soy el hombre en el medio. Veo el certificado del servidor y lo firmo para el navegador, pero al mismo tiempo, enviaré mi propio certificado al navegador, por lo que habrá una advertencia, debe agregarla a la secuencia de confianza. Se puede usar normalmente, y la siguiente imagen es clara y clara ".
  • Xiao Ming: "Jaja, el abuelo Charles es un pequeño experto".

    • charles: "tonterías, cómo te pueden llamar abuelo, claramente tiene menos de 30 años"
    • Xiao Ming: "Es más amable llamarlo así".
  • Xiao Ming: "Estoy tan cansado hoy. Quiero enviar solicitudes repetidas a mi compañero de clase. ¡Parece estar dormido y no ha respondido a mi mensaje!"

    • charles: "Oh, Xiao Ming, ¿cómo puedes enviar manualmente uno por uno? Tengo una súper herramienta: prueba de carga, haz clic con el botón derecho en el nombre del host -> Repetición avanzada, ¡ábrelo!"
  • charles: "Esta herramienta tiene varios parámetros difíciles, las iteraciones son fáciles de entender, es la cantidad de veces que desea enviar, la concurrencia es el nivel de concurrencia, que indica la cantidad de usuarios que visitan el sitio y la cantidad de iteraciones".

    • Xiao Ming: "Entonces configuré enviar 10 veces, el nivel de concurrencia es 1, ¡enviar!"
  • Charles abrirá una nueva sesión en este momento y la enviará 10 veces, ¡cada vez con un mensaje detallado correspondiente!

  • Xiao Ming: "El software que escribí es muy extraño. Cuando la red es buena, no hay problema, pero cuando la señal es deficiente, obviamente está atascado. Parece que solo puedo agacharme en el baño (señal deficiente) para ajustar el error ".

    • charles: "Jajaja, tonto, acabo de traer mi propia herramienta de red débil. En Proxy->Ajustes de aceleración, recuerde marcar Habilitar aceleración antes de usarla".
    • Charles hizo una pausa: "Si desea especificar un sitio web, puede marcar Solo para hosts seleccionados en la figura a continuación y luego agregar el elemento de hosts especificado en la configuración en la mitad inferior del cuadro de diálogo".
  • Xiao Ming estaba un poco mareado: "¡Estos parámetros son tantos, tan complicados!"

    • Charles sonrió y le dio unas palmaditas en la cabeza a Xiao Ming: "Xiao Ming, así es como crece la gente, no siempre es fácil navegar, escuche con atención, puede elegir el tipo de red en Throttle Preset, por ejemplo, elegir un módem de 56 kbps puede reducir la velocidad de la red , y el significado de las opciones, las enumeraré a continuación"
  • Las opciones en la vista Configuración del acelerador tienen los siguientes significados:

  • 1. Ancho de banda: ancho de banda

  • 2.Utilización: porcentaje de utilización

  • 3.Ida y vuelta: retraso de ida y vuelta

  • 4. MTU: bytes

  • Xiao Ming: "Abuelo Charles, muchos IDE que he usado tienen funciones integradas de depuración de puntos de interrupción. ¿Las tienes aquí?"

    • Charles: "Los puntos de interrupción son herramientas muy importantes, ¡cómo puede no tenerlos! Abra Proxy->Configuración de puntos de interrupción, marque Habilitar puntos de interrupción para habilitar el modo de punto de interrupción, seleccione Agregar y luego complete el Esquema, Protocolo, Host y Puerto que deben ser monitoreado. Espere la información, para que se logre el propósito de establecer puntos de interrupción. O puede hacer clic derecho en una URL de solicitud donde desea establecer un punto de interrupción y seleccionar Puntos de interrupción para establecer un punto de interrupción".
  • Xiao Ming frunció el ceño: "Pero esto es tan problemático, ¿tienes que configurar Scheme, Procotol, Host y Port cada vez?"

    • charles: "Por supuesto que no, también puede hacer clic derecho en el nombre del host y seleccionar un punto de interrupción"
  • Xiao Ming aplaudió: "Vaya, eso es genial, debo probar más esta función de punto de interrupción".

  • Charles: "En realidad, no solo soy una herramienta de proxy, sino también un proxy inverso"

    • Xiao Ming miró a Charles confundido: "¿Qué es un proxy inverso?"
    • Charles: "El proxy inverso significa que el cliente desea acceder al servidor. Primero accederá al servidor proxy. Cuando la puerta de enlace proxy reciba la solicitud del usuario, se reenviará a uno aleatorio de los servidores proxy. Desde el punto de vista del usuario vista, solo accede al servidor proxy. Es solo un servidor proxy".
  • Xiao Ming: "Es decir, el proxy inverso es el proxy del servidor. El cliente no conoce la existencia del servidor en absoluto, ¡solo la existencia del servidor proxy!"

    • charles: "Sí, puede encontrar esta función en Proxy→Configuración de proxy inverso, que es muy común, especialmente para el desarrollo local y la necesidad de un nombre de dominio".
  • charles: "Esta captura de pantalla significa asignar el puerto local 57689 al puerto 80 del nombre de dominio www.baidu.com"

  • Xiao Ming sonrió: "Es muy molesto. Tengo muchos juegos en línea en mi teléfono. ¿Puedo pedirle al abuelo Charles que me ayude a ver qué paquetes de datos hay en los juegos en línea? ¿Puedo cambiarlo?"

    • charles: "¿Qué pasa? Tenga en cuenta que puedo capturar los datos en el teléfono, pero la computadora y el teléfono deben estar en la misma red wifi"
    • Xiao Ming miró a Charles con entusiasmo: "De verdad, ¿qué debo hacer? Enséñame rápido".
    • Charles sacudió la cabeza con impotencia: "Tienes que abrir Proxy-> Configuración de Proxy, completar el puerto de proxy 8888 y marcar "Habilitar proxy HTTP transparente" para completar el proxy"
  • charles: "Entonces, debe agregar un proxy a la red wifi móvil, ingresar la IP de la computadora y el número de puerto de charles: 8888, ¡y puede capturar los datos de la red en el teléfono móvil!"

    • Xiao Ming: "Genial, lo voy a intentar"
  • 10 minutos más tarde…

    • Xiao Ming: "Charles, obtuve los datos, pero ¿por qué se desconocen?"
  • charles: "No me escuchó, así que lo hizo usted mismo. Son datos http. Si desea obtener el paquete http, debe hacer lo siguiente".

El punto está llegando, nuestro https perdido hace mucho tiempo finalmente apareció y charles resolvió el problema de encriptación con un certificado. ¿Cómo hacerlo? Si usa una computadora, instale el certificado de la siguiente manera:

Después de seleccionar, aparecerá la descarga del certificado. Después de que la descarga sea exitosa, lo verá en el "Acceso al llavero" de la computadora (lo he instalado y confiado aquí), luego haga doble clic en el certificado descargado y marque Confiar.
Si utiliza un teléfono móvil:

Marque Instalar ... Dispositivo móvil en proxy SSL, aparecerá un cuadro emergente, use el teléfono móvil (en estado de proxy) para iniciar sesión en la URL especificada para descargar el certificado.

En este momento, cuando obtiene https, aún encuentra que no puede funcionar, agregue un código desconocido al ilegible (como se muestra a continuación)

En este momento, todavía necesitamos un paso, es decir, agregar el https que queremos capturar al proxy SSL, para que Charles pueda reconocerlo y analizarlo.

  • Xiao Ming: "Vaya, estoy demasiado impaciente, ahora no hay personajes confusos".
    La función de redirección de Charles se divide en dos tipos: Map Remote y Map Local. Como su nombre lo indica, Map Remote redirige la solicitud de red especificada a otra dirección de solicitud de URL, y Map Local redirige la solicitud de red especificada a un archivo local. Ejemplo para explicar en detalle.
    5. Primero guarde los datos de retorno de la interfaz (haga clic con el botón derecho en una interfaz y guárdela en formato html, como se muestra a continuación)

6. Modificar el html local

7. Establecer charles para mapear local

8. Solicite Baidu nuevamente en este momento

En el menú de Charles, seleccione "Herramientas" -> "Mapa remoto" o "Mapa local" para ingresar a la página de configuración de la función correspondiente.

9. Configure el parámetro Toos->Map Remote

10. Verifique los resultados de acceso, encontrará que www.baidu.com será redirigido a www.sougou.com

La función Reescribir es adecuada para realizar algunos reemplazos regulares en un cierto tipo de solicitud de red para lograr el propósito de modificar el resultado.
11. Abra Herramientas->Reescribir, reemplace el contenido y reemplace "Mis preocupaciones" en la página con Hogwarts

12. Solicite Baidu nuevamente

  • falso: significa hacer una falsificación, pero puede funcionar. Por ejemplo, al usar el algoritmo hashmap para reemplazar la base de datos, también puede consultar/modificar los datos. Charles usa Map Remote para implementar operaciones falsas.
  • La fuente de la imagen es de Internet y la infracción se eliminará de inmediato.
    • stub: respuestas predefinidas a comportamientos limitados. El muñeco de madera de Wing Chun es un stub. No importa cómo lo golpees, el stub de madera es imparable. Por ejemplo, no importa lo que se solicite, la devolución está bien. Esto es un completo mentiroso. Charles usa maplocal para implementar la operación stub.
    • Mock: se puede entender como un stub más avanzado, que puede personalizar el comportamiento. Charles usa la reescritura para implementar operaciones simuladas.
    • apoderado: apoderado. Charles usa un proxy inverso para implementar operaciones de proxy.
      Lo anterior es una introducción a fake, stub, mock y proxy. Puedes entenderlo como hacer trampa, por lo que Charles no es tan amable como pensamos.
      Sin embargo, también tiene su propio hermano bueno: las solicitudes. Debido al número limitado de palabras en el artículo, en el próximo artículo presentaré solicitudes y le mostraré la combinación perfecta de carlos y solicitudes.
      Cahrles es un administrador de red competente.Este artículo presenta sistemáticamente el uso de las herramientas charles desde la interfaz hasta funciones importantes.
      Con charles, no solo puede enviar y recibir datos de red en la computadora, sino también enviar y recibir datos de red en el teléfono móvil. Todos los alumnos están Xiaoming y están llenos de curiosidad sobre el nuevo software, pero en realidad no existe el Sr. Charles. Todas las preguntas deben explorarse y aprenderse por sí mismas. Solo lo que obtienes por ti mismo es tuyo.

Maravillosos artículos buenos en el pasado:
¿Qué papel juegan las herramientas en las pruebas de interfaz?
Tecnología de pruebas de interfaz Dubbo, una habilidad necesaria para el desarrollo de pruebas

Uso compartido de artículos más técnicos
El diagrama del título se cita de la
interfaz de Real Python. La aserción de solicitud significa que después de que se inicia una solicitud, se juzga el contenido de la respuesta devuelta para verificar si el contenido de la respuesta es consistente con el valor de retorno especificado.
Después de realizar la solicitud, usamos una variable r para almacenar el contenido de la respuesta, que es el objeto Response.
El objeto Response tiene muchos métodos poderosos a los que se puede llamar, como obtener directamente el encabezado de la respuesta, obtener el contenido de la respuesta codificado en Unicode, obtener el contenido de la respuesta binaria, obtener el contenido de la respuesta original, etc.
Obtenga el encabezado de respuesta
Obtenga el valor de respuesta codificado:
también puede usar r.raw para obtener el contenido de respuesta original, r.content para obtener el contenido de respuesta binario y el contenido de respuesta codificado en formato JSON, que se describirá en detalle en los siguientes capítulos.
Instale la biblioteca JSON:
aserción del código de estado de respuesta : la afirmación
es una función integrada de Python, que se utiliza para juzgar la expresión, cuando la condición de la expresión es falsa, activará una excepción.
r.status_code es un método en el objeto Response para obtener el código de estado del valor devuelto.
afirmar r.status_code==200 es juzgar si el código de estado es igual a 200, y si no es igual a 200, se lanzará una excepción.
Ejemplo de contador: afirme el código de estado de respuesta para determinar si el código de estado de respuesta es 400.
Del ejemplo anterior, podemos saber que el código de estado de respuesta debe ser 200, porque no es igual a 400, por lo que se lanza una excepción.
Durante las pruebas, la mayoría de los valores de retorno de la interfaz están en formato JSON. Por lo tanto, dominar la habilidad de cómo afirmar el valor de respuesta JSON puede mejorar más fácilmente el caso de prueba de automatización de la interfaz.
r.json() Primero realice la codificación JSON para el valor de respuesta r:
para el formato de diccionario, puede obtener el valor del valor a través de dict["clave"].
Para el formato de lista, puede obtener el valor del índice correspondiente a través de la lista[ índice] .
Entre las afirmaciones de JSON, la aplicación principal es el método de búsqueda que viene con el diccionario y la lista. Si encuentra una situación mixta o anidada, solo necesita marcarla capa por capa hasta que encuentre el campo que debe afirmarse.
Aserción de formato de diccionario, juzgando que el Host en los encabezados es httpbin.org

1. La primera capa es el valor con el valor clave de "header"
2. La segunda capa es el valor con el valor clave de "Host" 3. Determine si el valor del valor clave de "Host" se mezcla con el Diccionario igual
de "httpbin.org" Aserción

4. La primera capa es el valor cuyo valor clave es 'formulario'
5. La segunda capa es el valor cuyo valor clave es 'hogwarts'
6. La tercera capa es el valor cuyo índice es 0
7. Determine si el valor cuyo índice es es 0 en el paso anterior es más contenido igual a "a"
, lo interpretaremos en detalle en capítulos posteriores.

Enlace original

Se comparten más artículos técnicos.
En las 15 contrataciones populares, únase al grupo para obtener el esquema completo de la
práctica avanzada de desarrollo de pruebas de Python, desafíe a Ali P6+, ¡el salario anual es de 50W+!

Práctica de marco de prueba de interfaz (5) | Datos de prueba basados ​​en datos

Práctica de marco de prueba de interfaz (4) | Práctica general de empaquetado de API

Práctica del marco de prueba de interfaz (3) | Modo APIObject, principio y aplicación

Práctica de marco de prueba de interfaz (2) | Obtenga pruebas de interfaz en múltiples entornos

Práctica de marco de prueba de interfaz (1) | Encapsulación de procesos y diseño de casos de prueba basados ​​en interfaz cifrada

Productos secos | Obtenga el marco de prueba automatizado de pytest en un artículo (1)
Productos secos | Obtenga el marco de prueba automatizado de pytest en un artículo (2)
Pruebas automatizadas de Python (3): construcción de casos de prueba parametrizados de pytest
Pruebas automatizadas de Python (4): basadas en datos
Pruebas automatizadas de Python (5): Pytest combinado con Allure para generar
informes de prueba

Enlace original

Más artículos técnicos para compartir

Supongo que te gusta

Origin blog.csdn.net/hogwarts_2022/article/details/124269590
Recomendado
Clasificación