• 0
  • 0
分享
  • 小红书崩溃事件启示:电商erp系统接口实战(二)——软件测试圈
  • 曼倩诙谐 2023-08-18 15:56:02 字数 9603 阅读 1702 收藏 0

  Postman实现接口功能测试

  新增货品接口实战

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

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

  1)请求方法:POST

  2)请求地址:

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

  3)请求头:

  截图如下:

图片 10.png

  文本内容如下:

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测试工具”的获取的请求参数,截图如下:

图片 11.png

  2、接口断言

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

图片 12.png

  3、Postman工具使用

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

图片 13.png

  2)断言内容:

  json断言介绍:

图片 14.png

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

图片 15.png

图片 16.png

  4、接口脚本优化

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

  1)global环境添加变量:

图片 17.png

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

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

  用js脚本实现如下:

图片 18.png

  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)断言内容参数化

图片 19.png

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

  断言脚本的参数化:

图片 20.png

  5、接口测试结果

  1)Cookie过期的执行结果:

图片 21.png

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

图片 22.png

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

  货品查询接口介绍

图片 23.png

图片 24.png

图片 25.png

  货品查询接口实战

  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)请求体

图片 26.png

  解码后请求体为:

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)响应体断言内容的分析

图片 27.png

  响应体断言内容所在路径: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过期执行结果:

图片 28.png

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

图片 29.png

  内容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执行界面:

图片 30.png

  2)runner执行结果

图片 31.png

  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 参数操作;

图片 32.png

  Jenkins集成

  准备工作:

  1)Postman脚本

  2)newman脚本

  3)Jenkins环境

  Postman脚本准备

图片 33.png

  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功能介绍:

图片 34.png

  1 build:填写newman的命令:

图片 35.png

图片 36.png

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

图片 37.png

  Jenkins执行结果

  整体执行结果:

图片 38.png

  某次具体的输出结果:

图片 39.png

图片 40.png

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

  1 触发器触发条件介绍:

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

  * * * * *

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

图片 41.png

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

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

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

  H/5 * * * *

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

  每天下午18定时构建一次

  H 18 * * *

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

  每周1/5构建一次

  H H * * 5

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


作者:明月时时有    

来源:http://www.51testing.com/html/16/n-7797216.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在真实的压测过程中,我们不可能是录制完脚本直接就设置虚拟用户进行压测,通常为了使压测结果更加真实,我们还需要做一些修改,其中就用到了逻辑控制器,下面具体来讲一下几种常用的逻辑控制器的使用。  Loop Controller(循环控制器)  使用场景:如果录制的一个脚本中,我只想对其中的一个或者几个请求进行循环操作,但是登录请求只想执行一次,那么应该怎么办?  添加循环控制器即Loop Controller:  在这里设置Controller里请求的循环次数:  这样我们在执行脚本的时候,该循环控制器下面的所有请求都会请求两遍,而登录操作只会执行一遍,执行结果如下:  While Contr...
            14 14 2029
            分享
          • 面试中怎么分析面试官对你的提问面试官问你什么内容的时候,其根本是为了了解你对这个东西的理解程度1、讲自己的了解(知识)2、讲自己的理解你在面试官心目中,会是一个具有独立思考能力的人问题1:你做过IOS测试吗?android和ios测试有哪些区别?操作系统上的不同:ios基于Unix的系统Android基于Linux的系统各个方向:操作Android长按Home键呼出应用列表和切换应用,然后滑动终止应用ios是向上滑动,终止应用 渲染Android是在数据层渲染应用ios是在UI层渲染应用安装Android是apk    Android的权限给的是底层的root权限...
            0 0 2824
            分享
          •   北京亦庄官方宣布,北京小米机器人技术有限公司正式乔迁至北京亦庄小米汽车工厂。  据介绍,目前小米机器人公司正推进仿人机器人在自有制造系统的分阶段落地。短期内小米机器人是一个专用智能机器人,应用在智能制造的某些场景中,未来将向更多场景拓展。  小米集团高级副总裁、手机部总裁曾学忠表示:“未来扎根北京亦庄这片创新宝地,我们希望能与行业伙伴携手合作,持续推动机器人产业的发展,一个由智能机器、仿人机器人和人类专家共同组成的‘人机一体化时代’一定会加速到来。”  小米机器人公司于 2023 年 4 月在北京亦庄注册成立,成为小米集团专注于仿生机器人技术创新与产品研发、产业化的唯一主体。目前,小米已发...
            0 0 415
            分享
          • 作为软件开发从业者,API 调试是必不可少的一项技能,在这方面 Postman 做的非常出色。但是在整个软件开发过程中,API 调试只是其中的一部分,还有很多事情 Postman 无法完成,或者无法高效完成,比如:API 文档定义、API Mock、API 自动化测试等等。Apifox 就是为了解决这个问题而生的。接口管理现状一、常用解决方案使用 Swagger 管理 API 文档使用 Postman 调试 API使用 MockJs 等工具 Mock API 数据使用 JMeter 做 API 自动化测试二、存在的问题维护不同工具之间数据一致性非常困难、低效。并且这里不仅仅是工作量的问题,更大...
            14 14 1864
            分享
          •   无论是要理解测试,还是做好软件测试,都要抓住这7个核心问题:  1. 测试选择标准与测试充分性 (终止原则)  测试选择标准是选择测试集或确定?个测试集是否满足指定目标的方法。测试充分性标准可以用来决定何时测试充分或者是否完成。  2. 测试有效性与测试目标  通过一系列程序的执行对测试的效率进行分析。对将要执行的测试用例的选择因其目标而异, 即测试集的效率评价基于具体想要实现的目标。  3. 以寻找缺陷为目标的测试  在以寻找缺陷为目标的测试活动中, 是否能够导致系统失效,这是测试是否成功的标准。这与测试软件是否满足设计规约或其它属性有很大的不同, 后者的成功取决于软件在现实的测试用例和...
            0 0 1054
            分享
      • 51testing软件测试圈微信