案例实践:小红书APP出现闪退问题,接口测试怎么做?(二)

Postman实现接口功能测试

新增货品接口实战

1、填写接口请求4要素:

由于货品新增接口文档找不到接口请求4要素中的:请求方法、请求地址和请求头,故,使用Fiddler抓包获取,获取结果如下:

1)请求方法:POST

2)请求地址:

https://open.jackyun.com/open-platform/developer/intercept/testtool/buildparamandrequest

3)请求头:

截图如下:

文本内容如下:

Content-Type:application/x-www-form-urlencoded;charset=UTF-8

Cookie:53revisit=1680485326445;_ati=688404030667;Hm_lvt_4293e6f16d3e0252d48cf7a1252f995f=1687759229;Qs_lvt_352880=1680485326%2C1683769042%2C1687759230;Qs_pv_352880=902333099737909600%2C3189451156430100000%2C3125342331411176400%2C2032507965245106700%2C3752838942850185700;jkusername=88888;yhusername=visitor;SESSION=7a4b3cf3-93ae-4d07-8f6e-c0cb494d3529;acw_tc=276aedc116893045482562737e7f9c70f5f6f059169db2675c8cde81387755;openplatfrom=jackyunweb?

备注:此次的

4)请求体:

请求体内容包括:method、appkey、version、contenttype、bizcontent,通过“API测试工具”的获取的请求参数,截图如下:

2、接口断言

断言内容包括:状态码断言、响应体断言(返回结果中outSkuCode(唯一性));截图如下:

3、Postman工具使用

1)在Postman工具中填写请求4要素并进行断言,截图如下:

2)断言内容:

json断言介绍:

断言内容有3个,分别如下:

4、接口脚本优化

由于货品新增接口中字段:货品编码、货品外部编码、货品规格具有唯一性,每次执行货品新增接口时需要修改这3个字段值,为了解决请求参数不断修改的问题,优化脚本如下:

1)global环境添加变量:

2)pre-requsts script的js脚本实现:

outSkuCode等4个参数参数化数据的规则(来源订单编号规则):前缀(test)+年月日+后缀(编号);

用js脚本实现如下:

3)请求参数引用global变量:

请求体的参数化脚本:

{

"skuImageUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"goodsNameEn":"",

"isPeriodManage":0,

"rightGoodsUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"isDoorService":0,

"isProxySale":0,

"skuHeight":"",

"shelfLiftUnit":"年",

"goodsName":"{{outskuno}}",

"goodsField8":"货品属性B",

"goodsField9":"货品属性B",

"goodsField10":"货品属性B",

"goodsField4":"+货品属性B",

"goodsField11":"货品属性B",

"goodsField5":"货品属性B",

"goodsField12":"货品属性B",

"goodsField6":"货品属性B",

"goodsField13":"货品属性B",

"goodsField7":"货品属性B",

"goodsField14":"货品属性B",

"goodsField15":"货品属性B",

"mainGoodsUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"goodsField16":"货品属性B",

"goodsField17":"货品属性B",

"goodsField18":"货品属性B",

"goodsField19":"货品属性B",

"cateCode":"0101",

"moduleContent":[{

"type":1,

"showOder":"1",

"title":"标题",

"content":"这是描述"

}],

"skuNo":"{{outskuno}}",

"goodsField1":"货品属性B",

"goodsField2":"货品属性B",

"goodsField3":"货品属性B",

"descript":"<p>这是很好的书!</p>+<p><img+src=\"http://jkyun.oss-cn-hangzhou.aliyuncs.com/longterm/45/system/erp/445554288029867136/1204140161368877696.jpg?Expires=4780344693&OSSAccessKeyId=LTAIh08vjrfC7HV0&Signature=Rb2zTo8%2BRXnWUx8uoBmMMJ3pgfs%3D#O1CN01vPRtFX1CP18G9GBqN-101450072.jpg\"+alt=\"\"+/></p>+<p></p>",

"belowGoodsUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"ownerCode":"34343",

"isCustomizProduction":0,

"isSyncToItem":"0",

"goodsAlias":"",

"shelfLife":3,

"platCateId":"110201",

"goodsAttr":1,

"isSerialManagement":0,

"skuBarcode":"123fee",

"materialImgUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"sellInfo":"商品卖点",

"topGoodsUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"skuField29":"A",

"skuField9":"A",

"skuField8":"A",

"skuField25":"A",

"skuField7":"A",

"skuField26":"A",

"skuField6":"A",

"skuField27":"A",

"skuField5":"A",

"skuField28":"A",

"skuField4":"A",

"skuField3":"A",

"skuField2":"A",

"skuField1":"A",

"cateName":"笔记本",

"outSkuCode":"{{outskuno}}",

"skuField30":"A",

"skuField18":"A",

"skuField19":"A",

"brandName":"",

"unitName":"件",

"skuField14":"A",

"skuField15":"A",

"skuField16":"A",

"skuField17":"A",

"isPickupCard":0,

"goodsMemo":"",

"skuWidth":"",

"volume":0,

"skuField21":"A",

"leftGoodsUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"skuField22":"A",

"isProsaleProduct":0,

"goodsVideoUrl":"http://wdgjtest.oss-cn-hangzhou.aliyuncs.com/45/341960689798062080.jpg?Expires=4677564907&OSSAccessKeyId=LTAI2P5paDiiYDCJ&Signature=7gKXbqG2QWeG7sUByBk8J9ummno%3D",

"skuField23":"A",

"isProductionMaterials":0,

"skuField24":"A",

"fixPrice":1.20,

"skuWeight":"",

"skuField20":"A",

"goodsField20":"货品属性B",

"isBatchManagement":0,

"goodsField21":"货品属性B",

"goodsField22":"货品属性B",

"goodsField23":"货品属性B",

"goodsField24":"货品属性B",

"goodsField25":"货品属性B",

"costValuationMethod":0,

"goodsField26":"货品属性B",

"goodsField27":"货品属性B",

"goodsField28":"货品属性B",

"goodsField29":"货品属性B",

"warehouseCode":"C0001",

"skuName":"规格1",

"skuField10":"A",

"skuField11":"A",

"mainBarcode":"CODE0001",

"skuField12":"A",

"abcCate":"A类",

"skuField13":"A",

"goodsNo":"{{outskuno}}",

"goodsField30":"货品属性B",

"skuLength":"",

"isPaidService":0

}

