主要内容如下:
一、接口测试的相关基础知识
什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间、以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
软件架构模型:
- 服务器-客户端:
- b/s:浏览器服务器模型。通过http协议、websocket等协议进行通讯。
- c/s:客户端服务器模型。客户端:app、桌面软件等。
- 内部系统对外部系统提供的接口
- 子系统的服务对外提供的接口系
接口测试的分类:
- 模块之间的接口:比如订单模块下单时,需要去用户资金模块查询余额等。
- 系统对外部系统提供的接口:比如微信、微博的API,提供出来给外部其他应用使用的接口
- 内部子系统的服务之间的接口:
接口测试的场景:
1、手机app:通过http、websevice等通信,使用json、xml等数据格式进行传输和描述数据
2、客户端软件:
3、web网站API:微信接口、新浪微博接口、快递查询接口等
4、公司内部系统API:订单接口需要调用用户资金接口查询具体余额等
常见协议:
1、tcp/ip协议
2、http/https、websocket、json、xml
3、webservice(soap/wsdl)、restservice、xmpp、自定义协议
4、hession、dubbo
网络传输:
文本:http、https、webservice、json
二进制:thrift、protobuf、hession
接下来是对以上的各种协议的详细资料查询:
1、IP:IP实现两个基本功能:寻址和分段,IP使用四个关键技术提供服务:服务类型、生存时间、选项和报头校验码。IP不提供可靠的传输服务,对数据没有差错控制,不提供重发和流量控制。如果出错,可以通过ICMP报告,ICMP在IP模块中实现。
2、TCP:TCP位于IP层之上,TCP将数据包传给IP层,为了保证数据的可靠传输,会给每一个包一个序号,这个序号保证传送到接收端实体的包的按序接收。这个过程中,接收端实体会给出一个确认ACK,如果传送端在合理往返时延(RTT)内没有接收到确认,那么该包将会被重传。
IP协议是能够找到主机(锁定一台物理主机,对应着一张网卡,外界发来的数据包网卡都会接收),然后TCP协议还增加了端口,端口的主要目的是什么呢?比如说一台主机上会有N个应用程序在跑,那么外界发来的所有数据,总不能全部发给所有程序吧,那么就约定了一个端口,比如说A程序的端口就是1,B程序的端口就是2,然后网卡在和具体的应用程序对接数据的时候,只要根据这个端口号就能将属于这个应用程序的数据转送和传达出去。至于端口的唯一性,就是考虑到安全性,否则A的数据B也能接收到。
3、OSI 7层网络协议:
从下到上分别是------物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
然后从上往下各层:
应用层------为特定类型的网络应用提供访问手段,在此层的协议主要有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
表示层------主要用于处理两个通信系统中交换信息的表示方式。包括数据格式交换、数据的加密与解密、数据压缩与终端类型的转换。
会话层------在两个节点之间建立端连接。为端系统的应用程序之间提供对话控制机制。会话层管理登录和注销过程。会话层主要功能是管理和协调不同主机上各种进程之间的通信(对话),即负责建立、管理和终止应用程序之间的会话
传输层------常规数据递送,面向连接或者无连接的。在此层的协议有:TCP、UDP
网络层------IP层协议,寻址(建立两个节点之间的连接)
数据链路层------在此层将数据分帧,并处理流控制。屏蔽物理层,为网络层提供一个数据链路的连接,在一条有可能出差错的物理连接上,进行几乎无差错的数据传输(差错控制)。本层指定拓扑结构并提供硬件寻址。常用设备有网卡、网桥、交换机
物理层------处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。
数据发送时,从第7层到第1层;接收时,从第1层到第7层。
4、http和https的区别:
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
(1)、https协议需要到ca申请证书,一般免费证书很少,需要交费。
(2)、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
(3)、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
json格式:
比如以微博开放平台为例,其中API接口中的http://open.weibo.com/wiki/2/statuses/public_timeline,返回最新的公共微博的这个接口,json的格式在下面描述的很清晰。
二、接口测试与其他测试的区别与联系:
接口测试与自动化测试:
自动化测试如app自动化测试、web自动化测试,都是模拟人类的行为进行测试,底层都是通过接口和服务器进行交互。接口测试可以在底层模拟人类的行为进行测试。
接口测试与功能测试:
功能测试用于测试系统功能是否满足业务逻辑,功能测试包含一个或多个接口测试;接口测试能涵盖一定的功能测试。
接口测试与性能测试:
自动化测试的模拟行为,测试效率较慢;接口测试可以直接和服务器进行快速交互,对接口进行性能、压力测试。
接口测试与安全性测试:
功能测试能在一定程序上测试安全性,接口测试可以大范围测试系统安全性;
如:
- 方便测试非正常输入值(如果只是功能测试,可能客户端直接对输入长度做了限制,根本就无法测试到接口对不同长度的字符的处理)
- sql注入(这个需要增加一个实例)
- xss(也需要一个实例)
- csrf(也需要一个实例)
三、接口测试的作用:
1、提升测试效率:底层的1个bug能引发上层的8个bug
2、能快速定位bug:直接根据哪个接口出问题了就能找到问题根源
3、安全缺陷
4、性能缺陷
四、接口测试的工具:
1、jmeter(jmeter的使用以及具体的例子会在下一节更新出来)
2、soapui(会在jmeter之后的一节更新出来)
3、其他:loadrunner
4、可以通过java编写代码进行接口测试:httpclient
五、接口的认证:
1、用户名密码
2、sesssionid或者access_token(具体如何获取以及保存,并用于后面的测试,需要给出具体的例子)
3、公钥私钥
4、其他
接口测试与加密算法:
RSA、AES、DES、MD5、SHA1、SHA256、SHA512
2023最新Jmeter接口测试从入门到精通(全套项目实战教程)