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

Debido a que el contenido de este capítulo se completa con el uso de la herramienta jq, al principio se dedicará una cierta cantidad de espacio al uso de la máquina jq. Si el lector ya está familiarizado con jq, puede omitir esta parte directamente. .
Veamos primero el escenario de la aplicación. La aplicación a menudo tiene una página de lista para mostrar alguna información, como la lista de los platos del comerciante, la compañía de las existencias, la visualización de la lista del artículo, etc., por ejemplo, lo siguiente:
Si los platos no son suficientes para comer ~ No, la cantidad de platos no es suficiente para probar Si queremos probar cientos de platos, ¿habrá algún impacto en el rendimiento al cepillar, si la pantalla es normal, el valor límite prueba de la visualización de la lista, etc.;
y para probar, debe haber visualización de datos, esta vez si es un poco problemático encontrar o crear tantos datos a través del backend. De hecho, el punto de prueba de nuestra prueba es probar la visualización y el rendimiento de la página frontal. Siempre que esta parte de los datos esté disponible, no importa si los datos se obtienen realmente de la base de datos.
En este momento, puede usar los medios de simulación para generar clases de equivalencia para estos grandes datos, de modo que el front-end pueda obtener este tipo de datos, ¡y Charles es una de nuestras herramientas para implementar pruebas de simulación manuales!
Por convención, primero mire la explicación del sitio web oficial de jq:
la dirección del sitio web oficial de jq: https://stedolan.github.io/jq/
probablemente significa línea de comando de procesamiento Json ligera y flexible.
Uso
Hablando de esto, algunas personas pueden sentirse un poco acerca de para qué se puede usar. ¿Por qué necesita usar jq para la simulación manual? ¡Así es! Úselo para procesar los datos json devueltos por la interfaz para lograr el efecto de burla.

Para las pruebas de interfaz no es suficiente dominar únicamente el uso de Solicitudes o algunas otras bibliotecas poderosas, también es necesario tener la capacidad de personalizar un marco de prueba de automatización de interfaz de acuerdo con los procesos y necesidades comerciales de la empresa. Por lo tanto, a continuación, presentamos principalmente el análisis de casos de prueba de interfaz y cómo se completa la encapsulación general del proceso.
En primer lugar, antes de realizar el análisis de casos de uso, puede averiguar los puntos débiles de calidad rastreando todas las causas de fallas de la empresa en el último año y ubicando la causa del problema, o realizando investigaciones con el CTO, gerente de producto , I + D, operación y mantenimiento, y pruebas para obtener los puntos débiles de calidad, y también para analizar la estructura comercial y la invocación del proceso. , y el sistema de monitoreo comprende los datos de uso del negocio, para obtener los requisitos de calidad.
Después de obtener los requisitos de calidad, el plan de prueba de la empresa se determina al conectarse con el gerente de producto, el gerente de proyecto, el director de I + D, etc. para conocer el alcance comercial que se probará, los casos de uso del escenario comercial y el análisis de la interfaz comercial. Después de analizar el plan de prueba y los requisitos de calidad, se puede iniciar el diseño de casos de uso comercial y también se incluye el análisis de casos de prueba de interfaz.
https://ceshiren.com/uploads/default/original/3X/a/9/a9e2168a50554fbb24d8d208c7a7dbf72b1c1c50.png)
La idea de encapsulación de interfaz se divide principalmente en tres dimensiones principales: configuración, encapsulación de interfaz y proceso comercial. en:

  • La configuración se utiliza principalmente para obtener la configuración inicial y las dependencias en función de los archivos de configuración;
    • La encapsulación de la interfaz sigue el patrón de diseño APIObject y abstrae la invocación de la interfaz;
    • El proceso comercial es responsable de la inicialización de datos y el diseño de casos de uso comercial. Contiene definiciones de proceso formadas por múltiples API y no contiene detalles de implementación de interfaz ni aserciones.
  • Lo siguiente se combinará con casos prácticos para una introducción detallada.
  • Por razones de seguridad de la información, muchas interfaces cifran las solicitudes y respuestas durante la transmisión, por lo que obviamente no es factible afirmar directamente esta parte de los datos. También es necesario realizar un procesamiento de descifrado adicional en esta parte de la interfaz antes de afirmar la interfaz descifrada.
  • Antes del combate real, debe preparar una interfaz para cifrar la respuesta. Después de iniciar una solicitud de obtención, obtenga un mensaje de respuesta encriptado.
  • Primero prepare una demostración en formato JSON:
  • Cifrarlo con base64 y obtener un archivo cifrado demo64.txt
  • Use el comando Python para iniciar un servicio en el directorio donde se encuentra "demo64.txt"
  • Se ve así después del inicio:
  • https://ceshiren.com/uploads/default/original/3X/a/8/a81aa06774d14929778820a4801f5304b1683cb2.png)

