接口测试-第02天-接口用例设计思路、单接口用例,业务场景用例、postman

更多功能测试以及全套学习路线图均在专栏,↑↑戳进去领取~

系列文章目录

🍑软件测试功能到自动化学习路线图,2022年最新版技术栈
🍑软件测试01:从了解测试岗位职能和测试流程开始,附作业
🍑软件测试02:6大实际案例手把手教你设计测试点
🍑软件测试03:用例执行以及缺陷管理的学习,附禅道下载使用流程
🍑软件测试04:你必须要知道的HTML标签作用
🍑软件测试实战项目web资讯管理平台—黑马头条测试

😊身为开发必知必会的Linux:Linux远程连接/命令的使用
😊Linux命令大全,唯一以案例详解文,持续更新中
😊Linux命令大全以及数据库,唯一以案例详解文,已完结

👼 Web自动化测试01:认识web自动化在什么项目中适用
👼Web自动化测试02:Web自动化测试工具选择大全
。。。。更多内容看专栏哦!
👼Web自动化测试11:Selenium之frame切换、多窗口切换
👼Web自动化测试12:Selenium窗口截图、验证码处理

🍅接口测试-第01天-万字教程带你入门接口测试



学习目标

请添加图片描述


今日学习目标

分析接口文档,设计编写接口测试用例

使用Postman设置请求方法、URL、请求头、请求体,向接口发送http请求,并查看响应数据

接口用例设计

为什么写

  1. 防止测试点漏测。条理清晰
  2. 方便分配工作,评估工作量和时间
  3. 面试时使用!

接口测试的测试点

测试点称之为测试维度。

在这里插入图片描述

功能测试

  • 单接口功能:
    • 手工测试中的单个业务模块,一般对应一个接口。
      • 登录业务 ——> 登录接口
      • 加入购物车业务 ——> 加入购物车接口
      • 订单业务 ——> 订单接口
      • 支付业务 ——> 支付接口
    • 借助工具、代码。绕开前端界面,组织接口所需要的数据,展开接口测试。
  • 业务场景功能:
    • 按照用户实际 使用场景,梳理 接口业务 场景。
    • 组织业务场景时,一般只需做 正向 测试即可(与手工一致)。
    • 一般建议用最少的 用例 覆盖最多的业务场景。
      • 登录 —— 搜索商品 —— 加购物车 —— 下单 —— 支付 —— 评价

性能测试

  • 响应时长
  • 吞吐量
  • 并发数量
  • 服务器资源利用率

安全测试

  • 攻击安全。 —— 与测试工程师无关。

  • 业务安全。 —— 测试的方向。

    • 敏感数据是否加密

在这里插入图片描述

- SQL注入:在用户能输入数据的位置,写入SQL语句。

    - SQL注入安全,用户恶意写入的SQL语句,不会执行,查询数据库!

设计方法与思路

与手工设计相同之处

  • 手工测试 对应的 功能测试点,与接口测试对应的功能 完全一致。

tpshop商城 登录 页面,手工功能测试用例设计要点:

  1. 页面布局是否符合需求
  2. 测试 用户名 输入框,输入的数据是否正确。
  3. 测试 密码 输入框,输入的数据是否正确。
  4. 测试 验证码 输入框, 输入的数据是否正确。

tpshop商城 登录 页面,接口测试用例设计要点:

  1. 测试 用户名 输入框对应的 username 的值 是否正确。
  2. 测试 密码 输入框对应的 password 的值,是否正确。
  3. 测试 验证码 输入框对应的 verify_code 的值,是否正确。

在这里插入图片描述

与手工设计不同之处

  1. 手工测试,测写入到输入框中的数据是否正确。接口测试测 参数 对应的 参数值 是否正确。
  2. 接口测试,不单单针对 参数值进行,还可以针对 参数本身 进行测试。
    • 正向参数:
      • 必选参数:所有的 必选(必填)都包含。
      • 组合参数:所有的 必选 + 任意一个或多个可选参数。
      • 全部参数:所有的 必选 + 所有的 可选参数
    • 反向参数:
      • 多参:多出一个或多个必选参数 (可以任意指定)
      • 少参:缺少一个或多个必选参数。
      • 无参:没有必选参数。
      • 错误参数:参数名输入错误。

