• 0
  • 0
分享

前言

本文章使用王者荣耀游戏接口、企业微信接口的展示结合理论知识,讲解什么是接口测试、接口测试理论、疑问收录与扩展相关知识点的知识学院,快来一起看看吧~

1 接口测试基础理论

接口测试:接口测试是测试系统组件间接口的一种测试,主要用于测试系统与外部其他系统之间的接口,以及系统内部各个子模块之间的接口。

接口原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做判断并将最终结果返回至客户端,客户端再次接收返回结果并应答的过程。

检查重点:测试的重点是检查接口参数传递、接口功能实现、输出结果的正确性,以及对各类异常情况容错处理的完整性与合理性。

接口类型:内部接口及外部接口,内部接口为程序开发的接口,方法之间或模块之间的调用,外部接口为外部接入调用接口,例如王者荣耀的微信登录、支付宝的支付功能等,均是外部接口。

接口分类:webservice接口及http api接口,webService接口使用soap协议传输,通过http进行传输,是HTTP POST专用版本之一,遵循一种特殊的xml消息格式(请求及返回均为xml),http api接口使用http协议,通过路径来区分调用的方法,通过key-value请求,返回报文通常为json。

接口本质:接口的本质上是一个公开的函数类,进行数据传输的发送与接收,可以理解成一条通道,在发送get或post请求方式时,实际上就是从通道进行发送、在由服务器从通道返回数据。

测试范围:接口功能、接口性能、接口稳定性以及接口安全性等。

2 为什么要进行接口测试

1、稳固代码底层:在初期阶段的开发时,业务层面无法检测到底层内容,代码底层不稳固牢靠,故此需要对底层内容进行接口测试,否则底层代码错误可能会引发更多外部系统或调用模块的错误。

2、低成本高效益:初期开发且资源未设计完成时,提前介入测试工作提前暴露问题,符合质量前移理念,能够明显有效的控制测试成本,且接口可进行自动化持续集成,故此会有更高的长期收益体现。

3、测试范围更广:接口测试大部分是从用户的角度而言对系统接口进行全方面的检查测试,无论是软件项目还是游戏项目,接口测试均会覆盖到部分业务逻辑,故此在进行接口测试时也同样能够辅助业务测试。

4、提高接口安全:上述提到了接口安全的测试范围,在接口安全方面考虑,客户端进行的限制条件容易避开绕过,同样需要测试服务端的限制,涉及到部分隐私数据时还需要验证接口的加密传输,例如用户密码、身份证、银行卡信息等。

5、保障系统稳固:进行接口测试能够保障系统间的数据传输以及容错,从而提高系统层面的稳定性。

总结:

接口测试的优点:提高整体测试效率,降低研发测试的成本,综合性提升产品质量、降低后续维护资源。

3 如何开展接口测试

3.1、接口开展方式

业务层面:

常用接口测试工具:Postman、Jmeter、SoupUI等。

接口测试工具原理:通过接口测试工具模拟请求与数据接收,实现数据传输。

代码层面:

接口自动化测试:通过代码实现,发送请求通过代码断言判断接口正确性。

ps:会在后续自动化的文章教学接口自动化框架搭建、持续集成等内容。

3.2、接口测试流程

在真实的项目工作中,接口测试的流程大致分为以下几个步骤(公司不同,流程会存在部分差异):

1、公司有接口测试需求或测试人员收到接口测试任务时开始正式介入接口测试的流程阶段。

2、由开发人员提供接口文档,测试人员拿到接口文档后先行熟悉需求文档,了解各个接口的功能以及相关信息。(包括但不限于服务器地址端口、请求方式、请求参数、约束条件、返回状态码等)

3、当测试人员熟悉需求文档完成后,开始介入测试用例的编写,与业务测试相同,需要考虑到正常、异常的请求参数、还需要考虑到对应的响应报文数据的正确性。

4、最后可以通过接口测试工具进行用例执行,可以选用Postman、Jmeter等,举例:Jmeter可以先建立线程组、添加http请求,写好相关的请求地址、端口、请求参数,并设置好参数化,添加断言,最后添加结果树再运行,Postman与Jmeter原理是一样的,只是操作方式不同,这里不过多阐述,有兴趣的朋友可以网上查找下相关的工具使用说明与资料。

5、当运行完成后,检查接口是否通过,如果接口测试不通过,第一步先检查请求方式、参数等信息是否有错误,如果无错误的情况下,检查下网络环境,如果都没有问题,可能是接口本身存在问题,先以自己的认知进行判断是前端还是后端问题,判断完成后提单给开发并附上相关日志信息直至全部确认完成。值得一提的是,在业务的接口测试过程中更多的会关注失败的接口,在接口自动化的过程中也同样需要关注测试通过的接口,以用于质量提升、报告输出等方面。

1.png

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

输入参数:无

输出参数:

2.png

返回结果(部分展示):

3.png

企业微信接口展示如下:

文件上传接口:

素材上传得到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”

参数说明:

4.png

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、接口测试用例设计

用例设计格式:

5.png

用例序号:项目名称_模块名称_序号

接口模块:对应的接口模块,例如英雄列表、召唤师技能,企业微信的登录模块、语音模块等

请求方式:通常请求方式为GET、POST

