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

news2024/11/18 9:34:31

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.coloradmin.cn/o/837658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择适合的项目管理工具,高效完成项目管理

很多项目经理想要知道项目计划执行的情况&#xff0c;大部分都是通过在线EXCEL文档&#xff0c;大家去更新进度&#xff0c;或者通过各种群消息&#xff0c;邮件&#xff0c;电话去通知项目经理项目执行进度&#xff0c;好一点的企业可能有专业的项目管理软件去收集进度&#x…

WebAPI文档与自动化测试

目录 1、控制器&#xff0c;项目属性里需要勾选输出Xml文档选项&#xff1a; 2、下载文档的网页数据 3、运行访问网址 4、接口测试&#xff1a; 5、批量测试&#xff1a; 6、微服务文档 总结&#xff1a; 本篇介绍框架的WebAPI文档与自动化测试 1、控制器&#xff0c;项…

Elasticsearchr入门

首先在官网下载elasticsearch8.9版本&#xff0c;以及8.9版本的kibana。 解压&#xff0c;点击es8.9bin目录下的elasticsearch.bat文件启动es 如图所示即为成功。 启动之后打开idea&#xff0c;添加依赖 <dependency><groupId>com.fasterxml.jackson.core</g…

【二开版】大魔王7.0-PHP来客云在线客服系统

前言 由于即时通讯软件不是存在敏感词汇就是收费&#xff0c;想找一个网上开源的又麻烦&#xff0c;来客云在线客服系统网上到处都能找到&#xff0c;但是由于开发时间太久&#xff0c;像公众号的一些消息服务受限不能用了&#xff0c;这一套客服系统只能做到基本的聊天对话功…

华为OD机试真题 Java 实现【最长的完全交替连续方波信号】【2023 B卷 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…

TP DP PP 并行训练方法介绍

这里写目录标题 张量并行TP流水线并行 PPnaive模型并行GPipePipeDream 数据并行DPFSDP 张量并行TP 挖坑 流水线并行 PP 经典的流水线并行范式有Google推出的Gpipe&#xff0c;和微软推出的PipeDream。两者的推出时间都在2019年左右&#xff0c;大体设计框架一致。主要差别为…

Java阶段五Day19

Java阶段五Day19 问题解析 需求单查询列表功能的bug 业务逻辑&#xff1a; 需要用户登录&#xff0c;师傅入驻&#xff0c;审核入驻通过 查询师傅详情&#xff08;areaIds&#xff0c;categoryIds&#xff09; demand-server-dao-impl 包含持久层实现 requestOrderMappe…

JavaScript数据结构与算法——栈

文章目录 一、初始栈结构1.1 特性1.2 注意事项 二、栈结构的封装2.1 封装简单栈结构2.2 利用栈将十进制转二进制 一、初始栈结构 1.1 特性 类似于汉诺塔&#xff0c;后进先出&#xff0c;每次只能操作栈顶的元素。关键词&#xff1a;压栈、退栈 简单示意图&#xff1a; 1.…

java编码规范 和 数据库规范

总体规约以《阿里巴巴Java开发手册》为主&#xff0c;请开发人员至少阅读一遍该手册。 一、java编码规范 1.1 java基础规范 多使用 jdk自带库和被验证的第三方库的类和函数&#xff0c;不要用野路子来的jar包 无论是包、类、方法、变量&#xff0c;见名知意 1.2 在线文档规…

AlmediaDev Style Controls Crack

AlmediaDev Style Controls Crack StyleControls是一个稳定、强大的包(超过100个组件)&#xff0c;它使用经典绘图、系统主题、GDI和VCL样式。该软件包包含扩展标准VCL控件的独特解决方案&#xff0c;还包含许多独特的高级控件&#xff0c;用于创建具有Fluent UI模糊背景的现代…

AI的蓬勃发展,程序员的末日?

