室友半夜偷偷不睡觉,原来竟是看这个!

接口测试及常用接口测试工具解析

  • 一、常见接口:
  • 二、前端和后端:
  • 三、什么是接口测试:
  • 四、接口组成
  • 五、为什么要做接口测试:
  • 六、接口测试怎么测:
  • 七、用什么工具测

那些关于接口测试的二三事,首先大家要搞清楚,什么是接口,其次是前后端,之后逐一抽丝剥茧让它明朗起来,没有一蹴而就的事(天才、大佬除外),一步一步搞通才是王道,到最后接口测试就全盘拿下拿下了,不要怕,淦就完事了。
在这里插入图片描述

插个题外话,最近搜集了一些关于接口测试的资料,有需要的兄弟点这里暗号csdn,一点既得。
在这里插入图片描述

首先,什么是接口呢?

接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。

系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的 app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。

程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs 系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

一、常见接口:

1、webService 接口:是走 soap 协议通过 http 传输,请求报文和返回报文都是 xml 格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有 SoapUI、jmeter、loadrunner 等;

2、http api 接口:是走 http 协议,通过路径来区分调用的方法,请求报文都是 key- value 形式的,返回报文一般都是 json 串,有 get 和 post 等方法,这也是最常用的两种请求方式。可以使用的工具有 postman、RESTClient、jmeter、loadrunner 等;

二、前端和后端:

在说接口测试之前,我们先来搞清楚这两个概念,前端和后端。

前端是什么呢,对于 web 端来说,咱们使用的网页,打开的网站,这都是前端,这些都是html、css 写的;对于 app 端来说呢,它就是咱们用的 app,android 或者 object-C(开发 ios 上的 app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校
验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。

前面说的你可能不好理解,你只需记住:前端负责貌美如花,后端负责挣钱养家。

三、什么是接口测试:

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程, 以及系统间的相互逻辑依赖关系等。

OK,上面是百度百科上说的,下面才是我说的

其实我觉得接口测试很简单,比一般的功能测试还简单(这话我先这样说,以后可能会删O(∩_∩)O 哈!),现在找工作好多公司都要求有接口测试经验,也有好多人问我(也就两三个人)什么是接口测试,本着不懂也要装懂的态度,我会说:所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。

我为啥说接口测试比功能测试简单呢,因为功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测 UI、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。

四、接口组成

接口都有那些部分组成呢?

首先,接口文档应该包含以下内容: 1、接口说明
2、调用 url

3、请求方法(get\post)

4、请求参数、参数类型、请求参数说明

5、返回参数说明

由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头 header。

标头 (header):是服务器以 HTTP 协议传 HTML 资料到浏览器前所送出的字串,在标头与HTML 文件之间尚需空一行分隔,一般存放 cookie、token 等信息
有同学问我 header 和入参有什么关系?它们不都是发送到服务器的参数吗? OK,首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header 里存放的
参数一般存放的是一些校验信息,比如 cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受 header 信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

五、为什么要做接口测试:

大家都知道,接口其实就是前端页面或 APP 等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子:

比如测试用户注册功能,规定用户名为 6~18 个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入 20 个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过 SQL 注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?

所以,接口测试的必要性就体现出来了:

①、可以发现很多在页面上操作发现不了的 bug

②、检查系统的异常处理能力

③、检查系统的安全性、稳定性

④、前端随便变,接口测好了,后端不用变

六、接口测试怎么测:

在进行接口测试前,还需要了解:

1)、GET 和 POST 请求:
如果是 get 请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的, 都是 get 请求,如果是 post 的请求的话,就不行了,就得借助工具来发送。

GET 请求和 POST 请求的区别:

1、GET 使用 URL 或 Cookie 传参。而 POST 将数据放在 BODY 中。

2、GET 的 URL 会有长度上的限制,则 POST 的数据则可以非常大。

3、POST 比GET 安全,因为数据在地址栏上不可见。

4、一般 get 请求用来获取数据,post 请求用来发送数据。

其实上面这几点,只有最后一点说的是比较靠谱的,第一点 post 请求也可以把数据放到url 里面,get 请求其实也没长度限制,post 请求看起来参数是隐式的,稍微安全那么一些

些,但是那只是对于小白用户来说的,就算 post 请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。

2)、http 状态码

每发出一个 http 请求之后,都会有一个响应,http 本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:

1、200 2 开头的都表示这个请求发送成功,最常见的就是 200,就代表这个请求是 ok 的,服务器也返回了。

2、300 3 开头的代表重定向,最常见的是 302,把这个请求重定向到别的地方了,

3、400 400 代表客户端发送的请求有语法错误,401 代表访问的页面没有授权,403 表示没有权限访问这个页面,404 代表没有这个页面

4、500 5 开头的代表服务器有异常,500 代表服务器内部异常,504 代表服务器端超时, 没返回结果

接下来再说接口测试怎么测: 1)、通用接口用例设计
①、通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