单接口测试用例

手工 测试用例文档 8 大要素:

编号、用例名称(标题)、模块、优先级、预置条件、测试数据、操作步骤、预期结果

接口 测用例文档 10 要素:

  • 编号、用例名称(标题)、模块、优先级、预置条件、请求方法、URL、请求头、请求体(请求数据)、预期结果

在这里插入图片描述

分析接口文档,以 “登录接口” 为例:

  • 请求方法:post
  • URL: “系统信息” 中的 协议和域名 + /api/sys/login
  • 请求头:Content-Type : application/json
  • 请求体:{“mobile”:“13800000002”,“password”:“123456”}
  • 预期结果: {“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“f5050a1b-7919-444c-9ec4-3c1a7286536d”}
    • data:值为登录成功生成的 令牌数据。该数据 会定时变化。
编号用例名称模块优先级预置条件请求方法URL请求头请求体(请求数据)预期结果
login_001登陆成功登录p1账号已注册POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“123456”}状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”,“data”:“f5050a1b-7919-444c-9ec4-3c1a7286536d”}

登录模块的接口测试用例测试点:

  • 数值
    • 正向:
      • 登录成功
    • 反向:
      • 用户名为空
      • 用户名包含特殊字符、字母
      • 用户名超过11位(12位)
      • 用户名不足11位(10位)
      • 用户名未注册
      • 密码为空
      • 密码包含特殊字符、字母
      • 密码为1位
      • 密码为100位
      • 密码错误
  • 参数(接口测试特有)
    • 正向:
      • 必选参数:正确用户名 + 正确密码
      • 组合参数:忽略
      • 全部参数:正确用户名 + 正确密码
    • 反向:
      • 多参:多 abc:“123”
      • 少参(少mobile):没有用户名,正确密码
      • 无参:没有任何参数
      • 错误参数(手机号参数名错误):abc:1381234567, password:”123456”

用户名相关 5 条:

login_002用户名为空登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:"",“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_003用户名包含特殊字符、字母登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800&#abc”,“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_004用户名超11位(12位)登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“138000000023”,“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_005用户名不足11位(10位)登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“1380000000”,“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_006用户名未注册登录p2数据库中不存在的手机号POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“16700542479”,“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}

密码相关 5 条:

login_007密码为空登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:""}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_008密码包含特殊字符、字母登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“123&%rt”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_009密码1位登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“1”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_010密码100位登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“放置100位字符组成的密码”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_011错误密码登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“888888”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}

参数相关:

login_012必选参数(全部参数)登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“mobile”:“13800000002”,“password”:“123456”}状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”,“data”:"f5050a1b-7919-444c-9ec4- 3c1a7286536d "}
login_013多参登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“abc”:“123”,“mobile”:“13800000002”,“password”:“123456”}状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”,“data”:"f5050a1b-7919-444c-9ec4- 3c1a7286536d "}
login_014少参(少mobile)登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}
login_015无参登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“success”:false,“code”:99999,“message”:“抱歉,系统繁忙,请稍后重试!”,“data”:null}
login_016错误参数(mobile参数名错误)登录p2——POST{协议+域名}/api/sys/loginContent-Type:application/json{“abc”:“13800000002”,“password”:“123456”}状态码:200 {“success”:false,“code”:20001,“message”:“用户名或密码错误”,“data”:null}

业务场景测试用例

  • 用户怎么用,怎样设计业务。
  • 用最少的测试用例,尽量覆盖最多的接口。

分析测试点

针对 “员工管理” 业务场景:

  • 登录 —— 添加员工 —— 查询员工 —— 修改员工 —— 再次查询 —— 删除员工 —— 查询员工列表

添加员工

  • 请求方法:post

  • URL: {协议+域名}/api/sys/user

  • 请求头:

    • Content-Type: application/json
    • Authorization: Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d (具体数据 来源 登录成功返回的 响应体中的 data的值)
  • 请求体(请求数据):{“username”:“爱因斯坦”,“mobile”:“17289432100”,“timeOfEntry”:“2021-07-12”,“formOfEmployment”:1,“departmentName”:“测试0607”,“departmentId”:“1412421425733664768”,“workNumber”:“234”,“correctionTime”:“2021-07-30T16:00:00.000Z”}
    在这里插入图片描述

  • 预期结果:

    • 状态码:200
    • {“success”:true,“code”:10000,“message”:“操作成功!”, “data”:{“id”:“113749504”}}
