Prueba automatizada de la interfaz Postman en un minuto


Resumen

Tengo un trabajo secundario (gratis, pero la cuestión es el destino, después de todo, no tengo suficiente tiempo), y resulta que estoy instruyendo a algunos programadores graduados para que encuentren trabajo. Descubrí que la diferencia en la capacidad se refleja en el arduo trabajo adquirido, y la brecha en el desarrollo profesional se forma en la cognición. Al mismo tiempo, también se organizan los recursos de prueba de software más recientes (tutoriales en video, documentos PDF, preguntas de entrevistas) en los últimos dos meses.

Los amigos que necesiten esta información pueden agregar mi cuenta pública [Sad Spicy Bar] para recibirla.

Este artículo es adecuado para lectores que han dominado el uso básico de Postman, es decir, tienen una cierta comprensión de los conceptos relacionados con la interfaz y ya usan Postman para operaciones básicas como solicitudes de simulación.

Entorno de trabajo y versión:

  • Ventana 7 (64 bits)
  • Postman (Aplicación Chrome v5.5.3)

PD: las diferentes versiones de la interfaz de usuario de la página y la ubicación de algunas funciones serán un poco diferentes, pero el impacto no es grande.

En primer lugar, pensemos en ello, si queremos lograr el efecto de las pruebas de interfaz automatizadas, ¿qué más se debe hacer en la solicitud de simulación básica?

Resumí aproximadamente en 3 preguntas (deje un mensaje en el área de comentarios para obtener más sugerencias complementarias):

  1. ¿Cómo juzgar si la solicitud de interfaz es correcta?
  2. ¿Cómo realizar pruebas regulares y por lotes de interfaces?
  3. ¿Cómo lidiar con el problema de confiar en la interfaz (por ejemplo, la interfaz para realizar un pedido debe registrarse primero)?

Por lo tanto, lo siguiente se divide principalmente en 3 partes, presentando cómo resolver estos 3 problemas.

1 Juicio de resultado de interfaz

En primer lugar, dado que es una prueba automatizada, definitivamente necesitamos usar la herramienta Postman o el código para ayudarnos a determinar directamente si los resultados cumplen con las expectativas. Luego, en las pruebas de interfaz, hay aproximadamente dos ideas:

  1. Determine si el código devuelto por la solicitud cumple con las expectativas

  2. Determine si el contenido devuelto por la solicitud contiene el contenido esperado (palabra clave)

A continuación, veremos cómo usar Postman para resolver los problemas anteriores:

1.1 Área funcional


Las funciones relacionadas en Postman son muy notorias. El uso de Tests requiere que tengamos una cierta base de lenguaje de programación. El lenguaje de scripting actualmente soportado es JavaScript. Pero el mejor punto es que no necesitamos considerar el contexto y el entorno operativo, es decir, solo necesitamos completar el bloque de código del juicio lógico de resultado aquí.

Y Postman también nos proporciona algunas plantillas de código de uso común, en el área funcional de SNIPPETS en el lado derecho del panel de Pruebas, por lo que no es un gran problema si no sabe mucho sobre JavaScript. La escritura de código se describirá en detalle a continuación.

1.2 relacionado con el script

Mirando la parte del código de la figura anterior, podemos encontrar tres variables: responseCode, responseBody y tests (se pueden usar directamente):

  • responseCode: contiene la información de estado devuelta de la solicitud (como el código).
  • responseBody: el contenido de datos devuelto para la solicitud de interfaz (el tipo es cadena).
  • pruebas: en forma de pares clave-valor, que se utilizan para indicar si los resultados de nuestra prueba son correctos o no, y finalmente se muestran en Resultados de la prueba.
  • clave: (por ejemplo, código 200) podemos usarlo como descripción del resultado.
  • valor: el valor es booleano, verdadero significa que la prueba pasó, falso significa que la prueba falló.

Por lo tanto, el código anterior no debería ser difícil de entender, y con los datos del resultado devuelto y la forma de indicar el éxito o el fracaso del resultado, entonces nuestro problema de "juicio de resultado de interfaz" está básicamente resuelto.