接口地址:通常有固定的地址格式便于接口自动化测试(图中的是全地址)

接口参数输入:部分接口不需要接口参数的输入,部分存在接口输入,如果有,填写即可

用例设计重点及关注点:

(1)发送给服务器的请求数据是否正确;

(2)服务器返回给客户端的数据是否与需求一致,符合预期;

(3)查看数据库中接口是否实现对应功能;

(4)接口的响应时间是否符合需求文档要求

接口用例设计考虑的范围:

1、业务功能:功能是否实现

2、业务规则:定义的描述是否符合预期

3、请求参数:参数的长短、大小、格式等

4、异常场景:传参异常、操作异常、服务异常等

5、数据传输:数据传输结果的正确性

6、接口性能:接口性能的正确,例如并发等

7、接口安全:如支付类、充值接口的数据篡改等

ps:在以上范围内还需要考虑接口的用例覆盖率及代码覆盖率,至少符合预期

3.6、后端接口测试内容

所谓的接口测试,后端接口都测试什么内容?下面的图片会给你一定的帮助(图片来源于网络):

6.png

好啦 以上就是本次文章分享的全部内容啦,你学会了吗?有问题记得留言讨论哦~


作者:测试界的飘柔

原文链接:https://blog.csdn.net/m0_67695717/article/details/127337113

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在写测试用例的时候是否有这些困扰:测试用例写了很多条,感觉有冗余,要精简又无从下手;测试用例写了很多条,但是总感觉还少了点啥;如果你不能同意更多,就请继续看看我们是怎么解决这两个问题的。一、用例条数过多很久之前,我有专门制定过测试用例改进计划,两步走策略。第一步,保证全面性,能考虑到的测试点都进行罗列,尽量全的罗列,保证没有遗漏。第二步,在全面性有保障的前提下,适当进行用例的删减,保证用例的针对性。但是随着计划的推进,我们就一直在处在第一步的边缘,迟迟无法跨越到第二步。主要原因有两个:一个是和开发人员的持续信任感没有建立,特别是测试过程中如果发现一些提测说明中没有提到的修改点的问题时,这种不信...
            2 3 1925
            分享
          • 在团队的测试任务中,我们会遇到非常多的问题,所以团队之间的沟通就显得尤为重要。记录下问题和当时的感受,如果有好的解决方案可以后续补充,现只做记录和分析1 业务迭代中,测试深度的拓展        描述:   基于当前公司迭代项目现状,目前测试更多关注业务对页面产生的影响。不太关注操作后,后台系统在做什么。例如新增“更新排班后”,a 关注数据库中人员排班表班次是否变更 b MQ消息是否收到(看服务日志),收到后是否同步数据库中人员的月报/日报中班次。       困难: a 开发无概要文...
            0 0 1305
            分享
          • 数据边界性测试数字类型超出应用设定最大值数字类型超出类型最大值数据类型填写非数据类型时间类型超出引用设定限制时间类型填写其他类型数据文本类型超出应用设定长度数据不符合实际规则(例如输入不存在的日期,或货币内容可以输入小数点后多于2位以上等)是否对输入内容的大小写进行自动转换,以防止用户对于大小写敏感内容出现输入错误是否对输入内容的前后空格进行自动去除,以防止用户输入不该存在的前后空格校验性测试填写不符合校验的数据,例如不能以数字开头的输入,输入数字开头的数据验证码,填写错误的验证码需重复一致填写时,填写不一致数据对于文本框输入类型内容有要求是否进行了键盘输入检测上传不符合类型的文件代码级测试非...
            10 10 811
            分享
          • 新浪科技讯北京时间9月29日早间消息,据报道,亚马逊正在对Kindle阅读器进行新的改造。本周,亚马逊推出的又一款Kindle配备了手写笔,帮助用户记笔记。当地时间周三,亚马逊在设备业务的新产品年度展示活动上表示,新的KindleScribe将于今年晚些时候发货,售价为339美元。新款阅读器配备10.2英寸屏幕,以及可磁性吸附在屏幕一侧的手写笔。亚马逊表示,KindleScribe的用户将可以从手机或电脑导入个人文档,为电子书、Word文档、网页和其他文件添加标注。其他推出了手写阅读器的厂商包括日本乐天集团和挪威创业公司RemarkableAS。亚马逊早在2007年推出了第一代Kindle,当...
            0 0 867
            分享
          • 也许大家在面试的时候碰到测试电梯,测试笔,测试伞的呀,小编就都罗列出来,大家可以看一看,碰到测试其他东西的,大家主要是思路,流程清晰就可以的。参考答案:伞功能测试伞是否可以正常打开,关闭,是否可以正常使用;伞是否可以折叠,伞的尺寸是否符合使用需求;伞骨与伞柄是否耐用,材质是否符合需求。是否生锈;伞的底座是否结实,是否容易脱落;伞是否能够正常遮阳/挡雨,伞面是否能够承受住风吹日晒。是否防紫外线;收伞的外部捆绑条,长度是否合适,是否结实,暗扣/粘扣的是否能够正常使用;自动伞是否可以正常使用,按钮承受度,使用次数。界面测试伞的类型是否符合需求,手动伞、自动伞;伞的外观、颜色、是否齐全、是否美观。易用...
            0 0 1167
            分享
      • 51testing软件测试圈微信