接口知识扫盲

**

接口知识扫盲

**
本文主要是从基础知识讲接口测试的相关内容,从接口,HTTP,协议几个方面叙述的。内容偏多,如有描述不正确,可以留言告知~~,谢谢
本文借鉴博主疯了的小蜗的文章,感谢博主好文。
https://www.cnblogs.com/insane-Mr-Li/p/9061572.html

**

1.什么是接口?**

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

2.软件架构模型?
服务端-客户端
b/s浏览器服务端模型,通过HTTP,websocket协议等进行通讯
c/s客户端服务端模型,APP,桌面软件等
内部系统对外部系统提供的接口(微信,QQ等)
子系统的服务对外部系统的接口

3.常见的接口有哪些?
web用户涉及到的平台管理功能,机构管理,用户管理,权限管理,终端管理,
其他功能涉及到:考勤管理,地图查询,图片上传,足迹跟踪,实时定位,通用报表
wap端用户涉及到商品信息,物流接口等
主要的接口分为:定位数据接口,地理信息数据接口,企业应用接口,其他数据接口

4.接口都有哪些类型?
接口一般分为两种:1.程序内部的接口 2.系统对外的接口
(1)系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
(2)程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,
比如bbs系统,有登录模块、发帖模块等等,
那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

5.接口的分类
接口的分类:1.webservice接口 2.http api接口 3.RPC,RMI接口
http接口:基于HTTP协议的开发接口
api接口:API应用程序编程接口,应用也包括网络应用程序
Webservice接口:Webservice是系统对外的接口,比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
RPC接口: 远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务
RMI:远程方法调用,RMI是针对于java语言的, RMI 允许您使用Java编写分布式对象

6.http和webservice(soap)接口区别
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,测试过程中通过工具进行调用和测试。
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。

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

6.1.什么是soap?
备注:SOAP是一个基于XML的协议交换消息,soap使用HTTP协议传输信息。HTTP是soap消息的最常见的传输工具。
传输的内容不一致。HTTP传输的内容是HTML文本,而SOAP协议传输的是SOAP的数据。
传输的方式:soap将信息进行XML的序列化后,再用http协议的方式,再打包进行传送,传送的方式还是tcp或者udp。Soap和HTTP是汽车,tcp和udp就公路。总之,soap信息可以通过http协议包装后通过tcp或udp传输。

6.2.为什么要学习web service?
大多数对外接口会实现web service方法而不是http方法,如果你不会,那就没有办法对接。

6.3.web service相对http (post/get)有好处吗?
1.接口中实现的方法和要求参数一目了然
2.不用担心大小写问题
3.不用担心中文urlencode问题
4.代码中不用多次声明认证(账号,密码)参数
5.传递参数可以为数组,对象等…

6.4.web service相对http(post/get)快吗?
由于要进行xml解析,速度可能会有所降低。

6.5.web service 可以被http(post/get)替代吗?
完全可以,而且现在的开放平台都是用的HTTP(post/get)实现的。
当你要调用的内容的时候,不涉及到跨域的问题,可以使用HttpService的方式。
当后台调用一个其它应用的服务,必须要用webService的方式来调用。

7.接口的本质及其工作原理是什么?

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

8.接口测试是什么?
接口测试是测试系统组件间接口的一种测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。

9.为什么要做接口测试?
1.提升测试效率,如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试能减少成本,特别是越底层发现bug,它的修复成本是越低的。
2.能检测安全缺陷、例如:检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。
3.能快速定位bug,前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。
4.如果接口测试实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。
5.现在很多系统前后端架构是分离的,从安全层面来说:
首先,如果只依赖进行限制,已经完全不能满足系统安全的要求,所以需要后端同步控制,so需要前后两端验证
第二,前后端传输,日志打印等信息是否加密传输也需要验证的,特别涉及到用户的隐私信息(帐号,密码,身份证银行卡等)

10.怎样做接口测试?
–由于我们项目前后端调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。
工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
–也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。

11.接口测试中应该注意哪些点?
目的:测试接口的正确性和稳定性;
原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;
核心:持续集成是接口测试的核心;

优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);
用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);
PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能;

问题1.后端接口都测试什么?
  --回答这个问题,我们可以从接口测试活动内容的角度下手,看一下面这张图,基本反应了当前我们项目后端接口测试的主要内容:
在这里插入图片描述
问题2、后端接口测试一遍 ,前端也测试一遍,是不是重复测试了?
  --回答这个问题,我们可以直接对比接口测试和app端测试活动的内容,如下图为app测试时需要覆盖或考虑内容:
  在这里插入图片描述

从上面这两张图对比可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各自特性或关注点不同需要进行特殊的测试,在此不做讨论。接下来我们针对以上三部分相同的内容再进行分析:
1、基本功能测试:
  由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。
2、边界分析测试:
  在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限,但接口测试就不存在这方面的限制,相对来说接口可以覆盖的范围更广,同样的,接口出现问题的概率也更高。