También hay varios más utilizados:

  • responseTime: el tiempo que tardó la solicitud

  • cartero: Puedes hacer más, como

    Obtenga la información del encabezado de los datos devueltos:
    postman.getResponseHeader("")
    establezca variables globales:
    postman.setGlobalVariable("variable_key", "variable_value");

1.3 Plantilla de código

Las plantillas de código proporcionadas por Postman en el área funcional SNIPPETS han podido resolver la mayoría de las situaciones. A continuación, se ofrecen algunas explicaciones relacionadas con el juicio de resultados:

Código de estado: el código es 200

// Juzgando el estado de la solicitud de acuerdo con las pruebas de código devueltas ["El código de estado es 200"] = responseCode.code
=== 200;

Cuerpo de respuesta: contiene cadena

// Determine si hay una "palabra clave" en el contenido devuelto. (La clave de las pruebas se puede modificar y no se enfatizará nuevamente) tests ["El cuerpo coincide con la
cadena"] = responseBody.has ("Esto se puede cambiar al contenido de la palabra clave que desea juzgar"); // Como se mencionó above:
// Determine si hay pruebas de palabra clave access_token ["has access_token"] =
responseBody.has ("access_token");

Cuerpo de respuesta: es igual a cadena

// Determine si el contenido devuelto es exactamente el mismo que el esperado. tests ["Body is correct"] = responseBody ===
"Esto se puede cambiar al contenido esperado";

Cuerpo de respuesta: verificación de valor JSON

// Como se mencionó anteriormente, responseBody es un tipo de cadena y admite la conversión al formato Json var jsonData =
JSON.parse (responseBody); tests ["Your test name"] = jsonData.value ===
100;

El tiempo de respuesta es inferior a 200 ms

// Determine si la duración de la solicitud es inferior a 200 ms y personalice las pruebas de acuerdo con la duración específica ["El tiempo de respuesta es inferior a
200 ms"] = responseTime <200;

La introducción anterior es básicamente suficiente para completar la prueba de una sola interfaz, pero sabemos que si no hay una tarea de tiempo por lotes, entonces estas no tendrán sentido, así que continúe ...

2 Establecer (lote) prueba

Si desea realizar pruebas por lotes y administración de interfaces, entonces necesitamos guardar todas las interfaces a probar en la misma colección (Colecciones), puede pensar en guardarlas en la misma carpeta. Primero mira los pasos en Postman:


A través de los pasos anteriores, obtenemos un conjunto de interfaces para ser probadas. Para simplificar la situación, la condición para el éxito o el fracaso de cada interfaz de mi lado es juzgar si el código es 200:

tests [“El código de estado es 200”] = responseCode.code === 200;

2.1 Ejecución por lotes

Una vez que lo anterior esté listo, podemos comenzar a ejecutar la interfaz en lotes para probar:


Después de hacer clic en Ejecutar, se abrirá una nueva página:

  • Entorno: se utiliza para cambiar el entorno en el que se ejecuta la interfaz, no importa aquí, y hablar de ello más tarde
  • Iteración: se utiliza para establecer el número total de veces que se ejecutará la interfaz.
  • Retraso: establezca el intervalo de tiempo entre cada operación de la interfaz, en milisegundos.
  • Archivo de datos: cargue el archivo de datos de prueba (descrito por separado a continuación)

2.2 Cambio de datos de parámetros

Ya hemos entendido cómo hacer que varias interfaces se ejecuten varias veces en un bucle, pero ahora hay un problema. Según el paso actual, los parámetros de la interfaz son los mismos cada vez que se ejecuta, por lo que incluso si lo ejecutamos 100 veces o 1000 veces, significa No es grande.

Echemos un vistazo a la interfaz de la función de inicio de sesión que hemos escrito:

Usar variables

Ahora la cuenta de inicio de sesión y los parámetros de contraseña están codificados, es decir, la cuenta se usa para probar cuántas veces ejecutamos. Entonces, ¿qué sucede si desea probar si el parámetro de contraseña de la cuenta usa otros valores de manera anormal? (Si desea cambiarlo manualmente cada vez, puede omitir esta parte / manualmente divertido) Aquí hablamos brevemente sobre cómo usar "variables" en Postman, como se muestra a continuación:


