接口测试策略(一、概念&流程&范围)
接口测试概要
接口测试概念
什么是接口测试?
维基百科对接口测试的定义如下:
API testing is a type of software testing that involves testing application programming interfaces (APIs) directly and as part of integration testing to determine if they meet expectations for functionality, reliability, performance, and security.[1] Since APIs lack a GUI, API testing is performed at the message layer.[2] API testing is now considered critical for automating testing because APIs now serve as the primary interface to application logic and because GUI tests are difficult to maintain with the short release cycles and frequent changes commonly used with Agile software development and DevOps).
翻译过来就是:
接口测试是软件测试类型中的一种,通过直接检测被测应用的接口(API)来确定接口是否在功能、可靠性、性能和安全方面达到预期的软件测试活动。[1] 由于 API 都没有 GUI 界面,API 测试都是在通讯层进行的。[2] 现在 API 测试在自动化测试中有着很重要的地位,因为 API 一般是应用逻辑的主要接口,同时 GUI 测试在敏捷开发和 DevOps 的快速迭代和频繁变更中很难维护。
接口测试好处
1.可以发现很多在页面上操作发现不了的bug
2.检查系统的异常处理能力
3.检查系统的安全性、稳定性
4.提高回归测试效率,保证质量,缩短测试周期
5.发现更底层的问题,更早的发现问题
6.通过适当的验证来获得控制反馈,对系统变更有把握
接口测试流程
接口上的测试左移
向左扩展,就是让测试介入开发提测之前的部分测试工作。比如,扩展到开发阶段,在架构设计时就考虑产品的可测试性,并管理开发自测等。另外,测试可以更进一步扩展到需求评审阶段,让测试人员不只是了解需求,更要评估需求的质量。
接口上的测试右移
测试右移,是让测试介入服务或应用上线之后的部分。比如,测试人员在产品上线过程中,利用线上的真实环境测试,或者开展线上巡检。另外产品上线之后,测试人员依然关注,通过线上监控和预警,及时发现问题并跟进,将影响范围降到最低。这样一来,测试人员不但有更多的时间进行测试,还能发现在生产环境中难以发现的问题。
正常研发流程下的接口测试:
接口功能测试
概念
功能测试:对产品的各功能进行验证,根据功能测试用例逐项测试,检查产品是否达到用户要求的功能。
接口测试:指针对模块或系统间接口进行的测试。测试的重点是要检查数的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口功能用例设计
接口测试用例设计的重点,在于功能性的业务逻辑检查和参数检查。 接口的测试遵从 输入---接口逻辑---输出的方式,所以接口测试用例分为两种类型:业务功能、单接口的数据校验 ,一般来说,业务功能涉及到多接口协同调用组合成多个场景,可以用场景法去编写用例,单接口的数据校验可以用等价类+边界值的方法去设计用例。
接口异常测试
1.幂等测试
2.并发测试
3.事务测试
4.分布式测试
5.环境异常测试
6.大数据测试
幂等测试
概念:一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下,GET,HEAD,PUT和DELETE 等方法都是幂等的,而 POST 方法不是。所有的 safe 方法也都是幂等的。 幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用DELETE 方法有可能返回 200,但是后续的请求可能会返回404。DELETE 的言外之意是,开发者不应该使用DELETE方法实现具有删除最后条目功能的 RESTful API。 需要注意的是,服务器不一定会确保请求方法的幂等性,有些应用可能会错误地打破幂等性约束。
幂等就是一个操作或者接口,不管你调多少次,每次执行的结果都跟第一次一样。
试想这样的一种场景:在电商平台上支付后,因为网络原因导致系统提示你支付失败,于是你又重新付款了一次,等完成后检查网银发现被系统扣了两次款,这是一种什么样的体验?
造成上述问题的原因可能有很多,比如第一次付款时实际支付成功,但是信息返回时网络中断导致系统误判;又比如第一次付款的确失败了,但第二次付款时发生意外,导致支付请求被重复发送等等。在一次支付的过程中,每个环节都有可能会发生问题。
接口安全测试
1.失效的对象级别授权
失效的对象级别授权是指:用户与服务器使用API进行通信时,服务器端未进行对象级别的权限控制或限制不严格。攻击者可以通过修改请求数据中的对象ID等信息,实现未授权获取或修改敏感信息。
案例:在使用某个功能时通过用户提交的对象ID如订单号、记录号)来访问或操作对应的数据,且未进行严格的权限限制。
2.失效的用户身份验证
失效的用户身份验证是指:API在访问时未对请求方进行身份验证或身份验证存在问题导致易被破解,那么攻击者可以实现未授权对API进行操作。
3.过度敏感数据暴露
4.资源缺乏和速率限制
5.批量分配
后端应用对象可能包含许多属性,其中一些属性可以由客户端直接更新(如,ser.firstname或user.address,而某些属性则不应该更新(如,user.isvip标志)
PS:我记得以前见过一个关于登录接口的Bug,输入正确的账号密码后,接口返回有个登陆成功标记字段:1,结果输入错误的账号密码,再把接口返回加以拦截,修改返回报文,把登录失败标记字段改成表示成功的1,结果居然绕过账号密码登录成功了!
6.失效的功能级授权
7.注入
8.安全配置
9.资产管理不当
不当的资产管理缺陷是现代的产物,以业务速度前进的组织有时每天都能旋转出成百上千的服务和微服务。这通常是快速完成的,而且没有创建任何的附带文档,也没有解释相关的API是用来做什么的,需要多长时间或其重要性。这可能会快速产生API蔓延,随着时间的推移可能会变得无法控制,特别是如果没有全面的政策来定义API可以存在多久。这种环境下,很有可能一些API会丢失、被遗忘或者未销毁。
10.日志和监控缺失
参考资料:《接口测试白皮书》
接口测试策略(一、概念&流程&范围)的更多相关文章
- php微信支付接口开发程序(流程已通)
php微信支付接口开发程序(流程已通) 来源:未知 时间:2014-12-11 17:11 阅读数:11843 作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...
- All_从PO - INV - AP - SLA - GL重要数据表和接口程式(概念)
2014-07-09 Created By BaoXinjian
- java 接口实现的概念整理
1.在java语言中接口由类实现,以便使用接口中的方法,重写接口中的方法,实现接口的类必须重写接口中的所有类,由于接口中的方法一定是 public abstract方法,所以类重写接口中的方法不仅要去 ...
- 1. Action 实现 ModelDriven 接口后的运行流程
1). 先会执行 ModelDrivenInterceptor 的 intercept 方法. public String intercept(ActionInvocation invocation) ...
- asp.net开源流程引擎API开发调用接口大全-工作流引擎设计
关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 一.程序调用开发接口二. 接口说明 所谓的驰骋工作流引擎的接口,在B ...
- 听H3絮叨:何以让天下没有难用的流程
最近朋友圈.网站新闻铺天盖地是"让天下没有难用的流程",有人就要问了,H3 BPM何德何能,为BPM站台,让天下没有难用的流程? 这是一个关于"办公室空想"的故 ...
- 熊乐:H3 BPM为加速企业流程管理提供源动力
近日,在北京·金隅喜来登酒店,H3 BPM以"让天下没有难用的流程"为主题,正式发布H3 BPM10.0版本.全新的业务流程管理系统在易用性方面大大提升,并且全面支持Java与.N ...
- (二)WebRTC手记之框架与接口
转自:http://www.cnblogs.com/fangkm/p/4370492.html 转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html ...
- WebRTC手记之框架与接口
转载请注明出处:http://www.cnblogs.com/fangkm/p/4370492.html 上一篇文章简单地介绍了下WebRTC的协议流程,这一篇就开始介绍框架与接口. 一提到框架,本能 ...
- Android核心分析 之二方法论探讨之概念空间篇
方法论探讨之概念空间篇 我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用.各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方 ...
随机推荐
- YASKAWA安川DX100控制柜维修看这几步
维修YASKAWA安川DX100控制柜需要综合运用多种诊断技巧,并遵循严格的安全操作规程.通过预防性维护和及时的故障处理,可以显著提高DX100控制柜的可靠性和使用寿命,从而保障企业生产线的稳定运行. ...
- warning C291: not every exit path returns a value 在switch分支中使用return
switch(data) { case 1: ...
- DataX - [02] 安装部署
操作系统:Alibaba Cloud Linux release 3 (Soaring Falcon) Java:1.8.0_372 Python:3.6.8 => 2.7.1 一.安装部署 ( ...
- ABC393C题解
大概评级:橙. 送分题. 题意就是让你统计有多少条边是重边或自环. 设 \(u_i\) 表示第 \(i\) 条边的左端点,\(v_i\) 表示第 \(i\) 条边的右端点. 那么如果 \(u_i = ...
- 读论文-基于Python的协同过滤算法的研究与应用实现
前言 今天读的论文为一篇名为<基于Python的协同过滤算法的研究与应用实现>的论文,文章是在2019年9月发表于<电脑知识与技术>的一篇期刊论文. 摘要 随着科学技术的快速发 ...
- 【记录】C-文件输入输出
写在开头 摸鱼摸得昏天黑地,是该炸一炸鱼的本愿了~ 以前总觉得笔记没什么重要的,但有时事到临头,又十分渴求简明的提纲来唤起记忆/提供重学的门路.于是就有了以下的产物,也希望能抑制一下无效摸鱼的堕落 ...
- hexo 图片添加水印(png, jpeg, jpg, gif)
文章同步发布:https://blog.jijian.link/2020-04-21/hexo-watermark/ 本文折腾 hexo 图片添加水印功能,大部分代码沿用: nodejs 图片添加水印 ...
- 程序员必看 Linux 常用命令(重要)
文件操作命令 find find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找 命令格式:find path -option [-print] [ -exec/-ok co ...
- Mac下打开进入/usr/local等隐藏目录
教程 Mac下/usr/local目录默认是对于Finder是隐藏,如果需要到/usr/local下去,打开Finder,然后使用command+shift+G,在弹出的目录中填写/usr/local ...
- composer 指定php版本
需要指定php和composer的位置,然后再去执行composer命令 ## 指定PHP版本 指定composer 指定载入包 /usr/local/php7/bin/php composer /u ...