前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试基础知识

接口测试基础知识

作者头像
清菡
发布2020-12-02 16:41:14
9950
发布2020-12-02 16:41:14
举报
文章被收录于专栏:清菡软件测试清菡软件测试

1.接口的概念

接口的分类:广泛的分为内部的和外部的。

外部接口:例如公司的项目涉及到支付这块,微信支付,支付宝支付,银联支付,不会是自己公司开发的接口,因为用户的数据在阿里云和腾讯那边,想动支付宝或者是微信中用户钱包里面的钱,必须要通过他们,所以直接调用他们的接口。这个就是外部接口。

内部接口:公司自己研发的,自己可以调用的,不需要通过第三方。

接口分为不同的类型:

Http,Webservice,Sockect,Dubbo。

之所以分为不同类型的接口,是因为它们实现的协议不一样。

如果我采用的是TCP,它就必须采用TCP,不然语言不通。

接口包括:有个地址,知道它是什么协议,发送什么参数。

接口之间没有不同,只是协议不同而已。

Web接口一般是Http协议。

Webservice协议也是一种Http协议,不过它进行了一种封装,只能发送Post类型的Http请求。

接口的本质:接口和接口不同就是它们的通信协议不同。

测试接口的本质就是测试类里面的函数。

Http协议中最常见的接口:Get,Post,Delete,Put,Head,Option。

用法都一样:选择方式,然后传参。

如果工作中遇到问题,可以问开发到底采用的是哪种请求方式。

抓包也可以看到是哪种请求方式。

抓包工具有Charles,Fiddler,F12

2.接口测试工具

两种方式讲解,F12是最简单的那一种。

Fiddler工作原理:

Fiddler相当于一个中转站。我发起请求给Fiddler,Fiddler发给服务器,拿到响应结果后,服务器直接发给Fiddler,Fiddler再发给浏览器。这样的一个过程。

通过浏览器发起一个请求,在计算机里面我们肉眼可见的就是一个个的数据包。我们发送和接收的数据全部都可以抓到。但是不是数据包的形式显示,会分不同的部分,网络中不可见的地方如网络层或者网络经过光纤去传的时候,是种010101这样的比特流,根据这种010101去传数据,除非学过《机电原理》,不然看不懂。

我们只需要知道抓到包之后,到了我们手里面是什么样的。

3.Http请求

1.一个Http请求分为两部分:Http Request 和Http Response

从客户端(Fiddler)发给服务器的叫做Http Request

服务端返给客户端(Fiddler)的叫做Http Response

2.Http Request里面两个重要的东西:

请求地址: 如果Fiddler想要发消息给服务器,肯定得先知道地址。

请求方法: 想进去这个地址的门,必须得知道是发的Get请求、Post请求还是Delete请求。(例如小明去小红家做客,想进入,必须知道暗号)

3.Http协议/版本:按F12可以自己查看。例如,版本:HTTP/2.0 (例如小明去小红家做客,想进入,必须知道暗号,还得告诉我是哪个班级得,不然不接待)

4.请求头:在发送得时候,在这个请求里面附带得一些信息。叫Request Headers

Headers这种类型的名词不可乱做变量。

5.请求正文:就是我们所说得参数。

6.向服务器发请求,如果有参数,那么就一定要带参数,如果没有参数,就不用带参数。

7.有点很重要: 后期在发送请求得时候,它说必须从浏览器发起请求,不能从Jemeter,不能从Python里面发起请求。必须只能从正经的谷歌,火狐发起请求,它才接受。那么就需要伪装下,假装自己是个浏览器,加下User-Agent。

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0

Mozilla/5.0 是这个浏览器的内核。

Firefox/67.0是浏览器版本。

User-Agent也就是个代理,意思是这个请求来自于哪个客户端。

如果是在做Python的时候,它会显示Http Request或者是Python Request,它不会显示浏览器。假装我是个浏览器就在头部里面加个User-Agent这样的东西。

8.请求头信息是有用的(性能测试,编码解码用的到),可以了解下。

为你详细解读HTTP请求头的具体含意:

链接:https://jingyan.baidu.com/article/375c8e19770f0e25f2a22900.html

8.使用Fiddler做抓包分析:

Fiddler抓包分析链接:https://www.cnblogs.com/coky/p/6704277.html

9.打开Fiddler设置过滤地址:

Host 域名

URL 就是除了域名和端口以外的,剩下那部分。

Statistics 统计您的请求时间,比如说什么时候发起请求,什么时候完成请求,响应的时间需要多久,发了多少个数据包。如果不是做网络测试的,这个可以不用关注。

