简介
接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特性相关的测试用例。
接口测试流程
接口测试的质量目标
-
功能
-
性能
-
安全
-
兼容
-
健壮性
-
高可用性(中间件)
协议分析方法
-
网络监听:
-
TcpDump
-
WireShark
-
-
代理 Proxy
-
推荐工具:手工测试 Charles [全平台]、安全测试 BurpSuite [全平台 Java]
-
自动化测试:mitmproxy
-
其他代理:Fiddler [仅 Windows]、AnyProxy [全平台]
-
接口测试用例的设计方法
正式设计接口测试用例之前,需要梳理一下接口测试的思路:
基本功能流程测试
在基本功能流程测试方面,首先需要先执行冒烟测试,把最基本的功能流程走通。冒烟测试决定提测是否成功,如果通过冒烟测试,才会进入到详细的测试阶段。如果冒烟测试不通过,需要打回给开发,开发修改之后重新提测。冒烟测试通过之后,进行正常流程覆盖测试,粒度会比冒烟测试更细一些,覆盖一些分支业务逻辑。
基于输入域的测试
因为发出接口请求需要携带请求参数,所以肯定会涉及到关于请求参数的各种用例的设计。关于请求参数的用例设计可以考虑下面这些方面。
-
边界值测试
对于有范围要求的参数,需要综合等价类和边界值的方法设计测试用例。边界值选择上点和离点即可,要覆盖到有效等价类和无效等价类。
-
特殊字符校验
对于很多请求参数会要求不能包含特殊字符,对于有这类要求的字段,需要单独设计包含特殊字符的测试用例来做验证。
-
参数类型校验
有一些参数还会对于传参值的类型有要求,比如只能包含英文数字,或者只能包含整数类型等。对于这种对类型有要求的字段,也要单独设计测试用例,设计一些反向用例来做验证。
-
必选参数校验
在接口中有必填的参数,也有选填的参数。对于每一个必填参数,都要设计一条不传的用例来验证必填性。
-
组合参数校验
对于有选填参数的接口来说,需要对于各种参数的不同组合场景进行验证。比如只传必填参数,或者必填参数和不同数量的选填参数做组合的场景,可以使用判定表的方法进行设计。
-
排重逻辑
如果有的字段要求不能重复,那么需要对它进行排重逻辑的覆盖,看看重复请求相同的参数,服务端的处理逻辑是不是正确。
-
接口幂等性
幂等是指任意多次执行所产生的影响均与一次执行的影响相同。保证接口的幂等性是非常重要的,尤其是在涉及资金的系统,比如如银行、电商系统等。例如用户重复提交请求,或者网络重发,系统重试等场景,都需要设计测试用例来保证接口的幂等性。接口的幂等测试,需要多次发送同一参数的请求,查看服务端响应是否只有一次是成功的。
线程安全测试
线程安全测试包含了并发测试、分布式测试。
分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。
分布式的实现有两种形式:
-
水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务。
-
垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上。
相对于分布式来讲,高并发在解决的问题上会集中一些,它的重点是测试同时有多少量,比如在线直播服务同时有上万人观看。
高并发可以通过分布式技术去解决,将并发流量分到不同的物理服务器上。但除此之外,还可以有很多其他优化手段,比如使用缓存系统,还可以使用多线程技术将一台服务器的服务能力最大化。
对于并发场景,需要测试多个相同参数的请求,只有一条请求成功,其他请求失败。
对于分布式测试,则需要测试在分布式环境中并发相同参数的请求,只有一条请求成功,其他请求失败。
故障注入
故障注入测试需要测试人员故意制造故障的场景,来保证系统的健壮性。
如果产品中用到了 Redis,就需要对于 Redis 做一些故障降级测试。Redis 一般会放在数据库前面,用来做高速缓存。
Redis 故障注入需要开发配合清空 Redis 数据,发请求,击穿 Redis,从 DB 中获取正常的数据,并能回写到 Redis 中。然后开发配合启动 Redis 数据恢复功能,测试可以从 Redis 中获取正确的数据。还需要开发配合制造 Redis 崩溃场景,发请求,测试是否降级从 DB 中获取到正常的数据。
除了 Redis 之外,还需要进行服务故障转移测试。比如数据库故障测试与接口故障测试。
数据库故障测试,开发配合制造数据库数据丢失场景,启动数据恢复策略,测试规定时间段内数据是否可以恢复;开发配合制造数据库崩溃场景,测试数据库多活策略是否启动,保证功能不受影响。
接口故障测试,开发配合接口服务重启,测试集群负载是否自动重启实例,所有请求无异常;开发配合制造集群崩溃场景,测试是否返回对应的错误信息,内部服务是否有重试机制。
接口测试用例要素
-
模块
-
测试标题
-
优先级
-
前置条件
-
请求方法
-
请求参数
-
预期结果
-
实际结果
总结
-
接口测试的质量目标
-
协议分析方法
-
接口测试用例设计思路
-
接口测试用例要素
推荐学习
全栈开发与测试定向培养班,内容全面升级,可选择岗位更多,就业面更广。4 个月 30+ 项目实战强化训练,资深测试架构师、开源项目作者亲授 BAT 大厂前沿最佳实践,0基础可学,带你一站式掌握测试开发必备核心技能!增加名企私教服务,针对性解决工作难题。直推 BAT 名企测试经理,简历指导+模拟面试+面试复盘,助你斩获更多Offer!
霍格沃兹b站精华视频推荐
【霍格沃兹测试开发】7天软件测试快速入门 带你从零基础/转行/小白/就业/ 测试用例设计实战
【霍格沃兹测试开发】最新版!Web自动化测试从入门到精通/电子商务产品实战/Selenium(上集)
【霍格沃兹测试开发】最新版!Web自动化测试从入门到精通/电子商务产品实战/Selenium(下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/自动化测试/性能测试/精准测试/测试左移/测试右移/人工智能测试
【霍格沃兹测试开发】腾讯/百度/阿里/字节测试专家技术沙龙分享合集/精准化测试/流量回放/Diff
【霍格沃兹测试开发】Pytest用例结构/编写规范 /免费分享
【霍格沃兹测试开发】JMeter实时性能监控平台/数据分析展示系统Grafana/Docker安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/测试开发能力评级/1V1模拟面试实战/冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/要评级表格的联系我
【霍格沃兹测试开发】Pytest与Allure2一键生成测试报告/测试用例断言/数据驱动/参数化
【霍格沃兹测试开发】App功能测试实战快速入门/adb常用命令/adb压力测试
【霍格沃兹测试开发】阿里/百度/腾讯/滴滴/字节/一线大厂面试真题讲解,卷完拿高薪Offer!
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman做接口测试,从入门到实战/接口抓包(最新最全教程)
【霍格沃兹测试开发】6小时轻松上手功能测试/软件测试工作流程/测试用例设计/Bug管理
【霍格沃兹测试开发】零基础小白如何使用Postman,从零到一做接口自动化测试/从零基础到进阶到实战
【霍格沃兹测试开发】建议收藏全国CCF测试开发大赛Python接口自动化测试赛前辅导 /项目实战
【软件测试教程】如何根据招聘需求选择最值得入职的软件测试岗位?
【软件测试教程】能进入BAT一线互联网大厂的优质软件测试简历必须包含的7大板块
软件测试工程师简历面试教程攻略--如何写出能进BAT大厂测开岗的优质简历?如何在面试中向HR要到更高薪资?如何拿到更高级别的offer?--持续更新!
【软件测试教程】自动化测试入门-只能二维码登录,自动化测试怎么做?
【软件测试教程】面试现写10个linux命令,写不出来怎么办(上)
【软件测试教程】面试现写10个linux命令,写不出来怎么办(下)
【软件测试教程】自动化测试-比fiddler更好用的抓包工具,你知道吗?
【软件测试教程】自动化测试-如何使用selenium自动发邮件
【软件测试教程】软件测试入门进阶-测试新人的如何学习更容易涨薪
【软件测试教程】Allure一节课学会生成业内最优秀的自动化测试报告
【软件测试教程】自动化测试-selenium grid 搭建分布式测试平台
【软件测试教程】Appium自动化测试-实现企业微信自动打卡
【软件测试教程】自动化测试神器-charles抓包工具的使用
测试开发公开课
【软件测试教程】移动端自动化测试appium电商自动下单流程
【软件测试教程】面试官让你现写10个Linux命令,怎么写?
【软件测试教程】面试加分的移动端自动化测试技巧-高级定位技巧
【软件测试教程】一节课入门BAT级别的测试开发知识点springboot
【软件测试教程】Java测试平台开发入门篇之vue基础语法实战
接口测试入门到实战精通
【软件测试教程】session、cookie、token区别
【软件测试教程】一节课入门BAT级别的测试开发知识点springboot
【软件测试教程】性能测试压测实战-JMeter+InfluxDB+Grafana压测数据展示
【软件测试教程】高级软件测试必备-管理测试环境必备工具Shell
【软件测试教程】软件测试面试实战-面试现写sql查询语句写不出来怎么办
【软件测试教程】零基础学测试如何比别人更快拿到好的offer
【软件测试教程】移动端自动化测试-使用APPIUM实现电商APP下单流程
【软件测试教程】软件测试数据库-面试现写sql查询语句写不出来怎么办
【软件测试教程】高级测试开发教程-Docker一条命令搭建测试流程管理环境
【软件测试教程】软件测试高薪秘籍-零基础学测试如何比别人拿到更高薪的offer
【软件测试教程】自动化测试教程-经典面试题java多线程你熟悉吗?
【软件测试教程】高级软件测试开发-面试官都喜欢问的高级定位原理你知道吗
【软件测试教程】appium移动端自动化测试实现电商app下单流程
【软件测试教程】自动化测试必备-面试官问java如何读写文件,你怎么回答
【软件测试教程】软件测试开发持续集成利器-jenkins快速上手
【软件测试教程】自动化测试-Python与经典面试题手写冒泡排序
【软件测试教程】软件测试数据库专题-面试现写sql查询语句写不出来怎么办
【软件测试教程】软件测试之shell实战项目-实现脚本抽奖小程序
【软件测试教程】软件测试实战项目系列-老板让我自己组建测试流程
【软件测试教程】自动化测试基础教程-如何使用自动化工具投简历
【软件测试教程】帮你搞定自动化测试平台与兼容性测试-stf平台
【软件测试教程】高级性能测试-JMeter+InfluxDB+Grafana压测数据展示
【软件测试教程】Java自动化测试平台开发入门篇之初识springboot
【软件测试教程】web自动化测试框架selenium-UI自动化测试如何绕过二维码登录
【软件测试教程】httprunner使用HttpRunner高效实现接口测试自动化
【软件测试教程】移动端自动化测试-Appium环境搭建及入门
【软件测试教程】自动化测试入门教程-python分支结构和循环结构
【软件测试教程】自动化测试入门教程-python模块与输入输出
【软件测试教程】软件测试零基础自学教程-linux系统 与shell环境准备
【软件测试教程】Java测试平台开发入门篇之vue基础语法实战
【软件测试教程】自动化测试教程-pageobject企业微信实战
【软件测试教程】APP自动化测试-appium原理解析与九宫格解锁
【软件测试教程】接口测试教程-httprunner的基础使用
【软件测试教程】软件测试教程-mysql数据库环境搭建与表结构创建修改操作
【软件测试教程】自动化测试入门教程-seleniumIDE录制以及常用api
【软件测试教程】Python自动化测试入门-python字符串数据结构
【软件测试教程】web自动化测试selenium高级用法-CssSelector
【软件测试教程】移动端app自动化测试-Appium环境搭建及入门
【软件测试教程】接口测试入门实战-基于企业微信api进行接口测试
【软件测试教程】自动化测试selenium高级用法-xpath定位
【软件测试教程】自动化测试必会-python条件、循环表达式
【软件测试教程】接口测试工具之charles高级用法代理抓包+数据篡改
【软件测试教程】Java自动化测试平台初识springboot
【软件测试教程】高级软件测试开发服务集群架构docker+k8s
【软件测试教程】自动化测试平台与兼容性测试-STF多设备管理平台
【测试教程】APP自动化测试 Page Object实战-思寒
【测试教程】Linux三剑客实战--shell经典面试题大解密
【APP自动化测试教程】使用Page Object设计模式提高自动化测试脚本的可维护性
接口测试
【接口测试】rest-assured高级进阶-对接口时间进行断言、导出数据【软件测试】
【接口测试】rest-assured高级进阶-发送json请求【软件测试】
【接口测试】移动端代理抓包-数据拦截与修改实战演练【软件测试】
【接口测试】移动端代理抓包-数据拦截与修改方法教学【软件测试】
【接口测试】HTTP协议组成及客户端模拟请求工具【软件测试】
【接口测试】HTTP协议-代理工具抓包和篡改结果【软件测试】
【软件测试】接口测试入门到实战精通-协议、框架、持续集成、断言、运行与维护-教你如何从零开始搞定接口测试
【软件测试】java语言rest-assured框架进行接口测试实战
【测吧】软件测试开发BAT一线名企面试指南-小白慎点-(霍格沃兹测试学院)
6.【测吧】软件测试开发-研发阶段的质量保证(测试左移)-【7小时入门软件测试】
7.【测吧】测试开发-发布后的质量监控(测试右移)-【7小时入门软件测试】
9.【测吧】企业招人标准--软件测试高薪秘诀-【7小时入门软件测试】
10.【测吧】如何写好简历--软件测试高薪秘诀-【7小时入门软件测试】
11.【测吧】面试技能技巧--软件测试高薪秘籍-【7小时入门软件测试】
12.【测吧】真实案例分析--软件测试高薪秘籍-【7小时入门软件测试】
【测吧】手机浏览器、webview、微信小程序自动化软件测试
Java语法基础
软件测试/测试开发/Java语法基础-list集合-linkList集合
软件测试/测试开发/Java语法基础-集合-Iterator
软件测试/测试开发/Java语法基础-集合-常用方法+数组转换
软件测试/测试开发/Java语法基础-集合-集合声明、元素添加
软件测试/测试开发/Java语法基础-包装类-Integer+自动拆装箱
软件测试/测试开发/Java语法基础-内部类-静态内部类+局部内部类
软件测试/测试开发/Java语法基础-static下-静态方法
软件测试/测试开发/Java语法基础-static上-静态变量
软件测试/测试开发/Java语法基础-常用标准库:输入与输出
软件测试/测试开发/Java语法基础-常用标准库:文件的处理
软件测试/测试开发/Java语法基础-List集合-ArrayList
职业发展面试求职
【软件测试 | 测试开发】能拿高薪的技术简历,究竟有什么秘密?
招聘JD里写要求3年经验,1年经验可不可以面试?【软件测试 | 测试开发】
[史上最强] 软件测试面试技巧,简历撰写,面试题分享(内附答案,建议收藏)
测试行业领域很多,如果换领域会不会影响我的职业发展?【软件测试 | 测试开发】
年龄偏大了,想从技术转管理,应该如何在工作中锻炼自己的管理能力?【软件测试 | 测试开发】
【软件测试 | 测试开发】测试工期被压缩,来不及写测试用例怎么办?
测试投入度多少合适?偶发性的bug要不要投入时间解决?如何高效解决?【软件测试 | 测试开发】
常见面试题:常见的HTTP状态码你知道么?【软件测试 | 测试开发】
浏览页面过程突然变卡顿是什么原因呢?【软件测试 | 测试开发】
如果开发人员认为你提交的 bug 不是一个 bug,这时候你怎么办【软件测试 | 测试开发】
【软件测试 | 测试开发】实际工作中,你是如何开展自动化工作的?
【软件测试 | 测试开发】面试官问我app测试如何查看log,我不会
公开课
软件测试 / 测试开发 / Java web自动化测试公开课
【软件测试 | 测试开发】Python中如何将字符串转化为整形?
【软件测试 | 测试开发】HTTP是什么?SSL和TLS又是什么?
软件测试/测试开发/利用Python与Allure2打造强大的测试报告
什么样的功能适合做自动化测试-new【软件测试 | 测试开发】
如何使用 pytest 控制测试用例的顺序?-修改后【软件测试 | 测试开发】
自动化测试中常用的三种等待方式?他们有什么特点-修改后【软件测试 | 测试开发】
五款好用的App自动化测试工具-修改后【软件测试 | 测试开发】
Android与iOS在app测试时有哪些区别【软件测试 | 测试开发】
get请求和post请求的区别是什么【软件测试 | 测试开发】
【软件测试 | 测试开发】UI自动化中怎样解决页面跳转后元素不生效?
给你一个购物车界面,如何测试-new【软件测试 | 测试开发】
数据库中左连接,右连接,内连接是什么?【软件测试 | 测试开发】
什么是SeleniumGrid?它是做什么用的?【软件测试 | 测试开发】
【软件测试 | 测试开发】Android与iOS在app测试时有哪些区别?
【软件测试 | 测试开发】一节课带你理清接口测试用例设计思路
【软件测试 | 测试开发】pytest_allure接口自动化测试
【软件测试 | 测试开发】接口测试入门 - 关于AI图文识别的接口测试
【软件测试 | 测试开发】开源工具JMeter搭建及源码修改的套路,定制专属JMeter压测工具
【软件测试 | 测试开发】JMeter入门实操,教你使用Grafana生成JMeter图形化压测报告
【软件测试 | 测试开发】Xpath的多种定位方法助你搞定自动化测试
【软件测试 | 测试开发】一小时快速掌握app自动化测试神器Airtest
【软件测试 | 测试开发】一节课带你掌握面试官常问的adb命令
【软件测试 | 测试开发】Appium自动化测试之九宫格解锁实战
【软件测试 | 测试开发】基于图像识别的app自动化测试工具airtest
【软件测试 | 测试开发】一节课入门最火的测试框架pytest
【软件测试 | 测试开发】Python测试框架的高收益体现在哪里
【软件测试 | 测试开发】Pytest +allure 十行代码生成高大上的测试报告
【软件测试 | 测试开发】RobotFramework框架应用
软件测试/测试开发/工程效能与测试平台开发CI、CD、DevOps公开课
【软件测试 | 测试开发】快速构建高校测试平台,推动测试中台化发展
【软件测试 | 测试开发】Docker搭建分布式UI自动化及监控体系
软件测试 / 测试开发/自学/压力/性能/入门到精通/别再用LoadRunner了
【软件测试 | 测试开发】性能测试发现的问题,是开发解决,还是测试解决
软件测试/测试开发/工程效能与测试平台开发CI、CD、DevOps公开课
【软件测试 | 测试开发】Jenkins搭建测试环境及自动发布
【软件测试 | 测试开发】领导要求CICD,还不会搭建环境怎么弄
【软件测试 | 测试开发】如何使用docker完成应用的部署
【软件测试 | 测试开发】Web测试和App兼容性测试需要考虑什么
【软件测试 | 测试开发】BAT等一线大厂如何做APP的稳定性测试
【软件测试 | 测试开发】uiautomator2小而美的app自动化测试工具
【软件测试 | 测试开发】一节课入门 python 接口自动化测试
【软件测试 | 测试开发】python 操作 excel 完成接口测试
【软件测试 | 测试开发】亿级流量App前端性能测试,只需10行代码?