首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >谈一谈接口测试

谈一谈接口测试

作者头像
架构狂人
发布于 2023-09-21 12:38:31
发布于 2023-09-21 12:38:31
2230
举报
文章被收录于专栏:架构狂人架构狂人

接口测试为什么重要?

我相信你一定听说过这样一句话:“测试要尽早介入,测试进行得越早,软件开发的成本就越低,就越能更好地保证软件质量。”

但是如何尽早地进入测试,作为软件测试的你,是不是也没办法说得清楚呢?其实上面那句话中的“测试”,所指的并不是测试这个人,而是指包含了单元测试、接口测试、界面测试等一系列质量保障活动的测试工作。

说到单元测试、接口测试和界面测试,你是不是马上就想到了“测试金字塔模型”呢?

在这个金字塔模型中,界面测试、接口测试和单元测试,每一个阶段所占面积的大小,代表了它们在测试过程中的投入和工作量占比。

你可以看到,单元测试在测试过程中,占据了绝大部分的比重,这表示单元测试需要你投入更多的时间和人力成本。但是,单元测试并非测试的本职工作,它属于开发工程师的工作范筹。说到这你可能会问了:“如果开发工程师从来不写单元测试怎么办?”毕竟大部分开发人员都不爱写测试。

其实,我也会问自己这个问题。不可否认,开发工程师不只很少写单元测试,更很少写出好的单元测试代码,很多时候,工期的压力让他们放弃了单元测试。但是,一个产品的交付质量更多时候却是由测试来保障的,面对这一实际现状,我们又该怎么办好呢?

提供两种解决手段:一种是用一些智能化框架补充单元测试工作;另外一种,就是加大我们自己主导的接口测试的工作投入比重,来弥补单元测试的不足,这样,上面那个金字塔模型就会逐渐演变成菱形模型。

那之所以出现从“金字塔模型”到“棱形模型”这种变化,并不是有人刻意提高测试在整个交付流程中的地位,这其实是随着工作的不断进行,逐渐形成的结果。

在质量保障过程中,我们的测试会不断增大接口测试的测试深度和测试广度,往下逐渐覆盖一些公共接口的单元测试内容,往上则逐渐覆盖应该由UI层保障的业务逻辑测试,这么做的主要目的,就是为了更好地完成质量保障工作,交付一个可靠的、高质量的项目。

所以,从接口测试这一环节开始,测试就变成了质量保障工作的主要推动者,接口测试也变得愈发重要。那它有什么好处和优越性呢?我觉得可以从下面这3个角度来看:

  1. 接口测试更容易和其他自动化系统相结合;
  2. 相对于界面测试,接口测试可以更早开始,也可以测试一些界面测试无法测试的范围,因此它使“测试更早的投入”这句话变成现实;
  3. 接口测试还可以保障系统的鲁棒性,使得被测系统更健壮。

现在,我相信你已经意识到接口测试在质量保障中的重要地位了,那么,你知道究竟什么是接口吗?接口测试又在测些什么呢?我们又为什么要做接口测试呢?

下面我就逐一把这些讲解给你。

接口是什么?

如果你想要知道接口测试在测什么,首先就要知道接口是什么。

在这里我不想告诉你书本上是怎么定义接口的,从那些晦涩的语言中,你可能读几次都不能真正理解它的含义,我准备用一个实际生活中的例子,来告诉你接口究竟是什么。

我相信你肯定去过麦当劳,那每次在你去麦当劳吃东西时,你是否细心观察过它为你准备订单商品的过程呢?

如果你的订单上有一个汉堡,工作人员会先找到汉堡的原材料如面包片、肉饼和生菜等,按照规定步骤,将这些原材料组合成一个汉堡,然后送给你;如果你的订单上有一份薯条,那么工作人员会进入另外一个工作流程,先找到薯条原材料和炸薯条的锅,把薯条炸好后,送到你面前。

那么在上面的例子中,汉堡以及薯条的原材料就是接口中必要的条件入参,也就是接口的特定输入;制作汉堡或烹饪薯条的过程,就是接口内部的处理逻辑;送到你面前的汉堡和薯条,就是接口的处理结果和特定输出,也就是返回参数。

