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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 卡耐基曾经说过,一个人的成功,约有15%取决于知识和技能,85%取决于沟通。沐沐的工作中60%的内容都是在沟通,所以高效的工作取决于有效的沟通。我们在产品研发过程中最大的痛点就是沟通成本比较高。各个公司总是在强调要降低成本,很多时候都在降低人力成本,却没有真正的去思考降低沟通成本。降低沟通成本并不是说减少沟通,而是要充分有效地沟通。一、有效沟通所谓有效沟通,即让倾听者对沟通内容产生有效的反馈,表达者在确认自己表达清楚后,更要去了解对方是否接收到你表达的信息。当然本部门沟通和跨部门沟通也会有本质的不同,主要还是立场不同,所以跨部门沟通时,尽量换位思考,了解对方的立场后再沟通,会降低冲突,提升效率...
            1 0 2809
            分享
          • 1、引言面试官:小鱼,你来说说自动化测试架构是啥,怎么理解自动化测试架构?小鱼心想:挖草~ ~ 你这个坑,你这一个问题,我都能写一篇文章了。奈何心里这样想的,也不能就这样表达出来,于是乎,小鱼就说:嗯,这问题,我可以从以下几点来慢慢说。2、架构是个啥东西软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用...
            0 1 4483
            分享
          • 测试同学在做安全测试时,相信多少都会遇到SQL注入与盲注的漏洞,那么今天我们就来分享下SQL注入与盲注的相关知识,希望对大家有所启发。一、SQL盲注的定义SQL注入,简单理解,也就是将用户输的的内容当代码执行了,应用程序没有对用户输入的内容进行判断和过滤,攻击者通过将构造的恶意SQL语句作为查询参数,使其在后台服务器上解析执行,最终导致数据库信息被篡改或泄露,这个过程就成为SQL注入。盲注,其实是SQL注入的一种, 攻击者在没有获得任何错误回显消息的情况下,通过使用一系列的布尔型或时间型查询,逐渐推断出数据库中的敏感信息。 简单理解下,盲注的表现就是,同一个接口,同一个参数,传不符合常规的值,...
            0 1 2700
            分享
          • 前言日常测试过程中,常常需要多种工具来接力完成自己的接口测试任务。 比如说, 使用swagger查看接口文档, 使用mock编造接口数据对前端页面做测试 使用postman测试后端接口, 用Jmeter来做接口自动化测试/性能测试。 那有没有一款软件可以完美集成以上所有的功能? 笔者发现一款叫Apifox的软件,一款完成能完成以上几乎所有软件的功能。官方给出Apifox的介绍是:接口管理,开发,测试全流程集成工具,软件的定位是Swagger+Mock+Jmeter+Postman。它能通过一套系统,一份数据,一站式完成接口测试全流程,同时能对api文档进行维护,定时触发变更,对于测试接口变更,...
            12 12 3300
            分享
          •   1. 场景法(流程图法)  1.1 基本概念理论  场景法就是模拟用户操作软件时的场景,主要用于测试多个功能之间的组合使用情况。  场景法通常在集成测试、系统测试和验收测试阶段使用。  使用场景法设计测试用可以参照下述步骤:  ·需求分析  · 根据需求绘制流程图,比如网购的流程  · 根据流程图设计测试用例,每一条流程路径就是一条测试用例。  在绘制流程图时,有几个常用的通用符号:  · 流程开始或结束 - 椭圆形  · 方向或者路径 - 箭头  · 处理或者操作 - 长方形  · 判断 - 菱形  · 输入或者输出 ...
            0 0 1630
            分享
      • 51testing软件测试圈微信