②、参数组合:现在有一个操作商品的接口,有个字段 type,传 1 的时候代表修改商品,商品 id、商品名称、价格有一个是必传的,type 传 2 的时候是删除商品,商品 id 是
必传的,这样的,就要测参数组合了,type 传 1 的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。

③、接口安全:

1、绕过验证,比如说购买了一个商品,它的价格是 300 元,那我在提交订单时候,我把
这个商品的价格改成 3 元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?

2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功

3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话, 别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。

4、密码安全规则,密码的复杂程度校验

④、异常验证:

所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是 10 的,传 11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。

2)、根据业务逻辑来设计用例

根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。

举个例子,拿 bbs 来说,bbs 的需求是这样的:

1、登录失败 5 次,就需要等待 15 分钟之后再登录

2、新注册的用户需要过了实习期才能发帖

3、删除帖子扣除积分

4、…

像这样的你就要把这些测试点列出来,然后再去造数据测试对应的测试点。

七、用什么工具测

接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI 等, 本人首推的测试工具是 postman 和 jmeter,接下来就简单介绍下如何使用这两款工具进行接口测试,其他工具本次暂不介绍。

1)、Postman 是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持 get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。

jmeter 是一款 100%纯 Java 编写的免费开源的工具,它主要用来做性能测试,相比loadrunner 来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。

①、获取用户信息:该接口用于通过 userid 获取用户信息

请求地址:http://192.168.1.102:8081/getuser

请求方式:POST/GET

入参:
在这里插入图片描述
出参:

参数
在这里插入图片描述
postman 中请求如下
在这里插入图片描述
jmeter 中请求如下:
在这里插入图片描述
在这里插入图片描述
②、获取用户信息:需要添加 header,Content-Type application/json

1.1请求地址

http://192.168.1.102:8081/getuser2

1.2请求方式

get/post

1.3入参
在这里插入图片描述
1.4出参
在这里插入图片描述
postman 测试如下,本次入参为 json 类型,当然文档中没说非要用 json,用其他方式也是可以的
在这里插入图片描述
在这里插入图片描述
jmeter 测试如下
在这里插入图片描述
在这里插入图片描述
③、修改用户余额 2

1.1功能描述

功能描述:需要添加 cookie,token token 是写死的 token12345

1.2请求地址

http://192.168.1.102:8081/setmoney2

1.3请求方式

Post

1.4入参
在这里插入图片描述
1.5出参
在这里插入图片描述

postman 测试如下:
在这里插入图片描述
jmeter 测试如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④文件上传

postman:
在这里插入图片描述
jmeter:
在这里插入图片描述
在这里插入图片描述
⑤、请求 webService 接口

请求 webService 接口需要用到的工具是 SoapUI,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在 jmeter 里请求如下:
在这里插入图片描述
感谢看到这里的各位啦,预祝各位变得更强~

要个赞不过分吧~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72466.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一名8年测试工程师,因为偷偷接私活被····

接私活 对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后…

上班偷偷看视频摸鱼而不会被老板打的工具,还不用吗

文章首发于微信公众号「蚂蚁原图」,欢迎大家关注。打开微信,使用 “搜一搜”,搜索「蚂蚁原图」,即可关注。 今天给大家推荐的项目是 「 intellij-media-player 」,这个项目作者的目的是摸鱼,能够在上班的时…

惊了,浏览器竟偷偷干了这些事....

前言 之前我就一直好奇,为什么我在浏览器输入一个地址之后,就可以返回数据,这中间到底发生什么了呢? 于是我苦研技术二十年(bus),终于把这中间发生了啥大概给理清楚了。接下来就一起来看看到底…

今天被公司约谈,说工作时长不够,要求每天至少11小时,不然就是态度不认真!...

一天的工作时长多久合适? 一位同花顺公司员工吐槽:今天被公司约谈,说工作时长不够,要求每天至少11小时,不然就是工作态度不认真! 楼主问:这种情况怎么办?大无语了! 网友惊…

偷偷自动化,每周才工作几小时却拿全薪,这样道德么?

(点击上方公众号,可快速关注) 编译:伯乐在线/刘唱 程序员们在 StackExchange 上有激烈的讨论,如果偷偷把自己的工作自动化,是不是不道德? 这次讨论的源于 Etherable 于 6 月 27 日在 StackExcha…

【创作赢红包】喂,鬼仔,你还在瞒着我偷偷使用强制相等

我们都知道JavaScript有 (强制相等)和(严格相等)运算符进行比较。但你可能不知道它们两个究竟有什么不同,并且更重要的是,在 js 引擎中使用它们的时候发生了什么? 前面我们提到 是强制比较。强制意味着 VM 试图将进行比较的双方强制为相同的类型&…

程序员在晚上才敢偷偷看的10个网站,建议私藏!

这10个网站,大家自己看看就好,千万不要到处传播,因为访问的人太多了,网站可能会挂,这样我就不能拥有快乐了,salute! 搜索工具类:Goobe 别再傻傻用Google和百度了,goobe…