所以我们可以看到,接口就是有特定输入和特定输出的一套逻辑处理单元,而它不用知道自身的内部实现逻辑,这也可以叫做接口的黑盒处理逻辑。

而从上面的例子你也可以看到,由于服务对象不同,接口又可以分为两种,一种是系统或服务的内部接口,一种是外部依赖接口。

  1. 内部接口

简单来说,内部接口就是系统内部调用的接口。

在上面麦当劳的例子中,内部接口有两个:

  • 汉堡订单。服务员在接到订单后,输入汉堡的原材料,将汉堡做好后,放到后厨和前台之间的一个中间储存柜里,作为输出,为下一个中间储物柜接口提供输入参数。
  • 中间储物柜。服务员从中间储物柜拿出汉堡,这就是这个内部接口的特定输入,最后送到你面前的汉堡,就是这个内部接口的特定输出。

那么在软件系统中,内部接口是怎么一回事呢?

其实,你在网上购物时,要先登录系统,然后将商品加入购物车,再接下来支付订单。那么,从添加商品到购物车,再到支付订单,这一长串的流程之间,就是通过系统内部接口来完成的。

  1. 外部接口

刚刚说了内部接口,那什么是外部接口呢?其实它是相对于内部接口而存在的一个概念,上面你在麦当劳点餐的场景就是一个外部接口,它又可以分为两部分:

  • 出订单前,你的点餐过程。这个外部接口特定的输入是你在点餐时,告诉服务员你想点什么,这也是你输出给麦当劳的参数。
  • 出订单后,服务员送餐的过程。它的特定的输出是服务员把汉堡送给你,这也是麦当劳返回给你的处理结果参数。

在系统上,外部接口又是怎么回事呢?

你在购物后点击付款时,页面会跳转到支付系统,等你完成支付流程后,再跳转回订单页,在这样的流程中,都会涉及系统对外的接口,还有,比如说付款工程的支付接口、配送过程的物流接口等等。

现在我来总结一下接口的本质,它其实就是一种契约,遵循这样一种形式:在开发前期,我们约定接口会接收什么数据;在处理完成后,它又会返回什么数据。

如果调用方和被调用方都遵从了这种契约,那么就可以达到共同开发的目的,开发完成后,联调完成系统逻辑的前期预期,提高研发效能。

什么是接口测试?

还是以麦当劳的汉堡为例,接口测试,其实就是要验证制作汉堡的过程是否正确。 这里所说的“正确”其实有两方面的意思:

  • 一方面,是要验证输入了汉堡的原材料,经过制作汉堡的处理流程,最后交付给你的是一个汉堡;
  • 另外一方面,是要验证在输入的汉堡原材料不对或者不全的情况下,经过制作汉堡的处理流程后,不能给你交付一个汉堡。

你一定要注意, 这两方面的验证是都要进行的,对于一个测试来说,这两种流程都是正向流程。只有理解了这个思维,你才能把自己从客户思维里拉出来,形成测试思维。

我相信你在工作中,已经接触过各式各样的接口了,比如说HTTP协议的接口、RESTful格式的接口、WebService的接口、RPC协议的接口等。其实无论是哪一种形式的接口,它们都是通过某一种传输协议,在Client端和Server端之间来完成数据传递的。

  • 假如你现在测试的,是Web端的极客时间,那么Client端就是浏览器,Server端就是Web服务,那么浏览器和Web服务之间,就是通过HTTP协议传输的;
  • 如果你测试的,是移动端的极客时间,那么Client端就是你的设备上安装的极客时间应用,Server端就是RESTful格式的接口服务,那么极客时间的应用和RESTful格式的接口服务,就是通过JSON格式的数据来传递的。

看到这,我想你也能理解了,接口测试其实就是模拟调用方,比如Client端,通过接口通信来检测被测接口的正确性和容错性。

但是请你放心,我现在所说的模拟调用方,并不是让你开发一个浏览器或者极客时间的手机应用,而是让你模拟这些客户端上的前端逻辑,调用Server端提供的接口,你完全可以借助一些工具或代码来完成这项工作。

这些相关的工具或代码技巧,也就是我设计这个专栏的主要思路。但我不想把这些工具一次都罗列给你,让你马上就失去兴趣,这是由于两个原因:

  • 当你看到一个好几页的工具列表或者技术列表式时,你可能会觉得,自己需要翻越无数个高峰才能学会接口测试;
  • 另一方面我也觉得,在接口测试中,工具或代码并不是它的核心内容,接口测试思维才是你应该重点关注的问题。

