接口测试必知必会知识点
一、概念(百度百科)
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
二、接口测试原理
模拟客户端向服务器发送报文请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。
三、接口测试流程
接口测试的流程其实和功能测试流程没有什么区别,流程:
需求评审-需求确定-接口设计&接口定义(开发)-根据需求文档和接口定义设计接口测试用例(测试)-用例评审-接口开发-接口自测(开发)-接口提测-执行接口测试
四、接口测试数据准备
接口测试的数据准备,目前有如下两个方面:
1 直接操作数据库,写sql语句进行各种数据的构造,这样比较灵活,想使用什么数据就构造什么数据;这种方法在实际中会遇到问题,比如说对一个接口的数据准备,可能涉及到4-5个表操作,而且每个表之间都有一定的关系,这样插入数据就比较复杂;再比如说数据的存库格式变化了,可能也会导致之前的用例运行失败;
2 直接通过调用其它API的方式准备数据,这种情况在测试最上层服务的时候比较有用;比如说我要测试删除问卷接口,首先调用新建问卷接口进行数据准备,再执行删除问卷接口进行这个接口的测试;当然,这种数据准备方法也会存在一定问题,它依赖数据准备接口的正确性,如果接口用例运行失败,要去定位是哪个接口的问题,而且接口用例中各个API的耦合度比较高;
在工作中,我们可以根据实际情况,去选择数据准备的方法,比如对于数据库操作很方便的情况,我们就直接操作数据库;对于逻辑比较复杂,数据库操作需要多张表的情况,可以考虑用调用其它API的方式准备数据。
五、接口测试数据清理
接着上面所说的数据准备,肯定要有测试完成之后的数据清理,同样也有两种方法:
1 直接操作数据库,执行delete操作
2 调用删除接口进行数据清理
数据清理是非常重要的,能够防止测试库垃圾数据的产生,减少对其它测试用例的数据影响。
六、接口测试用例设计
接口测试用例的设计方法其实和功能测试用例的设计方法类似,因为接口是需要满足需求的,而接口测试所依赖的也是需求文档,但是,因为接口测试毕竟是通过代码去测试代码,所以为了保证覆盖率,可能会使用到单元测试方法,具体的测试用例设计,参考如下:
1 覆盖面
- 常规正向用例,注意:有些接口调用有多种返回情况,都属于正向用例,应该都覆盖到。也就是说对参数各种取值情况进行测试,确保接口对任意类型对输入都做了相应的处理。
- 依赖数据驱动返回结果的用例,要覆盖全面,例如:应该覆盖到不同权限、不同地域、不同客户端等返回的不同数据的情况
- 反向用例要覆盖:传参边界值,传参错误,参数缺失等情况要考虑进来
- 有些接口header参数也需要关注,有些产品在header里面区分客户端,例如:接口header信息中“os=iphone”和“os=android”有不同返回值,则需要分别设计两个用例覆盖
- 建议:测试环境全面覆盖,线上环境覆盖正向用例与特殊数据校验用例为主。
2 校验点
- 业务返回值里面的Code必须校验
- 字段一定有返回值,且返回值是固定值,做等值校验
- 字段一定有返回值,返回值不是固定值,但有规律可循,做数值范围校验,结果包含校验,正则校验等
- 字段一定有返回值,返回值不是固定值,且无规律可循,做非空校验(not null)
- 字段不一定有返回值,则不做校验
- httpcode建议作为基本校验点
3 功能测试
接口是否满足了所提供的功能,相当于是正常情况的测试。如果一个接口的功能复杂,建议对接口用例进行结构划分,这样用例具有更好对可读性和维护性。比如说对于同样一个下单接口,大盘彩和竞彩返回的数据结构就不同,为了保证用例的健壮性,就应该对用例进行结构划分,针对不同情况进行不同的处理方式。
4 逻辑测试
逻辑测试严格讲应为单元测试,应该保证内部逻辑的正确性。根据开发提供的接口文档写接口测试用例,可能还是会有遗漏的测试点,这就需要我们去看开发的代码,去看程序里面是怎么写的逻辑,代码里是怎么对参数进行的校验,涉及了哪些种情况,是否有接口文档里没写的情况,用这种方法去完善接口测试用例,以求达到用例的全面覆盖。
5 异常情况测试
测试接口实现是否对异常情况都进行了处理,接口的输入参数虽然合法,但是在接口运行中,也会出现异常,因为异常并不一定是输入参数造成的,也可能是其它逻辑造成的,所以需要对任何异常都进行处理。
异常情况
- 网络异常情况(断网,弱网),接口返回;
- 数据库连不上时,接口返回情况;
- 对访问频繁的接口要进行压力测试;(比如首页的一些接口,下单接口,查询频繁的接口)
- 用不同的移动设备访问接口;(例如:用户登录接口多台机器同时登录一个账号出现问题,主键冲突)
- 对于同一个接口,是否分客户端新老版本进行了不同的处理;
七、接口测试用例示例
接口名称 |
添加地址接口 |
|||
接口地址 |
http://api.g.caipiao.163.com/address/address_add.html?accountId=&sessionId=&name=&mobile=&address=&cityId=&areaId=&provinceId= |
|||
接口负责人 |
krismile |
|||
用例编号 |
用例标题 |
操作步骤 |
输入 数据 |
预期结果 |
1 |
未登录 |
执行接口 |
未登录 |
接口返回正确 |
2 |
添加成功 |
执行接口 |
各个参数正确 |
接口返回正确result=100 resultDesc:成功 |
3 |
参数为空 |
执行接口 |
参数全为空 |
接口返回正确result=-101 resultDesc:请求参数输入不完整,请重新输入 |
4 |
登陆过期 |
执行接口 |
参数正确 |
不能添加成功 |
5 |
Name长度为最大值 |
执行接口 |
Name=25个字符 |
可以添加成功 |
6 |
Name长度超限 |
执行接口 |
Name大于25个字符 |
不能添加成功 result=-1 resultDesc: 收货人姓名太长 |
7 |
Name异常字符 |
执行接口 |
Name=!@#$%^ |
可以添加成功 |
8 |
Mobile长度为最大值 |
执行接口 |
Mobile=20个数字 |
可以添加成功 |
9 |
Mobile长度超限 |
执行接口 |
Mobile大于10个数字 |
不能添加成功 result=-1 resultDesc: 手机号码格式不正确 |
10 |
Mobile非数字 |
执行接口 |
Mobile=abcd&*()!@# |
不能添加成功 |
11 |
添加地址数量超限 |
执行接口 |
result=-1 resultDesc: 地址数量已超过允许的最大值 |
|
12 |
accountId和sessionId不匹配 |
执行接口 |
不能添加成功 "-103","验证失败,userName和sessionId不匹配!" |
八、接口测试踩过的坑
1. 在根据接口文档测试接口的时候,接口测试通过;当系统页面提交测试之后,发现页面上没有调用这个接口,原来是前端没有加这个接口;或者接口测试请求调用正常,返回200 ok,但是页面上数据并没有更新。由此可见接口测试和页面功能测试不能独立开来,要结合在一起测试,要知道被测接口是对应着页面上的哪个功能模块,这样才能达到测试的闭环;
2. 有的时候页面功能正确了,但并不能说明代码是没有问题的,可能对于一些数据的处理不正确,因为没有影响功能,所以在功能测试时,不容易发现,也发现不了;
比如在页面上执行了删除操作,在页面上看记录是没有了,但是我们在测试删除接口的时候,发现有一个关联表的记录没有被删除,这个虽然不影响功能,但是会产生垃圾数据,如果系统的运行时间越来越长,垃圾数据越来越多,对数据库的稳定性和系统的健壮性都会有隐藏的风险;由此可见接口测试的重要性
九、接口测试工具有哪些
1 fiddler Wireshark抓包工具
用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。
抓包查看接口传入参数和返回参数是否正确。
2 Postman Jmeter
Postaman不仅可以调试简单的css html 脚本等简单的网页基本信息,还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。
Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。
3 HttpRequester
firefox上的一个插件工具,可以模拟多种请求,界面简单清晰,容易上手。
4 外面一些开源框架
Yapi等。
接口测试必知必会知识点相关推荐
- 【软考系统架构设计师】第八章 Web架构(知识点必知必会)
[软考系统架构设计师]第八章 Web架构(知识点必知必会) 第八章 Web架构(知识点必知必会) [软考系统架构设计师]第八章 Web架构(知识点必知必会) 一. 负载均衡与集群技术 1)什么是负载均 ...
- MySQL“必知必会”的知识点
MySQL"必知必会"的知识点 From 2017-02-16 陈小兵 51CTO博客 MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在 ...
- 【软考系统架构设计师】知识点必知必会系列汇总
[软考系统架构设计师]知识点必知必会系列汇总 章节号 章节名 链接 第一章 安全性和保密性设计 https://blog.csdn.net/Last_Impression/article/detail ...
- mysql必知必会_《MySQL必知必会》学习小结
关于SQL,之前通过sqlzoo的题目,完成了入门,也仅仅是入门而已. 最近都在忙着投简历和找新的数据分析项目做(为了练python和面试的时候有的聊),所以SQL放了一段时间没练.目前的工作用不到, ...
- 脑残式网络编程入门(三):HTTP协议必知必会的一些知识
为什么80%的码农都做不了架构师?>>> 本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...
- java的标量和聚合量_第5节:Java基础 - 必知必会(下)
第5节:Java基础 - 必知必会(下) 本小节是Java基础篇章的第三小节,主要讲述Java中的Exception与Error,JIT编译器以及值传递与引用传递的知识点. 一.Java中的Excep ...
- 《MySQL必知必会》所有SQL语句图表集合(可作为查询表使用)---已完结
本篇文章是对<MySQL必知必会>所有语句知识点的图表集合,适合快速查询遗忘的SQL语句. 本文的脉络结构,首先先给出<MySQL必知必会>的目录和本书中用到的数据表的UML图 ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必知必会_5天学完《MySQL必知必会》学习笔记之第四天
本篇知识点 更新删除数据.创建操纵表.视图.存储过程 更新和删除数据 使用UPDATE语句更新(修改)表中的数据: 更新表中特定行(使用WHERE语句 更新表中所有行 UPDATE语句以要更新的表名开 ...
- 风控人必知必会的征信知识
二代征信相比一代征信,报告内容更为翔实,我们梳理了下,主要在以下方面有所不同: 一:逾期情况包括信用卡逾期.贷款逾期等所有的逾期记录都会保留5年,逾期.呆账,过期销户的内容也会保留: 二:个人信息的完 ...
最新文章
- 嵌入式开发入门(2)
- 一个Java Web后台任务执行工具的设计与实现
- 苹果6sp内存可以扩展吗_苹果手机iPhone 12 mini能用6年吗?网友:可以
- AT5661-[AGC040C]Neither AB nor BA【模型转换】
- C++ primer第六章6.7函数指针
- java filter教程_Java Web Filter 过滤器学习教程(推荐)
- 微软公布Netgear 固件严重漏洞详情,可盗取用户身份并攻陷系统
- VS单步调试的无法进入断点、行号错乱等问题解决方法
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_13 课程知识梳理
- Hadoop开发环境准备及错误问题解决方法
- Java函数参数传递方式
- Python Scrapy中文教程,Scrapy框架快速入门
- 【vtk实例】平面切割
- mcrpg职业系统服务器,我的世界MC-梦想大陆RPG服务器1.7.10
- msf(美少妇)练习
- 衡量现金分红收益率的指标——股息率
- windows打开rpm文件
- html+css3跑马灯(抖音我们的照片记录幸福到永远)
- 行测测评(二)——图形找规律技巧
- 移动新魔百盒M411A_905L3_5621_语音免拆_卡刷固件包
热门文章
- 【Windows】常用盗版软件的替代免费软件列表
- 如何解压war后缀的文件:
- 牛客-js练习|错题本+知识点总结-break、try...catch...finally(01)
- mysql emoji表情 保存utf8mb4 错误原因总结
- Linux性能监控命令_nmon 安装与使用
- 网络营销试卷(参考答案及评分标准)
- 011 数据恢复(原理)
- 手机相册中的照片如何导入备忘录?
- 如何才能达到超光速?
- 高级数据结构——海量数据(位图,布隆过滤器)