接口业务安全测试

业务安全测试是根据业务需求,针对业务安全规则展开的系统功能测试。业务安全测试作为在系统功能测试的重要组成部分,在接口测试过程中同样适用。

区别于系统漏洞扫描、SQL注入防范等技术安全测试,针对接口展开的业务安全测试更加关注程序逻辑本身对于保障业务规则安全所进行的检查、校验、控制等功能方面的测试,例如银行业务中针对客户信息有效性、账户信息一致性的检查等等。

为什么要做接口业务安全测试

顾名思义,业务安全测试的目的自然是为了防范业务风险,提高接口的业务安全性。之所以针对接口测试再次强调业务安全测试,就不得不提到一个众所周知的“零信任原则”。

所谓零信任原则就是后端系统对于前端提供的请求报文保持不信任。简单讲就是作为后台服务方,时刻保持一种“总有前台想要害朕”的“迫害妄想症”,认为前端送过来的报文都是不靠谱的。

当然并不是说前端的系统真的不靠谱,很多系统前台都针对业务规则展开了细致的检查、控制,这也是我们在进行系统功能测试过程中最常设计的测试场景。

那么我们为什么还要在接口测试中针对业务安全再展开一次测试呢?

那是因为前后端系统调用过程中,特别是对客服务系统前后端交互过程中涉及报文拼装、传输等环节,很可能被别有用心的“坏人”利用,对报文进行篡改,从而产生业务风险。

在一些交易场景中后端系统又很难辨别接收到的报文是否被篡改,因此需要对输入信息进行必要的检查校验,以提高业务安全性——当然可以通过各种技术手段对报文进行防篡改控制,这是技术安全层面的内容,这里不再展开。

在业务安全测试过程中,我们经常提到的就是“越权访问”。

举个例子,一个用户登录系统之后查询自己的账户信息,这是一个正常流程。

如果这个过程中,用户通过篡改报文将自己的账号更换为其他人的账号,从而获得了其他人的账户信息,这就是越权访问中的“水平越权”。即用户利用系统缺陷访问了其他相同权限用户的私有数据。

与之相伴的还有“垂直越权”,即用户通过身份冒充等方法获取了诸如管理员权限等高于自身级别访问能力的越权。

怎么做接口业务安全测试

01、需求分析

既然是业务安全测试,“业务”需求分析是必不可少的。

同系统功能测试一样,针对接口的业务安全测试也要我们根据业务需求提炼业务规则、梳理权限要求、设计测试场景。

但由于接口的抽象性,我们还需要另一个十分重要的资料来帮助我们设计测试案例,那就是接口设计文档。

接口设计文档,一般应包括以下几部分内容:

  • 接口功能简介

对接口基本功能的简单介绍。

  • 输入输出参数说明

这部分内容包括了接口参数的字段类型、长度、取值范围等信息,是我们使用边界值等方法设计案例的重要信息来源。

同时还有一个接口设计原则需要我们重点关注,即“最小必需”原则。

这里的最小必需原则可以从两方面去理解。一方面,就接口的输入来说,就是尽量少的从前端特别是依靠用户录入的方法获取输入信息。

这一点是同前面提到的“零信任”迫害妄想症一脉相承的——录入的东西不靠谱,能通过后端系统从数据库里获取的就不要前台录入。

另一方面,接口的输出在满足需求的情况下尽量减少冗余信息,从而避免不必要的信息暴露。是否满足最小必需原则也是我们在进行接口业务安全测试的时候需要关注的。

  • 接口功能规则描述

这里应该描述了接口的主要功能、业务规则等,是我们设计场景案例的重点参考。

  • 错误信息描述

在进行接口业务安全测试时,为验证各种业务规则和权限控制,反向案例会占据很大比例,因此报错信息的描述是我们应该十分关注并需要在测试过程中同开发持续交流的内容。

毕竟我们怎么知道案例预期结果里我们想要的报错信息就是我们想要的呢~

02、案例设计

总结上面的描述,接口业务安全测试案例的设计可以从以下几方面着手:

验证正向功能是否符合预期。

边界值、等价类等方法对于接口参数的边界值、异常值进行测试,验证接口的容错能力。

根据业务规则设计相应的反向案例,检查接口是否具备对应有效的控制逻辑。

设计越权案例,检查身份校验、权限控制相关检查是否完备。

03、测试工具

针对接口测试,当下有Postman、Jmeter、Selenium等一众报文及自动化测试工具可供选择,可以根据需要和习惯选取。

谁来做接口业务安全测试

接口业务安全测试应该由谁来执行呢?让我们从两个方面来看这个问题:

01、接口消费方 vs 接口服务方

作为调用接口的消费方,应该对接口提出明确的功能需求,就像业务人员向开发人员提出系统功能需求一样。因此消费方在测试过程中更关注接口功能是否满足需要。

作为提供接口的服务方,提供的接口不光要满足服务方的功能需求,还应在输入合法性、业务规则、权限控制、身份认证等方面进行相应校验,提高接口的业务安全性。

因此从系统层面来看,接口业务安全测试应该是由服务方来完成的。

02、测试 vs 开发

在一个项目流程中,提到接口测试,往往联想到模块逻辑层面的调度调试,想到单元测试,是开发者的工作。