4)断言内容参数化

断言内容所在路径:jsondata.result.data.apiResponse.result

断言脚本的参数化:

​5、接口测试结果

1)Cookie过期的执行结果:

2)更新最新cookie后,执行成功:

内容4:货品查询接口功能测试

货品查询接口介绍

货品查询接口实战

1、货品查询接口4要素

1)请求方法:post

2)请求地址:

https://open.jackyun.com/open-platform/developer/intercept/testtool/buildparamandrequest

3)请求头:

Content-Type:application/x-www-form-urlencoded;charset=UTF-8

Cookie:53revisit=1680485326445;_ati=688404030667;Hm_lvt_4293e6f16d3e0252d48cf7a1252f995f=1687759229;Qs_lvt_352880=1680485326%2C1683769042%2C1687759230;Qs_pv_352880=902333099737909600%2C3189451156430100000%2C3125342331411176400%2C2032507965245106700%2C3752838942850185700;jkusername=88888;yhusername=visitor;SESSION=7a4b3cf3-93ae-4d07-8f6e-c0cb494d3529;acw_tc=276aede416893201598032765e502850bfa2405f4607b11856f9ed57a765be;openplatfrom=jackyunweb?

4)请求体

解码后请求体为:

appkey=28773818&method=erp.storage.goodslist&contenttype=JSON&version=v1.0&pageIndex=0&pageSize=1&startDate=&skuName=&isBlockup=&startDateModifiedGoods=&goodsNo=test&endDateModifiedSku=&endDate=&cateName=&abcCate=&isPackageGood=&skuIsBlockup=&skuBarcode=&goodsName=&assistBarcode=&endDateModifiedGoods=&startDateModifiedSku=&bizcontent={"pageIndex":"0","pageSize":"1","startDate":"","skuName":"","isBlockup":"","startDateModifiedGoods":"","goodsNo":"test","endDateModifiedSku":"","endDate":"","cateName":"","abcCate":"","isPackageGood":"","skuIsBlockup":"","skuBarcode":"","goodsName":"","assistBarcode":"","endDateModifiedGoods":"","startDateModifiedSku":""}?

2、货品查询接口断言

1)断言内容包括:

  1. 状态码断言;

  2. 接口响应结果断言:

根据货品编码查询结果有且只能有1条数据,故,断言内容为:total为1;

2)断言脚本分析:

(1)响应体断言内容的分析

响应体断言内容所在路径:jsondata.result.data.apiResponse.result。

3)断言脚本:

获取global的值

//var sku01=pm.globals.get("outskuno");

状态码断言

pm.test("状态码断言",function(){

pm.response.to.have.status(200);

});

//json断言,断言信息的参数化

//实际项目中,断言内容:\"total\":1

pm.test("json断言",function(){

var jsonData=pm.response.json();

pm.expect(jsonData.result.data.apiResponse.result).to.include("\"total\":1");

});?

3、货品查询接口执行结果

1)cookie过期执行结果:

2)更新最新的cookie后的执行结果:

内容5:货品新增接口与货品查询接口关联

货品查询接口引用货品新增接口的参数

请求体参数化为(引用global参数):