用例名称模块优先级预置条件请求方法URL请求头请求体(请求数据)预期结果
添加员工员工管理p0登录成功post{协议+域名}/api/sys/userContent-Type: application/json, Authorization: Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d{“username”:“爱因斯坦”,“mobile”:“17289432100”,“timeOfEntry”:“2021-07-12”,“formOfEmployment”:1,“departmentName”:“测试0607”,“departmentId”:“1412421425733664768”,“workNumber”:“234”,“correctionTime”:“2021-07-30T16:00:00.000Z”}状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”, “data”:{“id”:“113749504”}}

查询员工

  • 请求方法:GET
  • URL: {协议+域名}/api/sys/user/:target
  • 请求头:
    • Content-Type: application/json
    • Authorization: Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d (具体数据 来源 登录成功返回的 响应体中的 data的值)
  • 请求体:
  • 返回数据:
    • 状态码:200
    • {“success”: true,
      “code”: 10000,
      “message”: “操作成功!”,
      “data”: { 所查询的员工的详细信息} }
emp_manager_002查询员工员工管理p1登录成功GET{协议+域名}/api/sys/user/:targetContent-Type: application/json, Authorization: Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d状态码:200 {“success”: true, “code”: 10000, “message”: “操作成功!”, “data”: { 所查询的员工的详细信息} }

修改员工

emp_manager_003修改员工员工管理p0登录成功PUT{协议+域名}/api/sys/user/:targetContent-Type: application/json, Authorization: Bearer xxx{“username”:“小猪佩奇”}状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”, “data”:{“id”:“xxx”}}

返回数据中的 id ,代表 修改的员工id (是一个会变化的数据)。

删除员工

emp_manager_004删除员工员工管理p0登录成功delete{协议+域名} /api/sys/user/:targetContent-Type: application/json, Authorization: Bearer xxx状态码:200 {“success”:true,“code”:10000,“message”:“操作成功!”,“data”:null}

查询员工列表

emp_manager_005查询员工列表员工管理p0登录成功GET{协议+域名} /api/sys/user?page=1&size=10Content-Type: application/json, Authorization: Bearer xxx状态码:200 { “success”: true, “code”: 10000, “message”: “操作成功!”, “data”: { “total”: xxxx, “rows” [ {},{},… 10个员工的详细信息 ] } }

Postman

简介和安装

  • 简介:
    • Postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也会经常使用。
    • 特征:
      1. 简单易用的图形用户界面
      2. 可以保存接口请求的历史记录
      3. 使用测试集Collections可以更有效的管理组织接口
      4. 可以在团队之间同步接口数据
  • 安装:
    • 参见 课前下发的 ”Postman相关安装“ 目录下的《Postman环境安装.pdf》文件 及相关资料。

案例一

使用 postman 发送 http请求,访问 tpshop 商城的 “搜索” 接口

访问 tpshop 商城的 “搜索” 接口所需要的信息:

—— 结合 F12 浏览器开发者工具分析:

  • 请求方法:GET
  • URL:http://tpshop-test.itheima.net/Home/Goods/search.html?q=%E6%89%8B%E6%9C%BA
  • 请求头:无
  • 请求体:无
  • 返回数据:html网页

在这里插入图片描述

案例二

使用 Postman 向 topshop 商城 登录接口 发送一个密码错误的 登录请求

  • 请求方法:post

  • URL:http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.6693319462870182

  • 请求头:Content-Type:application/x-www-form-urlencoded

  • 请求体:

    • username: 13812345678
    • password: 12345699999
    • verify_code : 8888
  • 返回数据:

    {“status”:-2,“msg”:“密码错误!”} ---- 实际返回结果 “验证码错误” 与业务有关,后续课程讲解。

在这里插入图片描述

案例三

从接口文档,获取 登录接口 的 http请求,使用 Postman 发送

在这里插入图片描述

作业

  1. 每日反馈

  2. 完成作业《接口测试-第02天-作业.md》

  3. 预习早读单词《接口测试-第03天-早读单词.md》

  4. 预习 Postman 高级用法 和 Postman 测试报告

  • 1
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值