然而,我们这里谈到的接口业务安全测试,是站在业务规则的视角针对接口展开的功能测试。接口业务安全测试同单元测试的区别就如同系统功能测试和集成测试的区别一样,测试和开发的关注点是不同的。

因此接口业务安全测试和接口单元测试是不能相互替代的。

另一方面,为提高接口业务安全质量,在接口设计上也需要开发多动些脑筋。比如接口的“最小必需”原则,就应该在接口设计阶段予以考虑,并同测试保持沟通。如果等到交付测试才思考这个问题,往往木已成舟,修改难度较大了。

当前,随着软件系统架构、技术的不断升级优化,对于系统测试环节的要求也越来越高,系统功能测试、系统性能测试、技术安全测试、业务安全测试、接口测试等等划分愈发精细,不断考验着我们测试人员的能力与智慧。

最后: 大家可以去我博客首页看下侧边栏! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

从功能到接口,原来技能可以通用!相关推荐

  1. 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口

    智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口 版本:1.0 2020-07-29 发布 1 规范应用范围 本规范规定了智能驾驶功能软件平台中的感知融合功能服务接口. 本规范适用于设计开 ...

  2. 智能驾驶功能软件平台设计规范第五部分:定位功能服务接口

    1 规范应用范围 本规范规定了智能驾驶功能软件平台的定位功能服务接口. 本规范适用于设计开发 GB/T<汽车驾驶自动化分级>[1]所定义的 2 级及以上的驾驶自动化系统即智能驾驶系统. 2 ...

  3. 还不懂!软件测试(功能、接口、性能、自动化)详解

    一.软件测试功能测试 测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例:测试用例是测试工作的指导,是软件测试的必须遵守的准则. 黑 ...

  4. 软件测试(功能、接口、性能、自动化)详解

    一.软件测试功能测试 测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例:测试用例是测试工作的指导,是软件测试的必须遵守的准则. 黑 ...

  5. 软件测试面试-在工作中功能,接口,性能,自动化的占比是多少?

    我们经常在面试的时候,会问到工作中部分内容占比,可是工作的内容真的可以用占比来衡量吗? 在我看来,如果你把工作中的占比回答出来,反而是最大的败笔. 因为往往记得很清楚的事情,不一定是很复杂的事情,反而 ...

  6. 阿里高级测开:软件测试(功能、接口、性能、自动化)详解

    全文2000字,预计阅读时间10分钟,建议先点赞收藏慢慢看 一.软件测试功能测试 测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例 ...

  7. 计算机接口电路的种类,接口电路的分类_接口电路的功能_接口电路的作用是什么...

    描述 接口电路:计算机之间,计算机与外围设备之间,计算机内部部件之间起连接作用的逻辑电路.接口电路是CPU与外部设备进行信息交互的桥梁. 输入.输出接口电路也称为 I/O 电路(INPUT/Outpu ...

  8. 什么是软件测试(功能、接口、性能、自动化)详解

    一.软件测试功能测试 测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例:测试用例是测试工作的指导,是软件测试的必须遵守的准则. 黑 ...

  9. 笔记本电脑(laptop)通常具备使用USB设备的功能.实现接口回调(使用面向对象思想编程:接口,多态等).

    题目要求 /** *在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商*并不关心,            * 只要符合USB规格的设备都可以.         ...

最新文章

  1. vue组件库(二):基于verdaccio工具npm私服搭建
  2. java不看答案不会_Java新手必备:20道java基础面试题,不看答案你会几道题?
  3. 【opencv4】opencv教程 C++ 4、Mat对象(深拷贝:clone()、copyTo(),create()创建图片,zeros()、eye()初始化空白图像,Scalar()创建向量)
  4. linux nat软件,linux下nat的应用(转)
  5. 【汇编语言(第3版)王爽】试验7 寻址方式在接过话数据访问中的应用(代码+注释)
  6. FFMPEG源码分析(二)
  7. 父与子一起学python3,父与子的编程之旅 与小卡特一起学Python 第3版(全彩印刷)...
  8. 你真的了解Java中的三目运算符吗
  9. C/C++数组名与指针区别
  10. css样式的百分比都相对于谁?
  11. 算法笔记_什么是数据结构_向量vector
  12. 手机浏览器服务器修复,手机IE浏览器怎么修复
  13. Vercel部署个人博客
  14. FastText在商品分类下的应用(第十届服创大赛全国三等奖)
  15. 网站的友情链接是什么?
  16. (五)AR Foundation实现图片检测(下)
  17. 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
  18. 基金入门-基金的分类
  19. IPSec虚拟专用网原理及基础配置实例
  20. 【桂林信息科技学院第一届程序设计大赛】完整题解 C++

热门文章

  1. MFC截图工具(不断更新)
  2. 计算机毕业设计中java多线程与异常处理
  3. 数据结构与算法之-----二叉树(一)
  4. 默认是字典排序法_每日一课 | Python 进阶编程之字典的高级用法
  5. predicate 列存储索引扫描_MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
  6. PAT A1096 质因子分解
  7. githubRank: Github 项目和用户排行榜
  8. 2018-06-13 第三十八天
  9. RAC11g使用数据泵导入导出报ORA-6512,ORA-25306,ORA-39079错
  10. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装 1