appkey=28773818&method=erp.storage.goodslist&contenttype=JSON&version=v1.0&pageIndex=0&pageSize=1&startDate=&skuName=&isBlockup=&startDateModifiedGoods=&goodsNo={{outskuno}}&endDateModifiedSku=&endDate=&cateName=&abcCate=&isPackageGood=&skuIsBlockup=&skuBarcode=&goodsName=&assistBarcode=&endDateModifiedGoods=&startDateModifiedSku=&bizcontent={"pageIndex":"0","pageSize":"1","startDate":"","skuName":"","isBlockup":"","startDateModifiedGoods":"","goodsNo":"{{outskuno}}","endDateModifiedSku":"","endDate":"","cateName":"","abcCate":"","isPackageGood":"","skuIsBlockup":"","skuBarcode":"","goodsName":"","assistBarcode":"","endDateModifiedGoods":"","startDateModifiedSku":""}

断言内容

断言脚本:

获取global的值

//var sku01=pm.globals.get("outskuno");

状态码断言

pm.test("状态码断言",function(){

pm.response.to.have.status(200);

});

//json断言,断言信息的参数化

//实际项目中,断言内容:\"total\":1

pm.test("json断言",function(){

var jsonData=pm.response.json();

pm.expect(jsonData.result.data.apiResponse.result).to.include("\"total\":1");

});

接口执行结果

1批量执行器执行接口测试

使用runner实现两个货品新增接口和货品查询接口同时执行,截图如下:

1)Runner执行界面:

2)runner执行结果

2无人值守的接口测试--持续集成

吉客云地址:https://open.jackyun.com/developer/apidocinfo.html?from=self&value=null&id=erp-baseinfo.flag.getflagid&name=true

newman的介绍

1作用:newman:中介作用,执行Postman脚本并输出报告;

2定义:newman是基于nodejs开发的一款工具,意思新的男人,是指在某一领域或某个方面,技高一筹;

3操作命令:Newman run参数操作;

Jenkins集成

准备工作:

1)Postman脚本

2)newman脚本

3)Jenkins环境

Postman脚本准备

newman脚本

执行成功的newman脚本,如下:

newman run'/home/Desktop/****电商erp.postman_collection.json'-g'/home/Desktop/MyWorkspace.postman_globals.json'?

Jenkins运行Postman脚本的步骤

Jenkins地址:http://192.168.**.**:8888

Jenkins功能介绍:

1 build:填写newman的命令:

2 build trigger:填写触发周期的公式;

Jenkins执行结果

整体执行结果:

某次具体的输出结果:

企业项目中对于触发器构建常用场景介绍

1触发器触发条件介绍:

触发器触发条件公式:由5颗星组成

*****

分别代表:分钟(0-59)小时(0-23)日期(1-31)月份(1-12)星期(0-6)

2企业项目中常用场景介绍

场景1:接口脚本部分测试通过,部分还在进行,回归测试脚本执行频率高

间隔2/5分钟执行一次:

H/5****

场景2:接口脚本基本稳定,开发修改bug,回归测试脚本执行频率稍微低

每天下午18定时构建一次

H 18***

场景3:上一个版本的接口脚本基本稳定,开发做新需求,回归测试脚本执行频率低

每周1/5构建一次

H H**5

备注:H表示hash值可以理解随机值;

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/75186.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zebec APP:构建全面、广泛的流支付应用体系

目前&#xff0c;流支付协议 Zebec Protocol 基本明确了生态的整体轮廓&#xff0c;它包括由其社区推动的模块化 Layer3 构架的公链 Nautilus Chain、流支付应用 Zebec APP 以及 流支付薪酬工具 Zebec payroll 。其中&#xff0c;Zebec APP 是原有 Zebec Protocol 的主要部分&a…

【逗老师的PMP学习笔记】4、项目整合管理

目录 一、制定项目章程1、制定项目章程的整体输入、输出和工具技术2、输入2.1、输入-商业文件2.2、输入-协议2.3、输入-事业环境因素组织过程资产 3、工具与技术3.1、专家判断3.2、数据收集3.3、人际关系与团队技能3.4、会议 4、输出4.1、输出-项目章程4.2、输出-假设日志 二、…

61 # http 数据处理

node 中的核心模块 http 可以快速的创建一个 web 服务 const http require("http"); const url require("url");// req > request 客户端的所有信息 // res > respone 可以给客户端写入数据 const server http.createServer();server.on("r…

【前端知识】React 基础巩固(四十二)——React Hooks的介绍

React 基础巩固(四十二)——React Hooks的介绍 一、为什么需要Hook? Hook 是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下使用state以及其他的React特性&#xff08;比如生命周期&#xff09;。 class组件 VS 函数式组件&#xff1a; class的优势…

让Python点亮你的世界:打造专业级编程环境的必备步骤

