万叶集 |
---|
隐约雷鸣,阴霾天空。 |
但盼风雨来,能留你在此。 |
前言:
✌ 作者简介:渴望力量的哈士奇 ✌,大家可以叫我 哈士奇 ,致力于用白话讲解技术知识的博主 ✌
CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主
如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦
系列专栏:
Python全栈系列 - [更新中] 【 本文在该系列】
Python零基础入门篇
Python语法进阶篇
Python自动化办公篇
Python自动化测试实战篇
网安之路系列
网安之路踩坑篇
网安知识扫盲篇
Vulhub 漏洞复现篇
Shell脚本编程篇
Web攻防篇 2021年9月3日停止更新,转战先知等安全社区
渗透工具使用集锦 2021年9月3日停止更新,转战先知等安全社区
⭐️ 点点点工程师系列
测试神器 - Charles 篇
测试神器 - Fiddler 篇
测试神器 - Jmeter 篇
自动化 - RobotFrameWork 系列
自动化 - 基于 JAVA 实现的WEB端UI自动化
自动化 - 基于 MonkeyRunner 实现的APP端UI自动化
在前面的三个小章节里呢我们了解了软件测试与软件自动化测试的基础内容,让大家对自动化测试有了一定的了解。就像前文说的,自动化领域现在大体可以分为三个部分。如果说将自动化领域比作一个可以通关的游戏,第一个将要面临的 BOSS 就是 接口自动化测试
,第二个就是 WEB自动化测试
, 最后一个就是因为现在APP的流行所在来的 APP移动端测试
。
接口测试
又是相对来说和我们的功能测试 最为接近的一种自动化测试手段
,所以我们首先来学习接口测试的内容。 实现接口的开发与接口的测试,我们的思维上、想法上、面向的态度上都是不一样的所以大家要有一个思维上的转换,要认识了解一下 接口测试到底是做什么的?
它的功能、意义在哪里。
接下来还需要做一个知识储备 —> 理解 HTTP 协议的基础知识。然后最重要的两个部分,先通过一些简单的工具实现接口测试,实现接口测试的编写来辅助我们实现接口测试;当然是用工具挺不是最终目标,我们的最终目标是通过 Python 的知识、通过编程的技巧来完成接口测试脚本的编写,再上升一步上升到 接口测试框架的搭建
,然后在通过某旅游网的接口完成实战这样的一个学习。
接下来我们就从自动化测试领域里面最容易实现也是实际工作中最普及的接口测试开始学习,在这一小节里会有两个知识点。
1、什么是接口,接口的概念?
2、怎么做接口测试?
官方给出的解释:
接口又称
API
(Application Programming Interface,应用程序编程接口),是一些预定义的函数
,目的是为了提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需
访问源码,或理解内部工作机制的细节。
PS:是不是说的很虚,好像说了,又好像啥也没说...
那就说点人话,简单的概括一下:
- 接口其实就是预先定义好的程序代码
- 使用者不需要关心代码的细节
- 直接可以被其他人调用,用来获取信息或者实现某些功能
再再通俗一点的解释:
- 好比我就是拥有一些功能的集合体
- 在你安排我做某些事情的时候,不用关心我是怎么做的
- 我只是给了你一个访问地址
- 你通过这个地址呢找到了我,按照我规定的格式提供了我需要的信息
- 我会给你一个反馈,这个反馈就是根据你提供的信息返回的你需要的信息
PS:这就是我们比较通俗的理解一个接口。
在我们的实际软件项目中,接口其实就是系统与系统之间、模块与模块之间、服务与服务之间相互调用的一个入口。从开发者角度,接口是一个分工协作的产物。不同的开发者实现了自己的功能之后封装成接口,供应其他的开发者调用;其他的开发者呢只要按照上一个开发者规定的格式发送一些必要的参数就能够使用这个功能。比如下图:
图中是一个 登录接口
的实现和前后端调用的一个流程,对于使用登录接口的人来说,不需要关心后面的查询数据库等逻辑,只需要传入用户名和密码,接口返回是不是登录成功即可
常见的几种接口类型如下:
HTTP 接口
:最常见也是最常使用,也是后续学习当中要着重介绍的接口;通过 HTTP 协议来传输的接口类型可以传输文本、表单等数据
,也可以传输json
类型的对象,或者是xml
类型的数据…
RPC 接口
:现在比较流行的接口(严格意义上来讲,其实是RPC协议
),这个接口的准确说法叫做远程方法调用
。现在在阿里、京东、当当
等大厂都是在使用这种RPC
类型的接口在进行传输。
- 思考一个问题:为什么会有
RPC
接口的出现,就是随着现在分布式系统的出现。当需要调用部署在其他服务器上的方法的时候,这个时候使用RPC 接口
是最好的。像淘宝、支付宝、余额宝...
这些阿里系旗下的很多应用都是通过RPC 接口来进行交互的。
- 更形象的解释
RPC
接口,可以这么理解:远程调用接口的时候,希望能够像本地一样调用的方便,让调用者感知不到远程调用的逻辑,不需要搞一串发起 HTTP请求的代码
,这就是RPC
的形象一些的解释。
SOAP接口
:这是一种简单的面向对象的协议,基于HTTP协议
,但是使用XML
作为默认的传输格式。
Web Service 接口
:Web Service 呢略微有些特殊,它其实是基于SOAP
协议的一种RPC
的实现方案。相对于传统的HTTP接口
只传输文本请求和文本响应,通过 Web Service 可以拿到远程的一个对象,并且能够直接调用这个对象的属性和方法,也算是 HTTP 接口。
REST API
:现在很流行的,翻译过来叫做 “表述性状态转移”。它还是HTTP接口
,但是设计风格不太一样了,它将一切的接口视为 “资源”,要求接口路径统一管理,也分版本管理。规定了GET、POST...
等请求和 HTTP 状态码的使用规范,并且默认使用JSON格式
来进行传输,这也是REST API
的一种风格。
对于我们来说,在做接口测试的时候 90% 的经历是在做 HTTP 类型的接口,所以后面的内容也会就这个方向深入,去进行挖掘。
在了解了什么是接口之后,接下来我们再看看什么是接口测试。接口应该如何去测试。
顾名思义,接口测试其实就是测试系统组件间接口的一种测试,也就是针对上文所述的那些接口的测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 不仅仅是看接口有没有实现还要测试一下接口逻辑
在介绍之前,大家先像一个问题,那就是 余额宝 的转入与转出。如果我们想要试试 余额宝 的转入与转出功能,从纯黑盒的角度来说,那就得需要在 APP 的界面上去点击操作,但是实际上可能前端界面写出来集成好之前后端的这个接口其实早就已经写好了,这也是很正常的。
所以,如果我们能够开展接口测试就能够更早的发现问题,有效的降低测试成本,而且接口是各种系统功能的一个基础。如果接口都出现问题了,那就回引起很多系统的问题,并且非常不容易定位,所以提早的开展接口测试也会有更好的效果。
从测试的 ROI
来说,接口相比于UI的界面要稳定的多,有利于测试人员进行自动化、进行一些持续集成的开展,这是测试人员进行接口测试的一个优势。
总结一下就是下面这四点:
- 及早发现问题
- 降低测试成本
- 接口是各种系统之间相互配合的基础
- 接口一般较UI相对稳定,利于进行自动化
实际上在我们的正式工作中,在漫长的互联网测试形态的演变中,接口测试出现了三种阶段的改变。
- 手工测试:最早的时候大家都是黑盒测试不会单独的进行接口测试。仅仅是针对有前台、有UI的功能进行验证。这种的就是前面章节提到的
瀑布式的流程
。随着敏捷迭代的普及,最早出现的接口测试就是用手工来进行调用,也就是开发提供一个接口,然后测试来使用,这是最初的一个形态。
- 使用工具:逐渐的测试人员开始使用一些工具来针对接口进行一些操作,比如现在大家耳熟能详的
Postman
、Jmeter
… 这些等等。
- 接口框架 - 工具研发:再到后来大家会觉得使用工具不太自由,不太方便进行定制化的调用,不太方便符合我们想象的那样进行操作。所以就有这样一种岗位 -
测试开发工程师
。处于这样岗位的工程师,开始致力于一些框架、辅助工具等等的开发。
对于现阶段我们有一定代码基础的童鞋来说哈,既然我们有一定的代码基础了,最适合也是最应该去做的就是第三阶段的
接口框架、工具研发
。
接口测试不仅仅是调用之后就结束了,完整的接口测试也需要考虑到很多的点。参考下图:
比如上图中的内容,除了正常的情况之外,还需要考虑异常的情况(即参数不符合条件的情况);然后就是边界的问题,如一个转账功能,单笔上限为 50000,尝试传入大于 50000或者为0、为负数的情况等等;再一个就是参数组合,比如个人信息认证接口需要传入用户的个人信息,这里手机号为空,性别不选、年龄写999999… 这样的类似的参数的形态造成的一些异常问题…
还有一种异常情况就是图中左上角提到的一些问题,比如同样的内容去提交会给予一个什么样的返回;还有就是并发的问题,比如某秒杀或者抽奖活动,当大量的信息同时涌入会不会处理不了,造成卡住或者服务崩掉等情况… 那这样的话,这次的抽奖应该做什么处理并返回,是不算了呢还是给予一个重新抽奖的机会,等等诸如此类的场景…
再有一个就是安全测试,如果说提供了一个网页的接口来填写信息是否会存在被注入等风险,或者有一些敏感信息被攻击者可利用的可能,这些都是在接口测试的过程中需要想到的。
如果想要掌握接口测试这门技能,做到一个测试开发的级别还需要做些什么呢?这也是要在 【 Python自动化测试实战篇章】 要讲到的内容。
- 1、首先要了解 TCP 、HTTP 协议
- 2、虽然大家可能以前接触过一些接口测试,但对 HTTP 还不是太了解,所以在实战开始伊始会简单的介绍一下 HTTP ,包括请求、响应的格式、如何去抓包等等…
- 3、接下来就会学习如何通过 Python 来发送 HTTP 请求,并且结合着单元测试的框架设计一个简洁的接口测试框架
准备好了嘛?接下来就准备开始接口测试的实战之旅吧。