小红书崩溃事件启示:电商erp系统接口实战(二)

发表于:2023-8-04 10:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:明月时时有    来源:51Testing软件测试网原创

  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后,执行成功:
  备注:如何获取最新的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后的执行结果:
  备注:如何获取最新的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值可以理解随机值;
  版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号