所以,我会在做一些工作或者任务的过程中,把这些工具介绍给你,让你知道哪些工具能够解决哪些问题,用什么样的代码可以解决什么样的问题。我也更希望你知道,工具和代码并不是相互排斥的,而是相互依存和相互辅助的。

其实,接口测试和你以前最熟悉的业务测试一样,都是关注输入和预期是否一致,尤其是输入数据中有一些非法输入的时候,接口的处理和逻辑控制是否合理,这些都是通过返回值来判定的。

还有一些小概率逻辑的处理也是我们设计输入的关注重点,比如一些代码中的异常情况,我们也要想办法,通过输入参数来触发这种逻辑分支,通过返回值来判定对应接口内部实现的处理逻辑是否合理、是否健壮。

这样看来,接口测试对于你来说,也不是一个全新的工作内容,但它还有自身的特别之处的,比如说:

  • 在测试手段上,接口测试算是技术驱动和业务驱动双管齐下的工作(界面测试却是业务驱动为主的工作),因此,你需要借助一定的工具来完成它。这个工具既有可能是成熟的工具,也有可能是你自己写的代码,因此,测试技术会在接口测试阶段,变得和业务知识一样重要。
  • 在工作范围上,接口测试影响的范围会更广一点,它会覆盖一部分单元测试的内容,也会覆盖一部分业务测试的内容,但是,无论是哪一部分的内容被它侵占,相对应部分的工作投入其实都减少了。

总结

  1. 接口测试是通过设计输入和预期输出来完成测试验证的,之前掌握的测试用例设计方法等测试基本功,在这里还是有用武之地的;
  2. 接口测试是一个技术知识和业务知识相结合的工作,可以更好地提升自己的技术实力;

虽然本文讲得是接口测试方面,最后我还想强调一点,研发质量千万不要指望测试同学把关,代码质量是研发的尊严,做好全面的测试设计,写好每一份测试用例,对你会是质的飞跃!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-19 07:30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 顶尖架构师栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
接口测试 入门三讲
我相信你一定听说过这样一句话:“测试要尽早介入,测试进行得越早,软件开发的成本就越低,就越能更好地保证软件质量。”但是如何尽早地进入测试,作为软件测试工程师的你,是不是也没办法说得清楚呢?其实上面那句话中的“测试”,所指的并不是测试工程师这个人,而是指包含了单元测试、接口测试、界面测试等一系列质量保障活动的测试工作。
acc8226
2022/05/17
3140
《接口测试实战课》读书笔记 —— 接口测试入门
从它对项目的影响来说,接口测试直接测试后端服务,更加接近服务器上运行的代码程序,也更能发现影响范围广泛的 Bug。
小菠萝测试笔记
2020/06/09
5980
《接口测试实战课》读书笔记 —— 接口测试入门
接口测试这件小事
伴随着对接口测试的认知升级,是从测试工程师到测试架构师完成蜕变的过程,因此,想和大家聊一下“接口测试这件小事”,以及分享一下我和接口测试之间的爱恨纠葛。
石臻臻的杂货铺[同名公众号]
2022/10/28
3280
从头到脚说单测——谈有效的单元测试
导语 非常幸运的是,从4月份至今,我能够全身心投入到腾讯新闻的单元测试专项任务中,从无知懵懂,到不断深入理解的过程,与开发同学互帮互助,受益匪浅。在此过程中,得到了质量总监、新闻总监和乔帮主的倾囊指导,真心感谢!!我希望把所有心得,总结成一篇较为全面的文章,分享给其他团队。时刻牢记:1. 不要滥用mock 2. 基于意图。 在我们谈到单元测试,大都清楚是测试函数符合预期,国外很多大公司都将单测执行的很好,国内成功的案例则相对有限。在本文中,笔者将在腾讯新闻项目中亲身经历单测从无到有的实践过程梳理为可读
腾讯技术工程官方号
2019/08/20
11.9K0
从头到脚说单测——谈有效的单元测试
03 思维方式:用一个案例彻底理解接口测试的关键逻辑
在开始业务逻辑接口测试之前,你要先通过接口测试的方法,测试每一个接口都是正确的, 既要保证单接口的正确性,也要保证接口的业务逻辑正确性,这里所说的“正确”指的 是“正确接受合法 Request 入参”。
测试开发囤货
2021/08/11
4170
从零到一落地接口自动化测试
昨天花了几个小时看完了陈磊老师的《接口测试入门课》,有一些新的收获,结合我自己实践自动化测试的一些经验以及个人理解,这篇文章来聊聊新手如何从零到一落地实践接口自动化测试。
老_张
2023/03/01
7180
从零到一落地接口自动化测试
01 基础:跳出细节看全局,接口测试到底是在做什么?
从它对项目的影响来说,接口测试直接测试后端服务,更加接近服务器上运行的代码程序, 也更能发现影响范围广泛的 Bug。
测试开发囤货
2021/08/11
2740
对接口测试的一些思考
  越底层的实现对技术专业性要求越高,这点跟第三点有点矛盾,往往越专业的人才也意味着人力成本越高。