3、性能测试:
  这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。两种测试时的策略和方法都有很大区别,所以这部分内容是需要分开单独进行测试的,理论上来说这也是不同的部分。

综论:
1、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行有针对性的测试,才能确保整个产品的质量。
  2、接口测试可以关注于服务器逻辑验证,而UI测试可以关注于页面展示逻辑及界面前端与服务器集成验证
问题3、接口测试持续集成
对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:
  a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。
  b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等
  c) 问题定位:报错信息、日志更精准,方便问题复现与定位。
  d) 结果校验:加强自动化校验能力,如数据库信息校验。
  e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
  f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
问题4、接口测试质量评估标准
  a) 业务功能覆盖是否完整
  b) 业务规则覆盖是否完整
  c) 参数验证是否达到要求(边界、业务规则)
  d) 接口异常场景覆盖是否完整
  e) 接口覆盖率是否达到要求
  f) 代码覆盖率是否达到要求
  g) 性能指标是否满足要求
h) 安全指标是否满足要求
问题5.接口测试与自动化测试
自动化测试有web自动化和app自动化
自动化主要模拟人类的行为去测试
底层都是通过接口去和服务器交互
所以自动化接口测试就是底层模拟人的行为
问题6.接口测试与功能测试
功能测试主要覆盖系统功能是否满足业务逻辑,
功能测试包含一个或者多个接口测试
问题7.接口测试与性能测试
接口性能测试主要是对接口进行压力测试,稳定测试
问题8.接口测试与安全测试
接口测试系统安全性,模拟黑客攻击行为,主要有sql注入,xss,crsf

问题9.接口的认证有哪些?
用户名密码
Sessionid或者access_token
公钥私钥
其他

问题10.接口测试与加密算法
RSA,AES,DES,MD5,SHA1,SHA256,SHA512

问题11.接口测试测试说明
​1. 单一接口测试
单一接口测试主要测试的是输入输出值,一些具有业务意义的值​需要特别测试(例如,1和2分别代表两个测试场景,那么久不能够把他们看成是等价类,需要分开测试)
2. ​组合接口测试
组合​接口测试主要是通过组合多个单一接口,来测试一个业务场景
Example:测试购物网站的一个下单的功能,那么因为在下单之前还有一些流程,所以要测试一个场景。
测试:搜索商品 --> 选中商品 --> 添加进购物车 --> 提交订单 -->支付
​(提交订单时还涉及到地址的选取等)
[注:涉及到如果使用从cookie或者session在本例中的区别:如果使用cookie加入购物车,那么换一台电脑购物车里的商品就不存在了,但如果使用的是session,购物车里面的东西就一直存在,即:cookie是本机作用的,session不止于本机作用]
3. 结构检查
(1)​检查返回值的结构是否正确,如是json类型还是xml类型的数据
(2)字段名称是否正确等

问题12.接口测试重点?
接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试一般分为上层服务对下层服务的接口调用,服务之间的接口调用以及系统与系统之间的接口调用
上层服务对下层服务的接口调用:主要是controller层提供给view层的接口,涉及的是http协议接口
服务层之间的相互调用:主要是model层提供给controller层的接口
系统与系统之间的接口调用:如调用第三方登陆、支付接口

问题13.接口测试中有哪些要点?
1.检查接口请求是否正确,返回数据的正确性与格式 【 比如:数据库的增删改查,当post接口操作完成后,通过列表页的接口查看新的数据是否与刚才post的数据一致;或者当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求】
2.检查接口入参的默认值、参数类型、非空校验、以及边界值【 比如:接口有翻页时,页码与页数的异常值测试 】
3.检查接口的容错性,如传递数据的类型错误时是否可以处理
4.所有功能都需要考虑兼容老版本,列表页的接口需考虑排序值
5.检查接口的性能以及安全性

12.接口测试都要掌握哪些知识?
①了解系统及内部各个组件之间的业务逻辑交互;
②了解接口的I/O(input/output:输入输出);
③了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等;
④常用的接口测试工具,比如:jmeter、loadrunner、postman、soapUI等;
⑤数据库基础操作命令(检查数据入库、提取测试数据等);
⑥常见的字符类型,比如:char、varchar、text、int、float、datatime、string等;

13.协议的基本内容
问题1.常见协议有哪些?
常见的协议有:TCP/IP协议,HTTP/HTTPS协议,websocket协议,json,xml,webservice协议,hession,dubbo,xmpp协议等
网络传输有文本和二进制
文本传输方式:HTTP,HTTPS,webserive,json
二进制传输方式:thrift,protobrf,hession

问题2.什么是TCP/IP协议?
TCP(TransmissionControlProtocol,传输控制协议)是一种面向连接的,可靠的, 基于字节流传输的网络通信协议。最基本的协议。Internet国际互联网网络的基础,有网络层的IP协议和传输层TCP组成。tcp具有端口号的概念,用来标识同一个地址上的不同应用。

IP(Internet Protocol,网际协议)是网间层的主要协议,任务是在源地址和和目的地址之间传输数据。IP 协议只是尽最大努力来传输数据包,并不保证所有的包都可以传输 到目的地,也不保证数据包的顺序和唯一。