文章目录 初识pythonpython的安装win系统Linux系统&#xff08;centos7&#xff09; 第一个Python程序常见问题 Python解释器Python开发环境PyCharm的基础使用创建项目修改主题修改默认字体和大小汉化插件翻译软件常用快捷键 初识python Python语言的起源可以追溯到1989年&…

基于ARM+FPGA的驱控一体机器人控制器设计

目前市场上工业机器人&#xff0c;数控机床等多轴运动控制系统普遍采用运动控制器加 伺服驱动器的分布式控制方式。在这种控制方式中&#xff0c;控制器一方面完成人机交互&#xff0c;另 一方面进行 NC 代码的解释执行&#xff0c;插补运算&#xff0c;继而将计算出来的位…

jmeter之接口测试(http接口测试)

基础知识储备 一、了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服务器--服务器 二、了解基础接口知识&#xff1a; 1、什么是接口&#xff1a;前端与后台之间的…

云计算——常见集群策略

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.什么是集群 二.集群策略 1.虚拟机HA 实现虚拟机高可用性通常涉及以下关键…

【Java基础教程】(五十)JDBC篇:JDBC概念及操作步骤、主要类与接口解析、批处理与事务处理~

Java基础教程之JDBC &#x1f539;本章学习目标1️⃣ JDBC概念2️⃣ 连接数据库3️⃣ Statement 接口3.1 数据更新操作3.2 数据查询 4️⃣ PreparedStatement 接口4.1 Statement 接口问题4.2 PreparedStatement操作 5️⃣ 批处理与事务处理&#x1f33e; 总结 &#x1f539;本…

高性能网络框架笔记

目录 TCP粘包、分包惊群断开连接&#xff0c;TCP怎么检测的&#xff1f;大量的close wait&#xff0c;如何解 ?双方同时调用close水平触发和边沿触发的区别 TCP粘包、分包 解决&#xff1a;1.应用层协议头前面pktlen&#xff1b;2.为每一个包加上分隔符&#xff1b;(\r\n&…

Java 版 spring cloud + spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…

经典CNN(三):DenseNet算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 1 前言 在计算机视觉领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09;已经成为最主流的方法&#xff0c;比如GoogleNet&#xff0c;…

【多模态】ALBEF-融合前对齐

目录 &#x1f341;&#x1f341;背景 &#x1f337;&#x1f337;网络结构 &#x1f385;&#x1f385;损失函数 &#x1f33c;&#x1f33c;动量蒸馏 &#x1f33a;&#x1f33a;下游任务结果 &#x1f4d2;&#x1f4d2;Grad-CAM 特征可视化 &#x1f6a6;&#x1f6a…

欧拉函数与筛法求欧拉函数

目录 欧拉函数欧拉函数的定义欧拉函数的公式欧拉函数的公式推导欧拉定理典型例题代码实现 筛法求欧拉函数思路分析经典例题代码实现 欧拉函数 欧拉函数的定义 对于任意正整数 n n n,欧拉函数 φ ( n ) φ(n) φ(n) 表示小于或等于 n n n 的正整数中&#xff0c;与 n n n …

【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

"不言而善应" 0. 基础知识1. 特征提取和匹配1.1 FAST关键点1.2 ORB的关键点--改进FAST1.3 ORB的描述子--BRIEF1.4 总结 2. 对极几何&#xff0c;对极约束2.1 本质矩阵(对极约束)2.1.1 求解本质矩阵2.1.2 恢复相机运动 R &#xff0c; t R&#xff0c;t R&#xff0c;…

修改状态栏The application could not be installed: INSTALL_FAILED_ABORTEDList

打开theme修改状态栏为可见。 <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name"Base.Theme.MyApplication" parent"Theme.AppCompat.DayNight"><!-- Customize yo…

[JavaScript游戏开发] 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 文章目录 系列文章目录前言一、本章节…

呼吸灯——FPGA

文章目录 前言一、呼吸灯是什么&#xff1f;1、介绍2、占空比调节示意图 二、系统设计1、系统框图2、RTL视图 三、源码四、效果五、总结六、参考资料 前言 环境&#xff1a; 1、Quartus18.0 2、vscode 3、板子型号&#xff1a;EP4CE6F17C8 要求&#xff1a; 将四个LED灯实现循环…

电缆故障综合测试仪

一、电缆故障查找仪产品简介 本产品用于地埋电缆故障点的快速、企业产品免费信息发布平台定位、电缆埋设路径及埋设深度的电子商务测&#xff08;在故障点处获取深度&#xff09;。 主要特点 1、用特殊结构的声波振动传感器及低噪声专用器件作前置放大&#xff0c;提高了仪器定…

VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

摘要 在这项工作中&#xff0c;我们解决了引用分割的挑战性任务。引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象。因此&#xff0c;为了在图像中的所有实例中找到目标实例&#xff0c;模型必须对整个图像有一个整体的理解。为了实现这一点&#…