于果
2021/08/25
4910
从头到脚说单测——谈有效的单元测试(上篇)
作 者 杨迪,腾讯PCG高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 作者导语 从4月份至今,我能够全身心投入到腾讯新闻的单元测试专项任务中,从无知懵懂,到不断深入理解的过程,与开发同学互帮互助,受益匪浅。在此过程中,得到了质量总监等等优秀同事的倾囊指导,真心感谢!!我希望把所有心得,总结成一篇较为全面的文章,分享给其他团队。时刻牢记:1. 不要滥用mock 2. 基于意图。 一. 为单元测试“正名” 我曾经认为,单元测试面向的是一个函数。任何走出一个函数的测试,
WeTest质量开放平台团队
2019/08/15
2.7K0
从头到脚说单测——谈有效的单元测试(上篇)
漫谈接口测试
在前面的很多的文章对中接口测试有很多的介绍,包含了常用的接口测试工具postman,以及测试工具Jmeter(目前在持续介绍中)和使用Python代码来做产品的接口自动化测试。一个问题,一起思考,我们为什么要做接口测试?我们为什么不做UI的自动化测试了?曾经有那么的一段时间,我是很倡导UI级的自动化测试的,因为它的出现,解决了手工测试的事情,而且也可以对浏览器进行兼容性的测试,当然还有很多的优点,也许最大的优点就是我下班的时候执行我的UI自动化测试,早上来我可以看到测试报告,然后感觉有那么一丝的成就感,但是渐渐的我不那么的喜欢了。首先就是在晚上上线的时候,它对我没有帮助,或者说帮助不大,0点上线,大家都等待着冒烟测试的结果,如果执行UI自动化测试,时间是1-2小时,也许更长,这么长的时间,我有耐心可以等下去,但是其他人没有,另外一个深层次的问题是产品每个迭代UI都不不断的调整,即使框架是多么的完美,但是谁受的了每次的调整,这个能够抱怨产品经理吗?市场在变化,客户在变化,产品必须满足客户的要求并且随着市场的变化而进行调整,这是毋庸置疑的,这种调整不几个版本能够调整出来的,找到用户的痛点并且总结出高频的用户场景不是一件容易的事,应用市场有那么多的产品,失败的无人搭理的远远大于成功的产品数,所以某些程度上,产品的调整更多是战略上的思考,而这些作为测试来说,只能配合,那么UI的不断调整不断维护,给人更多的是一种力不从心,或者是质疑,自动化真的就那么的重要并且真的解放了测试的人力问题吗?不得不承认,这个问题我听到过很多次,也有人问过我很多次,每一次改进,都必然经历质疑和怀疑,这点只能使用未《未来简史》里面的一段话来作为回答:人们只所以不愿意改变,是因为害怕未知。但是历史唯一不变的事实,就是一切都会改变。如果不改变,一切就又回到了最初的原点,进行手工测试,这些很多人不愿意接受而又迷茫的地方,一方面我们相信技术可以促进生产力的进步,在一定程度上可以解放人力的劳动,另外一方面就像上面描述的陷入到了UI自动化测试的死局。任何一个技术,都有它存在的比必然价值,但是选择适合自己的测试技术是最佳的一种选择。
无涯WuYa
2018/10/24
5780
自动化测试最佳实践(一):从纺锤模型到金字塔模型
开篇我们先简要介绍一些近几年在企业开发中出现的重要概念,以便引入持续测试的主旨。这些概念中最重要的两个便是DevOps和微服务。两者都是目前软件开发中的最佳实践和方法论,旨在为企业提供更高的灵活性,提升运营效率。
宜信技术学院
2019/06/28
1.3K0
都2022了,自动化测试到底该怎么做
在讲自动化测试前,先看下软件测试的分层模型,如下图所示的“三层金字塔”,分为单元、接口和UI三个层级。尽管大家对此的具体描述各不相同(有人将三层分别定义为单元、接口、集成测试;也有人将整个金字塔划分为4-5个层级),但金字塔自底向上的结构是大家公认和遵循的
Bug挖掘机
2022/09/28
6450
都2022了,自动化测试到底该怎么做
python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
  上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试。