Inspectors:分为上下两部分。第一部分是Request Headers,第二部分是Response Body

Raw 原始发送的一些信息。

按F12看到的响应头:

看响应信息,点击第二部分的TextView。看到几种不同格式的响应信息:

4.Get请求:

Get请求会把请求参数和地址拼接在一块。但是也可以用其它方式写,不在URL里面传的。

WebForms可以看到Get请求的参数。

例如:http://xxx.xx.xx.xx:8080/login?username=qinghan&pwd=123456

请求地址 问号之后是请求参数。

一般情况下是通过问号把地址和请求参数拼接起来,不同参数间用&符号拼接起来。

有些Get请求是没有参数的,根据具体需求来。

username=qinghan可以理解为一个键值对,前面是Key,后面是Value。

Key=Value,Key=Value,不同的值之间用&符号拼接。

Get请求:https://www.fiddler2.com/UpdateCheck.aspx?isBeta=False

5.Post请求

Post请求,数据和请求地址是分开的。也就是说看不到它的参数。在WebForms可以看到。

请求里面记住这几点:地址,请求方式,协议版本,请求参数,请求头。

1.请求头里的参数是每次请求必带的吗?

看接口文档里有没有写这些必须放在请求头里面的,如果有,那就必须放在请求头里面。接口文档里的。

Header就是要放在请求头里的东西。Body就是你要发送的请求参数。

2.Response里面有2个重要的东西:

1.状态码:标记我这个请求发送到服务器是成功了还是失败了。是被允许了还是被拒绝了。

200 请求成功。表示请求有发送到服务器,服务器有接收到我的请求,但是如果我发送了一个登录请求,它返回了一个200,请问这个登录成功了没有?

并不代表登录成功了,只能说明服务器有响应。(输入正确的用户名和错误的密码,服务器也返回200。意思是你的请求我接收到了,但是不好意思的你的密码错误,虽然你的请求我接收到了,但是你还是登录失败了)。200只是一个状态码,表示你的请求是否有到达服务器。服务器接收到你的请求之后,对你的请求做的一个标记。

200 只是服务器给的一个响应,具体的响应内容要看响应正文,正文里面是OK,就是OK。正文里面是失败,就是失败。

响应头和请求头是对应的。点击Hearders看下(页面性能,页面测试需要看),主要包含这个页面的节码是什么,这个页面是什么格式的,这个页面什么时候过期,这个页面有没有什么页面是来自缓存的。这个页面的超时时间是来自什么时候,是私有的还是非私有的,都会在这里面体现。

3.一个http请求信息或者回应信息由哪些组成?

请求:请求头+一个报文

响应:响应头+一个报文

这是http消息实体的一个封装。

比较重要:在Request里知道一个User进的是什么,请求参数是什么,Get,Post是什么,协议是什么。

4.响应里面重要的是状态码。

302 这个地址本来指向A页面,但是页面暂时没有,所以做了个临时重定向。万一有人访问了这个A页面,A页面不在了,就给找到B页面去。

304 未修改。

CDN是个服务器。一种内容,静态文件的处理机制,CDN就是内容分发网络。一般它会做静态的服务器,存静态的资源,存Js、css jpj等这种资源,一般来说很少会改动。不会存到数据库里面去,会存在文件夹里面,一般放在静态资源里面。例如淘宝,京东那么多图片存在CDN(静态服务器)上,内容分发网络上面。一般访问这些资源,它会下载到浏览器,然后缓存,缓存后有一个过期时间,比如这个缓存在本地可以存一周。当我一旦访问了CND里的这些静态资源之后,它会返回304。304的意思是你访问的这些静态资源没有被修改,所以不需要再到服务器里面去下载,你用缓存的就行了。

一般来说放在静态资源里,如果要改的话,不需要去改代码,把静态资源里面换一下,保证名字一样就可以了。

简单来说,一个浏览器里面有图片这些东西,一般来说304也是HTTP常见的状态码,只有在这里出现。例如登录按钮,图片是不经常变的。我把这些图片下载到浏览器里面,每次我去请求的时候,都会去服务器把这些请求拉下来。只要静态服务器中的内容不变,那我就每次用我缓存里的这些图片就可以了,不需要再到服务器里面再拉资源。

401 没有授权。和403是一样的。

403 你没有权限访问这个路径。

404 资源找不到。地址错了或页面不存在了。

500 内部服务器错误。

504 超时。

502 网端错误。

