Hablar sobre la prueba de interfaz automatizada del cartero

Descripción de fondo

Hay un proyecto para utilizar cartero para las pruebas de interfaz. Los parámetros necesarios para la interfaz son:

appid: identificación de la aplicación;

sign: Solicitud de firma, que debe calcularse mediante el algoritmo de cifrado HMACSHA1. La cadena de firma es: {appid} url {url}u r l {sello} ;

sello: esta es una marca de tiempo;

opción: parámetros comerciales;

La pregunta es cómo construir dinámicamente un letrero basado en parámetros cuando Postman inicia una solicitud.

CryptoJS en la biblioteca de scripts del cartero admite el cifrado de varios algoritmos, incluido HMACSHA1, con algoritmos de firma.

La dificultad es obtener el parámetro de ruta en la URL. Cuando se inicia una solicitud, se puede fijar un valor de ruta. ¿Cómo obtener el valor de ruta cuando se necesita ejecutar la prueba automatizada?

Crear una solicitud GET

No se introducirá el uso básico de cartero. Primero, cree una solicitud GET con varios parámetros dinámicos configurados en la URL.

{ {Nombre de variable}}: sintaxis del cartero para citar variables de entorno;

{ {$ guid}}: la variable de entorno predefinida por cartero se utiliza para obtener un valor GUID;

Inserte la descripción de la imagen aquí

Cree firmas en scripts de solicitud previa

Los scripts de pre-solicitud son un entorno de ejecución de javascript, que se ejecuta antes de que se envíe la solicitud; solo utilícelo como js, ​​pero algunas bibliotecas js no lo admiten.

El siguiente paso es obtener la firma de forma dinámica

1. El valor fijo configurado en la variable de entorno appid;

2. Obtenga la marca de tiempo del sello:

//获取unix时间

getUnixTime:function(){
    
    

    return Math.round(new Date().getTime()/1000);

}

3. El valor de la URL se puede obtener a través de request.url y luego se analiza la ruta:

//获取url的path部分

getUrlRelativePath:function(url){
    
    

    var arrUrl = url.split("//");

    var start = arrUrl[1].indexOf("/");

    var end=arrUrl[1].indexOf("?");

    var relUrl = arrUrl[1].substring(start,end);//stop省略,截取从start开始到结尾的所有字符

    console.log(relUrl);

    return relUrl;

}

作者:A丶咔咔
链接:https://www.jianshu.com/p/ac04616b164f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

4. Construya la cadena de firma y encriptarla con la clave secreta.

Es posible que la biblioteca de algoritmos de cifrado proporcionada por cartero no sea compatible con todos, a veces es necesario intercambiar la firma en segundo plano;

var host=pm.environment.get("host");

var text=encodeURIComponent(plain);

pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) {
    
    

      var json=response.json();

      //签名含有+等特殊字符需要url编码

      pm.environment.set("sign",encodeURIComponent(json.result));

});

作者:A丶咔咔
链接:https://www.jianshu.com/p/ac04616b164f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

La cadena de firma está preferiblemente codificada en URL.

Problema restante: al intercambiar la firma en segundo plano, la cadena responsejson () devuelta al principio no se puede analizar.

5. Use eval para inyectar la variable definida postmanUtil en la variable global y luego llame

eval(environment.postmanUtil);

postmanUtil.setLsdzSign();

Los resultados se muestran en la figura:

Inserte la descripción de la imagen aquí
el código se muestra a continuación:

var postmanUtil={
    
    

    //获取unix时间

    getUnixTime:function(){
    
    

        return Math.round(new Date().getTime()/1000);

    },

    //获取url的path部分

    getUrlRelativePath:function(url){
    
    

        var arrUrl = url.split("//");

    var start = arrUrl[1].indexOf("/");

    var end=arrUrl[1].indexOf("?");

    var relUrl = arrUrl[1].substring(start,end);//stop省略,截取从start开始到结尾的所有字符

    console.log(relUrl);

        return relUrl;

    },

    //签名

    setLsdzSign:function(){
    
    

      var appid=pm.environment.get("appid");

      var sercret=pm.environment.get("appsercret");

      //时间戳

      var time=postmanUtil.getUnixTime();

      pm.environment.set("stamp", time);

      //地址 获取当前地址的path部分

      var path= postmanUtil.getUrlRelativePath(request.url);

      console.log(path);

      var url=path;

      var plain=appid+"$"+url.toLowerCase()+"$"+time;

      var hmac = CryptoJS.HmacSHA1(plain, sercret).toString(CryptoJS.enc.Base64);

      //获取签名,CryptoJS.HmacSHA1 无法满足签名算法只能从后台

      var host=pm.environment.get("host");

      var text=encodeURIComponent(plain);

        pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) {
    
    

              var json=response.json();

              //签名含有+等特殊字符需要url编码

              pm.environment.set("sign",encodeURIComponent(json.result));

        });

    }

}

