一、接口简介
- 软件接口就是一个数据访问地址,一个规范交互标准,对指定数据进行增删改查。
- 采用接口可以提高开发效率和质量,方便与第三方交互,维护更加便捷(只需后台代码修改,接口不变)
一、接口测试简单了解
- 概念:测试后端实现是否符合接口规范
- 目的:保证程序安全、高效率、灵活(接口的特点~U盘)
- 实际操作:模拟客户向服务器发送数据,然后查看响应
要素1:定位服务器资源(通过URL实现:http://127.0.0.1/资源路径)
要素2:模拟用户提交数据
要素3:查看响应的结果是否符合预期
- 接口测试分类
模型1:web接口测试(B/S架构)
|-服务器接口测试:测试自己公司实现的接口
|-第三方接口测试:测试别的公司实现的接口
模型2:模块接口测试(C/S架构)
二、RESTful风格
开发测试时,大家会遵守一些默认的规范,这些规范是约定俗成的,并非强制性的。
- 概念:RESTfu一种约定俗成的编程规范。
- 目的:保证程序的代码的易读性和易维护性。
1.HTTP请求
- 默认端口为:80
- 无连接:每次连接只处理一个请求
- 媒体独立:只要客户端和服务器知道如何处理数据内容,任何数据类型都可以通过HTTP发送
- 无状态:是指对事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则前面的信息必须重传,导致了每次连接传送的数据量增大。但是,在胡无权不需要前面的信息时,它的应答会更快。
- 统一志愿标识符(URI):HTTP通过(Uniform Resource Identifiers)来传输数据和建立连接
(1)请求方法
(1)GET(select):请求指定的页面信息,获取服务器资源,并返回实体主题
(2)POST(create):向指定资源提交数据进行处理请求,创建服务器资源。数据被包含在请求提中。该请求可能会导致新的资源的建立或已有资源的修改。
(3)PUT(update):从客户端向服务器传送的数据取代指定的文档内容,更新服务器资源
(4)DELETE(delete):删除指定页面,删除服务器资源
(5)CONNECT:HTTP/1.1协议中预留能够将连接改为管道方式的代理服务器
(6)OPTIONS:允许客户端查看服务器的性能
(7)TRACE:回显服务器收到的请求,主要用于测试或者诊断
(2)请求结构
- 请求行(request line)
- 请求头部(header)
- 空行
- 请求数据
(3)响应
- 状态行
- 消息报头(响应头)
- 空行
- 响应正文(消息体)
2.HTTP请求状态码
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同
状态码 | 动词 | 说明 |
---|---|---|
200 OK | [GET] | 服务器成功返回用户请求的数据,该操作是幂等的(idempotent),无论执行多少次都与执行一次结果相同 |
2001 CREATE | [POST/PUT/PATCH] | 用户新建或者修改数据成功 |
202 Accepted | [*] | 表示一个请求已经进入后台排队(异步任务) |
204 NO CONTENT | [DELETE] | 用户删除数据成功 |
400 INVALID REQUEST | [POST/PUT/PATCH] | 用户发出的请求有错误,服务器没有进行新建或者修改数据的操作,该操作是幂等的 |
401 Unauthorized | [*] | 表示用户没有权限(令牌、用户名或者密码错误) |
403 Forbidden | [*] | 表示用户得到授权(与401错误相对),但是访问时禁止的 |
404 NOT FOUND | [*] | 用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的 |
406 Not Accepted | [GET] | 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式) |
410 Gone | [GET] | 用户请求的资源被永久删除,且不会再得到的 |
500 INTERNAL SERVER ERROR | [*] | 服务器放生错误,用户将无法判断发出的请求是否成功 |
501 NOT Implemented | [*] | 服务器不支持请求的功能,无法完成请求 |
502 Bad Gateway | [*] | 充当网关或者代理的服务器,从远端服务器接收到了一个无效的请求 |
504 Gateway Time-Out | [*] | 充当网管或者代理的服务器,未及时从远端服务器获取请求 |
3.对结果进行判断
方法 | 预期结果 |
---|---|
GET | collection->代码:200;数据:返回资源对象的列表(数组) |
GET | collection/resource->代码:200;数据:返回单个资源对象 |
POST | collection->代码:200/201;数据:返回新生成的资源对象) |
PUT | collection/resource->代码:200/201;数据:返回完成的资源对象) |
GET | collection/resource->代码:200;数据:返回为空) |
4.接口约束
(1)四种操作以及三个要素
- 增
要素1:URL+POST(安全、数据量大)
要素2:多个数据
方式一:URL?键=值&键=值……
方式二:JSON格式
要素3:200|201+
- 删
要素1:URL+POST
要素2:多个数据
方式一:URL?键=值&键=值……
方式二:JSON格式
要素3:200|201+修改后的数据
- 改
要素1:URL+GET|DELETE
要素2:方式:URL?键=值&键=值……
要素3:200|204
- 查
要素1:URL+GE
要素2:常用方式:URL?键=值&键=值……
要素3:200+一条记录或者多条记录
- 状态码
404——资源路径有误
500+——服务器异常
5.JSON
(1)简介
- 概念:JSON是一种数据载体。
互联网本质就是数据传输,数据传输需要数据载体,比如:页面信息存储在html这类数据载体中 - 标签标记语言缺点:有效数据占有率低。
- JSON优点:传输效率更高。不分场景下使用JSON替换html和xml、ajax(异步刷新)
- JSON缺点:数据太过简洁,对数据的描述性不及标记语言。
传递少量数据时,可以使用JSON
(2)语法
- 格式一:
(JSON对象):{"键1","值1","键2","值2"……}
- 格式二:
(JSON数组):{"值1","值2","值3","值4"……}
- 复合格式:
-=
{"键1":"值1","键2":"值2"……}
三、Postman
1、断言
(1)响应时间
当服务器响应时间超过设定值则报错,未超过则进行一些操作,显示pass
(2)状态码
判断响应状态码,断言执行通过则显示pass
(3)消息体中其他指定数据
2、导出脚本
四、Fiddler
1、简介
- web调试工具之一
- 记录所有客户端和服务器的HTTP、HTTPS请求
- 设置断点
- 修改输入输出数据
2、会话图标含义
3、窗口介绍
(1)统计(Statistics)
可查看http请求的性能和其他数据分析 如DNS解析时间,建立TCP/IP连接的时间消耗等信息
通过陈列出所有的HTTP通信量Fiddler可以很容易的向使用者展示哪些文件生成的当前的请求页面 用户可以通过选择多个会话并得到总的通信量 比如多个请求和传输的字节数
(2)检查(Inspector)
用于查看绘画的内容 上半部分是请求的内容 下半部分是响应的内容
(3)过滤(Filters)
多维度的过滤规则,可根据 主机 进程 请求头 响应头 状态码 响应类型和大小 断点 进行请求的过滤
4、Fiddler工作原理
Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1:8888,当打开Fiddler会自动设置代理,推出的时候它会自动注销代理。
(1)HTTPS
它是在HTTP基础上加入了SSL协议,SSL依靠证书来验证服务器身份,并为浏览器和服务器之间的通信加密。
- 与HTTP区别
HTTPS需要到ca申请证书,一般免费的证书很少 HTTP信息的明文的 HTTP端口是80,它是443 HTTP是无状态的连接,它是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全
设置HTTPS代理
5、过滤
(1)Hosts过滤
- No Host Filter:不过滤主机
- Hide the flowing Hosts:只显示如下主机
- Flag the flowing Hosts:标记下列主机
- 输入多个Hosts时,每个地址之前应用半角“,”或者回车分隔
- 支持通配符:*.baidu.com;
(2)会话过滤
- Client Process(客户端程)过滤规则
- Show only traffic from:可以指定只捕获那个Windows进程中的请求
- Show only Internet Explorer traffic:只显示IE发出的请求
- Hide Windows RSS platform traffic:隐藏Windows RSS平台发出的请求
6、其他常用功能
(1)QuikExec命令行
- help:打开官方的使用页面介绍,所有的命令都会列出来
- cls:清屏(Ctrl+X)
- ?.png:选择png格式的图片
- bpu 捕获request
(2)设置断点修改数据
Fiddler最强大的功能,可以修改任何信息,包括host、cookie和表单数据等
- 选择-在请求之前(before requests):可以修改request数据
- 选择-之后响应(after responses):可以修改响应response数据
(2)设置IP地址显示
在测试过程中,经常需要通过host在不同的环境之间切换,通过IP地址就很容易判断切换是否成功。
- 第一步:
- 第二步:在main函数中加入一行代码
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP",120,"X-HostIP")
- 效果
(3)会话比较功能
选中连个会话,右键:比较(compare)
N、一些术语的简写
-
SOW:statement of work,工作任务说明书
-
HLD: High Level Design,概要设计说明书
-
LLD: Low Level Design,详细设计说明书
-
UTC: Unit Testing Cases,单元测试用例
-
UT:Unit Testing,单元测试
-
IT:Integration Testing,集成测试
-
ST:System Testing,系统测试
-
Driver:驱动
-
Stub:桩单元
-
PT:System Testing,性能测试
-
Stress Testing:压力测试
-
Volume Testing:容量测试
-
Regression Testing:回归测试
-
Smoke Testing:冒烟测试/预测试
-
Protectiion Testing:保护测试
-
GUI(Graphic User Interface) Testing:界面测试
-
Usability Testing:可用性测试
-
Installation Testing:可安装性测试
-
Backup Testing:备份测试
-
Robustness Testing:健壮性测试
-
Backup Testing:备份测试
-
Robustness Testing:健壮性测试
-
Documentation Testing:文档测试
-
Online Help Testing:在线帮助测试
-
Manual Testing:人工/手动测试
-
Automation Testing:自动化测试
-
SRS(Software Requirement Specitication):软件需求规格说明书
-
双V模型:Verification 验证,Validation 确认
-
QM:Quality Manage,由QA和QC组成。
-
QA即英文Quality Assurance 的简称,质量保证 ;
-
QC即英文Quality Control的简称,质量控制
-
G11N,全球化,globalization的缩写。是使产品或软件进入全球市场而进行的有关的商务活动。包括正确的国际化设计,本地化集成,以及在全球市场进行的市场推广、销售和支持的全部过程。
-
I18N,国际化,Internationalization的缩写。使产品或软件具有国际市场的普遍适用性,不需要重新设计源程序代码就可以使其能够适用于不同的语言和文化习俗。实现了国际化,产品才具有了本地化能力(Localizability)。
-
L10N,本地化,Localization的缩写。是将产品或软件针对特定国家/地区或语言和文化进行加工,使之符合特定区域市场的用户对语言和文化的需求的过程。真正的本地化要考虑目标区域市场的语言、文化、习俗、特征和标准。通常包括改变软件的书写系统(输入法)、键盘使用、字体、日期、时间和货币格式等。本地化(L10N)是以国际化(I18N)为前提,产品时间了国际化后,才能够进行本地化的相关活动。
-
java本身提供了一种RPC框架——RMI(即Remote Method Invoke 远程方法调用),在编写一个接口需要作为远程调用时,都需要继承了Remote
BFC 定义
BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。
BFC布局规则:
-
内部的Box会在垂直方向,一个接一个地放置。
-
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
-
每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
-
BFC的区域不会与float box重叠。
-
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
-
计算BFC的高度时,浮动元素也参与计算
哪些元素会生成BFC?
- 根元素
- float属性不为none
- position为absolute或fixed
- display为inline-block, table-cell, table-caption, flex, inline-flex
- overflow不为visible
Set类排序:TreeSet自然排序,LinkedHashSet按添加顺序排序
- java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize这个参数的值的话,这个问题通常会得到解决。
- java.lang.OutOfMemoryError: Requested array size exceeds VM limit当你正准备创建一个超过虚拟机允许的大小的数组时,这条错误将会出现
- java.lang.OutOfMemoryError: Java heap space 一般情况下解决这个问题最快的方法就是通过-Xmx参数来增加堆的大小
JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:
1.静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
2.上述的是通用的加载顺序,如果没有则省略。
AWT(Abstract Window Toolkit),中文译为抽象窗口工具包,该包提供了一套与本地图形界面进行交互的接口,是Java提供的用来建立和设置Java的图形用户界面的基本工具。
- 标签的权重是1,类的权重是10 ,id的权重是100,第一等:代表内联样式,如: style=””,权值为1000
-
拷机:一般指新买的电脑,尤其是新攒的电脑让机器不关机运行1-2天来测试硬件的兼容性与系统稳定性
-
构建模块功能确认BBFV( Building Block Functional Validation),构建模块是指设计单元,例如一个单元电路,一个软件函数,一个结构零件等等。BBFV通常是以设计人员为主,测试人员参加。
-
系统设计验证SDV(System Design Verification):子系统或模块级测试,包括基本功能、性能的常规测试、以及各种可靠性类测试,例如针对电子产品的容错/容限测试、EMC测试、安全测试、噪声测试、热测试、环境可靠性测试等等。若是机械结构类产品或部件,SDV应增加疲劳测试、结构强度测试、结构刚性测试等。SDV工作通常是以测试人员为主,设计人员参加。
-
系统集成测试SIT(System Integration Test)产品整机测试,测试内容与SDV大致相同,但增加可用性测试、可维护性测试和包装测试。SIT在开发阶段后期,由测试人员负责完成。
-
系统验证测试SVT(System Verification Test):小批量试制情况下的测试,测试内容与SDV大致相同,但强调从试制生产线随机抽检,关注产品质量一致性,SVT必须在SIT完成之后在验证阶段完成.SVT工作以测试人员为主,试制人员参加即可
-
WBS(Work Breakdown Structure):工作分解结构,是将整个项目一层一层细分成更小部分的过程,它便于企业明确目标、了解工作、控制进度,确保项目的胜利完成
-
PL:项目组长
-
PM:项目经理
-
SE:系统工程师
-
PG:程序员