La sintaxis para hacer referencia a una variable: { {nombre de variable}}, como puede ver en la figura, establecemos los valores de los parámetros de los campos de cuenta y contraseña como variables: { {nombre de usuario}}, { {contraseña}}. Después de la modificación, no es posible hacer clic en Enviar directamente, porque estas dos variables aún no han sido asignadas, pero podemos realizar operaciones de asignación en el panel Pre-request Script:

Script de solicitud previa

La secuencia de comandos de solicitud previa es similar a las pruebas, la diferencia es que la secuencia de comandos de la secuencia de comandos de solicitud previa se ejecuta antes de que se ejecute la solicitud, mientras que la secuencia de comandos de las pruebas se ejecuta después de que se completa la solicitud. Por lo tanto, podemos usar el script para asignar valores a las dos variables anteriores en el área de función de Pre-request Script, como por ejemplo:

// Establecer variables globales postman.setGlobalVariable ("username", "test1");
postman.setGlobalVariable ("password", "123456");

Pero el uso de la secuencia de comandos de solicitud previa para la operación de asignación aún no puede resolver nuestro problema, porque de acuerdo con este método de escritura, no importa cuántas veces se ejecute, en realidad se prueba con datos fijos (codificados). Por supuesto, dado que es un lenguaje de secuencias de comandos, habrá usos más flexibles, por lo que no lo haré aquí.

Conjunto de datos de prueba

A continuación, hablaremos de Archivo de datos, esta opción antes de ejecutar la colección se usa para cargar datos de prueba (archivos) para asignar valores a las variables correspondientes. Tomemos los datos de prueba en formato CSV como ejemplo:

username,password
test1,123456
test2,222222
test3,123456
test4,444444

El formato de los datos es similar a una tabla. La primera fila representa el nombre de la variable correspondiente y las 4 filas siguientes representan 4 conjuntos de datos de cuenta y contraseña (dos de los cuales son datos correctos). Después, guardamos un archivo con los datos de muestra anteriores sufijo llamado .csv, inicie la prueba de nuevo para ver el efecto. Después de seleccionar el número de ejecuciones a 4 (correspondiente a 4 conjuntos de datos de prueba) y seleccionar el archivo CSV correspondiente para ejecutar, podemos ver que nuestros resultados son de hecho como Esperábamos. El resultado de la operación de Solicitud de interfaz son dos aciertos y dos fallas, es decir, los datos de prueba con diferentes contraseñas de cuenta asignadas a cada operación (en la última versión del cliente de escritorio, puede ver cada solicitud específica, aquí no voy en detalles más).

Si usa archivos Json, el formato es el siguiente:

[
  {
    "username": "test1",
    "password": "123456"
  },
  {
    "username": "test2",
    "password": "222222"
  },
  {
    "username": "test3",
    "password": "123456"
  },
  {
    "username": "test4",
    "password": "444444"
  }
]

2.3 Tareas periódicas

Postman proporciona una función de Monitores, que nos ayuda a enviar una tarea de prueba y ejecutarla de acuerdo con el temporizador establecido, como una vez por hora, las operaciones específicas son las siguientes:

3 Solicitar problema de dependencia

Después de hablar sobre el juicio del resultado de la interfaz y la prueba colectiva por lotes, echemos un vistazo a la situación más complicada, es decir, el problema de confiar en la solicitud. Por ejemplo, nuestra interfaz de orden de compra requiere iniciar sesión antes de ser accesible. Pero la mayoría de los problemas de dependencia son esencialmente problemas de transferencia de datos entre interfaces. Por ejemplo, después de llamar a la interfaz de inicio de sesión, se devuelve un identificador. Si es un token, solo necesitamos llevar el parámetro del token al solicitar la interfaz de pedido. Entonces, la pregunta es:

  • Asegurar el orden de las llamadas de la interfaz
  • Pase los datos devueltos por la interfaz A a las interfaces posteriores B, C, D

3.1 Secuencia de ejecución de la interfaz