eval(environment.postmanUtil);

postmanUtil.setLsdzSign();

El script está escrito en variables de entorno.

Escriba el código anterior en la secuencia de comandos de solicitud previa, si aún es posible una sola interfaz, incluso si solo es necesario copiar muchas interfaces.

En caso de que sea necesario modificar el script, surgirán problemas. Debe ir a la ventana de Pre-request Script de cada solicitud para modificar, ¿cómo solucionarlo?

Se puede resolver. Simplemente configure postmanUtil en ENVIRONMENT. El método es el siguiente:
Inserte la descripción de la imagen aquí
De hecho, postmanUtil se coloca en la variable de entorno y los demás no han cambiado. Siempre que se mantenga el valor en la variable de entorno, está bien y no hay necesidad de cambiar uno por uno.

Mirando el código del script de pre-solicitud nuevamente, es mucho más simple:
Inserte la descripción de la imagen aquí

Uso de la consola del cartero

No sé si obtuve correctamente la variable de entorno o si quiero ver el valor de una variable. Postman también proporciona una vista de consola conveniente. En el menú Ver, Mostrar consola de Postman puede abrir la siguiente consola

Inserte la descripción de la imagen aquí
La figura es el resultado de console.log (sercret) y sendRequest ()

Pruebas API automatizadas de Collection Runner

Cree casos de prueba para la interfaz

Para el resultado html devuelto, siempre que el cuerpo de prueba contenga un cierto valor, pasará

Inserte la descripción de la imagen aquí
Para devolver los resultados de Json, siempre que el código sea 0, se pasa

Inserte la descripción de la imagen aquí
Hay atajos de script de uso común en el lado derecho de la ventana, que se pueden generar seleccionándolo, lo cual es muy conveniente

Seleccionar y ejecutar pruebas de interfaz automatizadas

Haga clic en Runner en la esquina superior izquierda de la página de inicio para ingresar, seleccione la interfaz construida antes y seleccione el entorno, haga clic en la interfaz Ejecutar xxx para ejecutar la prueba de secuencia de comandos
Inserte la descripción de la imagen aquí

Resultados de la prueba

Puede ver que la interfaz del resultado 2 devuelve correctamente el resultado predeterminado

Inserte la descripción de la imagen aquí
Finalmente: Los
Inserte la descripción de la imagen aquí
anteriores son algunos recursos de video que recopilé, que me ayudaron mucho en este proceso. Si no desea experimentar la sensación de que no puede encontrar la información durante el autoestudio, nadie responde sus preguntas e insiste en darse por vencido después de unos días, puede unirse a nuestro grupo de deducción [313782132], que tiene varios recursos de prueba de software y discusiones técnicas.

Inserte la descripción de la imagen aquí
Por supuesto, hay entrevistas. Las entrevistas generalmente se dividen en entrevistas técnicas y de recursos humanos. En términos de formato, hay pocas caras de grupo. Un pequeño número de empresas puede tener una intersección, pero en general, el aspecto técnico es básicamente una inspección de su nivel profesional y técnico. y, a continuación hr superficie, principalmente para ver la calidad y la situación familiar de la persona de carácter general no cumple con los requisitos de la empresa, en general, la tecnología y, a continuación, siempre y cuando a través de la superficie hr técnica es básicamente ningún problema (hay algunas compañías de cara hr se cepille los dientes a mucha gente)
nos Hablando principalmente en el aspecto técnico, el aspecto técnico es principalmente para examinar el nivel y los conocimientos técnicos profesionales Las anteriores también son preguntas de entrevista seleccionadas que he recopilado.

¿Cómo mejora su equipo de pruebas sus habilidades de prueba?

Dependemos más de discusiones técnicas e intercambios de aprendizaje. Además de nuestro grupo interno, también tendremos grupos de intercambio técnico relacionados. Podemos aprender con muchos colegas y mejorar nuestro árbol de habilidades. Las iteraciones de actualización de tecnología de la industria de TI ya son rápidas, por lo que es más necesario mantener una mentalidad de aprendizaje. Puedes seguirme si estás interesado. De vez en cuando se emiten enlaces de material gratuito y hay intercambios técnicos con colegas.

¡Vamos, hombre de prueba! Si necesita mejorar su plan, hágalo. Es mejor estar en el camino que esperar y ver al principio. Debe haber una ley y entonces habrá éxito.

Si los recursos son buenos, dé una recomendación ~

Supongo que te gusta

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