UDP(UserDatagramProtocol,用户数据报协议)是一个面向数据报的传输层协议。UDP 的传输是不可靠的,简单的说就是发了不管,发送者不会知道目标地址的数据通路是否发生拥塞,也不知道数据是否到达,是否完整以及是否还是原来的次序。
它同 TCP 一样有用来标识本地应用的端口号。所以应用UDP 的应用,都能够容忍一定数量的错误和丢包,但是对传输性能敏感的,比如流媒体、DNS 等。

问题3.TCP/IP协议的四个概念层
 TCP/IP协议被组织成四个概念层:网络接口层,网络层,传输层
 第一层:网络接口层:包括用于协作IP数据在已有网络介质上传输的协议,定义像ARP地址解析协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
 第二层:网络层。本层包含IP协议、RIP协议(路由信息协议)负责数据的包装、寻址和路由,同时还包含CMP(网间控制报文协议)用来提供网络诊断信息。
 第三层:传输层:它提供两种端到端的通信服务。其中TCP协议提供可靠的数据流运输服务,UDP协议提供不可靠的用户数据报服务。
第四层:应用层:因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等
RIP协议(Routing Information Protocol,路由信息协议)
ICMP协议(Internet Control Message Protocol,网络控制报文协议)
ARP协议(Address Resolution Protocol,地址解析协议)

问题4.什么是HTTP协议?
HTTP 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。HTTP协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范,是一个应用层协议,默认端口号是 80。其传输被包装成TCP协议传输,可以用于socket实现HTTP。Socket是传输层协议的一种编程api,也可以是tcp,upd。

问题5。HTTP协议在客户端和服务端如何请求?
基于HTTP协议的client与server请求包含4个过程:
1.建立TCP套接字连接;
2.发送HTTP请求报文;
3.接收HTTP应答/响应报文;
4.关闭TCP套接字连接。

问题6.HTTP的请求内容有哪些?
HTTP 请求分为三个部分:状态行、请求头、消息主体
HTTP 定义了与服务器交互的不同方法,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有: GET、 POST
一个URL地址,它用于描述一个网络上的资源,而 HTTP 中的GET,POST,PUT,DELETE就对应着对这个资源的查,增,改,删4个操作。

问题7.get和post请求有什么区别
GET - 从指定的资源请求数据。POST - 向指定的资源提交要被处理的数据
在这里插入图片描述

问题8.HTTP有哪些状态码
Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求

问题9.webservice接口怎么测试
它不需要你在拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就可以看到这个webservice里面的所有接口,也有报文,直接填入参数调用,看返回结果就可以了。
天气预报wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl

问题10.cookie与session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为session
其他信息如果需要保留,可以放在cookie中

问题9.常见的7层网络模型
在这里插入图片描述
14.如何学这些技能?
①系统间业务交互逻辑:通过需求文档、流程图、思维导图、沟通等很多渠道和方式;
②协议:推荐《图解http》这本书,内容生动,相对算是入门级的书籍,其他的还有《图解tcp、IP》等;
③接口测试工具:百度这些工具,然后你会发现,好多的教学博客、相关问题解决方案、以及一些基于工具的书籍,当然,选择合适的书很重要;
④数据库操作命令:学习网站(W3C、菜鸟教程)、教学博客,以及一些数据库相关书籍,入门级推荐:《mysql必知必会》、《oracle PL/SQL必知必会》等
⑤字符类型:还是百度,有句话这么说:内事不决问百度,外事不决问Google。。。

15. 如何获取接口相关信息?
一般的企业,都会由开发或者对应的技术负责人员编写接口文档,里面会注明接口相关的地址、参数类型、方法、输入、输出等信息,如果没有,想办法获取。。。
接口文档八要素:
封面:封面最好是本公司规定的封面,有logo,内容标题,版本号,公司名称,文档产生日期;
修订历史:表格形式较好些,包括:版本、修订说明、修订日期、修订人、审核时间审核人等;
接口信息:接口调用方式,常用的GET/POST方式,接口地址;
功能描述:简洁清晰的描述接口功能,比如:接口获取的信息不包括哪些;
接口参数说明:每个参数都要和实际中调用的一样,包括大小写;参数的含义言简意赅的说明,格式,是string 还是int 还是long等格式;
说明部分,说明参数值是需要哪里提供,并详细说明参数怎么生成的,例如时间戳,是哪个时间段的,参数是否必填,一些参数是必须要有的,有些是可选参数等;
返回值说明:
①最好有一个模板返回值,并说明每个返回参数的意义;
②提供一个真实的调用接口,真实的返回值;
调用限制,安全方面:
加密方式,或者自己公司一个特殊的加密过程,只要双方采用一致的加密算法就可以调用接口,保证了接口调用的安全性,比如常见的md5;
文档维护:文档在维护的时候,如有修改一定要写上修改日期,修改人,对大的修改要有版本号变更;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值