【紧急情况】:回宿舍放下书包的我,花了20分钟敲了一个抢购脚本

文章目录 情况紧急 ⁉️抢❗️抢❗️抢❗️开抢时间说明💨开抢过程💥Get_cookie.py开抢 结束语😱 情况紧急 ⁉️ 不管你信不信,这就是俺刚瞧出的代码!!! 现在离20:00还有38分钟&…

中国科学院大学计算机在职博士招生,中国科学院在职博士研究生如何报考?

中国科学院大学博士研究生招收的学术型博士学位研究生,旨在培养德智体全面发展,在本学科领域掌握坚实宽广的基础理论和系统深入的专门知识,具有独立从事科学研究及相关工作的能力,能在科学研究和专门技术等方面做出创造性成果的高…

大学论文的研究框架是什么?

第一次写论文,难免连论文的基本固定结构都不得而知,更别提论文内容的研究框架啦!这一篇是论文基础知识的扫盲!告诉你一个论文的基本框架与如何树立起自己选题的内容研究框架~本篇干货满满,如果你还不会写论文&#xff…

巴比特 | 元宇宙每日必读:Meta开源AI模型ImageBind,可横跨6种模态,同时处理6种感官数据,元宇宙建设将更进一步...

摘要:据《科创板日报》报道,当地时间5月9日,Meta宣布开源了一种可以横跨6种不同模态的全新AI模型ImageBind,包括视觉(图像和视频形式)、温度(红外图像)、文本、音频、深度信息、运动…

Meta提出全新参数高效微调方案,仅需一个RNN,Transformer模型GPU使用量减少84%!

近来,随着ChatGPT和GPT-4模型的不断发展,国内外互联网大厂纷纷推出了自家的大语言模型,例如谷歌的PaLM系列,MetaAI的LLaMA系列,还有国内公司和高校推出的一些大模型,例如百度的文心一言,清华的C…

计算机社团活动展望未来,2018社团展望未来演讲稿范文

2018社团展望未来演讲稿范文 我们社团展望未来,就必须坚持社团活动的创新。以下是小编要与大家分享的社团展望未来演讲稿范文,供大家参考! 社团展望未来演讲稿范文(一) 不知不觉中,我加入到社团部这个大家庭中已有半年的时间。这半年&#xf…

我的专业我做主计算机演讲稿,我的未来我做主演讲稿

我的未来我做主演讲稿 演讲稿的写法比较灵活,可以根据会议的内容、一件事事后的感想、需要等情况而有所区别。在日常生活和工作中,演讲稿应用范围愈来愈广泛,在写之前,可以先参考范文,以下是小编精心整理的我的未来我做…

计算机社团竞选优势6,关于社团竞选演讲稿汇总六篇

关于社团竞选演讲稿汇总六篇 使用正确的写作思路书写演讲稿会更加事半功倍。在我们平凡的日常里,演讲稿应用范围愈来愈广泛,大家知道演讲稿的格式吗?下面是小编为大家整理的社团竞选演讲稿6篇,供大家参考借鉴,希望可以…

Meta「分割一切」超进化版来了!检测、分割、生成一切,狂揽2k星

编|桃子 好困源|新智元 Meta的SAM「分割一切」模型刚发布,国内团队就进行了二创,打造了一个最强的零样本视觉应用Grounded-SAM,不仅能分割一切,还能检测一切,生成一切。 Meta的「分割一切」模型…

粤港澳大湾区Microsoft Build 2023 After Party - 广州站

在经历过阳春三月一大波GPT带来的AI浪潮之后,今年的Build大会尤其令人期待。本次Build大会发布了超过50个新技术,尤其是在ChatGPT中支持Bing插件来提供联机搜索、Windows Copilot加入微软Copilot大家庭,提出Copilot Stack来便于搭建您自己的C…

学会这八个技术,你离BAT大厂不远了

红人榜第七期来咯~本期干货:HTTP、本周最受关注的技术关键词TOP8,往下看吧~ 在如今这个时间和知识都是碎片化的时代,C站根据C1-C4认证的成长路径,进行知识细化整理,形成系统化的知识图谱。 小编根据C1认证的成长路径…

互联网大佬谁编程排第一?周鸿祎:我应该可以排到前三名

10月24日是程序员节。在这一天,360集团创始人周鸿祎在社交平台发布动态为程序员点赞。 周鸿祎表示,未来,世界是架构在软件之上,是数字化的世界,每一个程序员都承担着重要的使命,用技术为国家解决一些“卡脖…

这个 GitHub Trending 让我在腾讯会议中“换脸成”任何人!来唠唠如何上手

前言: GitHub 上又火了个项目,蛮有趣的:可以让你在 ZOOM 、腾讯会议等等软件中“换脸”成别人。自己 fork 到本地,调了一调。作者封装的已经相当好了,当然了,像我这种 CRUD 程序员 AI 小白 肯定是要调一天…