北京-宏哥
2019/09/11
1.8K0
python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
接口测试概述
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
清风穆云
2021/08/09
2910
从全局视角来看接口测试
程序内部的接口:方法与方法、模块与模块之间的交互,程序内部抛出的接口;如登录发帖场景,发帖前必须要执行登录动作,因此发帖和登录这两个模块之间存在交互,交互会抛出一个接口,供内部系统进行调用。
周辰晨
2021/08/08
8000
从全局视角来看接口测试
从全局视角来看接口测试
程序内部的接口:方法与方法、模块与模块之间的交互,程序内部抛出的接口;如登录发帖场景,发帖前必须要执行登录动作,因此发帖和登录这两个模块之间存在交互,交互会抛出一个接口,供内部系统进行调用。
周辰晨
2021/08/13
5740
提升测试效率?有了这些接口测试用例都不是问题
  在日常工作中,我们主要测试的都是功能板块,如果你想真正了解接口测试,那么这篇文章或许能给你一定帮助。
顾翔
2020/11/03
6700
提升测试效率?有了这些接口测试用例都不是问题
华为专家 | 轻量化微服务测试实践
前言 在我过去工作的这十年间,IT行业经历了很多的变迁,从单体架构到微服务架构,从传统组织到敏捷组织,我正好都有不同的体验,现在我在华为任软件架构师,华为有各种各样的产品线,我的工作职责之一是帮助产品团队构建软件工程能力,以及落地Cloud Native、微服务还有DevOps的相关实践,另外我同时也是几本书和资料的译者或作者。 我之前在比较早的传统团队里面去做研发工作时,测试主要采用手工的方式,其实这种日子是比较苦的,可能一直要加班到深夜,正式上线的时候还会提心吊胆,担心哪些功能会挂掉。 后来引入了自动化
DevOps时代
2018/02/02
3K0
华为专家 | 轻量化微服务测试实践
聊一聊接口测试的核心优势及价值
接口测试是软件测试中的一个重要部分,接口测试主要关注于系统各个组件之间的交互,比如API之间的通信,确保它们能够正确传递数据并按照预期工作。接口通常分为内部接口和外部接口,比如API接口、Web服务接口等,今天主要聊一聊接口测试的优势和价值在哪里。
漫谈测试
2025/04/25
1410
聊一聊接口测试的核心优势及价值
聊聊页面测试及接口测试的优缺点
我们需要明确这两个测试类型的定义和应用场景,应该比较它们的优缺点,可能还要考虑实际应用中的情况,比如项目阶段、资源投入和测试效率。Web页面测试主要是用户界面和交互的测试,比如点击按钮、输入表单,验证页面是否正确显示。优点可能是更贴近用户实际体验,能发现前端的问题,比如布局错误、JavaScript问题。缺点可能是执行速度慢,维护成本高,因为UI经常变动,测试脚本容易失效。接口测试的是后端API,比如HTTP请求的响应数据、状态码、性能等。接口测试的优点可能是执行速度快,覆盖更底层的问题,比如数据处理逻辑、数据库交互,而且不受前端变化的影响,维护成本相对较低,熟练的掌握这两种测试方式后,才能进一步优化测试流程,提高效率,降低成本。
漫谈测试
2025/03/28
1970
聊聊页面测试及接口测试的优缺点
推荐阅读
相关推荐
接口测试 入门三讲
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档