一、AI是什么&#xff1f;AI有哪些类型&#xff1f;生成式AI是什么&#xff1f;未来AI有哪些发展方向&#xff1f; ● AI是人工智能(Artificial Intelligence)的缩写,是比人类更强大的算法与软硬件系统,能模拟出人类智力相关的某些行为与功能。 ● AI主要分为三大类型: 机器学…

Docker Compose 使用方法

目录 前言 安装 Docker Compose Ubuntu 安装与更新 Red Hat 安装与更新 验证是否安装 Docker Compose 创建 docker-compose.yml 文件 创建一个MySQL 与 tomcat 示例 使用Docker Compose启动服务 前言 Docker Compose 是一个工具&#xff0c;旨在帮助定义和 共享多容器…

Scikit Learn识别手写数字 -- 机器学习项目基础篇(6)

Scikit learn是机器学习社区中使用最广泛的机器学习库之一&#xff0c;其背后的原因是代码的易用性和机器学习开发人员构建机器学习模型所需的几乎所有功能的可用性。在本文中&#xff0c;我们将学习如何使用sklearn在手写数字数据集上训练MLP模型。 其优势是&#xff1a; 它提…

React 在 html 中 CDN 引入(包含 antd、axios ....)

一、简介 cdn 获取推荐 https://unpkg.com&#xff0c;unpkg 是一个快速的全球内容交付网络&#xff0c;适用于 npm 上所有内容。 【必备】react 相关 cdn。附&#xff1a;github 官方文档获取、现阶段官方文档 CDN 网址。 <script crossorigin src"https://unpkg.com…

matlab使用教程(8)—绘制三维曲面图

1网格图和曲面图 MATLAB 在 x-y 平面中的网格上方使用点的 z 坐标来定义曲面图&#xff0c;并使用直线连接相邻的点。mesh 和surf 函数以三维形式显示曲面图。 • mesh 生成仅使用颜色来标记连接定义点的线条的线框曲面图。 • surf 使用颜色显示曲面图的连接线和面。 MATL…

Android沉浸式状态栏主题跟随状态栏背景颜色自动变化主题,状态栏主题跟随状态栏背景色自适应

1.状态栏显示模式介绍 Android系统提供了两种显示模式&#xff1a;明亮模式与暗黑模式 明亮模式&#xff08;Light Model&#xff09;&#xff1a;整体偏亮&#xff0c;即背景亮色&#xff0c;文字等内容暗色。 暗黑模式&#xff08;Dark Model&#xff09;&#xff1a;整体偏…

flutter开发实战-实现首页分类目录入口切换功能

。 在开发中经常遇到首页的分类入口&#xff0c;如美团的美食团购、打车等入口&#xff0c;左右切换还可以分页更多展示。 一、使用flutter_swiper_null_safety 在pubspec.yaml引入 # 轮播图flutter_swiper_null_safety: ^1.0.2二、实现swiper分页代码 由于我这里按照一页8…

C高级--day3(shell中的输入、命令置换符、数组、算数运算、分支结构)

#!/bin/bash pls ~/ -l | grep "^-" | wc -l qls ~/ -l | grep "^d" | wc -l echo "普通文件个数&#xff1a;$p" echo "目录文件个数&#xff1a;$q"#!/bin/bash read file posexpr index $file \. strexpr substr $file $((pos1)) 2…

Xposed回发android.os.NetworkOnMainThreadException修复

最近用xposed进行hook回发的时候&#xff0c;又出现了新的问题&#xff1b; android.os.NetworkOnMainThreadException&#xff1b; 在Android4.0以后&#xff0c;写在主线程&#xff08;就是Activity&#xff09;中的HTTP请求&#xff0c;运行时都会报错&#xff0c;这是因为…

解决K8S集群设置污点后,污点不生效,下发应用的问题

问题&#xff1a;在集群中部署了三个daemonset&#xff0c;一开始加了容忍Toleration&#xff0c;后边去掉Toleration后&#xff0c;还是一直往边缘节点上部署应用&#xff0c;非常离谱 解决&#xff1a;删掉Toleration后&#xff0c;需要把annotations一起删掉&#xff0c;因为…