接口测试

HTTp

http运作方式
编辑
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。 [6]
图3 http运作方式的一种
图3 http运作方式的一种
HTTP是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。
当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介有三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用。
报文格式
编辑
HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下: [6]
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。
应答报文格式如下:
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体
状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头,响应头和实体头方面的具体内容可以参照相关文件。
状态消息
编辑
100 Continue

服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求。
101 Switching Protocols

服务器转换协议:服务器将遵从客户的请求转换到另外一种协议。
2xx:成功
消息

描述
200 OK

请求成功(其后是对GET和POST请求的应答文档。)
201 Created

请求被创建完成,同时新的资源被创建。
202 Accepted

供处理的请求已被接受,但是处理未完成。
203 Non-authoritative Information

文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝。
204 No Content

没有新文档。浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 Reset Content

没有新文档。但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容。
206 Partial Content

客户发送了一个带有Range头的GET请求,服务器完成了它。
3xx:重定向
消息

描述
300 Multiple Choices

多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
301 Moved Permanently

所请求的页面已经转移至新的url。
302 Found

所请求的页面已经临时转移至新的url。
303 See Other

所请求的页面可在别的url下被找到。
304 Not Modified

未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 Use Proxy

客户请求的文档应该通过Location头所指明的代理服务器提取。
306 Unused

此代码被用于前一版本。目前已不再使用,但是代码依然被保留。
307 Temporary Redirect

被请求的页面已经临时移至新的url。
4xx:客户端错误
消息

描述
400 Bad Request

服务器未能理解请求。
401 Unauthorized

被请求的页面需要用户名和密码。
401.1

登录失败。
401.2

服务器配置导致登录失败。
401.3

由于 ACL 对资源的限制而未获得授权。
401.4

筛选器授权失败。
401.5

ISAPI/CGI 应用程序授权失败。
401.7

访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
402 Payment Required

此代码尚无法使用。
403 Forbidden

对被请求页面的访问被禁止。
403.1

执行访问被禁止。
403.2

读访问被禁止。
403.3

写访问被禁止。
403.4

要求 SSL。
403.5

要求 SSL 128。
403.6

IP 地址被拒绝。
403.7

要求客户端证书。
403.8

站点访问被拒绝。
403.9

用户数过多。
403.10

配置无效。
403.11

密码更改。
403.12

拒绝访问映射表。
403.13

客户端证书被吊销。
403.14

拒绝目录列表。
403.15

超出客户端访问许可。
403.16

客户端证书不受信任或无效。
403.17

客户端证书已过期或尚未生效。
403.18

在当前的应用程序池中不能执行所请求的 URL。这个错误代码为 IIS 6.0 所专用。
403.19

不能为这个应用程序池中的客户端执行 CGI。这个错误代码为 IIS 6.0 所专用。
403.20

Passport 登录失败。这个错误代码为 IIS 6.0 所专用。
404 Not Found

服务器无法找到被请求的页面。
404.0

(无)–没有找到文件或目录。
404.1

无法在所请求的端口上访问 Web 站点。
404.2

Web 服务扩展锁定策略阻止本请求。
404.3

MIME 映射策略阻止本请求。
405 Method Not Allowed

请求中指定的方法不被允许。
406 Not Acceptable

服务器生成的响应无法被客户端所接受。
407 Proxy Authentication Required

用户必须首先使用代理服务器进行验证,这样请求才会被处理。
408 Request Timeout

请求超出了服务器的等待时间。
409 Conflict

由于冲突,请求无法被完成。
410 Gone

被请求的页面不可用。
411 Length Required

“Content-Length” 未被定义。如果无此内容,服务器不会接受请求。
412 Precondition Failed

请求中的前提条件被服务器评估为失败。
413 Request Entity Too Large

由于所请求的实体的太大,服务器不会接受请求。
414 Request-url Too Long

由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况。
415 Unsupported Media Type

由于媒介类型不被支持,服务器不会接受请求。
416 Requested Range Not Satisfiable

服务器不能满足客户在请求中指定的Range头。
417 Expectation Failed

执行失败。
423

锁定的错误。
5xx:服务器错误
消息

描述
500 Internal Server Error

请求未完成。服务器遇到不可预知的情况。
500.12

应用程序正忙于在 Web 服务器上重新启动。
500.13

Web 服务器太忙。
500.15

不允许直接请求 Global.asa。
500.16

UNC 授权凭据不正确。这个错误代码为 IIS 6.0 所专用。
500.18

URL 授权存储不能打开。这个错误代码为 IIS 6.0 所专用。
500.100

内部 ASP 错误。
501 Not Implemented

请求未完成。服务器不支持所请求的功能。
502 Bad Gateway

请求未完成。服务器从上游服务器收到一个无效的响应。
502.1

CGI 应用程序超时。 ·
502.2

CGI 应用程序出错。
503 Service Unavailable

请求未完成。服务器临时过载或宕机。
504 Gateway Timeout

网关超时。
505 HTTP Version Not Supported

服务器不支持请求中指明的HTTP版本。

2.接口测试

1.什么是接口?

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
2.接口都有哪些类型?

接口一般分为两种:1.程序内部的接口 2.系统对外的接口

系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。

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

接口的分类:1.webservice接口 2.http api接口

webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。

http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。)
3.接口的本质及其工作原理是什么?

接口你可以简单的理解他就是URL,工作原理就会说URL通过get或者post请求像服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。
4.什么是接口测试?

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

–百度百科

简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
5.问什么要做接口测试?

1.越底层发现bug,它的修复成本是越低的。

2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

6. 现在很多系统前后端架构是分离的,从安全层面来说:

    (1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

    (2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

6.怎样做接口测试?

–由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

–也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
7.接口测测试点是什么?

目的:测试接口的正确性和稳定性;

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;

核心:持续集成是接口测试的核心;

优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);

用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);

PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值