一、接口测试基础理论
接口测试:接口测试是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。– 百度百科
接口原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做判断并将最终结果返回至客户端,客户端再次接收返回结果并应答的过程。
检查重点:测试的重点是检查接口参数传递、接口功能实现、输出结果的正确性,以及对各类异常情况容错处理的完整性与合理性。
接口类型:内部接口及外部接口,内部接口为程序开发的接口,方法之间或模块之间的调用,外部接口为外部接入调用接口,例如王者荣耀的微信登录、支付宝的支付功能等,均是外部接口。
接口分类:webservice接口及http api接口,webService接口使用soap协议传输,通过http进行传输,是HTTP POST专用版本之一,遵循一种特殊的xml消息格式(请求及返回均为xml),http api接口使用http协议,通过路径来区分调用的方法,通过key-value请求,返回报文通常为json。
接口本质:接口的本质上是一个公开的函数类,进行数据传输的发送与接收,可以理解成一条通道,在发送get或post请求方式时,实际上就是从通道进行发送、在由服务器从通道返回数据。
测试范围:接口功能、接口性能、接口稳定性以及接口安全性等。
二、为什么要进行接口测试
1、稳固代码底层:在初期阶段的开发时,业务层面无法检测到底层内容,代码底层不稳固牢靠,故此需要对底层内容进行接口测试,否则底层代码错误可能会引发更多外部系统或调用模块的错误。
2、低成本高效益:初期开发且资源未设计完成时,提前介入测试工作提前暴露问题,符合质量前移理念,能够明显有效的控制测试成本,且接口可进行自动化持续集成,故此会有更高的长期收益体现。
3、测试范围更广:接口测试大部分是从用户的角度而言对系统接口进行全方面的检查测试,无论是软件项目还是游戏项目,接口测试均会覆盖到部分业务逻辑,故此在进行接口测试时也同样能够辅助业务测试。
4、提高接口安全:上述提到了接口安全的测试范围,在接口安全方面考虑,客户端进行的限制条件容易避开绕过,同样需要测试服务端的限制,涉及到部分隐私数据时还需要验证接口的加密传输,例如用户密码、身份证、银行卡信息等。
5、保障系统稳固:进行接口测试能够保障系统间的数据传输以及容错,从而提高系统层面的稳定性。
总结:
接口测试的优点:提高整体测试效率,降低研发测试的成本,综合性提升产品质量、降低后续维护资源。
三、如何开展接口测试
3.1、接口开展方式
业务层面:
常用接口测试工具:Postman、Jmeter、SoupUI等。
接口测试工具原理:通过接口测试工具模拟请求与数据接收,实现数据传输。
代码层面:
接口自动化测试:通过代码实现,发送请求通过代码断言判断接口正确性。
ps:会在后续自动化的文章教学接口自动化框架搭建、持续集成等内容。
3.2、接口测试流程
在真实的项目工作中,接口测试的流程大致分为以下几个步骤(公司不同,流程会存在部分差异):
1、公司有接口测试需求或测试人员收到接口测试任务时开始正式介入接口测试的流程阶段。
2、由开发人员提供接口文档,测试人员拿到接口文档后先行熟悉需求文档,了解各个接口的功能以及相关信息。(包括但不限于服务器地址端口、请求方式、请求参数、约束条件、返回状态码等)
3、当测试人员熟悉需求文档完成后,开始介入测试用例的编写,与业务测试相同,需要考虑到正常、异常的请求参数、还需要考虑到对应的响应报文数据的正确性。
4、最后可以通过接口测试工具进行用例执行,可以选用Postman、Jmeter等,举例:Jmeter可以先建立线程组、添加http请求,写好相关的请求地址、端口、请求参数,并设置好参数化,添加断言,最后添加结果树再运行,Postman与Jmeter原理是一样的,只是操作方式不同,这里不过多阐述,有兴趣的朋友可以网上查找下相关的工具使用说明与资料。
5、当运行完成后,检查接口是否通过,如果接口测试不通过,第一步先检查请求方式、参数等信息是否有错误,如果无错误的情况下,检查下网络环境,如果都没有问题,可能是接口本身存在问题,先以自己的认知进行判断是前端还是后端问题,判断完成后提单给开发并附上相关日志信息直至全部确认完成。值得一提的是,在业务的接口测试过程中更多的会关注失败的接口,在接口自动化的过程中也同样需要关注测试通过的接口,以用于质量提升、报告输出等方面。
3.3、接口测试需求
一份接口需求文档,核心要素主要包括以下内容:
文档封面:封面为xx公司接口需求文档,有公司名称及公司logo并注明为保密文件、需求文档的版本号、文档创建日期等。
修订记录:通常为表格形式,其中至少包括修订的版本及日期、修订说明、修订人、审核时间以及审核人等。
接口说明:接口访问地址格式、接口地址举例、返回结果说明等。(状态码及相关注释)
接口信息:模块名称、子模块、业务描述、接口名称、请求方法、请求格式、响应格式、请求参数、结果说明、返回示例等。
简单介绍接口信息中对应信息所产出的内容:
模块名称:登录、支付等
子模块名:微信登录、QQ登录、手机号登录
业务描述:简洁概括接口的功能
接口名称:
/login/wechat,/payment/personal
请求方法:GET / POST 等
请求格式:application/x-www-form-urlencoded
响应格式:application/json
请求参数:手机号、登录密码(包括变量名、类型、说明注释、是否必填)
结果说明:参数内容、变量名、类型(例如string),返回状态码等
返回示例:返回成功的举例,下方4.4接口演示中有图片体现
ps:并非所有的接口文档都很规范,绝大多数的需求文档中不会有如此详细的信息说明,具体情况大家依据公司接口文档为准即可。
3.4、接口演示(王者荣耀、企业微信接口演示)
笔者在这里进行一些接口的演示,帮助大家了解接口、熟悉接口需求和说明~
王者荣耀接口展示如下:
英雄列表:
接口地址:
https://pvp.qq.com/web201605/js/herolist.json
请求方式:GET
输入参数:无
输出参数:
返回结果(部分展示):
企业微信接口展示如下:
文件上传接口:
素材上传得到media_id,该media_id仅三天内有效
media_id只能是对应上传文件的机器人可以使用
请求方式:POST(HTTPS)
接口地址:
https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=KEY&type=TYPE
使用multipart/form-data
POST上传文件, 文件标识名为“media”
参数说明:
POST的请求包中,form-data中媒体文件标识,应包含有 filename、filelength、content-type等信息
filename标识文件展示的名称。比如,使用该media_id发消息时,展示的文件名由该字段控制
请求示例:
POST
https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa&type=file HTTP/1.1
Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
Content-Length: 220
---------------------------acebdf13572468
Content-Disposition: form-data; name=“media”;filename=“wework.txt”; filelength=6
Content-Type: application/octet-stream
mytext
---------------------------acebdf13572468–
返回数据(未传参):
{
“errcode”: 44001,
“errmsg”: “empty media data, hint: [1638347756075722279950035], from ip: 183.14.133.153, more info at https://open.work.weixin.qq.com/devtool/query?e=44001”
}
3.5、接口测试用例设计
用例设计格式:
用例序号:项目名称_模块名称_序号
接口模块:对应的接口模块,例如英雄列表、召唤师技能,企业微信的登录模块、语音模块等
请求方式:通常请求方式为GET、POST
接口地址:通常有固定的地址格式便于接口自动化测试(图中的是全地址)
接口参数输入:部分接口不需要接口参数的输入,部分存在接口输入,如果有,填写即可
用例设计重点及关注点:
(1)发送给服务器的请求数据是否正确;
(2)服务器返回给客户端的数据是否与需求一致,符合预期;
(3)查看数据库中接口是否实现对应功能;
(4)接口的响应时间是否符合需求文档要求
接口用例设计考虑的范围:
1、业务功能:功能是否实现
2、业务规则:定义的描述是否符合预期
3、请求参数:参数的长短、大小、格式等
4、异常场景:传参异常、操作异常、服务异常等
5、数据传输:数据传输结果的正确性
6、接口性能:接口性能的正确,例如并发等
7、接口安全:如支付类、充值接口的数据篡改等
ps:在以上范围内还需要考虑接口的用例覆盖率及代码覆盖率,至少符合预期
3.6、后端接口测试内容
所谓的接口测试,后端接口都测试什么内容?下面的图片会给你一定的帮助(图片来源于网络):
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的软件测试八股文,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。