一、接口的定义:
1、什么是接口测试?
接口都统称为api,程序与程序之间的对接、交接,交互;接口测试是测试系统组件间接口的一种测试;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点;接口测试主要是为了检查不同组件(模块)之间数据的一个传递是否正确,同时也要去测试系统与第三方系统的一个测试,支付宝,微信,银行
2、为什么做接口测试?
A.当界面功能没有出来时,测试人员可以做接口测试,一是为了节省时间,二是测试一些页面功能测试不到的场景
B、系统之间是通过接口相互传输数据,如果接口都阻塞,系统间的接口调用和对业务的处理肯定会受到很大影响
3、如何做接口测试?
项目前后台调用主要是基于http协议的接口,所以测试接口主要通过工具或者代码模拟http请求发送和接收
4、公司具体情况?
在企业中前端和后端都是独立开发的,一个项目由前端和后端组成,最终要进行前后端的接口联调,来确保后端的数据能正常的在前端页面展示,所有我们要进行接口测试,以确保接口功能可以正常的传输数据
a.项目周期长的,接口多的,一般是在页面没有做出来的时候,需要我们提前去测试接口
b.有些公司是页面做出来了,然后功能测试和接口测试一起去做
c.接口先由开发进行一个测试(开发自测),然后再测试去进行一个验证
二、网络基础管理
网络概念
IT领域中、网络是信息传输、交换、接收、共享的虚拟平台,通过它把各个点、线、面的信息联系在一起,从而实现资源共享。
网络的四要素
有独立功能的计算机
有通讯设备和通讯线路
有网络软件支持
有实现资源共享
第一代:远程终端连接(20世纪60年代初)
例如:xshell连接Linux服务器
第二代:局域网(20世纪60年代中期)
例如:校园网
第三代:广域网(Internet--20世纪80年代)
列如:跨城市,跨洲
第四代:信息高速阶段(可是电话,网上电视点播,千兆以太网等)
服务模式
ISP(internet service provider):互联网业务提供商。如:电信、移动、联通
ICP(Internet content provider):互联网内容提供商。 如:腾讯、新浪、抖音
网络分类
1、按覆盖范围分:局域网 城域网 广域网
2、按括扑结构分:总线型,环型,星型,网状型
3、按传输介质分:有线,无线,光纤
网络协议(TCP/IP)
1、什么是tcp/ip协议?
什么是tcp/ip协议,就要知道为什么有这个协议。
中国人和中国人说话,要遵循汉语的语法结构,使用汉语的发音。当我们和外国人交流时,就要使用外国人的语言,就要适应外国的语法机制和发音。其实这个就是一种协议,只不过我们称为语言。
计算机在这方面更为直观,两台机器之间该如何去通信,就需要指定各种各样的协议。例如:文件传输适用TCP协议,域名解析适用DNS协议。有了这些协议的存在,各种数据按照规则传输,计算机之间才能进行通信。
TCP/IP协议是一个协议集合。其中TCP/IP协议中有一个重要的分层概念,TCP/IP协议按照层次分为五层。应用层、传输层、网络层、数据链路层、物理层。
为什么要分层?就如同工作中的责任具体划分到个人。一个层只负责一个层次的问题,如果出了问题和其他层次无关,只要维护这个层次就好了。
2、什么是OSI?
osi参考模型(OSI/RM)全称是开放系统互连参考模型,它是由国际标准化组织提出的一个网络系统互连参考模型;
3、OSI和TCP/IP对应的关系
4、OSI七层参考模型
应用层
功能:文件传输、电子邮件发送、文件服务、虚拟终端
表示层
功能:数据格式化、代码转换、数据加密
会话层
功能:解除和建立与别的接点的联系
传输层
功能:提供端对端的接口
TCP/UDP 需要掌握
QQ登录保持在线功能用到时TCP
QQ聊天消息通信采用的是UDP协议
网络层
功能:为数据包选择路由
数据链路层
功能:传输有地址的帧以及错误检测功能
物理层
功能:以二进制数据形式在物理媒体上传输数据
5、TCP/IP五层参考模型
应用层
传输层
网络层
数据链路层
物理层
常见的协议以及端口号
HTTP:超文本传输协议 80
1、http协议,是用于从万维网(www:World Wide Web)服务器传输超文本到本地浏览器的传输协议
2、http协议是居于TCP/IP通信协议俩传递数据(HTML文件、图片文件、查询的结果等)因为每一层都为其上一层提供服务、并为其上一层提供一个访问接口或者界面
3、http协议是一个属于应用层的面向对象的协议
4、http协议工作于客户端-服务端架构上;浏览器作为http客户端通过URL向http服务端(web服务器)发送所有的请求;web服务器根据接收到的请求后,向客户端发送响应信息
5、访问一个页面,各种协议起到的作用
客户端输入url回车,DNS域名解析得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议建立连接。http是输入TCP/IP模型中的应用层协议,所以通信的过程其实就是对应数据的入栈和出栈
HTTPS :超文本安全传输协议 443
1、一般在web服务主要存在http和HTTPS两种通信方式,http默认采用80作为通讯端口,对传输内容采用不加密的方式进行传输;https默认使用443端口,在HTTPS中数据采用加密的方式进行传输。需要用SSL/TLS对数据进行加密和解密
2、HTTPS协议
https=http+SSL/TLS协议;https是在http的基础上加上SSL和TLS保护壳
对称加密:对称加密又叫做私钥加密
A、常见的对称加密算法有:DES,3DES,TDEA,blowfish、RC5和IDEA
B、加密过程:明文+加密算法+私钥=》密文
C、解密的过程:密文+加密算法+私钥=》明文
非对称加密:我们也叫做公钥加密
常见的有:RSA,D-H,ECC,Rabin
被公钥加密过的密文只能被私钥解密,
加密和解密过程:
明文+加密算法+公钥=》密文
密文+解密算法+私钥=》明文
被私钥加密过的密文只能被公钥解密
过程如下:
明文+加密算法+私钥=》密文
密文+解密算法+公钥=》明文
tcp:传输控制协议
1、是一种面向连接的、可靠的、基于字节流的传输层通信协议
电脑是通过增删改查这个四种方式与服务器进行交互。
它所有的请都是通过增删改查来连接的,因为http协议规定了与服务器打交道的方式,其中有一个TCP传输层,让电脑和服务器建立连接的,
它是采用三次握手确认建立一个连接,三次握手是指建立一个TCP连接时,需要客户端和服务端总共发送3个包来确认连接的建立;
四次挥手,终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
telnet:远程登入协议 23
FTP:文件传输协议 21
SMPT:邮件传输协议 25
DNS:域名解析协议 53
POP3:邮件服务器 110
UDP:用户数据报协议
ARP:地址解析协议
RARP:反地址解析协议
ICMP:控制信息协议
OSI:网络协议
IOS:苹果操作系统
ISO:镜像文件格式
三、接口测试工具、接口类型和接口测试流程
postman(以前属于谷歌浏览器的一个插件,最常用的一款接口测试工具)
jmeter(市面上最流行的接口和性能测试工具)
soapUI(接口和性能测试工具)
fiddler :抓包工具,也可以进行接口测试
wireshark:抓包工具,可以抓取TCP和udp,tls协议数据
Charles :mac系统,苹果系统用这个抓包工具用的比较多
接口的类型
http协议的接口
http
https
webservice
soap webservice
restful webservice
rmi协议接口
rpc协议接口
接口测试流程
接口测试需求分析
接口测试需求评审
编写接口测试计划(有些接口要压测、性能测试)
编写接口测试用例/用例评审(大部分公司中接口不需要写用例)
用例在接口测试工具中执行
发现BUG提交到禅道
小结报告
总结报告(如果需要做接口性能测试,这个报告需要单独体现)
四、接口测试的基本方法
1、接口的请求方式
get(查) 请求指定的页面信息,并返回实体主体
post(增)向指定资源提交数据进行处理的请求
(提交表单或者上传文件);数据包含在请求体中;post请求可能会导致新的资源的建立或者已有资源的修改。
head 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 HTTP1.1
put(修改) 从客户端向服务端传送的数据取代指定的文档的内容
delete(删除) 请求服务器删除指定的页面
connect http/1.1协议种预留给能够将连接改为管道方式的代理服务器。
trace 回显服务器收到的请求,主要用于传送或者诊断
2、get请求方法
a、请求数据一般显示在地址栏
b、安全性差,请求的入参信息全部暴露在url地址栏
c、请求数量比较少
d、处理速度快、性能高
3、post请求方法
a、请求数据一般不会显示在地址栏,会把数据封装在表单中(requests body当中),然后再提交。
b、安全性比较高
c、请求数据的量比较大
d、处理速度没有get请求快,性能比有get请求好
http请求包括
请求头 和 请求体 这2个是客户端发送到服务器的数据
响应头 和 响应体 这2个是服务器返回给客户端的数据
POST 表示请求方法http://192.168.0.145:8080/cms/manage/loginJump.do
表示URL统一资源定位符
URI 统一资源标识符 身份证号码
URL 统一资源定位符 家庭住址
URN 统一资源名称
面试题 URI和URL的区别?
1、URI 统一资源标识符 身份证号码
URL 统一资源定位符 家庭住址
2、URI 主要记录资源的主机名,资源命名机制
URL 主要记录使用协议,访问资源的具体地址
HTTP/1.1 表示超文本传输协议 版本为1.1
Host: 192.168.0.145:8080
域名 表示请求的服务器网址
Connection:keep-alive
Connection:客户端与服务器连接的类型
keep-alive:表示持久连接
Content-Length: 33 表示请求的长度
Accept: application/json, text/javascript, */*; q=0.01
浏览器支持的mime消息内容类型
Origin: http://192.168.0.145:8080
标识跨域资源请求
X-Requested-With: XMLHttpRequest
标识Ajax请求,大部分JS框架发送请求时都会设置它为XMLHttpRequest
User-Agent
用户代理的字符串值,浏览器的身份标识字符串,User-Agent会告诉网址服务器,访问者是通过什么工具来请求的
Content-Type:设置请求体的消息类型(get和post请求)
Referer: 设置前一个页面的地址,并且前一个页面中的连接指向当前请求
Accept-Encoding: 设置接收的编码格式
Accept-Language:设置接收的语言
en-us 是英文 zh-cn 为中文
Cookie: 设置服务器使用Set-cookie发送http
JSESSIONID=7443E48B6484515F79A4C66E041D3B53
请求体:userAccount=admin&loginPwd=123456
响应头
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
服务器名称
服务器返回的cookie值
Set-Cookie: JSESSIONID=11E180F99D0482290070ECFA42C838AF; Path=/cms/; HttpOnly
Content-Type: application/json;charset=UTF-8
设置响应头的信息类型
Transfer-Encoding: chunked
设置传输实体的编码格式
Date: Thu, 05 Sep 2019 08:32:17 GMT
设置消息发送的日期时间
响应体
{"code":"200","msg":"登录成功!","model":{}}
常见的http状态码解释
200 请求已成功,请求所希望的响应头和响应体的数据将随此响应返回
201 请求已经被实现,而且有一个新的资源已经根据请的需要而建立,且其URI已经随Location头信息返回。
302 请求的资源现在临时被转移到新的URI
400 语义有误,当前请求无法被服务器理解;除非进行修改,否则客户端不应该重复提交请求(请求参数有误)
403 服务器已经理解请求,但是拒绝执行它
404 请求失败,请求所希望得到的资源未被在服务器上发现
500 服务器遇到一个未曾预料的状况,导致他无法完成对应的请求的处理
501 服务器不支持当前请求所需要的某个功能
505 服务器不支持,或者拒绝支持在请求中使用的HTTP版本 |
|