Si la solicitud es exitosa, significa que el entorno está listo para
llamar a base64 con éxito, descifrar la solicitud devuelta directamente, puede obtener la respuesta descifrada y convertir la respuesta descifrada al formato JSON. En este momento, puede hacer una afirmación sobre se informará el valor devuelto y ningún error.
Obviamente, esta forma de escribir no es elegante. Si el protocolo de la interfaz probada cambia, la biblioteca de solicitudes no puede admitir el protocolo modificado. Si necesita llamar a otra tercera biblioteca para enviar la información de la solicitud, aún debe modificar el código fuente subyacente. . En este caso, puede agregar una capa de encapsulación para construir un método de envío más general.
En primer lugar, es necesario almacenar toda la información de solicitud a través de una estructura de diccionario, incluido el protocolo enviado, el método de decodificación, el método de solicitud, etc., y esta estructura de estructura de diccionario también constituye una preparación importante para la posterior transformación basada en datos. .
A través del esquema en la estructura de la información de la solicitud, agregue condiciones de juicio para seleccionar diferentes protocolos de solicitud. Por ejemplo, si el esquema es "http", elija llamar a la biblioteca de solicitudes encapsuladas.
Llame al método de envío en la clase ApiRequest para enviar la solicitud y hacer una afirmación.Si
se enfrenta a diferentes algoritmos, el código fuente subyacente debe modificarse, por lo que el algoritmo debe encapsularse. Use cualquier algoritmo que necesite usar. La idea de encapsulación es la misma que la anterior. Primero, agregue un campo de codificación a la estructura del diccionario para juzgar las diferentes condiciones de cifrado seleccionadas.
O a través de la codificación en la estructura de la información solicitada, agregue condiciones de juicio para elegir diferentes métodos de descifrado.
En primer lugar, es necesario aclarar qué tipo de método de procesamiento se puede utilizar ante un resultado de respuesta encriptado:
1. Si sabe qué algoritmo de encriptación general se utiliza, puede resolverlo usted mismo.
2. Si no conoce el algoritmo de cifrado correspondiente, puede dejar que R&D proporcione la librería para el cifrado y descifrado.
3. Si no es un algoritmo de cifrado de uso general ni una librería que pueda proporcionar cifrado y descifrado, la parte de cifrado puede proporcionar servicios de análisis remoto, de modo que el algoritmo siga siendo confidencial.
Este artículo habla principalmente sobre cómo lidiar con dicho algoritmo de descifrado en el caso de comprender el uso de algoritmos de cifrado. Sin embargo, las ideas de encapsulación son las mismas. No importa qué tipo de situación enfrente, puede especificar el contenido de los datos a través de datos formateados y encapsular el cifrado y descifrado o el protocolo seleccionado a través de una capa de encapsulación lógica.
estudio recomendado

En realidad, se utiliza el marco de prueba de interfaz. Se recomienda que Hogwarts haya producido el curso "Práctica avanzada de desarrollo de pruebas", la práctica de vanguardia de la fábrica BAT y el autor del proyecto de código abierto.