以5开头的错误,可以去找开发,一般是内部代码出了问题。肯定不是客户端,也不是网络出了问题。是内部服务器上的问题。

面试记住常用的几个状态码。

响应正文一般来说有这几种常见的格式:Html,Xml,Json等,比较常见的有Html和Json

Json就是Python里面的字典,格式一样的。

Html就是标签开头的。

5.Cookie:

Cookie是Cookie,缓存是缓存,缓存包含Cookie。Cookie是缓存的一个子集。

超市的会员卡相当于Cookie,几月几号消费了什么,花了多少钱,喜欢哪个牌子的牛奶都清清楚楚。

我们的操作习惯或者行为都在这个会员卡里。服务器通过Cookie知道你是谁。Http请求是无状态的,无任何状态。

标记。如果发一个Http请求,又发一个Http请求,服务器并不认识上一个请求和这个请求都是同一个人发的。

要想让服务器识别这两个请求是同一个服务器发过去的,Http请求就得带上它的会员卡cookie。

缓存里面除了Cookie,还有图片,Css,Js等这些。

清空了缓存不代表清空了Cookie,清空了Cookie不代表清空了缓存。

6.Session:

服务器有超时机制。在网页或者接口,它会有这个超时的时间,Session叫做会话时间。

有时操作网页,过会不操作了,提示请重新登录。这个是由Session来控制的。

它会有个时间戳,还有个Session id来控制。

看具体网站的设置,有的Session里面是不超时的,有的是30分钟超时。每个公司定的规矩是不一样,默认是30分钟,在做测试的时候也得去测下这个时间戳。也就是测试这个网页什么时候过期。在这一段时间内,你跟服务器可以发起任何请求,不需要重新登录,但是超过30分钟,在30分钟内未进行任何操作,30分钟后想重新操作,那么就得重新登录。提示已超时请重新登录。这个就叫做会话。

客户端就是我的浏览器,服务器就是发起请求的服务器(项目,软件,应用)。服务器说了算比较合适,服务器说了算,可以永远都不过期,别人的应用别人做主。Cookie是在客户端,Session是在服务器端。每次请求得时候,服务器会给你发给Session id,那么你每次请求得时候都需要把Session id带过去,告诉服务器,这是我的Session id,我还在会话期内,并没有超时。

前提是公司得项目有做这个超时判断。

Session id每次都是变化得,它是个变化得值,而且是由服务器提供得。所以每次都得拿过来再传给服务器,这个是我刚刚得Session id。它每次请求都会重新发一个。

7.鉴权:

token一般来说都有个这样得token关键字,比如某某token。

它不一定叫token名字,但是它都会带一个token,这是个令牌。代表你有这个权限访问这个解面并不是非法访问。

因为这个token也是服务器发的。

例如不在网页点击登录进入,直接进入登录后得界面。这就是绕过前端得非法操作。不需要通过前端,拿到接口直接进行操作。

防止非法操作,就需要token。每个页面都有个这样得token,把页面得token拿到,下一个请求它就会校验,有没有token,是来自哪个页面,会不会是绕过前端来的。如果没有token,或者token不对,就会拒绝你的请求。

token是由服务器提供得,每次都会变化。所以,想绕过前端去做这个事情就不行,它会要这个token。如果你知道token在哪,可以用小技巧把token获取到,这也可以的。防止你跳过页面,直接访问它的接口,它需要你带一个来自该页面的,或者来自前一个页面的token,才能证明是正常的。

8.授权:

在访问第三方接口的时候,会有一个Key。

如果需要调用第三方接口或者是自己的内部接口,也会做这样的一个限制,想访问,就需要密码。

看你有没有权限访问,我有没有授权访问。如果是第三方接口,它有的时候是,你必须要带这个密钥过去,不带就请求不了。

6.最简单的授权:

如果遇到那种签名的,要通过代码签名,要把代码拿到手,了解它的签名规则是什么,拿到签名再往后面做。非常复杂。原理都是一样,只是实现的过程会复杂一些。

JMeter输入IP,路径,有端口号就放端口号,没有端口号就不用放。

输入接口文档提供的参数。选择察看结果树,点击Run,查看响应数据,提示没有Key,没有授权。

把Key的值填进去,选择察看结果树,点击Run,查看响应数据,就有结果出来了。


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

本文分享自 清菡软件测试 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.接口的概念
  • 2.接口测试工具
  • 3.Http请求
  • 4.Get请求:
  • 5.Post请求
  • 6.最简单的授权:
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档