En primer lugar, déjeme explicarle que todas las interfaces mencionadas a continuación pertenecen a la misma colección de forma predeterminada.

Tome el ejemplo de la colección de interfaces que creamos anteriormente. Si presta atención a los resultados de nuestras pruebas por lotes, encontrará que el orden de ejecución de las interfaces está realmente en el orden en este directorio (de arriba a abajo), a saber: Solicitud1-> Solicitud2 -> Solicitud3.

El nombre de la interfaz aquí puede ser un poco engañoso, así que quiero enfatizarlo nuevamente: ejecute en el orden de arriba a abajo en el directorio (no tiene nada que ver con el orden del diccionario).
Entonces, con este orden de ejecución predeterminado, entonces puede priorizar las interfaces que necesitan ser ejecutadas Simplemente colóquelo al frente, por ejemplo, coloque primero la "interfaz de inicio de sesión".

3.1.2 Orden de ejecución personalizada

Por supuesto, si solo hay una orden de ejecución predeterminada, generalmente no puede satisfacer nuestras complejas necesidades comerciales, por lo que Postman nos proporciona una función: postman.setNextRequest ("ingrese el nombre de la interfaz a la que desea saltar") para respaldar nosotros para saltar Continuar ejecución a la interfaz especificada, por ejemplo:

Después de ejecutar con éxito la interfaz Request1, no necesitamos ejecutar Request2, sino saltar directamente a Request3. Luego, puedo ejecutar el código de salto en el área de funciones de Pruebas de la interfaz Request1, como:

Algunas cosas a tener en cuenta aquí:

  1. postman.setNextRequest () solo tiene efecto cuando se ejecuta una prueba de conjunto, lo que significa que cuando ejecutamos la interfaz (Enviar) Request1 sola, la función no funciona.

  2. Cuando ejecutamos la prueba de recopilación con éxito desde Request1 -> Request3, si hay interfaces después de Request3, las siguientes interfaces continuarán ejecutándose en el orden predeterminado, es decir, la interfaz Request4 en la figura aún se ejecutará.

  3. La interfaz de salto especificada debe pertenecer al mismo conjunto.

  4. No importa dónde se llame a la función setNextRequest () en el script Tests, solo se ejecutará al final del script actual. Por ejemplo, después de intermodular la segunda línea y la primera línea en la figura, la segunda línea de código aún se ejecutará después de ejecutar la función de salto.

Por lo tanto, utilizando la función setNextRequest (), podemos omitir interfaces innecesarias de acuerdo con las condiciones, o crear nuestra propia prueba lógica.

3.2 Transferencia de datos

Antes de hablar sobre la transferencia de datos, hablemos sobre el uso de variables globales y el cambio de entorno en Postman.

3.2.1 Variables globales

En realidad, el concepto de variables globales se menciona brevemente cuando hablamos anteriormente sobre el script de solicitud previa, lo que significa que podemos establecer variables globales a través del código del script. Podemos ver el efecto de ejecutar el script anterior:

Podemos ver que después de ejecutar, las variables de nombre de usuario y contraseña se han guardado correctamente, por lo que podemos usarlas en cualquier interfaz a través de la sintaxis de referencia de variables como: { {username}}.

Además, Postman no solo admite la forma en que el código establece las variables globales, sino que también admite operaciones visuales:

Después de ingresar a la interfaz correspondiente, puede administrar directamente:

3.2.2 Diferenciación y conmutación de múltiples entornos

En circunstancias normales, nuestra interfaz se dividirá en versión de prueba y versión en línea (o más), y su diferencia solo puede ser diferente en ULR, entonces las variables globales no son adecuadas para resolver este problema.

Creación de parámetros

Es posible que haya notado que en la imagen de arriba, ya he creado varios "conjuntos" de parámetros para diferentes entornos. Echemos un vistazo:

Creé un parámetro de host en cada entorno, como:

Por supuesto, nuestros parámetros de entorno también se pueden configurar mediante scripts, la función es:

// Tenga en cuenta que este parámetro solo se agrega al "conjunto de parámetros" del entorno actualmente seleccionado
postman.setEnvironmentVariable ("variable_key", "variable_value");