¡4 meses de más de 20 proyectos de entrenamiento intensivo de combate real, los maestros de prueba Sihan les enseñan a pescar y dominan en un solo paso las habilidades básicas necesarias para los ingenieros de desarrollo de pruebas BAT (Ali P6+ estándar, salario anual de 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!

14 inscripciones calientes
[Artículos relacionados]

  • Práctica de marco de prueba de interfaz (1) | Solicitudes y construcción de solicitud de interfaz
    • Práctica del marco de prueba de interfaz (2) | Afirmación de solicitud de interfaz
      Mejore su competitividad central
      Enlace original

Más artículos técnicos para compartir
[Falló la transferencia de imagen de enlace externo, el sitio de origen puede tener un mecanismo anti-leech, se recomienda guardar la imagen y subirla directamente (img-kRyH51v4-1650338606554) ([Descarga de imagen de enlace externo…(img -hXkwo6HP-1650338601302 )]] 1.
El método de la línea de solicitud es diferente:
2. POST se puede adjuntar con el cuerpo, que puede admitir varios formatos de datos, como formulario, json, xml, binario, etc.
de las especificaciones generales de la industria, se recomienda no utilizar la solicitud GET de cambio de estado, la escritura de datos y el estado sugieren utilizar la solicitud POST;
para evitar la interferencia de otros factores, utilice Flask para escribir un servidor de demostración simple.
4. Instale Flask
5 Cree un archivo
hello.py hello.py
6. Inicie el indicador de servicio
La siguiente información indica que la configuración se realizó correctamente.
Inicie una solicitud GET, envíe los parámetros a y b a la URL y guárdelos en el archivo get:
iniciar una solicitud POST, envíe los parámetros a y b en formato de datos de formulario y guárdelos en el archivo de publicación:
Nota: El lado derecho de > es el contenido de la solicitud y el lado izquierdo de < es el contenido de la respuesta
. proceso Proceso de
solicitud POST
Compare los dos archivos:
https://ceshiren.com/uploads/default/original/3X/4/a/4a03ca7af2fd5c321ad29931659094b71fbb825c.png)
Se puede ver claramente en la figura que el método de la solicitud GET es GET, y el método de la solicitud POST es POST.Además, la solicitud GET no tiene los campos Content-Type y Content-Length, mientras que la URL en la línea de solicitud tiene el parámetro de consulta, que es un formato permitido para ambas solicitudes. (Fin)

Recomiendo el curso "Desarrollo de prueba desde principiante hasta avance de sistema de combate avanzado" producido por Hogwarts, que está cerca del contenido de práctica de primera línea de los principales fabricantes y lidera la industria.

4 meses desde lo superficial hasta lo profundo, fortalezca el campo de entrenamiento, dirija al maestro de pruebas Sihan para dar conferencias, enséñeles cómo pescar y, a través de más de 10 simulacros de combate reales de proyectos de nivel empresarial, lo llevará a dominar las habilidades básicas necesarias para ¡Ingenieros de prueba y desarrollo de BAT en un solo lugar (evaluación comparativa de Ali Baba P6+, salario anual de desafío de 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!

Mejore su competitividad central

Más artículos técnicos para compartir
[Falló la transferencia de imagen de enlace externo, el sitio de origen puede tener un mecanismo anti-leech, se recomienda guardar la imagen y subirla directamente (img-2gzZ1mB0-1650338532670) ([Descarga de imagen de enlace externo... (img-xW4hjAjO-1650338530772)]], si Homebrew está instalado, un comando brew install jq puede

    • Otros sistemas: El sitio web oficial de jq es muy considerado. Brinda los métodos de descarga de cada sistema y los enlaces a las herramientas de descarga correspondientes. Para obtener más información, consulte el sitio web oficial. Los enlaces son los siguientes
    • Filtrado básico.
  • En pocas palabras, se emite tal como es:
  • Filtrado de objetos .key, .key1.key2, .["key"]
  • Filtrado de índices.key[index], .key[startIndex: endIndex]
  • .Índice de Clave]
  • .key[ índiceInicio: índiceFinal]
  • compilación de objeto {}, []
  • Si una de las expresiones tiene más de un resultado, la salida también produce múltiples resultados
  • Si la clave no existe, el valor se establecerá en nulo
  • Poner paréntesis alrededor de la clave significa que se evaluará como una expresión.
  • Otro uso común:
  • calcular
  • obtener longitud
  • operaciones de matriz
  • jq puede tener operaciones de unión ('+') y diferencia ('-') para matrices:
  • Union('+'): hay arreglos a,b; a+b obtendrá un nuevo arreglo que contiene todos los elementos del arreglo a,b:
  • Diferencia ('-'): Hay arreglos a, b; ab obtendrá un nuevo arreglo que solo contiene los elementos en a y no contiene los elementos en b:
  • más uso
  • Para más uso, consulte el sitio web oficial:
  • https://stedolan.github.io/jq/manual/#Basicfilters
  • Hay 2 artículos de ciencia popular en la columna de recomendación de ciencia popular en la figura a continuación, y ahora quiero burlarme de docenas o incluso cientos de artículos o anuncios.
    • El mensaje json de respuesta de la interfaz grab es el siguiente:
  • Almacenamos los datos en un archivo json y lo asignamos a una variable
  • Luego usamos jq para realizar la operación += en la lista en pageList, completar un crecimiento doble y pasar el resultado a la variable mockData.
  • De acuerdo con el método anterior, la cantidad de elementos en la lista se duplicará cada vez, es decir, las n veces de la operación se convertirán en la n-ésima potencia de 2, y no es necesario decir más la velocidad de crecimiento exponencial~
  • De esta forma, después de obtener los datos según sus propias necesidades, los nuevos datos se almacenan en el archivo json y se completa el proceso de preparación de datos más importante:
  • Habiendo dicho tantas "tonterías", finalmente llegué al protagonista. De hecho, los datos están listos y el uso de la herramienta sigue siendo muy simple. Charles tiene una función llamada Map Local, que se puede encontrar haciendo clic derecho en la solicitud que desea simular:
  • Map Local puede reemplazar el retorno de la interfaz especificada con un archivo local, como el archivo de datos MockTest.json generado por las tonterías anteriores durante mucho tiempo:
  • Luego actualice la página nuevamente para ver el efecto, la lista de páginas se duplicará como se esperaba, y no necesita ir a la base de datos para agregar datos, solo guarde un archivo json para probar y usar:
  • Arriba, espero su comunicación y correcciones.
  • 【Artículos relacionados】
    • Prueba de interfaz Simulacro de combate real basado en la tecnología Charles Proxy (1)
    • Estrategia de pruebas de interfaz y modelo de análisis de problemas

Enlace original

Más artículos técnicos para compartir

Supongo que te gusta

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