当前位置:网站首页>软测总监:“ 工作五年你连服务端接口测试还不知道?“
软测总监:“ 工作五年你连服务端接口测试还不知道?“
2022-07-19 18:36:00 【入坑玩家】
服务端的接口测试我们一般从功能开始进行测试,比如请求参数和响应参数的校验,业务逻辑或业务规则的校验,数据库操作的校验。功能正常后会根据需要进行安全相关的检查、性能测试以及系列扩展测试,比如与历史版本的兼容性测试、接口的超时验证以及设计合理性验证等,用例设计也是从这几个方面进行分析设计,下面的思维导图是一个概要的测试关注方向:
下面对上图内容做个说明:
针对输入
输入主要是指接口的入参,我们平常的测试中,会先考虑正常的入参,以及异常的入参,异常情况包括:参数异常和数据异常,用例设计这块使用较多的是等价类划分和边界值分析
A、正常的入参
正常的入参很好理解,就是根据接口设计文档的入参标准,输入正常的参数,响应按接口设计文档的约定条件正常返回
B、参数异常
参数异常包括:参数为空,多参或少参,错误的参数
C、数据异常
数据异常:数据类型错误、非空参数为空,长度不符合设计,不在字典范围内的数据,不合法的成员,特殊字符或敏感字符,存在关联关系的参数数据异常等
针对处理逻辑
接口测试前一般研发会提供接口设计文档或业务相关的设计图、流程图,针对业务流程的处理逻辑,我们可以从入参的限制条件、事件的操作对象、业务的状态转换
A、 限制条件分析
数值的限制:字典,等级,行业相关限制,金额限制,分数限制等
状态的限制:有效|无效,在线|离线,拉黑|洗白等
关系的限制:存在或不存在,绑定或解绑等
权限的限制:管理员,普通用户等
B、 对象分析
比如支付类业务,先支付成功,撤单后会退款,再次支付如果支付未成功,则是支付失败,状态之间的切换是否正常,未按正常业务顺利进行操作时,状态怎么显示,是否可控,是否出现异常状态,空状态业务怎么处理等
C、 状态转换的分析
比如支付类业务,先支付成功,撤单后会退款,再次支付如果支付未成功,则是支付失败,状态之间的切换是否正常,未按正常业务顺利进行操作时,状态怎么显示,是否可控,是否出现异常状态,空状态业务怎么处理等
D、 时序分析
一些复杂的活动中,一个活动是由一系列的动作按照指定顺序进行,这些动作形成一个动作流,是有按照这个顺序依次执行,才能等到预期的结果,那么在执行过程中发生的其他分支动作程序会作何处理
比如斑马停车风控业务,如果在入站后车辆直接掉头不驶入高速业务如何处理?
针对输出
在考虑异常时,通常我们都会想到正常情况,无效的情况,但是不一定能覆盖所有错误码,而接口定义返回的错误码可以帮助我们补充这一部分的用例,比如网络异常,无效的规则,无效的参数,无效的业务ID,无效的任务,服务器异常等,把errorcode的值都补充上去可以设计更多的用例
这种根据输出进行设计用例,可以发现前后端是否正常输出结果,提示是否友好,提示是否出现敏感信息等
数据库操作
A、对数据库操作是否频繁,是否会在写库过程中占用大量的CPU,写库完成后进程是否释放
B、业务数据入库是否正常,是否有重复数据入库,是否出现乱码;日志数据入库是否正常
C、数据更新是否正常,尤其是时间类字段,时间是否为24小时制的格式
D、数据删除、备份是否正常
安全性
敏感信息是否加密(如银行账号,密码,转账金额)
性能相关
A、接口在什么情况下会出现并发,并发场景是什么,什么情况下的并发会导致问题
B、最大并发,响应时间,吞吐量,资源消耗情况
接口超时
接口正常情况下是有返回的,那么如果接口不返回呢?所以接口超时后的处理也是测试需要考虑的部分,如果超时处理不当,可能会引起进程阻塞,或者超时后又接收到接口返回导致逻辑错乱
与历史版本的兼容性分析
已废弃的协议或接口,代码并未注释,在某种特定的情况下可能会触发历史版本已废弃的协议或接口,导致用户使用或功能调用后出现意想不到的问题,损失
同一套系统,不同服务之间的接口相互调用时,新接口是否受历史接口的影响,尤其是新旧接口都对某一个功能进行处理,是否存在业务不兼容的问题
这一点需要测试人员是长期的测试一个系统的,那么可能会想到这种场景,会清楚的知道什么时候哪个版本进行了重构,废弃了那些接口,新增了那些接口,哪些场景会触发历史接口的某个规则
接口设计合理
接口字段是否冗余,接口是否返回了调用方期望得到的信息,接口定义是否满足所有调用者的需求,接口调用是否方便,接口是否可扩展,接口参数使用是否方便,接口的业务规则是否都正确,接口都整个服务的使用会产生那些影响
学习路线+测试实用干货精选汇总
测试提升方向
测试入门:测试理论基础→常用测试工具→linux命令→数据库sql基础
自动化测试
- jmeter接口自动化:jmeter工具使用→java基础→beanshell
- python接口自动化:python基础→urllib2/request库等→python接口自动化框架
- UI自动化
a)Web自动化:前端基础(html、css、js)→web元素定位→selnium→ui自动化框架
b)App自动化:app元素定位→appium→==ui自动化框架
性能测试:性能概念→loadrunner工具→jmeter及beanshell(需要java基础)→架构知识→linux分析调优→各种中间件服务器等监控、分析、定位、调优
测试开发
测试框架二次开发:深入学习各种框架→深入学习插件
测试平台开发:
a)python:python→web开发框架(django或者flask)→前端基础(html、css、js)
b)java: java→web开发框架(springboot)→前端基础(html、css、js)小工具开发:python→tkinter/PyQt5
简历、笔试、面试
【热门测试技术,建议收藏备用】项目实战、简历、笔试题、面试题、职业规划
获取学习资料
最后我推荐一个【软件测试交流群:769146372】,大家可以一起探讨交流软件测试,共同学习软件测试技术、更多面试题梳理和讲解,将不定期在群里发布,助你快速进阶Python自动化测试/测试开发,走向高薪之路。
边栏推荐
- Step by step towards responsive programming (III) - common functional interfaces - function < T, R>
- Analyze RTP flow packet loss and disorder
- The meaning of learning (I) the root cause of love problems comes from ignorance
- Obejct.getOwnPropertyNames()与Object.keys()区别
- STL 笔记(三):输入输出流
- Setting up Paths
- 剑指 Offer II 012. 左右两边子数组的和相等
- 搜索引擎排名对商家的影响大吗?广告情报体现竞争优势
- 外表简单内里复杂的功能测试,如何进行?
- Dataset conversion instructions
猜你喜欢
Compose中的“ViewPager“和Banner
STL 笔记(一):知识体系
HLS介绍
性能优化:SPA单页应用首屏加载速度慢怎么解决?
5.搜索二维矩阵
Solve the problem of daily error reporting of cascader
搜索引擎排名对商家的影响大吗?广告情报体现竞争优势
Super long distance networking scheme of fire engine in offshore wind power fire alarm system
50 hot searches in July! Jay Chou's new album 150million a day! The marketing path of singers' new songs becoming popular
Pikachu 漏洞平台练习
随机推荐
论文领读|面向机器翻译的多语言预训练技术哪家强?最新进展一睹为快!
js判断是对象还是数组
Inheritance of ES6 class
抽丝剥茧C语言(高阶)动态内存管理+练习
Basset: apprendre le Code réglementaire du génome accessible avec un réseau neuronal profond et cohérent
Scientific computing library numpy Foundation & Improvement (Understanding + explanation of important functions)
MySQL8通过Data目录恢复数据
JS常见代码题 数组去重-自定义new-节流和防抖-深拷贝-instanceof-url参数提取-千位分隔符-数组转树形结构-数组扁平化-函数柯里化
HPA of kubernetes
What is the reason why the easycvr video Plaza device list cannot be scrolled and loaded?
9.mysql多个sql语句用到同一个具体值的写法
[概念]凯明之作Resnet+心路历程[详细]+解决退化问题+让网络变得更深成为现实
IPv4和IPv6的区别
Super long distance networking scheme of fire engine in offshore wind power fire alarm system
c#的Random()随机函数特殊说明(随机函数的一个惊天特性)
安世半导体管理层拜会闻泰科技和格力电器
TZC 1283: 简单排序 —— 希尔排序
Japanese verbs + verb types + verb flexibility
Pytoch -- model reading and storage
STL 笔记(二):模板、操作符重载