Usar y cambiar

Los parámetros en el entorno "conjunto de parámetros" se utilizan de la misma forma que las variables globales, como se muestra en la figura { {host}}, el cambio entre diferentes entornos se muestra en la siguiente figura:

3.3 Resolver problemas de dependencia

Después de dominar los conocimientos previos anteriores, comenzamos a ver cómo usar Postman para resolver pruebas de interfaz que tienen dependencias.

Escenario hipotético

Nuestra interfaz Request1 es la interfaz de inicio de sesión, y un inicio de sesión exitoso devolverá un campo access_token como identificador (implementado). Luego suponga que la interfaz Request3 es una interfaz para realizar un pedido, y necesita llevar el access_token devuelto por el inicio de sesión para acceder a él normalmente.

Ideas

  1. Asegúrese de que Request1 se ejecute antes que Request3
  2. Agregue el valor de access_token devuelto por Request1 a la variable de entorno "Parameter Set".
  3. Request3 se refiere al valor de access_token al solicitar

El valor de retorno se almacena en "variables globales" o "variables ambientales", dependiendo de la situación empresarial específica. En este ejemplo,
el valor de access_token está relacionado con el entorno, por lo que aquí elegimos utilizar el almacenamiento de conjuntos de variables de entorno.

Operaciones en cartero

  1. Nuestro catálogo ha garantizado la ejecución prioritaria de la interfaz Request1
  2. El código de pruebas en Request1:
if(responseCode.code === 200 && responseBody.has("access_token")){
    
    
    //如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功
    tests["login"] = true;

    //将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中
    var jsonData = JSON.parse(responseBody);
    //access_token的取值方式视具体的 json 数据结构而定
    postman.setEnvironmentVariable("token",jsonData.result.access_token);  

    //跳转到 Request3 接口
    postman.setNextRequest("Request3")

}else{
    
    
    tests["login"] = false;

    //登录失败,可以选择跳转到对应失败后的处理接口进行测试
    //postman.setNextRequest("Other Request")
}
  1. Utilice el token de variable en la interfaz Request3:

Estoy aquí para tokenponer la información del encabezado, las reglas de los parámetros de la interfaz pueden ser de uso específico.

Ejecutar y ver resultados

Al ejecutar la prueba establecida, podemos ver que nuestros resultados cumplen con nuestras expectativas, Request1 y Request3 pasan la prueba, Request2 se omite y Request4 aún se ejecuta. Hecho...


Finalmente: beneficios

En la industria de la tecnología, debe mejorar sus habilidades técnicas y enriquecer su experiencia práctica en proyectos de automatización, lo que es muy útil para la planificación de su carrera en los próximos años y la profundidad de su tecnología de pruebas.

En la temporada de entrevistas de Golden 9th y Silver 10th, temporada de cambio de trabajo, organizar preguntas de entrevistas se ha convertido en mi hábito durante muchos años. La siguiente es mi colección y clasificación en los últimos años, todo está organizado en torno a [pruebas de software], el contenido principal incluye: video exclusivo de prueba de automatización de Python, detalles de automatización de Python, un conjunto completo de preguntas de entrevista y otro contenido de conocimiento.

No se avergüence de recibir un salario de 8k, no sea complaciente solo porque recibe un salario de más de 20k, no sea complaciente solo porque recibe un salario de 30-45. La vida no es para ganar ese pequeño salario, lo que necesitas es abrirte una carrera.

¡Que tú y yo nos encontremos y encuentres algo! Bienvenido a seguir la cuenta pública de WeChat: [Artículo picante triste] Reciba gratis un libro de entrevistas para ingenieros de pruebas de software de 216 páginas. ¡Y los tutoriales de aprendizaje en video correspondientes son gratuitos para compartir!

Buena recomendación de artículo:

Hablando de comenzar de una pequeña empresa a una gran fábrica, ¿qué hice bien?

¿Tiene sentido que la gente común aprenda la automatización de Python?

¿Qué tipo de persona es adecuada para las pruebas de software?

Supongo que te gusta

Origin blog.csdn.net/weixin_50271247/article/details/112970708
Recomendado
Clasificación